Sybase 常见问题解答

Sybase 常见问题解答

1 安装... 2

1.1 Windows无法安装 ASE:窗口一闪而过... 2

1.2 Windows安装界面乱码... 2

1.3 Windows无法新建 adaptive server 2

1.4 Windows安装库后服务无法启动... 3

1.5 ASE 安装过程中,安装程序一直停留在初始化数据库这一步,无法继续... 3

1.6 Windows覆盖补丁时,提示有个别文件无法覆盖... 3

1.7 安装sybase ha,当运行insthasv以安装HA存储过程时出错,提示ha service not enable 3

2 维护... 3

2.1 Windows添加新设备,一点浏览按钮,则会自动退出应用程序... 3

2.2 使用工具查询数据库数据时,显示乱码... 4

2.3 应用程序管理端不能登陆... 4

2.4 Sybase11.9升级到Sybase12.5后应用程序不能登陆... 4

2.5 Sybase HA故障切换及故障恢复方法... 4

2.6 如何把Sybase HA变成挂起模式... 5

2.7 如何把Sybase HA的某一个服务关闭,但又不会变成failover模式... 5

2.8 ASE 12.5.0 安装完后,从开始菜单运行配置工具时报错,错误信息:“Invalid command line argument 'and'.” 6

2.9 Windows2003上,ASE 12.5不能从服务启动... 6

2.10 利用 Windows 任务计划自动备份数据库... 6

2.11 新安装ASE或新建服务后,客户端无法连接服务器... 8

2.12 如何配置异地备份?... 9

2.13 正确理解死锁和锁阻塞... 9

2.14 如何分离日志与数据... 9

2.15 如何删除tempdb数据库在master设备上的记录?... 10

2.16 调整参数后,ASE 无法启动... 10

2.17 如果不小心直接删除了日志的设备文件,如何恢复数据库?... 11

2.18 ASE MDA 常见问与答... 13

2.18.1 什么是 MDA ... 13

2.18.2 如何安装 MDA 表?... 13

2.18.3 如何使用 MDA 表?... 14

3 Sybase ASE 编程... 15

3.1 如何锁定一条记录... 15

3.2 jConnect Statemnt 的注意事项... 15

3.3 jConnect Scrollable Cursor 16

3.4 理解 SET CHAINED command not allowed within multi-statement transaction. 16

4 ASE On Linux FAQ.. 20

4.1 安装LINUX时的注意事项... 20

4.2 配置内存... 20

4.3 配置文件句柄数... 20

4.4 如何设置Sybase环境?... 21

4.5 一定要设置LANG=C吗?... 21

4.6 如何让Sybase服务在系统启动时自动启动?... 21

4.7 RAW磁盘I/O.. 25

4.8 最大文件句柄数... 25

4.9 无法从其它主机连接服务器... 25

4.10 RedHat 9 上运行 ASE 12.5.x. 26

5 Sybase 发行版本(Release)术语... 26

5.1 EBF. 26

5.2 ESD.. 26

5.3 GA. 26

5.4 IR. 27

5.5 MR. 27

[@more@]

1 安装

1.1 Windows无法安装 ASE:窗口一闪而过

当出现此问题时,可以明确两点:其一,ASE 版本为 12.5.0;其二、硬件为 PIV 以上。这源于 ASE 12.5.0 安装程序所带的 JRE JIT Just-In-Time)实时编译器在 PIV 下存在 Bug  解决方法:  方法一:使用命令行窗口,先 set JAVA_COMPILER=NONE,然后再运行安装程序;  方法二:删除或重命名 ASE 安装目录下的 shared-1_0jre1.2.2insymcjit.dll 文件;  方法三:打 JRE 1.2.2 的补丁。  需要注意的是:在安装完后,仍需按以上方法对已安装的系统进行修改。  

1.2 Windows安装界面乱码

分析及解决办法:修改安装盘的文件名

如果是win2000,复制font.properties.zhfont.properties.zh.NT5.0如果是win2003,复制font.properties.zhfont.properties.zh.NT5.2如果是winxp,复制font.properties.zhfont.properties.zh.NT5.1

1.3 Windows无法新建 adaptive server

分析及解决办法:

必须要在服务器端建库,不能通过远程桌面。

1.4 Windows安装库后服务无法启动

分析及解决办法:服务中的机器名要写全(带域名)

1.5 ASE 安装过程中,安装程序一直停留在初始化数据库这一步,无法继续

这是一个莫明其妙的 bug,在初始化库的过程中,tempdb 满了!  解决方法:

此时,ASE 服务实际已经启动,因此,可以通过 isql 登录,然后修改 tempdb 的大小:

1. 在命令行下键入以下命令,注意斜体部份用实际服务名代替:

c:>isql -Usa -S 服务名

2. 键入下面下划线的命令:

1> alter database tempdb on master ="2M"

2> go

1.6 Windows覆盖补丁时,提示有个别文件无法覆盖

分析及解决办法:一点一点地覆盖,提示不能覆盖的文件,则把目标文件改名后再覆盖。

