Sybase安装问题记录

Sybase安装问题记录

安装参考博客:windows/Linux下安装Sybase ASE 16/15.7-CSDN博客。亲测可用,这里需要注意里面配置备份服务端时有个Allow Hosts的选项,建议填入all

问题一:配置服务端报错:本地主机名非法

报错内容:

'datacheck1' is an invalid TCP hostname

解决方式:

可以先尝试在命令行中ping一下这个主机名称,我这里是ping不通,所以试着在/etc/hosts文件中加入了域名解析,之后成功解决。

(填入你的虚拟机ip地址) + datacheck1(改成你的主机名)

问题二:Sybase一直卡着不动了,啥情况

只要不报错,一直等着就完事了,我这里也是等了将近一小时才安装完毕

问题三:连接Sybase服务端失败

报错内容:

ct_connect():protocol specific layer:external error:The attempt to connect to the server failed

解决方式:

先查看下服务端连接有没有:

showserver

检查下登录的命令,命令格式:

isql -U sa -P 密码 -H (你的ip地址) -S (服务端的名称)

也可以杀掉Sybase的服务端,然后重启

kill (sybase服务端端口号)
startserver RUN%(Sybase启动文件,通常在/opt/sybase/ASK.../install/里面)

实在不行,删掉目录,重装,保证每一步的步骤不出错,我是重装了

问题四:isql命令连接数据库报错:字符集使用错误

[sybase@sybase sybase]$ isql -U sa -P 123456 -S sybase -J utf8


The context allocation routine failed when it tried to load localization files!!
One or more following problems may caused the failure

Your sybase home directory is /opt/sybase. Check the environment variable SYBASE if it is not the one you want!
Using locale name "zh_CN.UTF-8" defined in environment variable LANG
Locale name "zh_CN.UTF-8" doesn't exist in your /opt/sybase/locales/locales.dat file
An error occurred when attempting to allocate localization-related structures.

解决方案:

su - sybase
vi ~/.bash_profile
# 添加
export LANG=C
source ~/.bash_profile

问题五: sybase安装有问题,导致 showserver 没有输出

在安装过程中有错误,导致/opt/sybase目录存在,并且环境变量也设置了,但是 showserver 没有输出。

[root@datacheck-3 sybase]# showserver
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
[root@datacheck-3 sybase]# isql -U sa -P 123456 -S sybase -J utf8
CT-LIBRARY error:
	ct_connect(): directory service layer: internal directory control layer error: Requested server name not found.

执行启动命令,发现不存在 sqlsrv.res 文件。

[root@datacheck-3 bin]# ./srvbuildres -I $SYBASE/interfaces -r ../install/sqlsrv.res
Unable to open file ../install/sqlsrv.res.  

解决方案

拷贝 sqlsrv.res

[root@datacheck-3 bin]# ls ../install/sqlsrv.res
ls: cannot access ../install/sqlsrv.res: No such file or directory
[root@datacheck-3 bin]# cp $SYBASE/$SYBASE_ASE/init/sample_resource_files/srvbuild.adaptive_server.rs ../install/sqlsrv.res

便捷 sqlsrv.res 文件。

