Sybase複制伺服器安裝配置過程中常見問題及解決辦法
一、不能成功連接配接到服務
錯誤資訊:
CONNECTIVITY ERROR: CT-Library error: 'ct_connect(): network packet layer: internal net library error: Net-Lib protocol driver call to connect two endpoints failed'.
CONNECTIVITY ERROR: Login attempt failed: server = ''.
問題原因:可能接口檔案配置的服務資訊不完整,或者給定的登陸使用者名密碼有誤。
解決辦法:
1. 檢查接口檔案中服務資訊是否完整、正确,注意格式要正确,尤其是不可見控制字元。
熱備份應用中,接口檔案需要包含主點DS,備點DS,RS以及維護RSSD的ASE DS的資訊,這幾個點的接口檔案必須都包含以上資訊。
推薦使用dsedit圖形界面方式編輯接口檔案,或者使用dscp指令行界面工具編輯接口檔案。如果非要使用vi來編輯接口檔案,出現問題可是自找的!嘿嘿~~ 特别要注意不可見控制字元。
2. 檢查指定的服務是否已經運作,檢查給定的登陸使用者名及密碼是否正确。
如果接口檔案沒有問題,并且指定服務已經運作,使用者名密碼都正确,那通過isql可以在各個點上均能登陸以上服務。
二、找不到請求的服務名導緻RS安裝失敗。
錯誤資訊:
CONNECTIVITY ERROR: CT-Library error: 'ct_connect(): directory service layer: internal directory control layer error: Requested server name not found.'.
CONNECTIVITY ERROR: Login attempt failed: server = ''.
問題原因:請求的服務名沒有找到。
解決辦法:
1. 确認各伺服器接口檔案中包含了要用到的服務名包括IP,端口資訊,尤其要注意接口檔案的格式,格式不正确,或者多出不必要的控制字元有可能讀取接口檔案時會失敗。
2. 通過telnet 測試遠端服務是否可用,或者通過isql測試能否成功登陸到遠端的服務。
三、過程緩存不足導緻安裝RSSD失敗。
錯誤資訊:
SERVER ERROR: "There is not enough procedure cache to run this procedure, trigger, or SQL batch. Retry later, or ask your SA to reconfigure SQL Server with more procedure cache."
Unable to load the Replication Server System Database in 'phs'.
Task failed: configure the Replication Server System Database. Terminating configuration.
問題原因:資料庫的 "procedure cache" 設定值不夠
解決辦法:
方法1. 直接修改cfg檔案中的"procedure cache size" 重起服務。
方法2. 直接修改資料庫中的設定,動态參數,修改生效(推薦) 。
1> sp_configure "procedure cache" // 檢視目前過程緩存值
2> go
1> sp_configure "procedure cache",40 // 将過程緩存值改為40
2> go
四、RSSD日志裝置空間滿導緻RS安裝過程不能繼續。
錯誤資訊:
SQL Server message: msg 7412, level 10, state 1
"Space available in the log segment has fallen critically low in database 'rssd'. All future modifications to this database will be suspended until the log is successfully dumped and space becomes available."
SQL Server message: msg 7415, level 10, state 1
"The transaction log in database rssd is almost full. Your transaction is being suspended until space is made available in the log."
問題原因:RSSD日志裝置空間滿,導緻RS安裝過程不能繼續。
解決辦法:
方法1. 增大RSSD日志裝置。
(注:提醒在建立RSSD裝置時應該考慮到為其配置設定足夠的空間)
方法2. 清除RSSD日志裝置上的日志 。
1> dump transaction RSSD_name
2> with truncate_only
3> go
五、更改預設字元集導緻RS服務不能啟動。
錯誤資訊:
ERR initialization failed. ((Intl-Lib error: Unable to open file)(OS error: No such file or directory) Localization File: 030/rs.loc Location: r/errloc.c(279))
問題原因:可能配置檔案設定了複制伺服器不相容的字元集
解決辦法:
将複制伺服器字元集更改為已經安裝的且複制伺服器支援的字元集,即可。
-----------------------------------------
要檢視複制伺服器已經安裝的字元集,進入 $SYBASE/locales目錄。已經安裝的字元集位于 chinese或us_english或unicode之類的目錄中。
其中,locales.dat中包含了ASE或者RS支援的不同作業系統支援的字元集。
作業系統環境變量的設定一般要與該處的設定相一緻。
(注:應該保證複制系統中各複制伺服器和主點從點資料庫字元集及語言的互相相容。如果資料庫字元集與複制伺服器字元集不一緻,有可能導緻複制資料的異常,甚至複制事務失敗。
六、資料庫最大記憶體設定不足導緻向複制系統添加資料庫時啟動複制代理失敗。
錯誤資訊:
WARNING: "The current 'max memory' value '4194304', is not sufficient to change
the parameter 'enable rep agent threads' to '1'. 'max memory' should be greater
than 'total logical memory' '4286243' required for the configuration."
Unable to execute query 'exec sp_configure "enable rep agent threads",1' against
server 'SXJHWG'.
Task failed: configure the Replication Agent. Terminating configuration.
問題原因:max memory設定值過小。
解決辦法:
增加max memory值。該值為動态值,修改直接生效,無須重起服務。
1> sp_configure "max memory",8388608
2> go
七、向複制系統添加備用資料庫時,發生找不到使用者名問題
錯誤資訊:
Running task: configure database for primary data.
Granted maintenance user permissions on the lastcommit functions and rs_marker.
WARNING: Please verify that suids in the syslogins table of the Standby SQL
server correspond to syslogins of the Active SQL Server
SQL Server message: msg 11105, level 16, state 3
WARNING: "No such user/role 'sybase_maint_user' exists."
問題原因:
rs_init不會自動建立在standby 點的longin使用者 sybase_maint_user 。
解決辦法:
在standby 點的longin使用者 sybase_maint_user需要使用者手工建立的(rs_init不會自動完成) 。 可以手動在備點添加,也可以通過dump/load從主點同步過去。
----------------------------------------------------
$ isql -SStandbyDS -Usa -PsaPassword
1> sp_addlogin testdb_maint,testdb_maint_ps,testdb
2> go
1> use testdb
2> go
1> sp_adduser "testdb_maint"
2> go
調整主備點庫的維護使用者的相關資訊與主點庫一緻
設定可以更改系統表
1> sp_configure "allow updates to system tables",1
2> go
(這裡修改使得:
master庫的syslogins表和每個使用者資料庫的sysusers表中的每個登陸使用者名的伺服器使用者ID(suid)必須與主點庫相同。
master庫的syalogins和sysloginroles表中,伺服器使用者ID和角色設定也必須相同。
有關這部分資訊,可以登陸到主點庫,查詢相應表,或者從主點庫bcp相關表到備點庫)
取消更改系統表的權限
1> sp_configure "allow updates to system tables",0
2> go
對維護使用者授權
1> sp_role "grant",sa_role,"testdb_maint"
2> go
1> sp_role "grant",replication_role,"testdb_maint"
2> go
-------------------------------------------------------
八、資料庫庫的“select into/bulkcopy”标記沒打開導緻添加資料庫庫失敗。
錯誤資訊:
SQL Server message: msg 4977, level 16, state 1
WARNING: "You cannot run ALTER TABLE LOCK in this database because the 'select into/bulkcopy' option is off. Please check with the DBO."
Unable to execute query 'alter table rs_lastcommit lock datarows' against server 'SXCNCRSSD'.
Task failed: configure the Replication Server System Database. Terminating configuration.
問題原因:要配置的庫的“select into/bulkcopy/pllsort”标記沒有打開。
解決辦法:
1> sp_dboption SXCNCRS_RSSD,"select into/bulkcopy/pllsort",true
2> go
九、主點活動庫不能成功配置複制代理
錯誤資訊:
Running task: configure the Replication Agent.
SQL Server message: msg 18382, level 16, state 1
WARNING: "Database 'testdb' is already configured to use Replication Agent.
Request to enable Replication Agent has been ignored."
Unable to execute query 'exec sp_config_rep_agent "testdb", enable,"TESTRS",
"TESTRS_ra", "TESTRS_ra_ps"' against server 'TESTRS'.
Task failed: configure the Replication Agent. Terminating configuration.
問題原因:以前活動庫曾經加入到一個複制系統中,再次添加時因為複制代理已經存在,是以不能成功配置複制代理。
解決辦法:
1> use testdb
2> go
1> sp_config_rep_agent testdb,"disable"
2> go
十、複制伺服器最大線程數不足導緻複制異常。
錯誤資訊:
I. 2007/01/22 17:41:44. The DSI thread for database 'TESTRS.testdb' is started.
E. 2007/01/22 17:41:45. ERROR #21 DSI(104 TESTRS.testdb) - /dsithrd.c(1426)
Open server call to routine 'srv_spawn' failed.
I. 2007/01/22 17:41:45. Open Server error: Error: 16115, State: 0, Severity 10 -- 'Could not start thread'.
I. 2007/01/22 17:41:45. The DSI thread for database 'TESTRS.testdb' is shutdown.
問題原因:num_threads數目不夠。
解決辦法:
方法1:
1> configure replication server set "num_threads" to "100"
2> go
方法2:
1> rs_configure "num_threads","100"
2> go
其他幾個可能需要調整的參數,包括"memory_limit","memory_max","num_client_connections"調整方法類似。