1.7 安装sybase ha,当运行insthasv以安装HA存储过程时出错,提示ha service not enable

分析及解决办法:尝试运行sp_configure ‘enable HA’ ,1 重新启动数据库服务,依然报同样的错误;查看日志文件,发现是没有HAlicense,于是在“Sybase 软件资产管理 (SySAM)”中输入用户提供的license,还是报同样的错。估计用户购买的sybase12.5,没有HALICENSE

2 维护

2.1 Windows添加新设备,一点浏览按钮,则会自动退出应用程序

分析及解决办法:不要点击浏览按钮,直接输入设备文件和路径

2.2 使用工具查询数据库数据时,显示乱码

分析及解决办法:客户端与服务器端字符集不匹配。修改..Sybaselocaleslocales.dat文件,使用写字板打开该文件,修改windows系统下的字符集,将所有iso_1修改为cp850。包括dos,nt,win32等所有windows的系统。

2.3 应用程序管理端不能登陆

分析及解决办法:sa 密码不能为空

2.4 Sybase11.9升级到Sybase12.5后应用程序不能登陆

分析及解决办法:

--导出登陆用户

由于Sybase11.9.2syslogins表比版本12.5 syslogins表少两个字段,为了保证Bcp正确执行,在原数据库建立一个比syslogins多两个字段的临时表,再进行Bcp的导入和导出。

例:

* 在原数据库上运行

>select *, convert(int,null) as logincount, convert(int,null) as procid into tempdb..mysyslogins from master..syslogins

bcp tempdb..mysyslogins out mysyslogins -e mysyslogins.out -c -Usa –Sganggao

--在新数据库运行,打开允许更新系统表开关

sp_configure "allow updates to system tables",1

--在新数据库运行,导入登陆用户

bcp master..syslogins in mysyslogins -e mysyslogins.in -c -b1 -Usa -Ssybase152

--在新数据库运行,关闭允许更新系统表开关

sp_configure "allow updates to system tables",0

--更改数据库的登陆用户

use addb

go

sp_changedbowner dbgg_dbo

go

2.5 Sybase HA故障切换及故障恢复方法

1.如果要isql在故障切换和恢复时不会数据开,isql登陆时必须要加-Q参数

如:isql –Usa –P –Q –Snfsyb_1

2.故障切换模拟

在“群集管理器”中,移动相应的sybase资源组

如:如果想把nfsyb_1实例中的数据库切换到nfsyb_2中,则移动组nfsyb_1_grp

3.故障恢复模拟

在“群集管理器”中,移动相应的sybase资源组

如:如果想把已切换到nfsyb_2实例中的nfsyb_1实例数据库恢复到nfsyb_1中,则移动组nfsyb_1_grp;或者登陆到nfsyb_2中,输入命令: sp_companion “NFSYB_1”,prepare_failback

4.查看HA 状态命令

sp_companion

2.6 如何把Sybase HA变成挂起模式

如:想把nfsyb_2nfsyb_1由常规协同模式变成挂起模式,则登陆nfsyb_2,输入sp_companion “NFSYB_1”,suspend 如果想恢复则登陆nfsyb_2,输入sp_companion “NFSYB_1”,resume

2.7 如何把Sybase HA的某一个服务关闭,但又不会变成failover模式

如果想把其中一个sybase实例关闭,必须采用把资源组脱机的方法,如果用shutdown命令,可能会发生资源组移动。把资源组联机以后,会自动变成常规协同模式

@@cmpstate 协同模式

0 单服务器

1 保留

2 辅助常规

3 辅助挂起

4 辅助故障切换

5 辅助故障恢复

6 保留

7 主常规

8 主挂起

9 主故障恢复

10 保留

11 对称常规

12 对称故障切换

13 对称挂起

14 对称故障恢复

15 保留

2.8 ASE 12.5.0 安装完后,从开始菜单运行配置工具时报错,错误信息:“Invalid command line argument 'and'.”

解决办法:从命令行启动 syconfig

2.9 Windows2003上,ASE 12.5不能从服务启动

遇上此问题的,ASE 版本显然是 12.5.0Windows 2003 修改了服务接口,而 ASE 12.5.0 先于 Windows 2003 发布。  解决办法:安装 EBF 11449,即可解决问题。  注:Sybase 只提供 ASE 12.5 + 以上版本号对 Windows 2003 的认证。12.5 之前的版本不支持通过 Windows 2003 的服务启动,可通过命令行手工启动,或采用 Service Any

_安装_ASE_时,提示">2.10 利用 Windows 任务计划自动备份数据库

对于一些小型企业,预算有限,可能无法购买价格高昂的商业化备份软件,手工备份又太烦琐,易忘。其实使用 Windows 自身的任务计划可以很好地解决问题。

REM @ECHO OFF

REM 检查参数

IF "%1" == "" GOTO displayUsage

IF "%2" == "" GOTO displayUsage

IF "%3" == "" GOTO displayUsage

IF "%4" == "" GOTO displayUsage

REM 取系统日期