sybinit.release_directory: USE_DEFAULT
sybinit.product: sqlsrv
sqlsrv.server_name: sybase
sqlsrv.sa_password: 123456
sqlsrv.new_config: yes
sqlsrv.do_add_server: yes
sqlsrv.network_protocol_list: tcp
sqlsrv.network_hostname_list: 192.168.102.81
sqlsrv.network_port_list: 5000
sqlsrv.application_type: USE_DEFAULT
sqlsrv.server_page_size: USE_DEFAULT
sqlsrv.force_buildmaster: no
sqlsrv.master_device_physical_name: /opt/sybase/data/master.dat
sqlsrv.master_device_size: USE_DEFAULT
sqlsrv.master_database_size: USE_DEFAULT
sqlsrv.errorlog: USE_DEFAULT
sqlsrv.do_upgrade: no
sqlsrv.sybsystemprocs_device_physical_name: /opt/sybase/data/sysprocs.dat
sqlsrv.sybsystemprocs_device_size: USE_DEFAULT
sqlsrv.sybsystemprocs_database_size: USE_DEFAULT
#sqlsrv.sybsystemdb_device_physical_name: PUT_THE_PATH_OF_YOUR_SYBSYSTEMDB_DEVICE_HERE_OR_REMOVE_THIS_LINE
sqlsrv.sybsystemdb_device_size: USE_DEFAULT
sqlsrv.sybsystemdb_database_size: USE_DEFAULT
#sqlsrv.tempdb_device_physical_name: PUT_THE_PATH_OF_YOUR_TEMPDB_DEVICE_HERE_OR_REMOVE_THIS_LINE
sqlsrv.tempdb_device_size: USE_DEFAULT
sqlsrv.tempdb_database_size: USE_DEFAULT
sqlsrv.default_backup_server: PUT_YOUR_BACKUP_SERVER_NAME_HERE
#sqlsrv.addl_cmdline_parameters: PUT_ANY_ADDITIONAL_COMMAND_LINE_PARAMETERS_HERE
sqlsrv.do_configure_pci: no
sqlsrv.sybpcidb_device_physical_name: PUT_THE_PATH_OF_YOUR_SYBPCIDB_DATA_DEVICE_HERE
sqlsrv.sybpcidb_device_size: USE_DEFAULT
sqlsrv.sybpcidb_database_size: USE_DEFAULT
# If sqlsrv.do_optimize_config is set to yes, both sqlsrv.avail_physical_memory and sqlsrv.avail_cpu_num need to be set.
sqlsrv.do_optimize_config: no
sqlsrv.avail_physical_memory: PUT_THE_AVAILABLE_PHYSICAL_MEMORY_FOR_ASE_IN_OPTIMIZATION
sqlsrv.avail_cpu_num: PUT_THE_AVAILABLE_NUMBER_CPU_FOR_ASE_IN_OPTIMIZATION
  1. 实例名称与管理账户
    • sqlsrv.server_name: 替换为你要创建的 ASE 实例名,如 SYBASE15
    • sqlsrv.sa_password: 设置 sa 管理账号的密码,请使用强壮密码
  2. 网络连接
    • sqlsrv.network_hostname_list: 设置为当前主机名或 IP 地址(如 datacheck-3192.168.x.x
    • sqlsrv.network_port_list: 使用你期望的监听端口,常用默认是 5000
  3. 数据库设备路径
    • sqlsrv.master_device_physical_name: master 数据库设备文件的完整路径(如 /opt/sybase/data/master.dat
    • sqlsrv.sybsystemprocs_device_physical_name: 为系统存储过程分配设备文件
    • 可选但建议:sqlsrv.sybsystemdb_device_physical_namesqlsrv.tempdb_device_physical_name — 新版本 ASE 会为 sybsystemdb 和 tempdb 创建独立设备。
  4. 默认备份服务器
    • sqlsrv.default_backup_server: 通常使用实例名后加 _BS,如 SYBASE15_BS,如果你准备配置 Backup Server 的话

示例:

sqlsrv.server_name: SYBASE15
sqlsrv.sa_password: YourStrongSAPassword

sqlsrv.network_protocol_list: tcp
sqlsrv.network_hostname_list: datacheck-3
sqlsrv.network_port_list: 5000

sqlsrv.master_device_physical_name: /opt/sybase/data/master.dat
sqlsrv.sybsystemprocs_device_physical_name: /opt/sybase/data/sysprocs.dat
sqlsrv.sybsystemdb_device_physical_name: /opt/sybase/data/systemdb.dat
sqlsrv.tempdb_device_physical_name: /opt/sybase/data/tempdb.dat

sqlsrv.default_backup_server: SYBASE15_BS

执行实例创建

export MALLOC_CHECK_=1
export LD_POINTER_GUARD=0export MALLOC_CHECK_=1
./srvbuildres -I $SYBASE/interfaces -r ../install/sqlsrv.res

image-20250703104218683

检查实例。

[root@datacheck-3 bin]# showserver
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root     30000 29999 32  80   0 - 161812 futex_ 10:29 ?       00:00:25 /opt/sybase/ASE-15_0/bin/dataserver -ssybase -d/opt/sybase/data/master.dat -e/opt/sybase/ASE-15_0/install/sybase.log -c/opt/sybase/ASE-15_0/sybase.cfg -M/opt/sybase/ASE-15_0 -i/opt/sybase
[root@datacheck-3 bin]# isql -Usa -P123456 -Ssybase
1> select @@version
2> go
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
 Adaptive Server Enterprise/15.7/EBF 28476 SMP SP141 /P/x86_64/Enterprise Linux/
	 ase157sp141x/4331/64-bit/FBO/Wed Aug 14 03:15:04 2019                                                                                                                                                                                                                                                                                                                                                                                           

(1 row affected)

Sybase安装驱动和配置源步骤及问题记录

下载驱动管理器

yum install unixODBC.x86_64

下载相关的包,解决pyodbc无法使用的问题:

https://github.com/mkleehammer/pyodbc/wiki/Install#installing-on-linux

sudo yum install epel-release
sudo yum install python3-pip gcc-c++ python3-devel unixODBC-devel
pip3 install --user pyodbc

安装好unixODBC驱动管理器后在控制台执行:

(venv) [root@datacheck1 opt]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

查看相关目录的位置

配置ASE驱动

查看DataAccess/ODBC/samples/readme.txt文件,里面记录了如何配置odbc驱动的步骤。

这里主要记录几个关键点:

64位机ASE驱动位于DataAccess64/ODBC/lib/libsybdrvodb.so处,在修改driver路径时填这个文件的位置。

修改完配置文件后执行以下命令

odbcinst -i -d -f drivertemplate.txt

这样ASE驱动就会成功启动,可以在/etc/odbcinst.ini文件里查看

配置ASE数据源

修改完配置文件后执行以下命令

odbcinst -i -s -f sampletemplate.txt

数据源会加载到/root/.odbc.ini文件处

执行连接脚本

这里的SERVER替换为自己的主机地址。

import pyodbc
    
#  参考http://bbs.csdn.net/topics/380063945。
conn = pyodbc.connect(
'DRIVER={Adaptive Server Enterprise};SERVER=DATACHECK1;PORT=5001;DATABASE=testdb;UID=sa;PWD=123456')
print("连接成功")
cursor = conn.cursor()
cursor.execute()
cursor.close()
conn.close()
import pyodbc
    
#  参考http://bbs.csdn.net/topics/380063945。
conn = pyodbc.connect(
'DRIVER={Adaptive Server Enterprise};SERVER=192.168.198.170;PORT=5000;DATABASE=master;UID=sa;PWD=123456')
print("连接成功")
cursor = conn.cursor()
cursor.execute()
cursor.close()
conn.close()
import pyodbc
    
#  参考http://bbs.csdn.net/topics/380063945。
conn = pyodbc.connect(
'DRIVER={Adaptive Server Enterprise};SERVER=localhost;PORT=5000;DATABASE=master;UID=sa;PWD=123456')
print("连接成功")
cursor = conn.cursor()
cursor.execute()
cursor.close()
conn.close()
posted @ 2024-08-19 19:03  零の守墓人  阅读(308)  评论(0)    收藏  举报