REM for windows2000

SET day=%DATE:~-10%

REM for windows xp/2003

REM SET day=%DATE:~0,10%

REM 取当前完整时间,:号改为_

SET currentTime=%TIME::=_%

SET currentTime=%currentTime: =0%

REM 设置备份路径

REM 此备份目录必须手工设定,并且事先创建好。

SET localBackupDir=C:dbbackup

SET remoteBackupDir=D:RemoteBackup

REM 设置备份服务器

REM 设置本地日志路径,日志只能存放于本地!

SET defaultBackupServer=SYB_BACKUP

IF "%5" == "" (

SET backupServer=

SET logDir=%defaultBackupServer%

SET backupDir=%localBackupDir%

) ELSE (

SET backupServer=at %5

SET logDir=%5

SET backupDir=%remoteBackupDir%

)

IF NOT EXIST %logDir% mkdir %logDir%

REM 设置备份文件名,格式:数据库服务名.数据库名.日期.时间.dmp

SET filenamePrefix=%1.%4.%day%.%currenttime%

SET dmpFile=%backupDir%%filenamePrefix%.dmp

REM 临时SQL文件名

SET sqlFile=%1.%4.dump.sql

REM 日志文件

SET logFile=%logDir%%filenamePrefix%.log

REM 产生临时SQL文件

echo dump database %4 to '%dmpFile%' %backupserver% >%sqlfile%

echo go >>%sqlfile%

REM 备份

isql -S%1 -U%2 -P%3 -i%sqlfile% -o%logfile%

ECHO 备份完成,请检查日志文件%logFile%

GOTO finished

:displayUsage

ECHO 用法:

ECHO %0 service user password databasename [backupserver]

ECHO service : Sybase 服务名

ECHO user : 用户名

ECHO password : 用户密码

ECHO databasename : 数据库名

ECHO backupserver : 备份服务器名,可选

ECHO

ECHO 必须手工设置备份目录,并事先创建好!

ECHO 日志目录将建在当前运行目录下

ECHO 备份文件名格式:

ECHO <服务名>.<数据库>.<日期>.<时间>.dmp

:finished

将以上脚本另存为 BAT 文件,并修改相应的备份目录。然后创建任务,调用 BAT 文件,调用形式参考脚本。

_Sybase_">2.11 新安装ASE或新建服务后,客户端无法连接服务器

在安装完 ASE 或新建服务后,服务器上能使用 dsedit 连接数据库服务,但客户端无法连接。

通常的原因是数据库服务绑定了 127.0.0.1,使用 dsedit,或直接修改 interfaces 文件,绑定确实的 IP 即可。

_新安装ASE或新建服务后,">Can't open a connection to site 'SYB_BACKUP', See the error log file in the SQL Server boot directory. error code = 7205

通常,这是由于 ASE 安装/服务初始化程序的 BUG 导致的。在创建服务时,ASE 会创建一个名为类似 XXXX_BS 的备份服务,同时会在 master..sysservers 中插入一条对应记录。以服务名 FLYBAEN 为例,下面是 interfaces 文件和 sysservers 中的记录:

  interfaces 文件内容:

FLYBEAN_BS

master tcp ether FLYBEAN_LINUX 5001

query tcp ether FLYBEAN_LINUX 5001

sysservers 的记录:(select srvname, srvnetname from sysservers where srvname='SYB_BACKUP'

srvname srvnetname

------------------------------ --------------------------------

SYB_BACKUP FLYBEAN_BS

通常默认的备份服务器就是 SYB_BACKUP 。在 load/dump 时,ASE 通过 sysservers 获取备份服务器对应 interfaces 的信息,然后在 interfaces 文件中搜索该服务的实际位置(IP和端口)。在此例中,ASE 通过 sysservers 得到 interfaces 中的服务名为 FLYBEAN_BS,然后在interfaces 中获取该服务的物理信息。如果 ASE 无法通过 sysservers 中的 srvnetname interfaces 中获取相关信息,则会报上面的错误。  那么解决办法就是非常简单的。  方法一:修改 interfaces 文件,将服务名改为 sysservers.srvnetname 对应的值;  方法二:修改 sysservers 中相应记录的 srvnetname 的值为 interfaces 文件中的服务名。   

2.12 如何配置异地备份?

12.5.012.0是否支持待确认) 开始,ASE 支持异地备份,具体方法举例如下:  假设两台 ASE 数据库服务器,分别为 A B,数据库服务分别为: SRV_A, SRV_A_BS; SRV_B, SRV_B_S 。我们要把 B 上的数据库 DB_1 备份到 A 上。  1. 修改 B 上的 interfaces 文件,增加 SRV_A_BS 的配置,如:

    SRV_A_BS

      master tcp ether A BS_PORT

      query tcp ether A BS_PORT

2. isql 登录 SRV_B,为 SRV_B 增加一个远程服务:SRV_A_BS    sp_addserver "SRV_A_BS",null,"SRV_A_BS"  3.测试:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10190/viewspace-966508/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10190/viewspace-966508/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>