故障排除指南ReplicationServer15.
7.
1文档ID:DC20177-01-1571-01最后修订日期:2012年4月版权所有2012Sybase,Inc.
保留所有权利.
除非新版本或技术声明中另有说明,否则本出版物适用于Sybase软件及所有后续版本.
本文档中的信息如有更改,恕不另行通知.
本出版物中描述的软件按许可证协议提供,其使用或复制必须符合协议条款.
仅在定期安排的软件发布日期提供升级.
未经Sybase,Inc.
事先书面许可,本书的任何部分不得以任何形式、任何手段(电子的、机械的、手动、光学的或其它手段)进行复制、传播或翻译.
可在http://www.
sybase.
com/detailid=1011207上的Sybase商标页中查看Sybase商标.
Sybase和列出的标记均是Sybase,Inc.
的商标.
表示已在美国注册.
SAP和此处提及的其它SAP产品与服务及其各自的徽标是SAPAG在德国和世界各地其它几个国家/地区的商标或注册商标.
Java和所有基于Java的标记都是Oracle和/或其在美国和其它国家/地区的附属机构的商标或注册商标.
Unicode和Unicode徽标是Unicode,Inc.
的注册商标.
本书中提到的所有其它公司和产品名均可能是与之相关的相应公司的商标.
Use,duplication,ordisclosurebythegovernmentissubjecttotherestrictionssetforthinsubparagraph(c)(1)(ii)ofDFARS52.
227-7013fortheDODandassetforthinFAR52.
227-19(a)-(d)forcivilianagencies.
Sybase,Inc.
,OneSybaseDrive,Dublin,CA94568.
目录约定1故障排除概述3可能导致复制系统问题的任务或事件4错误消息和错误日志4检查错误日志中的错误消息5rs_init错误日志6ReplicationServer错误日志6分析ReplicationServer错误日志7ReplicationServer错误消息格式8示例:ReplicationServer错误分析9RepAgent错误消息格式10示例:RepAgent错误消息分析11复制系统问题种类12配置问题12预订问题12复制问题13手动恢复问题14诊断工具15解决配置问题15排除实现故障16排除取消实现故障17排除复制故障18验证是否没在复制数据18确定未能复制的数据19验证ReplicationServer线程已启动20ReplicationServer关闭21检查队列问题21验证所有的RepAgent都启动22检查系统表22查找失败的复制组件22检查路由问题23故障排除指南iii解决手动恢复问题24性能问题25稳定队列大小不足25当复制到SybaseIQ时,性能降低26常见错误消息27rs_init错误消息27无法找到AdaptiveServer的条目27产品名无效28未知的主机名28ReplicationServer错误消息29错误2129错误102830错误509537错误703538错误803939错误804039错误1106139错误1304541错误1502043错误1504043错误1505244错误2802844错误2902445错误3702246错误3702346ReplicationServer信息性消息和警告消息46系统表的高速缓存行被换出46正在检测数据库丢失47DSI检测到rs_update_lastcommit未标记为已复制49稳定存储使用率超过75%50Connector错误消息50连接器版本不兼容51没有为未许可功能生成连接器的权限51目录ivReplicationServer无法从工厂生成连接器51装载连接器工厂失败52RepAgent错误消息52错误920252错误921053错误9215(ASE624)54路由问题57路由57createroute过程57droproute过程58rs_helproute59创建路由时出现的问题59常见问题60源ReplicationServer的错误日志中的消息60源ReplicationServer上的rs_helproute输出.
.
.
.
.
61目标服务器上的rs_helproute输出62排除变更路由时出现的问题62删除路由时出现的问题63源ReplicationServer上的rs_helproute输出.
.
.
.
.
63目标服务器上的rs_helproute输出64预订问题65实现过程65原子实现66非原子实现66批量实现67取消实现过程68withpurge取消实现68批量取消实现69checksubscription69实现状态70实现问题71缺少登录帐户和权限或者登录帐户和权限不正确72模式不一致72目录故障排除指南v缺少interfaces文件条目73原子实现问题73非原子实现问题75批量实现问题78取消实现问题80ReplicationServer接口问题85RSI用户的登录名或口令不正确85复制ReplicationServer上的用户权限不正确86RSI定位符无效86RepAgent问题89启动RepAgent时出问题89登录名无效89权限无效89ReplicationServer错误90错误3203290错误3204690错误3204792AdaptiveServer错误92删除主对象时的可能问题92截断页无效93数据服务器接口问题95列出ReplicationServer所控制的数据库95adminwho和adminwho,dsi96DSI调度程序线程的状态96DSI执行程序线程的状态96复制数据库的DSI的故障排除97DSI关闭或挂起时的错误98数据库连接失败98数据服务器错误99ReplicationServer错误100DSI处于活动状态时的错误101错误地重复事务的解决方法101检查例外日志101AdaptiveServer日志问题103目录viReplicationServer截断AdaptiveServer日志103检验辅助截断点的状态104关闭数据库中的辅助截断点104设置辅助截断点105数据库日志定位符105重置数据库日志定位符106日志截断问题106检查是否存在孤立的事务106入站队列需要更多磁盘空间107AdaptiveServer日志损坏的症状108ReplicationMonitoringServices问题109RMS跟踪标志列表109同一台计算机上的多个UAF服务器110ASAReplicationAgent连接失败111稳定队列113使用跟踪打印命令113确认可疑问题114转储队列输出解释115示例1:createsubscription之后的出站队列.
.
.
.
.
115示例2:一系列命令后的入站队列117示例3:更新后的入站队列119示例4:更新后的出站队列119语言、排序顺序和字符集问题121消息语言问题121排序顺序问题122排序顺序122字符集问题122获取帮助及其它信息125技术支持部门125下载SybaseEBF和维护报告125Sybase产品和组件认证126创建MySybase配置文件126辅助功能特性126索引127目录故障排除指南vii目录viiiReplicationServer约定Sybase文档中使用以下样式和语法约定.
样式约定关键字定义等宽字体(固定宽度)SQL和程序代码完全按照所示输入的命令文件名目录名等宽斜体在SQL或程序代码段中,用户指定的值的占位符(请参见下面的示例).
斜体文件名和变量名对其它主题或文档的交叉引用在文本中,用户指定的值的占位符(请参见下面的示例)文本中的词汇表术语粗体sanserif命令、函数、存储过程、实用程序、类和方法的名称词汇表条目(在词汇表中)菜单选项路径在编号任务或过程步骤中,您单击的用户界面(UI)元素,如按钮、复选框、图标等如有必要,接下来会在文本中对占位符(特定于系统或设置的值)进行说明.
例如:运行:installationdirectory\start.
bat其中installationdirectory是应用程序的安装位置.
语法约定关键字定义{}大括号表示必须至少选择括号中的一个选项.
不要在输入命令时键入大括号.
[]中括号表示可以选择括号中的一个或多个选项,也可不选.
不要在输入命令时键入中括号.
约定故障排除指南1关键字定义()小括号应作为命令的一部分输入.
|竖线表示只能选择一个显示的选项.
,逗号表示可以选择任意多个显示的选项,逗号作为命令的一部分输入以分隔选项.
.
.
.
省略号(三点)表示可以将最后一个单元重复任意多次.
不要在命令中包括省略号.
区分大小写所有命令语法和命令示例都以小写形式显示.
但是,复制命令名称不区分大小写.
例如,RA_CONFIG、Ra_Config和ra_config是等效的.
配置参数的名称区分大小写.
例如,Scan_Sleep_Max与scan_sleep_max不同,前者将被解释为无效参数名称.
复制命令中的数据库对象名称不区分大小写.
但是,若要在复制命令中使用混合大小写的对象名(以与主数据库中混合大小写的对象名相匹配),请用引号字符分隔该对象名.
例如:pdb_get_tables"TableName"根据有效的排序顺序,标识符和字符数据可能要区分大小写.
如果使用区分大小写的排序顺序(如"binary"),则必须用正确的大写和小写字母组合形式输入标识符和字符数据.
如果使用不区分大小写的排序顺序(如"nocase"),则可以用任意大写或小写字母组合形式输入标识符或字符数据.
术语ReplicationAgent是用于描述ReplicationAgentforAdaptiveServerEnterprise、ReplicationAgentforOracle、ReplicationAgentforIBMDB2UDB和ReplicationAgentforMicrosoftSQLServer的通用术语.
特定名称包括:RepAgent–用于AdaptiveServerEnterprise的ReplicationAgent线程ReplicationAgentforOracleReplicationAgentforMicrosoftSQLServerReplicationAgentforUDB–用于Linux、Unix和Windows上的IBMDB2约定2ReplicationServer故障排除概述正确配置的ReplicationServer系统被设计为具有容错功能.
但是,如果发生严重故障,则可能需要干预并手动解决问题.
找出复制系统故障原因的关键在于通过以下方式排除可能的原因:确定最近发生的可能对复制系统产生负面影响的任务或事件.
用户可能执行了导致复制故障或降低复制系统性能的任务.
当许多人同时使用同一复制系统时,很多事情都有可能发生.
网络暂时中断这类事件也可能导致复制系统问题.
分析错误日志.
确定常规的问题种类(配置、预订、复制、恢复).
使用诊断工具(如ReplicationServer程序或存储过程,或者isql)来分析复制系统.
如果在ReplicationServer错误日志中看到错误消息,则可以通过查阅错误日志确定问题.
如果没有错误消息,则使用诊断工具来进一步分析复制系统.
《ReplicationServer故障排除指南》中未涉及ReplicationManager(RM)和嵌入式ReplicationServer系统数据库(ERSSD)问题.
RM使用SybaseCentral消息记录功能来提供RM向任何服务器发出的所有命令的日志.
此外,它还提供了查看队列数据功能,帮助您为队列中的事务排除故障.
有关如何使用这些功能的详细信息,请参见ReplicationManager插件的联机帮助和《ReplicationServer管理指南第一卷.
有关ERSSD恢复过程的详细信息,另请参见《ReplicationServer管理指南第一卷》.
《ReplicationServer故障排除指南》也许能够帮助您确定硬件、网络和操作系统方面的问题,但如何解决这些问题不在本指南的讨论范围内.
当服务器或网络连接断开时,您应该同时检查硬件、网络或操作系统问题.
在Windows上,如果随机或频繁发生堆栈跟踪,同时ReplicationServer错误日志中显示出错误,则通常会发现硬件或操作系统问题.
检查操作系统错误日志中指示硬件或操作系统问题的错误.
解决这类问题可能只是部分消除对复制系统的影响.
您可能还需要在主数据库和目标数据库间重新同步数据.
故障排除概述故障排除指南3可能导致复制系统问题的任务或事件某些任务或事件可能会导致复制系统故障.
在尝试对问题分类之前,请查看是否执行了以下某项任务或发生了某个事件.
表1.
可能导致复制系统问题的任务或事件任务或事件说明或操作二进制文件已更改.
您可能更改了二进制文件,导致ReplicationServer、RepAgent或AdaptiveServer互不兼容.
不兼容的二进制文件可能产生OpenServer和OpenClient错误消息.
请查看复制系统组件之间版本兼容性的最新发行公告.
网络关闭然后重新启动.
确认ReplicationServer线程已启动.
重建队列.
检查是否有手动恢复问题.
恢复了主数据库.
检查是否有手动恢复问题.
添加、改变或删除了路由.
路由操作可能未完成.
检查是否有路由问题.
添加、改变或删除了预订.
预订操作可能未完成.
检查是否有预订问题.
添加、改变或删除了ReplicationServer、RepAgent、主数据库或复制数据库、数据服务器或表.
您可能错误地更改了复制系统.
检查是否有配置问题.
另请参见解决手动恢复问题(第24页)解决配置问题(第15页)预订问题(第65页)路由问题(第57页)验证ReplicationServer线程已启动(第20页)错误消息和错误日志错误消息为确定复制系统故障的原因提供了重要信息.
在出现ReplicationServer或RepAgent错误时,错误日志中会记录错误消息.
错误消息采用标准格式;当您了解了这种格式后,就能查看和理解所有的ReplicationServer及RepAgent错误消息.
ReplicationServer错误消息或者记录在被称为错误日志的文本文件中,或者被发送到标准的错误输出(stderr);标准错误输出通常是一个终端窗口.
一般说来,ReplicationAgent错误消息记录在自己的错误日志中,但RepAgent错误消息则不然.
故障排除概述4ReplicationServerRepAgent在AdaptiveServer错误日志中记录RepAgent错误和由ReplicationServer返回的所有错误消息(包括CT-Library错误消息).
数据服务器错误消息记录在数据服务器的错误日志中.
多条错误消息有可能是同一个问题引起的,并且可能是由受该问题负面影响的任何或全部ReplicationServer组件(包括AdaptiveServer、ReplicationServer和RepAgent)生成的.
ReplicationServer和RepAgent还可以用若干种语言将消息打印到错误日志和客户端.
ReplicationServer错误消息用RS_language配置参数中指定的语言显示,而AdaptiveServerRepAgent使用language中指定的语言.
注意:《ReplicationServer故障排除指南》未介绍如何分析来自网络、网关、非AdaptiveServer数据服务器和非AdaptiveServerReplicationAgent的错误日志.
有关如何分析这些错误日志的信息,请参阅这些产品的文档.
另请参见语言、排序顺序和字符集问题(第121页)检查错误日志中的错误消息在复制系统内检查故障之前,请先在错误日志中检查有无错误消息并解决错误.
1.
保持所有错误日志的窗口都打开,包括:ReplicationServer错误日志(包括ReplicationServer标准错误输出(stderr)的窗口)ReplicationAgent日志(如ReplicationAgentforDB2)设置或配置ReplicationServer时的rs_init错误日志.
任何数据服务器错误日志(如AdaptiveServer)任何网关错误日志(如DirectConnect或OmniConnect)2.
扫描ReplicationAgent、数据服务器和网关错误日志,以确定是否可以立即找到描述错误原因的错误消息.
如果找到错误,请参见ReplicationAgent、数据服务器和网关的文档以解决问题.
3.
扫描rs_init、AdaptiveServer(对于RepAgent错误消息)和ReplicationServer错误日志以检查有无错误消息.
找到错误时,请在《ReplicationServer故障排除指南》中搜索错误消息,并应用所述的解决方法.
如果找不到错误消息,请在UNIX平台上的$SYBASE/$SYBASE_REP/doc目录中或Windows上的%SYBASE%\%SYBASE_REP%\doc目录中查看以下错误消息文本文件之一:ReplicationServer错误消息的error_messages_rsrs_subcmp错误消息的error_messages_subcmp这些文本文件包括错误消息文本、错误简介及其原因,有时还包括改正方法.
故障排除概述故障排除指南5另请参见常见错误消息(第27页)rs_init错误日志在ReplicationServe设置或配置期间发生错误时,症状和问题通常会记录到rs_init错误日志中.
rs_init错误日志位于:UNIX:$SYBASE/$SYBASE_REP/init/logsMicrosoftWindows:%SYBASE%\%SYBASE_REP%\init\logsrs_init错误日志文件名格式是:logmonthday.
session#month是2位整数,代表当前月份.
day是2位整数,代表当前日期.
session#是3位整数,代表这天的会话编号.
这一天每启动一个新rs_init会话,会话编号就会加1.
假定log0108.
001是rs_init错误日志:month为01day为08session#为001ReplicationServer错误日志ReplicationServer的信息性消息、警告消息、线程中止消息、致命错误消息和内部错误消息记录在ReplicationServer错误日志中.
当ReplicationServer在运行时,消息附加到错误日志中.
每次您重新启动ReplicationServer时,错误消息都会附加到现有错误日志的结尾.
警告!
实时信号32-64终止ReplicationServer,日志中不会有任何错误消息.
信息性消息报告组件的当前状态,例如,某个进程或命令已完成或某个组件已关闭.
当组件异常终止、进程或命令无法完成或组件中出现致命的内部错误时,便会报告警告消息、线程终止消息、致命错误消息和内部错误消息.
当AdaptiveServer错误导致出现ReplicationServer错误时,您会在ReplicationServer错误消息的文本中找到对AdaptiveServer错误的引用.
在这种情况下,您可以修复AdaptiveServer问题,这样应该能够消除ReplicationServer错误.
因为ReplicationServer是带有OpenClient组件的OpenServer程序,所以ReplicationServer错误日志还可能包含OpenClient/Server错误消息.
错误日志中的所有OpenServer错误构成了内部错误.
故障排除概述6ReplicationServerReplicationServer错误日志包含一些在异步命令(例如,createsubscription和createroute)的执行过程中生成的错误消息.
您在执行异步命令时,应特别注意受异步命令影响的ReplicationServer的错误日志.
应当专门用一个终端窗口来显示ReplicationServer的标准错误输出.
如果ReplicationServer错误日志不可用,错误消息会被发送到stderr.
只发送到stderr的错误消息是极其严重的错误消息,因为ReplicationServer可执行的唯一操作是转储堆栈并退出.
ReplicationServer错误日志文件名的格式为:rs_name.
log其中rs_name是ReplicationServer名称.
ReplicationServer错误日志的缺省位置为:UNIX:$SYBASE/$SYBASE_REP/installMicrosoftWindows:%SYBASE%\%SYBASE_REP%\install分析ReplicationServer错误日志分析ReplicationServer错误日志以确定复制系统故障的原因.
要分析ReplicationServer错误日志,您必须了解多条错误消息之间有什么样的关系.
多条错误消息可能是由同一个问题引起的,而且它们的日期和时间通常会完全相同或非常接近.
发生时间相近的错误消息构成了一个错误块.
1.
从后往前扫描错误日志,查找最新的ReplicationServer错误.
若要确定问题,请找到错误所属的错误块.
在发生ReplicationServer错误时,ReplicationServer会将错误消息添加到错误日志的结尾.
最新的ReplicationServer错误位于错误块的结尾.
注意:如果您看到nomorethreads这样的OpenServer/Client错误,请先修复该错误.
此消息的意思是OpenServer资源不足(并且ReplicationServer可能已经终止).
2.
查找并诊断在第一个ReplicationServer错误之后出现的最后一个非ReplicationServer错误消息.
如果在第一个ReplicationServer错误消息之后没有非ReplicationServer错误消息,则调查第一个ReplicationServer错误消息的原因.
在诊断非ReplicationServer错误时(尤其是在诊断网络通信或其它客户端问题时),您可能需要使用其它故障排除或错误消息指南,例如,AdaptiveServer或OpenClient的故障排除或错误消息指南.
3.
在错误块中查找有没有任何ReplicationServer错误消息告诉您ReplicationServer组件或线程是否已终止.
您必须重新启动已终止的组件或线程.
通常,同一个错误块中的后续ReplicationServer错误是由第一个ReplicationServer错误导致的.
故障排除概述故障排除指南7ReplicationServer错误消息格式描述ReplicationServer错误消息格式.
ReplicationServer错误消息的格式是:s.
datetimeseverity_texterror_numthread(thread_context)module(line_num)error_text其中:s–一个指示错误严重程度的字母.
date–日期.
time–错误发生的时间(24小时格式).
severity_text–对严重级的简短描述.
error_num–唯一地标识错误的整数.
ReplicationServer错误号是使用以下格式构建的:module_number*1000+error_conditionmodule_number是给服务器中的每个源代码模块分配的模块号,error_condition是源代码模块内带编号的错误情况.
thread–收到错误的ReplicationServer线程的名称.
thread_context–有关线程的更为具体的信息,例如,数据库和数据服务器(如果这是数据服务器接口(DSI)线程).
module–报告错误的ReplicationServer源文件的文件名.
此名称仅供Sybase技术支持使用.
line_num–ReplicationServer源文件中报告错误的那一行.
此号码仅供Sybase技术支持使用.
error_text–错误消息文本.
如果ReplicationServer错误是由AdaptiveServer错误引起的,AdaptiveServer错误会包括在ReplicationServer错误消息文本中.
严重级代码参考ReplicationServer错误消息以表示错误严重级的字母开头.
表2.
ReplicationServer错误严重级严重级代码说明I信息性消息.
严重级为"I"的错误消息只包含发生错误的日期和时间,以及消息的全部文本.
W针对尚未导致错误、但可能需要注意的情况(例如资源不足)发出的警告.
E不会防碍继续进行处理的错误,例如,节点不可用.
HReplicationServer线程已"死",例如,丢失了网络连接.
故障排除概述8ReplicationServer严重级代码说明F致命错误.
导致ReplicationServer退出的严重错误.
例如,如果您使用不正确的配置启动ReplicationServer,则可能会收到致命错误.
N由ReplicationServer软件中的异常导致的内部错误.
请向Sybase技术支持部门报告这些错误.
T跟踪消息.
有关错误严重级的详细信息,请参见《ReplicationServer管理指南第二卷》.
示例:ReplicationServer错误分析检查ReplicationServer错误消息块.
ReplicationServer错误消息块:H.
2006/06/1520:52:28.
THREADFATALERROR#5049DSIEXEC(104(3)WESTERNDS.
westDB)-dsiqmint.
c(3252)TheDSIthreadfordatabase'WESTERNDS.
westDB'isbeingshutdown.
DSIreceiveddataservererror#102whichismappedtoSTOP_REPLICATION.
Seeloggeddataservererrorsformoreinformation.
Thedataservererrorwascausedbyoutputcommand#1mappedfrominputcommand#2ofthefailedtransaction.
I.
2006/06/1520:52:28.
TheDSIthreadfordatabase'WESTERNDS.
westDB'isshutdown.
表3.
ReplicationServer错误日志分析错误消息文本解释H.
2006/06/1520:52:28.
THREADFATALERROR#5049DSIEXEC(104(3)WEST-ERNDS.
westDB)-dsiqmint.
c(3252)这是第一个错误.
H表示该错误是线程终止错误.
此消息显示数据服务器接口(DSI)线程终止.
该错误消息包含发生错误的"数据服务器.
数据库"名称、内部ReplicationServer模块(dsiqmint.
c),以及发生错误的代码行(3252).
故障排除概述故障排除指南9错误消息文本解释TheDSIreceiveddataservererror#102whichismappedtoSTOP_REPLICATION.
Seetheloggeddataservererrorsformoreinformation.
从这条AdaptiveServer错误消息可以看出问题的原因.
通过以下方式查找AdaptiveServer错误102的说明:在AdaptiveServer错误日志中查找该错误(该错误的发生时间与它在ReplicationServer错误日志中的发生时间大致相同).
在master数据库中执行select*fromsys-messageswhereerror=102,或者在AdaptiveServerEnterpriseTroubleshootingandErrorMessagesGuide(《AdaptiveServerEnterprise故障排除和错误消息指南》)中查找该错误号.
AdaptiveServerEnterpriseTroubleshootingandErrorMessagesGuide(《AdaptiveServerEnterprise故障排除和错误消息指南》)将错误102描述为Transact-SQL语句的无效语法near%s.
它还提供有关此错误可能发生原因的建议(例如,关键字拼写错误、缺少关键字或参数,或者,关键字的顺序不正确).
在数据服务器错误日志中查找其它信息,此类信息在错误消息中包括%s字段的字符串.
ThedataservererrorwascausedbyRSout-putcommand#1mappedfrominputcom-mand#1ofthefailedtransaction.
该文本描述由ReplicationServer发送的分组事务中的命令位置.
I.
2006/06/1520:52:28.
TheDSIthreadfordatabase'WESTERNDS.
westDB'isshutdown.
最后这条错误消息是信息性的(I),它是由前一个错误块中指定的问题引起的.
解决AdaptiveServer问题后,重新启动指定数据库的DSI线程.
RepAgent错误消息格式RepAgent错误消息采用AdaptiveServer消息格式记录在AdaptiveServer错误日志中.
这些消息由消息的第一行中显示的字符串"RepAgent(dbid)"标识.
您可以重试的错误只在AdaptiveServer错误日志中记录一次.
RepAgent错误消息的格式是:datetimeRepAgent(dbid):error_number,severity,state,error_text其中:date–发生错误的日期.
time–发生错误的时间.
dbid–RepAgent所用的AdaptiveServer数据库的标识号.
执行以下命令即可找到此数据库ID:selectx=db_id()故障排除概述10ReplicationServererror_number–在9200到9299这一范围内的RepAgent错误消息号.
severity–严重级可以是:EX_INFO–信息性错误消息.
EX_USER–用户错误.
EX_RESOURCE–资源错误,它指示操作系统资源或ReplicationServer资源不可用.
EX_CMDFATAL–致命错误,RepAgent因该错误而无法继续处理事务.
state–仅供内部使用.
error_text–对错误原因的说明.
示例:RepAgent错误消息分析检查RepAgent错误消息.
RepAgent错误消息:00:00000:00036:2006/01/1313:08:16.
39serverError:9209,Severity:20,State:000:00000:00036:2006/06/2313:08:16.
39serverRepAgent(6):MissingdatarowinTEXT/IMAGEinsertlogrecord.
Transactionlogmaybecorrupt.
PleasecontactSYBASETechnicalSupport.
(currentmarker=(107634,10)).
表4.
RepAgent错误消息分析错误消息文本解释2006/01/13日期13:08:16.
39时间(6)数据库ID9209错误号20严重级0状态MissingdatarowinTEXT/IMAGEinsertlogrecord.
Transactionlogmaybecor-rupt.
PleasecontactSYBASETechnicalSupport.
(currentmarker=(%d,%d)).
错误消息文本有关AdaptiveServer错误消息格式的详细信息,请参见《AdaptiveServerEnterprise系统管理指南》.
故障排除概述故障排除指南11复制系统问题种类复制系统中发生的问题的种类大致对应于复制系统的不同发展阶段.
复制系统由连接在一起的ReplicationServer组件(ReplicationServer、ReplicationAgent、数据服务器、路由、连接)组成,通过这些组件,数据能够可靠地从源表复制到目标表.
配置问题配置问题在ReplicationServer设置期间(如使用rs_init向复制系统中添加ReplicationServer、RepAgent和数据服务器时)发生.
通常情况下,可通过rs_init日志文件中的错误消息来确定症状和问题.
一些配置问题导致预订实现失败,其症状只有在您尝试实现预订时才会显现.
另请参见解决配置问题(第15页)rs_init错误消息(第27页)预订问题当预订实现或取消实现失败时,会发生预订问题.
复制过程首先执行预订实现,此过程将数据首先复制到目标数据库中.
当不再需要复制到目标数据库的预订时,可在目标数据库中取消实现预订.
取消实现就是从目标数据库中删除数据的过程.
注意:如果正在使用ReplicationAgent,则您的预订实现过程可能会与此处描述的过程不同.
有关ReplicationAgent特定的预订实现过程,请参见您的ReplicationAgent文档.
预订问题的症状很容易判定,这些症状包括:实现失败–目标数据库中预订的复制表中没有数据;主ReplicationServer和复制ReplicationServer中的预订状态无效或实现所用的时间过长.
取消实现失败–目标数据库中预订的复制表中仍有数据;主ReplicationServer和复制ReplicationServer中的预订状态无效或取消实现所用的时间过长.
通常,执行实现或取消实现的人监控着操作并会报告发生的任何问题.
有些预订问题的症状在ReplicationServer错误日志中以错误消息的形式报告.
您可能还需要使用诊断工具来确定预订问题的症状.
如果预订问题导致复制数据库的数据服务器接口(DSI)线程异常终止,请使用resumeconnection命令重新启动该线程.
故障排除概述12ReplicationServer函数字符串限制自定义函数字符串可用于复制更改.
不正确的变量可能会导致自定义函数字符串中发生问题.
函数字符串限制包括:只有rs_insert和rs_update的函数字符串可以使用新列值.
只有rs_delete和rs_update的函数字符串可以使用旧列值.
只有rs_select和rs_select_with_lock的函数字符串可以具有输入模板,使用用户定义的变量.
只有用户定义函数的函数字符串可以使用函数的参数值.
函数的参数值由传递到复制存储过程的参数组成.
复制问题当数据在主数据库中发生更改而不应用到目标数据库中时,会发生复制问题.
复制包括将数据操作(如更新或删除数据)从主数据库复制到目标数据库.
成功实现预订后即开始复制.
如果您正在监控复制系统,您也许能够直接观察到数据没有复制到目标数据库.
可使用rs_subcmp来确定没有被复制的预订.
如果有人报告其客户端应用程序从目标数据库检索到不正确的数据,请考虑是否有可能存在复制问题.
可以比较主表和目标表;如果相同,则说明数据被正确复制.
可能是客户端应用程序存在问题,该问题导致客户端应用程序显示不正确的数据.
如果主数据库和目标数据库中的数据不相同,则复制失败,您必须对复制系统进行故障排除.
复制问题的有些症状可以揭示原因;而有些症状则需要进一步调查才能找出根源.
以下症状按从最常见到最不常见的顺序列出:数据服务器接口(DSI)线程关闭.
除DSI以外的线程关闭.
使用adminwho_is_down显示有关已关闭线程的信息:DIST(分配器)线程RepAgent用户线程RSI(ReplicationServer接口)线程RSI用户线程RS(ReplicationServer)用户线程SQM(稳定队列管理器)线程SQT(稳定队列线程)线程NRM(规范化)线程主要复制系统组件关闭.
通过使用isql登录到每台服务器来检查服务器是否已关闭.
故障排除概述故障排除指南13RepAgentReplicationServer数据服务器消息detectingloss(检测到发生丢失),表明重建队列后,数据复制消息丢失.
此消息将显示在ReplicationServer错误日志或rs_oqid系统表中.
入站或出站稳定队列在变大.
请使用adminwho,sqm和sysadmindump_queue显示有关入站和出站稳定队列的信息.
复制事务的数目在增加.
请使用adminwho,sqt和sysadmindump_queue显示有关入站和出站稳定队列的信息.
事务保持打开状态的时间过长.
这些事务可能是孤立事务或很长的事务.
孤立事务没有结束的commit或rollback语句.
请使用adminwho,sqt和sysadmindump_queue显示有关入站和出站稳定队列的信息.
主ReplicationServer和目标ReplicationServer的定位符不相同.
请使用isql登录到RSSD并查看rs_locater系统表.
对于连接到同一目标ReplicationServer的不同数据服务器上的其它预订,复制是成功的.
请使用rs_subcmp对主数据库和复制数据库中的预订的表进行比较,以确保这些表相同.
某个预订的复制失败,而同一数据服务器上相同或不同表中的其它预订的复制成功.
请使用rs_subcmp对主数据库和复制数据库中的预订的表进行比较,以确保这些表相同.
某些症状在ReplicationServer和AdaptiveServer错误日志中以错误消息的形式显示.
可使用诊断工具确定复制问题的症状.
另请参见排除复制故障(第18页)诊断工具(第15页)手动恢复问题手动恢复问题在恢复失败的分区、截断的主数据库日志、主数据库故障或ReplicationServer系统数据库(RSSD)期间发生.
虽然ReplicationServer被设计为允许多数故障发生并自动从故障中恢复,但有些故障要求您通过手动执行恢复任务来进行干预.
有时在完成恢复任务后,会遇到复制问题或发现ReplicationServer错误日志中显示复制错误.
虽然《ReplicationServer管理指南第一卷》和《ReplicationServer管理指南第二卷》中囊括了大多数恢复情况,并且您可以参考这些手册来查看您是否在恢复任务中遗漏了任何步骤,但《Replication故障排除概述14ReplicationServerServer故障排除指南》讨论了在您认为已成功完成恢复任务后可能遇到的最常见问题.
另请参见解决手动恢复问题(第24页)诊断工具诊断工具检索ReplicationServer组件的状态和统计信息.
根据问题种类,使用这些状态和统计信息来分析复制系统.
isql–用来登录到ReplicationServer或数据服务器查看服务器是否已在运行.
也可以使用isql执行SQL命令来查看主数据库和复制数据库中的数据是否相同,或数据是否已实现或取消实现.
adminwho_is_down–确定哪些ReplicationServer线程已关闭.
adminwho,sqm–显示有关ReplicationServer中的稳定队列的信息,如复制事务数或稳定队列的大小.
adminwho,sqt–显示有关ReplicationServer中的稳定队列的信息,如打开事务的数目.
adminstats,md–显示有关ReplicationServer传递的消息的信息,如所传递消息的数目.
sp_config_rep_agent–显示当前的RepAgent配置设置.
sp_help_rep_agent–显示RepAgent线程的静态和动态信息.
sysadmindump_queue–转储稳定队列并让您查看它们.
rs_helproute–显示ReplicationServer中的路由状态.
rs_subcmp–对主数据库和复制数据库中的预订表进行比较.
使用rs_subcmp以确保这些表相同.
checksubscription–显示ReplicationServer中的预订状态.
rs_helppub–显示发布.
rs_helppubsub–显示发布预订.
sp_setrepcol–检查text、unitext或image列的复制状态.
解决配置问题可通过实现预订数据来检验复制系统是否正确配置.
除非您尝试实现预订数据,否则一些配置问题不会出现.
导致实现失败最常见的配置问题是:无法登录到主AdaptiveServer.
在复制ReplicationServer中创建预订的用户在主AdaptiveServer和主ReplicationServer中必须有相同的登录名和口令.
故障排除概述故障排除指南15在主数据库中缺少权限.
创建预订的用户必须是主数据库中的用户并且必须在主表中拥有select权限.
在复制数据库中缺少权限.
维护用户必须对复制数据库中的表拥有select、insert、update和delete权限.
一个ReplicationServer或AdaptiveServer已停止运行.
请尝试使用isql登录到每个服务器.
重新启动任何停止运行的服务器.
其它常见配置问题包括:主机名解析错误.
接口文件中没有AdaptiveServer条目.
有关解决ReplicationServer配置问题的详细信息,请参见所用平台的《ReplicationServer配置指南》.
另请参见rs_init错误消息(第27页)排除实现故障排除还未实现的预订的问题.
前提条件使用isql登录到复制数据库并执行select命令(用于从复制表中选择实现列)来验证数据是否未能实现.
另外还应确保已完成预订实现所需的所有任务.
如果没有完成以下任务,预订实现可能会失败:创建复制定义或函数复制定义标记供复制用的表或存储过程创建到目标数据库的连接创建项目(如果要使用)创建并检验发布(如果要使用发布)将text、unitext或image列标记为要复制(如果打算复制text、unitext和image)列.
创建直接路由和间接路由(如果目标数据库连接到主数据库的ReplicationServer以外的ReplicationServer)创建逻辑连接(如果打算使用热备份应用程序)故障排除概述16ReplicationServer过程1.
如果您正在实现大量数据,请确保num_threads和num_concurrent_subs参数足够大.
2.
登录到目标ReplicationServer并发出checksubscription,以便返回用于诊断问题的信息,包括:尚未处理对同一复制定义和复制数据库的其它预订由于登录名不正确而导致没有连接到主ReplicationServer主ReplicationServer关闭或不在稳定队列中稳定队列管理器(SQM)、稳定队列事务接口(SQT)和分配器(DIST)线程关闭主数据服务器关闭,登录名不正确,不在稳定队列中或使用了holdlock选择行RepAgent问题路由问题目标ReplicationServer–登录名不正确或不在稳定队列中目标ReplicationServer数据服务器接口(DSI)问题–使用adminwho,dsi或adminwho,sqm确定具体问题在目标数据库上的用户权限不正确3.
登录到主ReplicationServer并使用checksubscription检查其预订状态.
4.
使用rs_helppub和rs_helppubsub查找预订正在使用的发布和项目.
5.
如果有些列没有被实现,则:a)检查text、unitext和image列的复制状态.
b)检验是否正确定义了复制定义.
c)检验是否已正确定义发布和项目.
6.
解决此问题.
7.
当您认为问题已解决时,请运行复制系统.
如果预订仍未实现,请再次分析错误日志或完成您跳过的任何步骤.
排除取消实现故障排除还未取消实现的预订的问题.
前提条件使用isql登录到复制数据库并执行select命令(用于从复制表中选择取消实现列)来验证数据是否未能取消实现.
过程1.
登录到目标ReplicationServer并发出checksubscription,以便返回用于诊断问题的信息,包括:故障排除概述故障排除指南17尚未处理对同一复制定义和复制数据库的其它预订由于登录名不正确而导致没有连接到主ReplicationServer主ReplicationServer关闭或不在稳定队列中稳定队列管理器(SQM)、稳定队列事务接口(SQT)和分配器(DIST)线程关闭主数据服务器关闭,登录名不正确,不在稳定队列中或使用了holdlock选择行RepAgent问题路由问题目标ReplicationServerDSI问题在目标数据库上的用户权限不正确2.
登录到主ReplicationServer并使用checksubscription检查其预订状态.
3.
如果有些列没有被取消实现,则:a)检查text、unitext和image列的复制状态.
b)检验是否正确定义了复制定义.
4.
解决此问题.
5.
当您认为问题已解决时,请运行复制系统.
如果预订仍未取消实现,请再次分析错误日志或完成您跳过的任何步骤.
排除复制故障隔离成功实现预订后可能发生的复制故障.
在排除复制故障之前,请确认没有在复制数据.
此处列出的故障排除过程可以单独执行,也可以按任意顺序执行,不过,按照所列顺序执行最有可能解决问题.
这些过程假定复制系统已经:正确安装并配置.
成功完成预订实现.
以前正确复制了数据.
执行这些过程后,运行复制系统以检查问题是否已解决.
如果复制仍不能正确执行,则执行以下操作:检查错误日志中的错误消息.
执行您跳过的任何过程.
验证是否没在复制数据在排除复制故障之前,请验证没有在复制数据.
1.
使用isql登录到主数据库和复制数据库.
2.
执行select命令,以便从复制表中选择复制列,并从主表中选择要复制的列.
3.
比较两个表中的数据,查看它们是否相同.
故障排除概述18ReplicationServer不兼容的数据意味着系统没在正常复制.
如果预订包含许多要复制的列,请使用rs_subcmp比较主数据库和复制数据库中的数据.
确定未能复制的数据确定未能复制的特定预订和列.
它还验证主数据服务器和目标数据服务器以及主ReplicationServer或目标ReplicationServer是否正在运行.
1.
使用isql登录到主或目标ReplicationServer.
如果您无法登录到ReplicationServer,则说明它已关闭.
2.
运行rs_subcmp以查明某个可疑预订中有哪些数据未能复制.
rs_subcmp将登录到主数据服务器和目标数据服务器,并比较主表和目标表中的预订数据.
rs_subcmp只能比较AdaptiveServer数据服务器上的表.
若要比较非AdaptiveServer数据服务器上的表,可以在非AdaptiveServer数据服务器上使用bcpout的等同程序,在AdaptiveServer数据服务器上使用bcpout,并使用UNIX的diff命令比较输出.
如果rs_subcmp显示了不一致的行,请记下没有被复制的列和行.
如果只有text、unitext和image列没被复制,那么这些列可能具有不一致的复制状态.
如果被预订的列没有数据,则该预订尚未实现.
如果rs_subcmp失败,那么其中一台数据服务器或两台服务器都处于关闭状态:如果主数据服务器关闭,则AdaptiveServer日志可能已损坏或已满.
该数据服务器也可能出现操作系统或硬件错误.
如果目标数据服务器关闭,则该数据服务器可能有数据服务器接口(DSI)问题,或者有操作系统或硬件错误.
3.
使用rs_subcmp检查同一数据服务器上的其它预订是否正在复制:如果其它预订未在复制,则说明该数据服务器可能有问题,而不是某个预订有问题.
如果其它所有预订都在复制,则该特定的预订可能有问题.
4.
使用rs_subcmp检查由同一目标ReplicationServer控制的数据库上的其它预订是否在复制.
如果由目标ReplicationServer控制的其它数据库正在进行复制,则问题出在某个数据库、数据库连接或RepAgent上.
执行以下操作:在数据库的主ReplicationServer入站队列中查找孤立事务.
排除RepAgent故障.
排除数据库连接故障.
下一一旦确定未能复制的数据,请验证ReplicationServer线程是否已启动.
故障排除概述故障排除指南19另请参见ReplicationServer关闭(第21页)AdaptiveServer日志问题(第103页)数据服务器接口问题(第95页)RepAgent问题(第89页)错误32046(第90页)排除实现故障(第16页)检查是否存在孤立的事务(第106页)验证ReplicationServer线程已启动使用adminwho_is_down确定主ReplicationServer线程和目标ReplicationServer线程是否都已启动.
1.
登录到目标ReplicationServer.
如果您无法登录到ReplicationServer,则说明它已关闭.
2.
执行adminwho_is_down.
此命令显示该ReplicationServer上所有关闭的线程,并在ReplicationServer错误日志中记录错误消息.
3.
登录到主ReplicationServer,并使用adminwho_is_down显示该ReplicationServer上所有关闭的线程.
a)检查复制ReplicationServer错误日志中有无以下情况:数据服务器接口(DSI)关闭,RepAgent未连接到ReplicationServer或AdaptiveServer,且整个(或部分)网络关闭然后重新启动.
如果存在这些情况,则表示keepalive的值设置得太低,TCP连接终止并且从未重新启动.
4.
如果DSI启动,请检查数据是否丢失.
数据丢失错误消息显示在ReplicationServer错误日志中,但这些错误只出现一次并且可能发生在几天前.
下一如果线程关闭,请确定失败的原因并更正问题.
失败的线程操作分配器(DIST)确定失败原因是否是ReplicationServer错误7035或13045,并更正问题.
DSI可能表示重复键或权限故障,请参见《ReplicationServer故障排除指南》中的"数据服务器接口问题".
故障排除概述20ReplicationServer失败的线程操作DSIEXEC请参见《ReplicationServer故障排除指南》中的"数据服务器接口问题".
RepAgent用户请参见《ReplicationServer故障排除指南》中的"RepAgent问题".
ReplicationServer(RS)用户请参见《ReplicationServer故障排除指南》中的"SubscriptionsProblems"(预订问题).
ReplicationServer接口(RSI)和RSI用户请参见《ReplicationServer故障排除指南》中的"ReplicationServer接口问题".
稳定队列管理器(SQM)SQM不应关闭.
重新启动ReplicationServer,无法恢复SQM线程.
稳定队列线程(SQT)确定失败原因是否是ReplicationServer错误13045,并更正问题.
用户此问题应不会对复制产生影响.
另请参见数据服务器接口问题(第95页)ReplicationServer接口问题(第85页)RepAgent问题(第89页)预订问题(第65页)错误13045(第41页)错误7035(第38页)ReplicationServer关闭如果主和/或目标ReplicationServer关闭,请分析每个服务器的错误日志.
当两个ReplicationServer都关闭时,主ReplicationServer和复制ReplicationServer可能各有不同问题.
如果两个ReplicationServer的ReplicationServer系统数据库(RSSD)位于同一台AdaptiveServer数据服务器上,则应对该AdaptiveServer数据服务器进行故障排除.
检查队列问题确定重复事务数是否增大.
1.
运行adminwho,sqm以查看重复事务数是否在增大.
当数据服务器接口读取已应用到复制ReplicationServer的事务时,重复计数会增大.
2.
如果重复计数增大,请在出站队列中检查阻塞的和打开的事务.
故障排除概述故障排除指南21另请参见数据服务器接口问题(第95页)验证所有的RepAgent都启动使用sp_who查看AdaptiveServerRepAgent线程状态.
1.
使用isql登录到主AdaptiveServer数据服务器.
2.
运行sp_who以验证RepAgent是否处于活动状态.
请参见AdaptiveServerEnterprise的《参考手册:过程》的"系统过程"中的"sp_who".
如果RepAgent关闭,则其故障原因可能是以下原因之一:AdaptiveServer日志已损坏.
AdaptiveServer日志已满.
RepAgent设置了非法截断点.
RepAgent使用了不正确的主ReplicationServer登录名.
text、unitext或image列的复制状态不一致.
复制系统的配置不正确.
另请参见RepAgent问题(第89页)AdaptiveServer日志问题(第103页)检查系统表检查ReplicationServer系统数据库(RSSD)表中的错误消息.
1.
在rs_recovery系统表中确定任何可恢复操作并执行指定的操作.
2.
查看rs_oqid系统表中是否存在任何检验状态信息,如detectinglosses(正在检测丢失)或rejectingmessagesafterlossdetected(检测到丢失,正在拒绝消息).
(您可能在错误日志中忽略了该消息.
)消息detectingloss(检测到发生丢失)表示重建队列后,数据复制消息丢失.
另请参见正在检测数据库丢失(第47页)查找失败的复制组件若要确定复制在哪个组件上停止,请启动跟踪并检查sysadmindump_queue的输出.
1.
当运行ReplicationServer(repserver.
diag)的诊断版本时,指定跟踪标志.
故障排除概述22ReplicationServer2.
运行sysadmindump_queue并检查其输出.
如果复制在一个组件中停止,请确定失败的原因并解决问题.
组件故障排除参考主数据服务器《ReplicationServer故障排除指南》中的"数据服务器接口问题"《ReplicationServer故障排除指南》中的"AdaptiveServer日志问题"RepAgent《ReplicationServer故障排除指南》中的"RepAgent问题"主数据服务器《ReplicationServer故障排除指南》中的"数据服务器接口问题"《ReplicationServer故障排除指南》中的"AdaptiveServer日志问题"出站队列《ReplicationServer故障排除指南》中的"路由问题"《ReplicationServer故障排除指南》中的"数据服务器接口问题"数据服务器接口(DSI)线程《ReplicationServer故障排除指南》中的"数据服务器接口问题"自定义函数字符串类或自定义函数字符串《ReplicationServer故障排除指南》中的"数据服务器接口问题"《ReplicationServer故障排除指南》的"稳定队列"中的"UsingTracestoPrintCommands"(使用跟踪打印命令)另请参见数据服务器接口问题(第95页)AdaptiveServer日志问题(第103页)RepAgent问题(第89页)路由问题(第57页)使用跟踪打印命令(第113页)检查路由问题使用rs_helproute检查是否有路由问题.
1.
请确保其它数据库没有通过与非复制预订相同的路由进行复制.
如果其它数据库正通过该路由复制,则主ReplicationServer/数据库和复制ReplicationServer/数据库很可能出现问题.
对某个数据库的复制停止,而通过相同路由对其它数据库的复制继续进行,这是不正常的.
在复制ReplicationServer上运行adminstats,md以查看"传递的消息"是否随时间增加.
故障排除概述故障排除指南232.
如果其它数据库都没有通过与非复制预订相同的路由复制,则在RSSD中的主ReplicationServer或目标ReplicationServer上运行rs_helproute,以确定是否存在路由问题.
另请参见路由问题(第57页)解决手动恢复问题手动恢复问题可能会在主数据库恢复期间发生.
如果您最近恢复了主数据库,而复制失败,则可能会看到以下某个问题:未设置主数据库的新的生成ID.
请参见《ReplicationServer管理指南第二卷》.
如果您从同一个备份中装载了主数据库和复制数据库,请确保复制数据库的rs_lastcommit表具有正确的条目.
如果rs_lastcommit表中的origin_qid不正确(较旧或被更改),则数据服务器接口(DSI)可能忽略与该origin_qid关联的某些事务.
使用bcpout复制rs_lastcommit表中的数据,装载该数据,然后使用bcpin将该数据复制回rs_lastcommit.
如果DSI仍然忽略某些事务,则应将origin_qid的值更新为0以强制DSI接受这些事务.
如果由于发生故障,您使用了转储和装载来同步主数据库和复制数据库,请增大主数据库中的生成号.
如果未正确设置生成号,对该数据库的复制可能会因ReplicationServer认为已处理了该消息而停止.
有关如何恢复主数据库的信息,请参见《ReplicationServer管理指南第二卷》.
故障排除概述24ReplicationServer性能问题当操作系统或计算机由于对系统的需求增加而过载时,其性能通常会下降.
导致性能下降的原因可能是:添加应用程序或ReplicationServer组件、执行大型事务或甚至升级操作系统.
性能问题可能很重要,也可能不重要.
可以通过优化复制系统来消除不重要的性能问题.
有关不太重要的问题,请参见《ReplicationServer管理指南第二卷》.
如果重要的性能问题得不到解决,则性能退化可能导致致命的问题,如完全稳定队列,在这种队列中复制将停止.
重要的性能问题可能导致复制、实现或取消实现失败.
重要性能问题可能由以下原因导致:引入新组件,如AdaptiveServer、数据库、ReplicationServer、RepAgent或ReplicationAgent.
新组件可能导致资源争用并使任何组件过载.
更改操作系统.
如升级操作系统、应用修补程序、更改内核参数或重建内核可能对复制系统、内存分配和资源产生负面影响.
将应用程序添加到复制系统,这可能影响内存要求和使用资源.
复制非常大的数据库,这可能导致等待时间很长.
大型事务或打开的事务也是可能的原因.
稳定队列大小不足ReplicationServer性能变差的原因有时可能是稳定队列事务(SQT)的高速缓存大小太小.
如果高速缓存放不下所有打开的事务,则系统将以一次一个命令的方式来处理未完全放入高速缓存的事务.
由于ReplicationServer处理事务的速度不够快,入站稳定队列增大.
解决方法增大稳定队列大小以处理更多事务和提高ReplicationServer性能:1.
确保问题不是由孤立的事务引起的.
2.
确定应用程序的sqt_max_cache_size参数的最佳大小.
请参见《ReplicationServer管理指南第二卷》.
3.
挂起与数据服务器的连接.
4.
登录到ReplicationServer并运行:>configurereplicationserversetsqt_max_cache_sizeto'new_value'>go性能问题故障排除指南255.
要激活新值,请恢复连接.
若要转储SQT高速缓存,请使用sysadminsqt_dump_queue命令.
另请参见检查是否存在孤立的事务(第106页)当复制到SybaseIQ时,性能降低使用实时装载(RTL)复制时,INSERT.
.
.
LOCATION执行失败可能会降低到SybaseIQ的复制速度.
当ReplicationServer向SybaseIQ发送INSERT.
.
.
LOCATION语句时,SybaseIQ必须连接到ReplicationServer以检索数据.
如果SybaseIQ无法连接,则INSERT.
.
.
LOCATION语句不被执行并且RTL失败.
多次尝试使用RTL复制不成功之后,ReplicationServer会恢复为日志顺序逐行连续复制.
解决方法在SybaseIQ服务器的interfaces文件中为复制ReplicationServer创建条目.
这能让SybaseIQ使用数据库连接中指定的用户名和口令连接到ReplicationServer.
维护用户必须是ReplicationServer中的有效用户,具有系统管理员权限,并且其口令与ReplicationServer用于登录到SybaseIQ的口令匹配.
性能问题26ReplicationServer常见错误消息了解某些常见ReplicationServer问题以及这些问题的解决方法.
若要查找错误说明,请搜索:ReplicationServer、rs_init或ReplicationAgent错误的错误号.
rs_init错误的文本,或ReplicationServer信息性或警告消息.
每个错误说明都包括:症状–包括错误日志中显示的任何错误消息的文本.
还包括错误情况,例如,性能下降、复制失败、连接失败和组件异常终止.
解释–描述错误消息和错误的可能原因.
解决方法–描述过程、解决方法、升级和EBF信息.
另请参见故障排除概述(第3页)错误消息和错误日志(第4页)rs_init错误消息rs_init错误消息没有错误号,按字母顺序排列.
无法找到AdaptiveServer的条目interfaces文件中没有AdaptiveServer条目.
症状rs_init错误日志中报告以下错误:2006/06/1310:20:48Thereisnoentryforserver'westdss'intheinterfacesfile.
Theservermusthaveanexistingentryintheinterfacesfile.
2006/06/1310:20:48Attribute'rs_ds_name'couldnotbesetbecause'westdss'isaninvalidvalue.
2006/06/1310:20:48Cannotexecuteconfigurationbecausevalidationofinputvaluesfailed.
2006/06/1310:20:48Exiting.
解释当您执行带有资源文件的rs_init(rs_init-r)时,rs_init在interfaces文件中查找与资源文件中的名称相匹配的AdaptiveServer名称.
出现上述错误的原因是:由于资源文件中的不可打印字符,interfaces文件中的AdaptiveServer条目与资源文件的AdaptiveServer条目不匹配.
常见错误消息故障排除指南27解决方法检查资源文件中AdaptiveServer名称条目中的不可打印字符(例如,控制字符).
AdaptiveServer名称条目被作为rs.
rs_ds_name参数指定.
产品名无效rs_init无法识别资源文件中的产品参数.
症状rs_init错误日志中报告以下消息:INTERNALERROR:Product''notregisteredininternalregistry.
Checkthelog()formoreinformation.
PleasemakeanoteofthiserrorandcontactyourSybaserepresentative.
Inresourcefile'':''isaninvalidproductname.
INTERNALERROR:Unabletoloadinresourcefile''.
Checkthelog()formoreinformation.
PleasemakeanoteofthiserrorandcontactyourSybaserepresentative.
Exiting.
解释当您执行带有资源文件的rs_init(rs_init-r)并且资源文件中的一个参数在参数前面缺少产品名时,会出现此消息.
例如,资源文件中类似于".
rs_rsdddb_size:40"的一行将生成此消息,因为参数的完整名称是"rs.
rs_rsdddb_size".
解决方法再次运行带有资源文件和完整参数名的rs_init.
未知的主机名rs_init无法找到ReplicationServer系统数据库(RSSD)计算机的主机名.
症状rs_init错误日志中报告以下消息:2006/06/1310:34:17Runningtask:checktheSQLServer.
2006/06/1310:34:18UnabletoconnecttoSQLServer'ost_agate_9'.
PleasemakesurethattheSQLServerisrunning,andtheSApasswordiscorrect.
2006/06/1310:34:18Taskfailed:checktheSQLServer.
Terminatingconfiguration.
2006/06/1310:34:18Configurationfailed.
2006/06/1310:34:18Exiting.
解释有时,目录服务不识别计算机的主机名,而只是根据计算机的IP地址识别计算机.
常见错误消息28ReplicationServer解决方法向interfaces文件中添加一个此计算机的query行,并指定主机的IP地址,而不是指定其名称.
例如,用IP地址2.
41.
100.
35代替主机名bss.
bsslt.
ch.
corma.
com:querytcpetherbss.
bsslt.
ch.
corma.
com31440querytcpether2.
41.
100.
3531440.
如果您再次运行rs_init,则可能会在rs_init错误日志中看到以下消息,但您可以忽略它们:CouldnotobtainHostnameforInternetaddress'2.
41.
100.
35'.
CouldnotobtainHostnameforInternetaddress'2.
41.
100.
41'.
CouldnotobtainHostnameforInternetaddress'2.
41.
100.
35'.
CouldnotobtainHostnameforInternetaddress'2.
41.
100.
41'.
RunningtasktochecktheRSSDAdaptiveServer.
ReplicationServer错误消息按数值顺序升序列出ReplicationServer错误.
ReplicationServer错误日志中记录以下错误消息.
错误21对例程srv_spawn的OpenServer调用失败.
症状在新连接启动后报告以下消息:ERROR#21DSI(126U10PDTE.
u10pdte)-(1426)Openservercalltoroutine'srv_spawn'failed.
OpenServererror:Error:16115,State:0,Severity10--'Couldnotstartthread'.
解释ReplicationServer用完了OpenServer线程.
srv_spawn负责分配这些线程.
ReplicationServer可以使用的最大OpenServer线程数等于num_threads参数指定的值.
解决方法通过增大num_threads参数的值来增加ReplicationServer可以使用的OpenServer线程数.
例如:configurereplicationserversetnum_threadsto'70'常见错误消息故障排除指南29错误1028错误1028在数据服务器向ReplicationServer返回错误时发生.
它后面通常跟有几个其它错误.
常规数据服务器错误常规1028错误的故障排除过程.
症状错误1028出现在ReplicationServer错误日志中,但报告AdaptiveServer错误:E.
2005/06/1215:25:44.
ERROR#1028DSIEXEC(107(2)westernDS.
westDB)-dsiqmint.
c(3027)Messagefromserver:Message:.
.
.
,State.
.
.
,Severity.
解释在某些情况下,数据服务器接口(DSI)线程关闭.
在以下情况下,AdaptiveServer错误挂起连接:AdaptiveServer错误被指派retry_stop或stop_replication错误操作.
您执行了带有nowait子句的suspendconnection命令.
如果DSI线程关闭,您将无法简单地恢复连接.
在问题没有修复的情况下恢复连接将向AdaptiveServer发送相同的事务并导致相同的错误.
解决方法确定并修复引起错误的AdaptiveServer问题.
如果无法更正引起问题的原因,请在尝试所有其它解决方法后,恢复连接并跳过此事务.
然后,可以手动将跳过的事务应用到复制表,以重新同步主表和复制表.
但是,跳过事务会导致主数据库和复制数据库不一致,这必须在复制数据库中手动修复.
另请参见跳过事务的影响(第99页)更正AdaptiveServer错误确定并修复引起复制错误的AdaptiveServer问题.
1.
登录到RSSD并执行rs_helpexception:1>rs_helpexception2>goSummaryofLoggedTransactionson'westernRS'Total#ofLoggedTransactions=1XactIDOrgSiteOrgUserOrgDateDestSite#Recs/Xact------107mil01hprdss.
eureurianJun132006westernDS.
eur常见错误消息30ReplicationServer3ForDetailedInformationonaLoggedXact.
,type'rs_helpexception{XactID}'(returnstatus=0)2.
若要显示事务的整个文本,请执行带有v选项以及步骤1中的事务ID的rs_helpexception:1>rs_helpexception107,v2>go您将看到:DetailedSummaryofLoggedTransaction#107on'westernRS'OriginSiteOriginUserOrg.
CommitDate#CmdsinXact-----westernDS.
westDBeurianJun13200612:243Dest.
SiteDest.
UserDateLoggedwesternDS.
westDB…eurianJun13200612:27Thistransactionwasloggedbythe'sysadminlog_first_tran'command.
RejectedRecordstextvalA0100distribute:origin_time='Jun1312:24:24:416PM',:origin_user='',:mode=1begintransaction'logexec'for'eurian'begintransactionA0100distribute:origin_user='',:mode=1exec"TT".
"so_req_rep_all_allcon"@"p01"=80000709,@"p02"='MIL'executett_act_rep_all_allcon@p01=80000709,@p02='MIL'A0100distribute:origin_time='Jun1312:24:416PM',:origin_user='',:mode=1committransactionexecuters_update_lastcommit@origin=107,@origin_qid=0x00000001004620d300019296000effffffff000000008910009bd7cd0001000000000001,@secondary_qid=0x000000000000000000000000000000000000000000000000000000000000000000000000,@origin_time='Jun1312:27:227PM'committransaction(returnstatus=0)此文本与发送到数据库的内容相对应(在这种情况下,已应用函数字符串).
3.
使用此事务信息将更新手动应用到复制数据库.
常见错误消息故障排除指南314.
修复数据库中的错误后,在ReplicationServer中恢复连接:>resumeconnectiontowesternDS.
westDBskiptransaction5.
将事务从例外日志中删除,以使日志变小:1>execrs_delexception1072>go可以使用rs_delexception_id删除按事务ID指定的一组事务.
还可以使用rs_delexception_date删除按事务日期指定的一组事务,使用rs_delexception_range删除按发起节点或用户或目标节点指定的一组事务.
有关完整的用法信息和更多示例,请参见《ReplicationServer参考手册》的"RSSD存储过程"中的存储过程说明.
DSI由于事务中的SQL错误而关闭在发送到复制AdaptiveServer的ReplicationServer事务发生SQL错误时发生.
AdaptiveServer错误包含在ReplicationServer错误的文本中.
症状ReplicationServer错误日志中报告以下错误消息:E.
2006/06/1312:31:29.
ERROR#1028DSI(western.
west1)-dsiqmint.
c(3645)Messagefromserver:Message:229,State:1,Severity:14--'DELETEpermissiondeniedonobjectreal_run,databasewest1,ownerdbo'.
H.
2006/06/1312:31:29.
THREADFATALERROR#5049DSI(western.
west1)-dsiqmint.
c(3652)TheDSIthreadfordatabase'western.
west1'isbeingshutdown.
DSIreceiveddataservererror#229whichismappedtoSTOP_REPLICATION.
Seeloggeddataservererrorsformoreinformation.
ThedataservererrorwascausedbyRSoutputcommand#1mappedfrominputcommand#2ofthefailedtransaction.
I.
2006/06/1312:31:29.
TheDSIthreadfordatabase'western.
west1'isshutdown.
TheMessagefromserver:textisthemessageyouwouldgetfromtheAdaptiveServerhadyousentthecommandbatchtotheserverwithisql.
Thetextistakenfromthetablesysmessages.
Inisqlyouwouldget:Msg229,Level14,State1:DELETEpermissiondeniedonobjectreal_run,databasewest1,ownerdbo解释这些错误在发送到复制AdaptiveServer的ReplicationServer事务包括SQL错误时发生.
复制AdaptiveServer检测到事务中的SQL错误,并向ReplicationServer返回一条消息.
ReplicationServer通过关闭连接并挂起复制进行响应;这可以防止主节点和复制节点之间的数据不一致.
它使得用户可以在复制AdaptiveServer中更正问题,并维护数据的一致性.
常见错误消息32ReplicationServer例如,当在参照完整性或重复键情况下发生SQL语义错误时,AdaptiveServer将其消息发送回ReplicationServer.
作为响应,ReplicationServer会关闭连接并在ReplicationServer错误日志中记录ReplicationServer错误.
ReplicationServer错误的正文中会引用AdaptiveServer错误.
解决方法按照《ReplicationServer故障排除指南》的"常见错误"的"1028"中的"常规数据服务器错误"中所述,修复AdaptiveServer中的问题并恢复连接.
如果问题仍然存在,请检验预订的autocorrection在ReplicationServer系统数据库(RSSD)的rs_repobjs.
attributes表中是否已打开.
同时,检查强制实施参照完整性规则的触发器.
另请参见常规数据服务器错误(第30页)AdaptiveServer和DB2表名不匹配在将具有大写名称的DB2表发送到AdaptiveServer时发生.
症状ReplicationServer错误日志中报告以下消息:E.
2006/06/1312:31:29.
ERROR#1028DSI(DSMA1.
apptst)-dsiqmint.
c(3668)Messagefromserver:Message:208,State:1,Severity:16--'TESTnotfound.
Specifyowner.
objectnameorusesp_helptocheckwhethertheobjectexists(sp_helpmayproducelotsofoutput).
'.
H.
2006/06/1312:31:29.
THREADFATALERROR#5049DSI(DSMA1.
apptst)-dsiqmint.
c(3675)TheDSIthreadfordatabase'DSMA1.
apptst'isbeingshutdown.
DSIreceiveddataservererror#208whichismappedtoSTOP_REPLICATION.
Seeloggeddataservererrorsformoreinformation.
ThedataservererrorwascausedbyRSoutputcommand#1mappedfrominputcommand#2ofthefailedtransaction.
E.
2006/06/1312:31:29.
ERROR#32032LTMUSER(TCPIP.
ZD60)-/nrm/nrm.
c(1658)Notablewithname'TEST'isdefinedatrepserverwithidTCPIP.
ZD6解释DB2对象名必须大写,而AdaptiveServer对象名大小写均可.
解决方法下列任何一种:常见错误消息故障排除指南33复制到具有大写对象名的"视图".
创建大写的表名,并使用具有列名(与复制表中列的大小写相匹配)的自定义函数字符串.
创建大写的AdaptiveServer对象名以与DB2对象名相匹配.
如果AdaptiveServer表使用小写名称,则在将事务发送到AdaptiveServer时,请使用函数字符串强制ReplicationServer生成小写表名和列名.
超过了AdaptiveServer最后机会阈值在达到最后机会阈值时发生.
此错误包括对AdaptiveServer错误7415的引用.
症状ReplicationServer错误日志中记录以下错误:I.
2006/06/1310:45:07.
Messagefromserver:Message:7415,State:1,Severity:10--'ThetransactionlogindatabasenorthDBisalmostfull.
Yourtransactionisbeingsuspendeduntilspaceismadeavailableinthelog.
'.
E.
2006/06/1310:45:07.
ERROR#5046DSI(axpst.
northDB)-/dsioqid.
c(1638)Whenexecutingthers_get_lastcommitfunctionindatabase'axpst.
northDB',receiveddataservererrors.
Seeloggeddataservererrorsformoreinformation.
解释缺省情况下,当目标数据库日志段大小大于AdaptiveServer的最后机会阈值时,复制AdaptiveServer将挂起所有事务处理.
最后机会阈值是一个防止日志扩展到超过最大日志大小的参数.
此问题与数据服务器接口(DSI)因复制数据库日志已满而关闭有关.
如果数据库是ReplicationServer系统数据库(RSSD),则会发生其它严重后果.
解决方法通过转储或截断日志来减小日志的大小:1.
在RSSD中使用以下命令手动转储日志:>sp_helpdbnorthDB>go>dumptrannorthDBto.
.
.
>go>sp_helpdbnorthDB>gowherenorthDB是日志已满的复制数据库.
2.
如果此步骤失败,请通过执行带有truncate_only或no_log选项的dumptran来截断日志.
常见错误消息34ReplicationServer另请参见RSSD日志设备已满(第40页)DSI由于复制数据库日志已满而关闭因为数据库的AdaptiveServer日志已满,所以复制数据服务器的数据服务器接口(DSI)线程已关闭.
症状DSI线程关闭,并且ReplicationServer错误日志中报告以下消息:E.
2006/06/1310:49:07.
ERROR#1028DSIEXEC(107(1)SYDNEY_DS.
pubs2)-dsiqmint.
c(2361)Messagefromserver:Message:1105,State3,Severity17--'Can'tallocatespaceforobject'syslogs'indatabase'pubs2'becausethe'logsegment'segmentisfull.
Ifyouranoutofspaceinsyslogs,dumpthetransactionlog.
Otherwise,useALTERDATABASEorsp_extendsegmenttoincreasethesizeofthesegment.
H.
2006/06/1310:49:07.
THREADFATALERROR#5049DSIEXEC(107(1)SYDNEY_DS.
pubs2)-dsiqmint.
c(2368)TheDSIthreadfordatabase'SYDNEY_DS.
pubs2'isbeingshutdown.
DSIreceiveddataservererror#1105whichismappedtoSTOP_REPLICATION.
Seeloggeddataservererrorsformoreinformation.
Thedataservererrorwascausedbyoutputcommand#1mappedfrominputcommand#1ofthefailedtransaction.
解释AdaptiveServer日志已满可能是由复制数据库或复制ReplicationServer中的问题导致.
此问题与达到最后机会阈值有关,当数据库的AdaptiveServer日志几乎充满时会发生这一问题.
解决方法1.
检查稳定设备上是否有足够的空间以增加AdaptiveServer日志的大小,并根据需要增加稳定设备的空间.
2.
向AdaptiveServer日志中添加空间.
3.
确保数据服务器的DSI线程和ReplicationServer的RSI线程:启动恢复连接连接关闭后复制新的事务常见错误消息故障排除指南35另请参见超过了AdaptiveServer最后机会阈值(第34页)正在恢复时访问数据库在ReplicationServer尝试使用正在进行恢复的AdaptiveServer数据库时发生.
症状ReplicationServer错误日志中记录以下消息:E.
2006/06/1310:53:36.
ERROR#1028DSI(western.
west1)-/dsiexec.
c(306)Messagefromserver:Message:921,State:1,Severity:14--'Database'west1'hasnotbeenrecoveredyet-pleasewaitandtryagain.
'.
I.
2006/06/1310:53:36.
Messagefromserver:Message:5701,State:1,Severity:10--'Changeddatabasecontextto'master'.
'.
E.
2006/06/1310:53:36.
ERROR#5051DSI(western.
west1)-/dsiexec.
c(314)Receivederrorsfromdatabase'western.
west1'.
Seeloggedct-libanddataservermessagesformoreinformation.
解释ReplicationServer无法连接到正在恢复的AdaptiveServer数据库.
当ReplicationServer处于以下状态时,它会自动尝试连接数据库(已创建了与数据库的连接):启动恢复连接连接关闭后复制新的事务解决方法在数据库恢复后连接会自动恢复.
未找到ReplicationServerSybaseIQ无法连接到复制ReplicationServer.
症状数据服务器接口(DSI)关闭,并且ReplicationServer错误日志中记录SQLAnywhere错误-1003002:E.
2010/09/2016:24:33.
ERROR#1028DSIEXEC(103(1)mrpserver.
mrp)-dsiqmint.
c(4218)Messagefromserver:Message:-1003002,State0,Severity14--'SQLAnywhereError-1003002:CtLibraryError:3,Severity:0,Origin:8,Layer:6ErrorMessage:ct_connect():directoryservicelayer:internaldirectorycontrollayererror:Requestedservernamenotfound.
OSError:0,OSMessage:常见错误消息36ReplicationServer解释使用实时装载(RTL)复制到SybaseIQ的复制还未正确配置.
每次ReplicationServer向SybaseIQ发送INSERT.
.
.
LOCATION语句时,SybaseIQ必须能够连接到ReplicationServer并检索数据.
解决方法在SybaseIQ服务器的interfaces文件中为复制ReplicationServer创建条目.
这能让SybaseIQ使用数据库连接中指定的用户名和口令连接到ReplicationServer.
维护用户必须是ReplicationServer中的有效用户,具有系统管理员权限,并且其口令与ReplicationServer用于登录到SybaseIQ的口令匹配.
Multiplex环境中的SybaseIQ无效权限.
发生条件是:到协调节点的连接未发生.
因为在IQMultiplexed系统中,协调节点是唯一可以执行locktable命令的节点.
症状ReplicationServer错误日志中报告以下消息:E.
2010/09/1408:51:13.
ERROR#1028DSIEXEC(104(1)pocmpx.
iqdb)-dsiqmint.
c(4234)Messagefromserver:Message:-1004015,State0,Severity14--'SQLAnywhereError-1004015:Permissiondenied:CommandnotallowedonMultiplexWriterservers.
(saint_iqthresholdddl.
cxx14936)'.
解释由于ReplicationServer进行连接并发出locktable命令,必须在Multiplex环境中建立从ReplicationServer到SybaseIQ的连接,才能连接到协调节点.
解决方法更改ReplicationServer使用的IQ的interfaces文件条目,以便连接到协调节点.
请参见《ReplicationServer异构指南》中的"ReplicatingintoSybaseIQ"(复制到SybaseIQ中).
错误5095rs_get_lastcommit函数返回的列长度不正确.
症状E.
2011/11/2313:44:15.
ERROR#5095DSI(138spotak1520iq.
iqdemo)-/dsioqid.
c(1786)Thesecondandthirdcolumnsreturnedbythers_get_lastcommitfunctionshouldhavelength72.
Theonereturnedfromdatabase'spotak1520iq.
iqdemo'forcolumn2is74.
I.
2011/11/2313:44:15.
TheDSIthreadfordatabase'spotak1520iq.
iqdemo'isshutdown.
常见错误消息故障排除指南37解释当复制到SybaseIQ,并且维护用户的配置属性参数ASE_BINARY_DISPLAY的值设置为on时,会发生此问题.
解决方法将ASE_BINARY_DISPLAY设置为off,它是SybaseIQ服务器的缺省值.
错误7035ReplicationServer内存不足.
症状连接启动后,ReplicationServer错误日志中报告以下消息:I.
2006/06/1310:58:42.
TheDSIthreadfordatabase'westernDS.
westDB'isstarted.
E.
2006/06/1310:58:42.
ERROR#7035DIST(westernDS.
westDB)-m/memseg.
c(771)Additionalallocationwouldexceedthememory_limitof'20000'specifiedintheconfiguration.
Increasethevalueofthememory_limitparameterinthers_configtableandrestarttheRepserver.
第二次尝试恢复连接时仅显示以下消息:I.
2006/06/1311:08:06.
AttempttostartaDSIthreadfordatabase'westernDS.
westDB'thathasalreadybeenstarted.
在ReplicationServer上运行adminwho_is_down表示线程已关闭.
以下示例指示DIST和DISTEXEC线程关闭:SpidNameStateInfoDISTDownwesternDS.
westDBDISTEXECDown105:1westernDS.
westDB解释ReplicationServer的分段内存已用完.
ReplicationServer可以使用的最大操作系统内存数量等于memory_limit参数指定的值.
ReplicationServer直接使用操作系统内存.
解决方法1.
增加memory_limit参数的值.
2.
重新启动ReplicationServer.
常见错误消息38ReplicationServer错误8039正要达到分配器可用于存放等待写入出站队列的消息的内存量.
症状ReplicationServer错误日志中报告以下错误消息:E.
2008/05/2108:37:50.
ERROR#8039SQM(16877328:0TRADE_REP)-tr/mdext.
c(2009)MDfailedtowakesomeonewaitingformemoryfromsource=TRADEDS.
tradedb.
解释这是信息性消息,指示正要达到md_sqm_write_request_limit参数的最大值.
解决方法如果经常报告,请增大md_sqm_write_request_limit参数的最大值.
错误8040稳定队列管理器(SQM)尝试唤醒实际上已启动的分配器线程.
症状ReplicationServer错误日志中报告以下错误消息:E.
2011/03/2806:27:44.
ERROR#8040SQM(163:0TRADEDS.
tradedb)-tr/mdext.
c(2066)MDfailedtowakesomeonewaitingforflushfromsource=TRADE_REP.
解释指示SQMWriter尝试唤醒分配器,但分配器没在休眠状态.
如果分配器线程已启动且复制正常进行,则可以认为此消息是信息性的.
解决方法如果分配器线程已关闭,则恢复它们.
错误11061ReplicationServer系统数据库(RSSD)问题.
RSSD死锁当发出ReplicationServer系统数据库(RSSD)命令的速度太快服务器无法处理它们时,通常会发生RSSD死锁.
当您运行创建、更改或删除许多预订或复制对象的脚本时,速度很快的计算机和网络上甚至也会发生死锁.
症状RSSD停止响应,而且您会在ReplicationServer错误日志中看到以下消息:常见错误消息故障排除指南39E.
2006/06/1311:14:12.
ERROR#11061USER(rho_dbo)-s/stscol.
c(1717)CheckthelogforerrormessagesfromRSSD.
E.
2006/06/1311:18:22.
ERROR#1028USER(rho_dbo)-s/stscol.
c(1717)Messagefromserver:Message:1205,State:2,Severity:13--'Yourservercommand(processid#14)wasdeadlockedwithanotherprocessandhasbeenchosenasdeadlockvictim.
Re-runyourcommand.
'.
解释当您执行以下操作时,可能会发生RSSD死锁:在星型配置中并行创建路由.
星型配置具有一个主ReplicationServer,它只具有到其它目标ReplicationServer的直接路由,而每个目标ReplicationServer只具有一个返回主ReplicationServer的直接路由.
在一个或多个ReplicationServer中创建、激活或验证预订.
在不同的ReplicationServer中并行删除复制定义.
注意:在生产环境中,复制数据库上的死锁情况由ReplicationServer自动处理.
解决方法如果路由发生死锁,请删除路由,并按顺序重新创建它们,且每次创建之间要间隔一分钟.
如果在激活或验证预订期间发生RSSD死锁:1.
在RSSD中使用rs_helpsub或在ReplicationServer中使用checksubscription,检查状态为"活动/激活",而不是"活动/未知"的预订.
2.
使用withoutpurge选项删除"活动/激活"预订,然后重新创建预订.
如果删除预订时发生死锁,请再次删除预订.
要防止出现大量的死锁,请不要同时将多个脚本装载到ReplicationServer中.
在极为特殊的情况下,应避免同时将脚本装载到不同的ReplicationServers中,而是要按顺序运行脚本.
RSSD日志设备已满ReplicationServer系统数据库(RSSD)日志空间严重不足.
症状ReplicationServer错误日志中报告以下消息:E.
2006/06/1310:35:15.
ERROR#11061USER(western_dbo)-s/stscol.
c(1717)CheckthelogforerrormessagesfromRSSD.
I.
2006/06/1310:35:15.
Messagefromserver:Message:7412,State:1,Severity:10--'Spaceavailableinthelogsegmenthasfallencriticallylowindatabase'rssd'.
常见错误消息40ReplicationServerAllfuturemodificationstothisdatabasewillbesuspendeduntilthelogissuccessfullydumpedandspacebecomesavailable.
'.
I.
2006/06/1310:35:15.
Messagefromserver:Message:7415,State:1,Severity:10--'Thetransactionlogindatabaserssdisalmostfull.
Yourtransactionisbeingsuspendeduntilspaceismadeavailableinthelog.
'.
解释验证预订期间,即使设置了truncateoncheckpoint选项,RSSD仍会用完日志空间.
ReplicationServer暂停且AdaptiveServer挂起对所有事务的修改.
解决日志空间问题后,ReplicationServer继续处理预订,但是没有正确地进行验证.
解决方法通过转储或截断日志来减小日志的大小:1.
在RSSD中使用以下命令手动转储日志:>sp_helpdbRSSD>go>dumptranRSSDto.
.
.
>go>sp_helpdbRSSD>go2.
如果此步骤失败,请通过执行带有truncate_only或no_log选项的dumptran来截断日志.
要防止发生此问题,请监控RSSD日志.
如果RSSD日志容量已用完80%以上:1.
挂起创建复制对象(预订)的操作系统进程.
2.
等待一分钟以允许ReplicationServer完成其事务.
3.
转储事务日志.
4.
重新开始进程.
错误13045由于ReplicationServer系统数据库(RSSD)重新启动,复制已挂起.
症状ReplicationServer错误日志中报告以下消息:E.
2006/06/1314:50:16.
ERROR#13045SQT(101:1DISTwestss.
eastlp)-seful/cm.
c(3914)Failedtoconnecttoserver'westss'asuser'westrs_rssd_prim'.
SeeCT-Liband/orservererrormessagesformoreinformation.
I.
2006/06/1314:50:17.
Tryingtoconnecttoserver'westss'asuser'westrs_rssd_prim'.
.
.
.
.
.
具有RSSD的AdaptiveServer重新启动后,ReplicationServer错误日志中报告以下错误消息:常见错误消息故障排除指南41E.
2006/06/1317:04:52.
ERROR#1027dSUB()-seful/cm.
c(3909)OpenClientClient-Libraryerror:Error:84083972,Severity5--'ct_connect():networkpacketlayer:internalnetlibraryerror:Net-Libprotocoldrivercalltoconnecttwoendpointsfailed',OperatingSystemerror0--'Socketconnectfailed-errno146Connectionrefused'.
E.
2006/06/1317:04:52.
ERROR#13045dSUB()-seful/cm.
c(3914)Failedtoconnecttoserver'westss'asuser'amerttp'.
SeeCT-Liband/orservererrormessagesformoreinformation.
I.
2006/06/1317:04:52.
Tryingtoconnecttoserver'westss'asuser'westrs_rssd_prim'.
.
.
.
.
.
E.
2006/06/1317:04:57.
ERROR#1027dSUB()-seful/cm.
c(3909)OpenClientClient-Libraryerror:Error:84083972,Severity5--'ct_connect():networkpacketlayer:internalnetlibraryerror:Net-Libprotocoldrivercalltoconnecttwoendpointsfailed',OperatingSystemerror0--'Socketconnectfailed-errno146Connectionrefused'.
E.
2006/06/1317:05:56.
ERROR#13043USER(westss_ra)-ul/cmapp.
c(888)Failedtoexecutethe'USEwestss_rssd'commandonserver'westss'.
SeeCT-LibandSQLServererrormessagesformoreinformation.
E.
2006/06/1317:05:56.
ERROR#1028USER(westss_ra)-ul/cmapp.
c(888)Messagefromserver:Message:911,State2,Severity11--'Attempttolocateentryinsysdatabasesfordatabase'westss_rssd'bynamefailed-noentryfoundunderthatname.
Makesurethatnameisenteredproperly.
'.
I.
2006/06/1317:05:56.
Messagefromserver:Message:5701,State1,Severity10--'Changeddatabasecontextto'master'.
'.
E.
2006/06/1317:05:56.
ERROR#13045USER(westss_ra)-seful/cm.
c(3318)Failedtoconnecttoserver'westss'asuser'westrs_rssd_prim'.
SeeCT-Liband/orservererrormessagesformoreinformation.
E.
2006/06/1317:05:56.
ERROR#1028USER(westss_ra)-seful/cm.
c(3318)Messagefromserver:Message:911,State2,Severity11--'Attempttolocateentryinsysdatabasesfordatabase'westss_rssd'bynamefailed-noentryfoundunderthatname.
Makesurethatnameisenteredproperly.
'.
I.
2006/06/1317:05:56.
Messagefromserver:Message:5701,State1,Severity10--'Changeddatabasecontextto'master'.
'.
E.
2006/06/1317:05:56.
ERROR#13043dREC(dREC)--ul/cmapp.
c(888)Failedtoexecutethe'USEwestss_rssd'commandonserver'westss'.
SeeCT-LibandSQLServererrormessagesformoreinformation.
常见错误消息42ReplicationServer解释当ReplicationServer正在运行时,控制ReplicationServer系统数据库(RSSD)的AdaptiveServer关闭并重新启动.
由ReplicationServer控制的数据库的分配器(DIST)和稳定队列事务(SQT)线程已终止.
对这些数据库进行的复制被终止,并且即使在RSSD再次可用后,复制也不会重新开始.
在ReplicationServer上运行adminwho_is_down命令显示DIST和SQT线程均已关闭:SpidNameStateInfoDISTDownwesternDS.
westDBSQTDown105:1westernDS.
westDB解决方法1.
在ReplicationServer上,对每个数据库执行resumedistributor以重新开始SQT和DIST线程.
2.
在每个数据库上运行adminwho_is_down以检验SQT和DIST线程是否已启动.
错误15020无法找到复制定义.
症状ReplicationServer错误日志中报告以下消息:Error#15020:"'%s'doesn'texist.
"解释无法找到要为其创建预订的复制定义.
解决方法检验是否已经为要复制的表的主版本创建了复制定义.
如果主ReplicationServer与复制ReplicationServer不同,请检验:已创建从主ReplicationServer到复制ReplicationServer的路由,或者复制定义已被复制.
检验已在复制ReplicationServer上输入了预订数据定义语言(DDL)命令.
错误15040与复制数据库的连接不存在.
症状ReplicationServer错误日志中报告以下消息:Error#15040:"Thisdatabase'%s.
%s'isnotcontrolledbythissite.
"常见错误消息故障排除指南43解释没有创建从复制ReplicationServer到数据库的连接.
解决方法在复制ReplicationServer上使用createconnection命令以创建到复制数据库的连接.
要创建到AdaptiveServer复制数据库的连接,请使用rs_init.
错误15052主数据库和复制数据库相同.
症状ReplicationServer错误日志中报告以下消息:Error#15052:"Thereplicatedatabase'%s.
%s'forsubscription'%s'isthesameastheprimarydatabaseforthereplicationdefinition'%s'.
Thisisnotallowed.
"解释不能创建复制数据库与主数据库相同的预订.
解决方法1.
在不同的数据库上创建复制表.
2.
再次执行createsubscription命令.
错误28028connectsource命令还未执行.
症状ReplicationServer错误日志中报告以下消息:Error#28028:"Connectsourceasuser'%s'failedatPRS'%s'forsubscription'%s',forreplicationdefinition'%RS_RSID'withreplicateat'%RS_SITEID'.
"解释复制ReplicationServer无法在主ReplicationServer上执行connectsource命令.
解决方法预订恢复守护程序应当恢复预订.
常见错误消息44ReplicationServer错误29024ReplicationServer找不到函数的匹配函数字符串.
症状ReplicationServer错误日志中报告的消息类似如下:Jan2611:27:59.
3002006:Error:29204,Line:864,File:'generic/dsi/fstrmap.
c'-Cannotfindamatchingfunctionstringforfunction'stocks.
rs_insert'andfunctionclass'rs_sqlserver_function_class'.
解释当ReplicationServer找不到与函数匹配的函数字符串时,发生此错误.
数据服务器接口(DSI)线程已挂起.
解决方法1.
在函数字符串的主节点查询ReplicationServer系统数据库(RSSD)以确定此处是否存在函数字符串.
将此查询用于带有复制定义范围的字符串:selectnamefromrs_funcstrings,rs_functions,rs_classes,rs_objectswherers_funcstrings.
classid=rs_classes.
classidandrs_funcstrings.
funcid=rs_functions.
funcidandclassname=function_class_nameandclasstype='F'andrs_functions.
objid=rs_objects.
objidandrs_objects.
objname=replication_definitionandobjtype='R'andfuncname=function_name如果主节点上不存在函数字符串,请继续执行第2步.
如果主节点上存在函数字符串,请转到第3步.
2.
如果主节点上不存在函数字符串,请在此处创建函数字符串.
如果在字符串中省略output子句,ReplicationServer将生成缺省的函数字符串.
3.
如果主节点上存在函数字符串,则此字符串尚未复制到复制节点上的ReplicationServer.
检验主节点上的RSSD是否正被复制到复制节点.
如果主节点上的更改正被复制到复制节点,则您可能需要等待函数字符串到达,然后重新启动DSI.
4.
对于rs_select和rs_select_with_lock,必须具有其输入模板与select命令的where子句匹配的函数字符串.
配合使用rs_systext扩展上述查询以检索函数字符串的输入模板.
如果收到错误的DSI正在与使用rs_sqlserver_function_class、rs_default_function_class或rs_db2_function_class以外的函数字符串类的服务器通信,则您可能仍然需要创建函数字符串.
另请参见排除复制故障(第18页)常见错误消息故障排除指南45错误37022需要创建预订的权限.
症状ReplicationServer错误日志中报告以下消息:Error#37022:"PRIMARYSUBCRIBEpermissionisrequiredtoexecutethesubscriptioncommand.
"解释您没有创建预订的权限.
您必须在主ReplicationServer上具有primarysubscribe、createobject或sa权限.
解决方法使用grant命令更改权限.
错误37023需要创建对象的权限.
症状ReplicationServer错误日志中报告以下消息:Error#37023:"CREATEOBJECTpermissionisrequiredtoexecutecommand.
"解释您没有必需的权限.
解决方法使用grant命令将权限更改为createobject.
ReplicationServer信息性消息和警告消息ReplicationServer错误日志中报告信息性消息和警告消息.
系统表的高速缓存行被换出高速缓存行被换出以容纳另一行.
症状以下信息性消息多次出现在ReplicationServer错误日志中:I.
2006/06/1315:39:53.
Acachedrowforsystemtable'rs_columns'wasswappedoutofthecacheinordertoaccomodateanotherrow.
常见错误消息46ReplicationServer解释当高速缓存中没有可用空间用于特定ReplicationServer系统数据库(RSSD)系统表中的更多行时,系统表中最旧的行将从高速缓存中换出.
sts_cachesize参数指定为单个RSSD系统表高速缓存的最大行数.
解决方法增加RSSD的sts_cachesize参数的值.
正在检测数据库丢失通常在执行rebuildqueues命令后发生.
此命令通常会在稳定设备故障后发出.
症状仅当您发出rebuildqueues命令而且数据丢失检测过程已完成之后,才检查ReplicationServer错误日志中的数据丢失检测消息.
另外,仅在存在要复制的主事务时才执行数据丢失检测.
ReplicationMonitoringServices(RMS)心跳功能将主事务复制到目标数据服务器.
您可以为连接激活心跳功能,以强制执行数据丢失检测.
注意:有时,这些消息不出现在错误日志文件的末尾,因此您必须向前搜索日志以找到这些消息.
如果重新启动ReplicationServer,这些消息将再次出现.
I.
2006/06/1315:48:32.
RebuildQueues:StartingI.
2006/06/1315:48:33.
DisconnectingReplicationAgentforwestss.
westrs_rssd.
ReplicationAgentwillshutdownI.
2006/06/1315:48:33.
DisconnectingReplicationAgentforwestss.
westrs_rssdtoRebuildI.
2006/06/1315:48:33.
ResettingReplicationAgentstartinglogpositionforwestss.
westrs_rssdI.
2006/06/1315:48:33.
ResettingReplicationAgentstartinglogpositionforwestss.
eastlpI.
2006/06/1315:48:33.
Shuttingdowndistributorfor101.
I.
2006/06/1315:48:33.
Arequesttoshutdown/suspendthedistributorfor101hasbeenreceived.
I.
2006/06/1315:48:33.
Thedistributorfor'westss.
westrs_rssd'isshuttingdownI.
2006/06/1315:48:33.
Shuttingdowndistributorfor102.
I.
2006/06/1315:48:33.
Arequesttoshutdown/suspendthedistributorfor102hasbeenreceived.
I.
2006/06/1315:48:34.
Thedistributorfor'westss.
eastlp'isshuttingdownI.
2006/06/1315:48:34.
ShuttingdowntheDSIthreadfor'westss.
westrs_rssd'.
I.
2006/06/1315:48:34.
TheDSIthreadfordatabase'westss.
westrs_rssd'isshutdown.
I.
2006/06/1315:48:34.
DSI:enabledlossdetectionfor'westss.
westrs_rssd'.
I.
2006/06/1315:48:34.
ShuttingdowntheDSIthreadfor'westss.
eastlp'.
常见错误消息故障排除指南47I.
2006/06/1315:48:34.
TheDSIthreadfordatabase'westss.
eastlp'isshutdown.
I.
2006/06/1315:48:34.
DSI:enabledlossdetectionfor'westss.
eastlp'.
I.
2006/06/1315:48:34.
ShuttingdowntheDSIthreadfor'westss.
westlp'.
I.
2006/06/1315:48:35.
TheDSIthreadfordatabase'westss.
westlp'isshutdown.
I.
2006/06/1315:48:35.
DSI:enabledlossdetectionfor'westss.
westlp'.
I.
2006/06/1315:48:35.
Rebuildqueues:deletingqueue103:0I.
2006/06/1315:48:35.
SQMstopping:103:0westss.
westlpI.
2006/06/1315:48:35.
Rebuildqueues:donerebuildingqueue103:0.
Restarting.
I.
2006/06/1315:48:35.
Rebuildqueues:deletingqueue102:1I.
2006/06/1315:48:35.
SQMstopping:102:1westss.
eastlpI.
2006/06/1315:48:35.
SQMstarting:103:0westss.
westlpI.
2006/06/1315:48:35.
Rebuildqueues:donerebuildingqueue102:1.
Restarting.
I.
2006/06/1315:48:35.
Rebuildqueues:deletingqueue102:0I.
2006/06/1315:48:36.
SQMstopping:102:0westss.
eastlpI.
2006/06/1315:48:36.
SQMstarting:102:1westss.
eastlpI.
2006/06/1315:48:36.
Rebuildqueues:donerebuildingqueue102:0.
Restarting.
I.
2006/06/1315:48:36.
Rebuildqueues:deletingqueue101:1I.
2006/06/1315:48:36.
SQMstopping:101:1westss.
westrs_rssdI.
2006/06/1315:48:36.
SQMstarting:102:0westss.
eastlpI.
2006/06/1315:48:36.
Rebuildqueues:donerebuildingqueue101:1.
Restarting.
I.
2006/06/1315:48:36.
Rebuildqueues:deletingqueue101:0I.
2006/06/1315:48:36.
SQMstopping:101:0westss.
westrs_rssdI.
2006/06/1315:48:36.
SQMstarting:101:1westss.
westrs_rssdI.
2006/06/1315:48:37.
Rebuildqueues:donerebuildingqueue101:0.
Restarting.
I.
2006/06/1315:48:37.
SQMstarting:101:0westss.
westrs_rssdI.
2006/06/1315:48:37.
StartingDISTfor101:1.
I.
2006/06/1315:48:37.
StartingDISTfor102:1.
I.
2006/06/1315:48:37.
DISTfor'westss.
westrs_rssd'isStartingI.
2006/06/1315:48:37.
DISTfor'westss.
pdb'is常见错误消息48ReplicationServerStartingI.
2006/06/1315:48:37.
StartingtheDSIthreadfor'westss.
westrs_rssd'.
I.
2006/06/1315:48:38.
StartingtheDSIthreadfor'westss.
westlp'.
I.
2006/06/1315:48:38.
TheDSIthreadfordatabase'westss.
westrs_rssd'isstarted.
I.
2006/06/1315:48:39.
StartingtheDSIthreadfor'westss.
eastlp'.
I.
2006/06/1315:48:40.
TheDSIthreadfordatabase'westss.
eastlp'isstarted.
I.
2006/06/1315:48:41.
TheDSIthreadfordatabase'westss.
eastlp'isstarted.
I.
2006/06/1315:48:41.
RebuildQueues:CompleteI.
2006/06/1315:48:44.
DSI:detectinglossfordatabase'westss.
eastlp'fromorigin'westss.
westlp'date='Jun1320062:36:49:783PM',qid=0000000000001d240000054b00090000054b0007000097df00f0d417000000000000001.
解释ReplicationServer检测主ReplicationServer或数据库的丢失情况.
来自主ReplicationServer或数据库的用户事务不再被接受.
如果复制系统具有多个ReplicationServer,则检测到的数据丢失可能是数据服务器接口(DSI)丢失或ReplicationServer接口(RSI)丢失.
如果复制系统仅有一个ReplicationServer,则检测到的数据丢失是DSI丢失.
DSI丢失意味着数据未从ReplicationServer复制到复制数据库.
RSI丢失意味着数据未从一个ReplicationServer复制到另一个ReplicationServer.
解决方法有关更正数据丢失的信息,请参见《ReplicationServer管理指南第二卷》.
要防止数据丢失,请使用DSI或RSI保存间隔创建备份策略,备份策略的日志要足够大,以便可以保存所有消息.
DSI检测到rs_update_lastcommit未标记为已复制rs_update_lastcommit存储过程未标记为要复制.
症状热备份数据库断开连接,并且ReplicationServer错误日志中报告以下错误:I.
2006/06/1315:39:53.
DSIfor%RS_SITEIDdetectedthatstoredprocedurers_update_lastcommitisnotmarkedasreplicated.
Pleaseexecutesp_setreplicateandresumeconnectionWhenactiveDSIcomesupinpresenceoftheWarmStandbyitcheckswhetherrs_update_lastcommitstoredprocedureismarkedasreplicated.
ThisDSIdetectedaproblemwithreplicationstatusofthisstoredprocedure.
Please,correcttheproblemandresumeconnection常见错误消息故障排除指南49解释此错误发生于热备用安装期间.
您使用isql执行了createconnection命令,并且未将rs_update_lastcommit标记为已复制.
解决方法1.
通过使用sp_setrepproc进行标记,设置rs_update_lastcommit的复制状态.
2.
恢复连接.
您可以使用rs_init创建到热备份数据库的连接,而不使用createconnection命令.
在您使用rs_init设置热备份时不会出现此消息.
当您使用rs_init设置活动和备份数据库时,rs_update_lastcommit存储过程自动被标记为用于复制.
稳定存储使用率超过75%ReplicationServer上所有队列的大小总和已超过设定的阈值.
症状以下消息显示在ReplicationServer错误日志中:W.
2006/06/1318:41:12.
WARNING#6089SQM(129:0TTTdss.
eanp)-qm/sqmsp.
c(1317)WARNING:StableStorageUseisAbove75percent解释对于稳定设备,ReplicationServer具有两个缺省阈值(75%和90%).
每当超过这两个阈值时都会发出警告消息.
解决方法当超过75%和90%阈值时:1.
检验复制数据库是否正在运行.
2.
如果所有其它组件正常运行,并且入站队列正在增长,请关闭相应的AdaptiveServer并检查打开的事务.
3.
如果出站队列正在增长,请检查DSI保存间隔和低块使用率.
Connector错误消息错误和跟踪消息显示在ReplicationServer错误日志中以及(如果设置了logfile_path跟踪选项)连接器日志中.
常见错误消息50ReplicationServer连接器版本不兼容连接器和ReplicationServer是使用不同CanonicalInterface(CI)版本生成的.
症状ReplicationServer错误日志中出现的跟踪消息类似如下:T.
2010/04/2916:32:54.
(17):Version[3.
1]ofConnector[ora.
oci],isincompatiblewithCIversion[3.
2].
解释当连接器所基于的CanonicalInterface(CI)规格不同于ReplicationServer所基于的规格时,会发生此跟踪.
在上述消息中,Oracle连接器仅与CI3.
1版兼容,而ReplicationServer需要CI3.
2版.
解决方法请确保连接器和CI具有相同的版本.
可能需要升级连接器以便与ReplicationServer使用的CI版本匹配.
可以通过在libsybeconn.
dll(Windows)或libsybeconn.
so(UNIX)中检查版本字符串来查找CI(也称为RCI),例如:stringslibsybeconn.
dll|grepExpressSybaseExpressConnect-Library/15.
5/P/RCI3.
2/NT(IX86)/Windows2003/1/DEBUG/ThuApr2908:40:082010没有为未许可功能生成连接器的权限连接器功能的有效许可证不可用.
症状ReplicationServer错误日志中报告的消息类似如下:T.
2010/04/2916:32:54.
(17):Nopermissiontoproduceconnectorforunlicensedfeature[REP_EC_ORA].
解释在连接器功能没有有效的SySAM许可证时,会发生此错误.
解决方法购买所需的连接器功能,如ExpressConnectforOracle.
安装功能产品,并确保许可证已正确更新.
无法从工厂生成连接器正要装载的工厂库丢失或其名称已更改.
症状ReplicationServer错误日志中报告的消息类似如下:常见错误消息故障排除指南51T.
2010/04/2916:32:54.
(17):FailedtoproduceConnectorfromfactoryusinglibrary[libsybora.
dll].
解释上述消息指示libsybora.
dll工厂无法生成Oracle连接器libsyboraoci.
dll.
解决方法确保连接器库可在PATH(Windows)或LD_LIBRARY_PATH(UNIX)所定义的目录中找到.
装载连接器工厂失败正要装载的工厂库丢失或其名称已更改.
症状ReplicationServer错误日志中写入的消息类似如下:T.
2010/02/0410:32:08.
(22):LoadingofConnectorfactorylibrary[libsybora.
dll]failed.
Error=[126].
解释在UNIX上,消息详述错误.
在MicrosoftWindows上,错误信息在MicrosoftDeveloperNetwork(MSDN)网站上给出.
若要在MSDN网站上搜索错误说明:1.
转到http://msdn.
microsoft.
com,搜索"systemerrorcodes"(系统错误代码).
2.
要在"SystemErrorCodes"(系统错误代码)页上搜索错误代码说明.
解决方法确保连接器库可在PATH(Windows)或LD_LIBRARY_PATH(UNIX)所定义的目录中找到.
RepAgent错误消息RepAgent错误消息记录在AdaptiveServer错误日志中.
错误9202不允许嵌套的存储过程.
症状AdaptiveServer错误日志中报告以下错误消息:00:00000:00011:2006/06/1316:26:05.
12serverError:9202,Severity:20,State:000:00000:00011:2006/06/1316:26:05.
12serverRepAgent(5):Nestedreplicatedstoredproceduredetected.
Transactionlogmaybecorrupt.
Pleasecontact常见错误消息52ReplicationServerSYBASETechnicalSupport.
(currentmarker=1372,12)00:00000:00011:2006/06/1316:26:05.
12serverRepAgentThreadfordatabase'pdb'(dbid=5)terminatedabnormallywitherror.
(major92,minor2)解释嵌套的存储过程被从另一存储过程中调用.
调用嵌套存储过程的存储过程被称为外部存储过程.
当具有嵌套存储过程的存储过程使用sp_setrepproc被标记用于复制时:RepAgent关闭.
RepAgent仅向ReplicationServer转发对外层存储过程的调用.
AdaptiveServer错误日志中报告一条错误消息.
解决方法不要使用嵌套的复制存储过程.
而是:1.
跳过嵌套的存储过程事务.
a.
查找辅助截断点的页:dbccgettruncb.
通过执行以下命令来查找嵌套存储过程事务后面的有效页:dbcctraceon(3604)dbccpglinkage(dbid,pageid,0,2,0,1)其中pageid是通过执行步骤a中的dbccgettrunc收到的页的ID.
c.
在嵌套存储过程事务后面的有效页上设置新的辅助截断点:dbccsettrunc('ltm','pageid',pageid)其中pageid是在步骤a中使用dbccpagelinkage检索到的当前页后面的页的ID.
d.
重置定位符:rs_zeroltm2.
仅重新应用嵌套的存储过程事务.
3.
重新启动RepAgent.
注意:此过程也会造成数据丢失,因为手动将辅助截断点设置到日志中后面的页会跳过已跳过页上的任何begintransaction语句.
这些事务不会复制.
错误9210遇到了网络问题.
症状AdaptiveServer错误日志中报告以下消息:2006/09/0709:41:26.
34RepAgent(10)Error:9210,Severity:EX_CMDFATAL,State:1FatalerrorfromCT-Lib.
常见错误消息故障排除指南53OpenClientClient-Libraryerror:Error:84083974,Severity:5--ct_results():unabletogetlayermessagestring:unabletogetoriginmessagestring:Net-Libraryoperationterminatedduetodisconnect.
解释当存在网络问题时(例如,当RepAgent无法初始化Client-Library连接,或ReplicationServer返回意外错误时),您会看到这些消息.
网络问题也可能导致RepAgent错误9212(它由CT-Lib错误导致).
解决方法修复网络问题并重新启动RepAgent.
修复网络问题之后,在ReplicationServer上执行adminwho_is_down.
您会看到REPAGENTUSER线程关闭.
在ReplicationMonitoringServices(RMS)中,ReplicationServer显示为"可疑"状态(黄色),而RepAgent显示为"正常"状态(绿色).
错误9215(ASE624)数据库日志被截断.
症状以下消息显示在AdaptiveServer错误日志中:2006/10/1711:57:19.
34RepAgent(10)Error:9215,Severity:EX_USER,State:1TheSecondaryTruncationPointisnotvalid.
PleasemakesurethattheSecondaryTruncationPointisvalid,andthenrestarttheRepAgentThreadforthisdatabase.
解释此错误在日志被截断的位置超过辅助截断点,且RepAgent尝试重新连接到数据库时发生.
RepAgent从ReplicationServer中请求日志页码,然后访问数据库中的该页.
因为日志已截断,所以RepAgent不会启动.
因为请求的RID大于页面上最后的RID,所以使用行标识符(RID)从页面中检索行的尝试失败.
例如,截断日志仅释放那些RepAgent已发送到ReplicationServer且经过确认的日志页.
解决方法因为您截断了日志,所以必须如下所示,在ReplicationServer系统数据库(RSSD)中的rs_locater表中重设有关数据库日志的信息.
1.
在RSSD中,执行:>rs_zeroltmprimss,primdb>go2.
在主数据库中,重新激活辅助截断点:常见错误消息54ReplicationServer>dbccsettrunc(ltm,valid)>go3.
重新启动RepAgent.
通过比较dbccgettrunc的输出与rs_locater表属性定位器的内容,检查打开的事务.
截断事务日志可能已导致孤立的事务.
在传送事务的begin语句时,如果commit或rollback语句在截断日志时被意外删除,则会发生孤立的事务.
常见错误消息故障排除指南55常见错误消息56ReplicationServer路由问题在创建、变更或删除路由时会发生路由问题.
若要排除问题,请获取并分析ReplicationServer错误日志中的信息,或者执行rs_helproute存储过程;也可能这两项任务都需要完成.
另请参见故障排除概述(第3页)路由路由是从源ReplicationServer到目标ReplicationServer的单向消息流.
路由在ReplicationServer之间传送数据修改命令(包括用于ReplicationServer系统数据库(RSSD)的命令)和复制函数或存储过程.
路由有两种类型:直接和间接.
直接路由将消息从源ReplicationServer直接发送到目标ReplicationServer,不经过中间ReplicationServer.
间接路由通过一个或多个中间ReplicationServer发送消息.
rs_marker存储过程包含完整的createroute、alterroute或droproute命令.
下面给出了创建、变更和删除路由的一般过程:源ReplicationServer会针对其RSSD执行rs_marker.
RSSD的RepAgent会接管存储过程的执行,然后,将它转发到源ReplicationServer.
源ReplicationServer将存储过程的执行添加到其入站队列中,然后,将它转发到目标ReplicationServer.
目标ReplicationServer的标识由存储过程中的参数提供.
目标ReplicationServer处理存储过程的执行,这样就会实现对主ReplicationServerRSSDrs_routes、rs_subscriptions、rs_rules和rs_locater系统表的预订.
createroute过程createroute命令指定用于当前ReplicationServer到远程ReplicationServer的连接的路由.
在创建路由时:源ReplicationServer连接到目标ReplicationServer.
源ReplicationServer需要用正确的用户名和口令才能连接目标ReplicationServer.
源ReplicationServer向目标ReplicationServer发送创建路由的消息.
路由问题故障排除指南57目标ReplicationServer收到该消息,然后开始创建源ReplicationServer系统表预订.
创建系统表预订后,该过程就完成了.
droproute过程droproute命令关闭到另一个ReplicationServer的路由.
缺省情况下,在删除路由之前,源ReplicationServer会等待目标ReplicationServer清除完路由中的目标ReplicationServer部分.
使用withnowait选项能让源ReplicationServer在不通知目标ReplicationServer的情况下删除路由.
但是,在目标ReplicationServer再次变得可用时,您必须手动清除目标ReplicationServer.
警告!
只有在目标暂时无法恢复而且您不等目标ReplicationServer变得可用就必须删除路由时,才需要使用withnowait选项.
当使用缺省设置删除路由时:源ReplicationServer会删除目标ReplicationServer创建的所有系统表预订.
源ReplicationServer会向目标ReplicationServer发送删除路由协议消息.
当该消息发送到目标ReplicationServer(如果是间接路由,则发送到下一个节点)后,源ReplicationServer会通过从它的rs_routes系统表中删除路由条目(如果是直接路由,则删除出站队列)来删除路由.
目标ReplicationServer会收到删除路由消息,然后,通过从自己的rs_locater系统表中删除源ReplicationServer的定位符来清除路由中的目标ReplicationServer部分.
当使用withnowait选项删除路由时:源ReplicationServer会删除目标ReplicationServer创建的所有系统表预订.
源ReplicationServer通过从它的rs_routes系统表中删除路由条目(如果是直接路由,则删除出站队列)来删除路由.
清除目标ReplicationServer在运行带有withnowait选项的droproute后,手动清除路由的目标服务器一端.
1.
验证来自源ReplicationServer的所有消息是否都经由数据服务器接口(DSI)队列传送.
2.
从rs_subscriptions系统表中删除在创建路由时由该节点输入的所有系统表预订.
3.
从rs_rules系统表中删除这些预订的行.
4.
从rs_subscriptions和rs_rules系统表中清除用户预订条目.
5.
对每个系统表执行:deletefromsystem_tablewhereprsid=sourceRS_siteid其中:路由问题58ReplicationServersystem_table是系统表(rs_subscriptions或rs_rules)的名称.
sourceRS_siteid是源ReplicationServer的节点ID.
有关delete命令的详细信息,请参见《AdaptiveServer参考手册:命令》.
6.
从rs_routes系统表中删除该路由的条目.
7.
从rs_locater系统表中删除源ReplicationServer的条目.
rs_helprouters_helproute存储过程显示路由的当前状态以及它当前处理的预订.
在创建、变更或删除路由的过程中,路由会经历多种不同的状态.
在源ReplicationServer或目标ReplicationServer上执行rs_helproute:rs_helproute[replication_server]其中replication_server是可选参数,指示ReplicationServer的名称.
如果您输入此参数,则会为以指定的ReplicationServer作为源和目标的路由提供信息.
如果不输入,则会为所有以当前ReplicationServer作为源和目标的路由提供信息.
对于每个路由,rs_helproute都返回:路由状态从"状态"中可以判断路由协议的状态.
源ReplicationServer上与目标ReplicationServer上的路由状态是不同的.
分析源和目标ReplicationServer上的路由状态,以判断出问题出在哪里.
当前正在处理的一列系统表预订系统表预订的实现不完整或取消实现均属于最常见的问题.
因为创建、变更和删除路由涉及到处理系统表预订,所以,rs_helproute返回的列表有助于您确定哪些预订会阻止您继续执行过程中的下一步.
如果您在创建路由,该列表会包含正在创建的系统表预订.
如果您在删除路由,该列表会包含正在删除的系统表预订.
如果没有为路由列出系统表预订,则说明系统表预订没有问题.
请参见《ReplicationServer参考手册》.
创建路由时出现的问题描述在创建路由时可能发生的问题.
路由问题故障排除指南59常见问题列出并提供在createroute命令失败时可能发生的常见问题的解决方法.
表5.
创建路由时的常见问题问题推荐操作目标ReplicationServer的接口文件中没有源ReplicationServer的条目.
将此名称添加到interfaces文件中.
无法创建刚删除的路由.
等到目标ReplicationServer清除了它到源ReplicationServer的路由后,目标ReplicationServer就可以接受新路由了.
您可能需要从源ReplicationServer恢复此路由,因为在此路由被目标ReplicationServer拒绝连接后,源ReplicationServer可能已将此路由挂起.
无法创建间接路由;位于中间节点的日志中报告routeisneededtoreachthedestination(需要路由才能到达目标).
使用带有withnowait子句的droproute删除从源到目标的路由.
接着,创建从中间节点到目标节点的路由.
然后,使用带有setnextsite的createroute创建从源到目标的间接路由.
源ReplicationServer的错误日志中的消息列出并提供源ReplicationServer错误日志中的错误消息的解决方法.
表6.
源ReplicationServer上的消息消息解释推荐操作RSIdestinationname:LoginincorrectRSIdestinationname:Tryingtoconnect源ReplicationServer尝试用createroute命令提供的用户名和口令连接目标ReplicationServer,但目标ReplicationServer无法识别该用户名和口令.
1.
执行以下任务之一:使用createuser或alteruser在目标ReplicationServer上创建或变更该用户名和口令.
使用带有setusername的alterroute变更该路由的用户名和口令.
使用带有withnowait的droproute删除该路由.
然后,重新创建路由.
2.
使用resumeroute在源ReplicationServer上恢复该路由.
路由问题60ReplicationServer消息解释推荐操作cm:Couldnotfindinterfacesentryfordestinationname在interfaces文件中没有找到目标ReplicationServer名称.
执行以下任务之一:在interfaces文件中添加ReplicationServer名称,或者如果您本来不想创建到该目标的路由,请使用带有withnowait的droproute命令删除该路由.
源ReplicationServer上的rs_helproute输出描述当创建路由时在源ReplicationServer上执行rs_helproute时的输出.
表7.
源服务器上的rs_helproute输出消息解释推荐操作Routeisbeingcreated.
SourceRShasnotyetattemptedtosendtheprotocolmessagetothedestinationRS.
源ReplicationServer无法对其ReplicationServer系统数据库(RSSD)执行rs_marker存储过程.
重新启动ReplicationServer.
如果重新启动不能修复路由,请检查错误日志中的RSSD消息及任何相关的消息.
错误日志中可能会有一条消息指出RSSD有一些问题.
Routeisbeingcreated.
Either(1)RSiswaitingforarouteprotocolmes-sagefromtheRSSDReplicationAgentor(2)theRSSDReplicationAgentinboundqueueisnotbeingprocessed.
一条消息可能滞留在RSSD日志与ReplicationServer入站队列之间.
发送路由的ReplicationServer执行了存储过程,但RSSDReplicationAgent无法将该存储过程转发到ReplicationServer.
检查RSSDReplicationAgent在向ReplicationServer发送消息时是否遇到了问题.
如果没问题,则重新启动RSSDReplicationAgen.
一条消息可能滞留在ReplicationServer的入站与出站队列之间.
检查ReplicationServer入站队列是否已满,或者RSSD的分发器是否没有运行.
如果不存在上述任何问题,则重新启动RSSDReplicationAgent.
Routeisbeingcreated.
Createrouteprotocolmessageiswaitingtobedeliveredtothedestina-tion.
发送路由的ReplicationServer没有处理其出站队列.
如果出现以下情况,则恢复路由:ReplicationServer接口(RSI)在连接到目标ReplicationServer时遇到了问题.
路由已被挂起.
验证是否:目标ReplicationServer已启动.
目标ReplicationServer的RSI在源ReplicationServer上运行.
路由问题故障排除指南61消息解释推荐操作Routeisbeingcreated.
Destinationhasnotyetfinishedcreatingsystemtablesubscriptions.
目标ReplicationServer仍在创建对系统表的预订.
确保目标ReplicationServer正在运行.
如果出现以下情况,则恢复路由:RSI在连接到目标ReplicationServer时遇到问题.
源无法向目标发送消息.
系统因出现错误而挂起路由,或者,用户显式挂起路由.
检查仍需创建的系统表预订的列表.
目标服务器上的rs_helproute输出描述当创建路由时在目标ReplicationServer上执行rs_helproute时的输出.
表8.
目标服务器上的rs_helproute输出消息解释推荐操作ThissitereceivedthecreaterouteprotocolmessagefromthesourceRSandisintheprocessofcreatingsystemtablesub-scriptions.
目标ReplicationServer正在完成其系统表预订.
检查仍需创建的系统表预订的列表.
如果目标ReplicationServer在此状态下挂起,则可能是系统表预订有问题.
排除变更路由时出现的问题修复使用alterroute命令时遇到的问题.
1.
执行alterroute之前,停顿复制系统.
请参见《ReplicationServer管理指南第一卷》.
2.
如果要将直接路由更改为间接路由,或者如果要更改间接路由中的中间节点,那么可以创建从新的中间节点到目标节点的路由.
3.
在目标ReplicationServer上执行rs_helproute以确定alterroute命令是否成功.
确保输出反映了所做的路由更改.
如果路由更改不成功,请按照《ReplicationServer故障排除指南》的"路由问题"的"创建路由时出现的问题"的"源ReplicationServer上的rs_helproute输出"中的故障排除步骤操作.
另请参见源ReplicationServer上的rs_helproute输出(第61页)路由问题62ReplicationServer删除路由时出现的问题描述在删除路由时可能发生的问题.
源ReplicationServer上的rs_helproute输出描述当删除路由时在源ReplicationServer上执行rs_helproute时的输出.
droproute和droproutewithnowait命令的rs_helproute输出相同,唯一不同之处是对于droproutewithnowait,状态开头为:Routeisbeingdroppedwithnowait.
.
.
.
而不是:Routeisbeingdropped.
.
.
.
表9.
源ReplicationServer上的rs_helproute输出消息解释推荐操作Routeisbeingdropped.
Systemtablesubscrip-tionsarebeingdropped.
目标ReplicationServer正在尝试删除系统表预订.
检查仍需删除的系统表预订的列表.
Routeisbeingdropped.
Waitingforthesystemtablesubscriptionstobedropped.
在删除预订之前,系统一直处于这种状态.
ReplicationServer不应该长期处于这种状态.
如果ReplicationServer长期处于这种状态,则说明可能出现了预订问题.
Routeisbeingdropped.
SourceRShasnotyetat-temptedtosendthedroprouteprotocolmessagetothedestinationRS.
发送路由的ReplicationServer无法对其ReplicationServer系统数据库(RSSD)执行rs_marker存储过程.
重新启动ReplicationServer.
检查错误日志中的RSSD消息及任何相关消息.
错误日志中可能会有一条消息指出RSSD有一些问题.
Routeisbeingdropped.
Droprouteprotocolmes-sageshouldbeeitherinRSSDReplicationAgentqueueorintheinboundqueue.
一条消息可能滞留在RSSD日志与ReplicationServer入站队列之间.
发送路由的ReplicationServer执行了存储过程,但RSSDReplicationAgent无法将该存储过程转发到ReplicationServer.
检查RSSDReplicationAgent在向ReplicationServer发送消息时是否遇到了问题.
如果没问题,则重新启动RSSDReplicationAgen.
一条消息可能滞留在ReplicationServer的入站与出站队列之间.
检查ReplicationServer入站队列是否已满,或者RSSD的分发器是否没有运行.
如果不存在上述任何问题,则重新启动RSSDReplicationAgent.
路由问题故障排除指南63消息解释推荐操作Routeisbeingdropped.
Droprouteprotocolmes-sageiswaitingtobede-liveredtothedestination.
发送路由的ReplicationServer没有处理其出站队列.
检查目标ReplicationServer是否在运行.
如果ReplicationServer接口(RSI)无法连接到目标ReplicationServer,则可能需要恢复路由.
另请参见ReplicationServer接口问题(第85页)目标服务器上的rs_helproute输出描述当删除路由时在目标ReplicationServer上执行rs_helproute时的输出.
表10.
目标服务器上的rs_helproute输出消息解释推荐操作Routeisbeingdropped.
源ReplicationServer正在删除路由.
目标ReplicationServer在路由被删除时不是很活跃.
只有在源ReplicationServer上才能看到所有的状态变化.
查看源ReplicationServer上的rs_helproute输出.
路由问题64ReplicationServer预订问题当预订实现或取消实现失败时,会发生预订问题.
复制过程首先执行预订实现,此过程将数据首先复制到目标数据库中.
当不再需要复制到目标数据库的预订时,可在目标数据库中取消实现预订.
取消实现就是从目标数据库中删除数据的过程.
注意:如果正在使用ReplicationAgent,则您的预订实现过程可能会与此处描述的过程不同.
有关ReplicationAgent特定的预订实现过程,请参见您的ReplicationAgent文档.
预订问题的症状很容易判定,这些症状包括:实现失败–目标数据库中预订的复制表中没有数据;主ReplicationServer和复制ReplicationServer中的预订状态无效或实现所用的时间过长.
取消实现失败–目标数据库中预订的复制表中仍有数据;主ReplicationServer和复制ReplicationServer中的预订状态无效或取消实现所用的时间过长.
通常,执行实现或取消实现的人监控着操作并会报告发生的任何问题.
有些预订问题的症状在ReplicationServer错误日志中以错误消息的形式报告.
您可能还需要使用诊断工具来确定预订问题的症状.
如果预订问题导致复制数据库的数据服务器接口(DSI)线程异常终止,请使用resumeconnection命令重新启动该线程.
另请参见DSI关闭或挂起时的错误(第98页)排除实现故障(第16页)排除取消实现故障(第17页)实现过程实现创建并激活预订,而且将数据从主数据库复制到复制数据库.
如果发布预订是以原子、非原子或增量方式实现的,则一次只处理一个项目预订.
如果发布预订是使用批量实现或无实现方法实现的,则所有项目预订一起处理.
当您正在实现新预订时,如果同一个复制定义和复制数据库还有其它正在实现或正在取消实现的预订,则新预订将被指派为"待执行"状态(rs_subscriptions中的recovering列设置为2).
如果执行checksubscription,则复制ReplicationServer上的预订的返回状态为"待执行",而主ReplicationServer上的预订的返回状态为"无效".
预订问题故障排除指南65如果主ReplicationServer系统数据库(RSSD)不可用或发生了其它问题,则rs_subscriptions中的recovering列设置为1,表示预订需要恢复.
具有待执行状态的预订按照输入的顺序一次处理一个.
rs_subscriptions表中的request_date列指示输入预订请求的时间.
原子实现原子实现是缺省实现方法,需使用createsubscription命令的缺省版本来调用.
如果同一个复制定义和复制数据库没有其它预订,则在主ReplicationServer上定义此预订.
如果主ReplicationServer不可用或发生了其它问题,则rs_subscriptions系统表中的recovering列设置为1,表示预订需要恢复.
定义阶段完成后,复制ReplicationServer将为预订建立实现队列.
使用adminwho,sqm监控此活动.
ReplicationServer执行rs_select_with_lock函数来从主节点选择预订行.
建立实现队列后,复制ReplicationServer将向主ReplicationServer发送激活请求.
该请求通过rs_marker系统函数传递给主数据库.
主ReplicationServer收到激活请求后,此预订被标记为有效.
如果该请求之后的所有更新均与此预订相匹配,则它们将被发送到复制数据库.
主ReplicationServer将激活请求发回到复制ReplicationServer;在复制ReplicationServer上,激活请求将被插入到复制数据库的数据服务器接口(DSI)队列中.
DSI队列处理此请求时,预订状态变为"活动的".
DSI线程还针对该节点从其常规出站队列切换到实现队列.
adminwho,dsi命令指示DSI线程正在处理哪个队列.
实现队列将应用于复制数据库.
处理完实现队列后,该预订将被标记为有效,这样实现就完成了.
如果复制ReplicationServer的稳定队列段已用完,请执行以下操作:1.
向复制ReplicationServer中添加新的分区.
2.
如果没有可用的分区,请在不清除预订的情况下删除预订.
3.
使用非基本实现.
注意:若要估计预订所需的空间,请参见《ReplicationServer设计指南》.
如果复制数据库日志无法在单个事务中保存预订的所有数据,请执行以下操作:1.
在不清除预订的情况下删除预订.
2.
使用基本实现的增量版本.
非原子实现在复制ReplicationServer上执行带有withoutholdlock选项的createsubscription命令可使用非基本实现方法创建预订.
预订保存在复制ReplicationServer系统数据库(RSSD)中.
如果对同一个复制定义和复制数据库没有其它预订请求,则会在主ReplicationServer上定义预订.
预订问题66ReplicationServer定义阶段完成后,复制ReplicationServer将向主ReplicationServer发送激活请求.
复制ReplicationServer立即开始为该预订建立实现队列.
实现队列建成后,预订状态将变为"Qcomplete".
复制ReplicationServer通过主数据库向主ReplicationServer发送验证请求.
使用adminwho监控此队列.
激活请求到达主ReplicationServer后,预订状态将变为"活动的".
该请求之后的所有更新都将被发送给此预订.
主ReplicationServer将激活请求返回到复制ReplicationServer.
复制ReplicationServer上的数据服务器接口(DSI)收到请求后,预订状态将变为"活动的",实现队列中的事务将被应用到复制数据库.
如果尚未建立实现队列,则checksubscription返回的状态为"活动的但不是Qcomplete".
如果已建立了实现队列,则状态为"Qcomplete并且是活动的".
DSI线程将从指向该节点的常规出站队列切换到实现队列.
adminwho,dsi显示DSI线程正在处理哪个队列.
实现队列的内容应用到复制数据库后,预订状态将变为"已实现".
当复制ReplicationServer从实现队列应用插入时,验证请求正在通过RepAgent从主数据库日志移到主ReplicationServer.
验证请求到达主ReplicationServer后,主ReplicationServer上的预订状态将变为"有效",同时此请求将被转发给复制ReplicationServer.
应用了实现队列并且验证请求到达DSI队列的开头后,复制ReplicationServer上的预订状态将变为"有效".
警告!
从DSI线程开始应用实现队列到预订在复制ReplicationServer上得到验证这段时间内,复制数据库上的预订数据可能会不一致.
这是因为从主数据库中选择预订数据时未使用holdlock.
不过,一旦预订状态变为"有效",复制数据就会和主数据一致.
批量实现批量实现包括在数据库之间手动传送预订数据.
如果一个预订太大无法通过网络复制,请使用此方法.
使用definesubscription向主ReplicationServer和复制ReplicationServer的ReplicationServer系统数据库(RSSD)中添加预订.
定义完预订后,可使用activatesubscription将复制ReplicationServer上的预订状态设置为"正在激活"并向主ReplicationServer发送激活请求.
主ReplicationServer收到激活请求后,它将预订状态更改为"活动的",将激活请求返回到复制ReplicationServer,并开始向复制ReplicationServer发送对预订的更新.
复制ReplicationServer收到激活请求后,它将把复制ReplicationServer上的预订状态更改为"活动的".
如果为activatesubscription命令指定了withsuspension,则在复制ReplicationServer上收到激活请求后,数据服务器接口(DSI)线程将被挂起.
此阶段将装载复制数据库.
请参见《ReplicationServer参考手册》.
装载完成后,请执行resumeconnection命令以继续从DSI应用事务.
预订问题故障排除指南67激活预订后,使用validatesubscription验证复制数据服务器上的数据是否与复制ReplicationServer上的主数据一致并完成批量实现.
预订状态变为"正在验证".
复制ReplicationServer将验证请求转发给主ReplicationServer.
主ReplicationServer收到验证请求后,它将主节点上的状态更改为"有效",并将验证请求返回给复制ReplicationServer.
复制ReplicationServer收到验证请求后,两个节点上的预订状态均变为"有效",这样批量实现就完成了.
取消实现过程取消实现可以从复制数据库中删除预订,也可以从复制数据库中删除数据(可选).
它还可以从主节点和复制节点的ReplicationServer系统数据库(RSSD)中删除预订信息.
在复制ReplicationServer上执行dropsubscription时,复制ReplicationServer上的rs_subscriptions表中的预订状态会变为"正在取消实现".
如果同一个复制定义和复制数据库还有其它实现或取消实现预订,则rs_subscriptions表中的recovering列被设置为2,表示取消实现请求处于待执行状态.
checksubscription命令表示预订在复制ReplicationServer上处于"正在取消实现"或"待执行"状态.
预订创建请求和预订删除请求是按输入的顺序处理的,每次只处理一个.
rs_subscriptions中的request_date列存储着输入请求的时间.
有两种方法可以取消实现预订:withpurge–从复制数据库中删除预订数据.
withoutpurge或批量–不从复制数据库中删除预订数据.
这两种方法都要经过下面两个阶段:取消实现–停止向复制数据库发送对预订的更新,并且可以从复制数据库中删除预订数据.
删除–从主ReplicationServer和复制ReplicationServer的系统表中删除预订.
withpurge取消实现通过使用dropsubscription命令的withpurge选项,可以调用dematerializewithpurge方法.
复制ReplicationServer上的预订状态将被设置为"正在取消实现",同时会向主ReplicationServer转发一个删除请求.
主ReplicationServer收到删除请求后,它将停止向复制ReplicationServer发送对预订的更新.
主ReplicationServer上的预订状态将变为"正在取消实现",同时会向复制ReplicationServer返回一个删除请求.
复制ReplicationServer收到删除请求后,它将创建一个取消实现队列,并将启动一个取消实现线程来填充该队列.
此取消实现线程将从复制数据库中选择预订数据,并将在每一个不属于任何其它活动预订的行的取消实现队列中,放置一个行删除操作.
预订问题68ReplicationServer当此取消实现线程向取消实现队列中写入时,数据服务器接口(DSI)线程切换到取消实现队列并开始对复制数据库应用删除.
如果取消实现线程遇到错误,则整个取消实现过程将重新启动并且相同的错误可能会重复发生.
为避免发生此问题,请挂起与复制数据库的连接.
然后,使用skiptransaction选项恢复连接.
这将恢复与队列中第二个事务的连接.
第一个事务被写入到例外日志中.
取消实现完成后,复制ReplicationServer上的预订状态将变为"正在删除".
复制ReplicationServer将登录到主ReplicationServer并请求从其系统表中删除此预订.
该请求成功后,复制ReplicationServer将从自己的系统表中删除预订,这样取消实现过程就完成了.
使用withpurge选项取消实现时,如果复制ReplicationServer的稳定队列段用完,请执行以下操作:1.
向复制ReplicationServer中添加新的分区.
如果没有可用分区,则考虑使用批量取消实现.
2.
如果删除预订数据有困难,请使用withoutpurge选项删除预订.
3.
如果您有权限方面的困难,应让一位具有适当权限的用户发出dropsubscription命令.
批量取消实现使用dropsubscription命令的withoutpurge选项可调用批量取消实现.
复制ReplicationServer上的预订状态将变为"正在取消实现",同时会向主ReplicationServer转发一个删除请求.
主ReplicationServer收到删除请求后,它将停止向复制ReplicationServer发送对预订的更新.
主ReplicationServer上的预订状态将变为"正在取消实现",同时会向复制ReplicationServer返回一个删除请求.
当复制ReplicationServer收到删除请求后,复制节点上的预订状态将变为"正在删除".
复制ReplicationServer将登录到主ReplicationServer并请求它从其系统表中删除此预订.
该请求成功后,复制ReplicationServer从自己的系统表中删除预订,这样取消实现就完成了.
checksubscriptionchecksubscription命令返回描述实现过程状态的消息.
如果所有服务器和ReplicationServer线程都在运行,但没有创建或删除预订,则使用此命令.
在主ReplicationServer和复制ReplicationServer上执行checksubscription.
如果主ReplicationServer和复制ReplicationServer是同一台ReplicationServer,则仅执行checksubscription一次;checksubscription将分别显示主和复制状态消息.
使用checksubscriptionforpublication可查找发布预订的实现状态.
对于基本、非基本或增量发布预订,checksubscriptionforpublication显示正在处理的当前项目预订预订问题故障排除指南69的状态;而对于批量实现或无实现,则显示所有项目预订的状态,因为所有项目预订一起处理.
实现状态在主ReplicationServer和复制ReplicationServer上执行checksubscription时返回的实现状态和消息.
表11.
复制ReplicationServer上的实现状态状态消息无效subscriptionnamedoesn'texist.
正在删除REMOVINGsubscriptionsubscriptionnamefromsystemtablesattheReplicate.
正在取消实现SubscriptionsubscriptionnameisDEMATERIALIZINGattheReplicate.
有效SubscriptionsubscriptionnameisVALIDattheReplicate.
正在验证SubscriptionsubscriptionnameisVALIDATINGattheReplicate.
已实现SubscriptionsubscriptionnamehasbeenMATERIALIZEDattheReplicate.
活动SubscriptionsubscriptionnameisACTIVEattheReplicate.
正在激活SubscriptionsubscriptionnameisACTIVATINGattheReplicate.
Qcomplete并且是活动的SubscriptionsubscriptionnameisACTIVEattheReplicateandMaterializationQueuehasbeencompleted.
QcompleteMaterializationQueueforSubscriptionsubscriptionnamehasbeencompleted.
活动的并且QcompleteSubscriptionsubscriptionnameisACTIVEattheReplicate,butMaterializationQueueforithasnotbeencompleted.
已定义SubscriptionsubscriptionnamehasbeendefinedattheReplicate.
预订问题70ReplicationServer状态消息错误SubscriptionsubscriptionnamehasexperiencedanunrecoverableerrorduringMaterializationorDematerialization.
Pleaseconsulttheerrorlogformoredetails.
待执行Othersubscriptionsarebeingcreatedordroppedforthesamereplicationdefinition/database.
Subscriptionsubscriptionnamewillbeprocessedwhenpreviousrequestsarecompleted.
正在恢复SubscriptionsubscriptionnamehasexperiencedarecoverableerrorduringMaterializationorDematerialization.
ItwillberecoveredbySubscriptionDaemon(dSub).
表12.
主ReplicationServer上的实现状态状态消息无效subscriptionnamedoesn'texist.
正在取消实现SubscriptionsubscriptionnameisDEMATERIALIZINGatthePrimary.
有效SubscriptionsubscriptionnameisVALIDatthePRIMARY.
活动SubscriptionsubscriptionnameisACTIVEatthePRIMARY.
正在激活SubscriptionsubscriptionnameisACTIVATINGatthePRIMARY.
已定义SubscriptionsubscriptionnamehasbeendefinedatthePRIMARY.
实现问题提供有关排除原子、非原子、批量和其它常见实现问题的信息.
预订问题故障排除指南71缺少登录帐户和权限或者登录帐户和权限不正确许多有关实现的问题是因为主数据库或复制数据库中的权限不正确或缺少权限造成的.
标识这些问题的错误消息报告在复制ReplicationServer的错误日志中.
创建预订的用户要求验证创建预订的用户的登录帐户是否满足以下要求:复制ReplicationServer、主ReplicationServer和主数据服务器上用户的登录名和口令相同.
已将用户添加到主数据库中.
用户对主表具有select权限.
用户对rs_marker存储过程具有execute权限.
此要求适用于使用RepAgent的配置.
如果将ReplicationAgent用于外部数据服务器,您可能需要检查ReplicationAgent文档中是否存在类似要求.
缺省安装脚本会授予"public"对rs_marker的执行权限,因此只要使用该安装脚本,这就不会成为问题.
用户对复制ReplicationServer至少具有createobject权限.
用户对主ReplicationServer至少具有primarysubscribe权限.
如果不能为用户提供所需的帐号和权限,则删除预订(但不清除它)并让其他用户创建预订.
维护用户权限确保复制数据库的维护用户对复制表具有update、delete、insert和select权限.
当数据服务器接口(DSI)试图在实现队列中应用事务时,缺少update权限会导致复制数据库中发生错误.
根据错误操作指派,某些事务可能会被拒绝并被记录在例外日志中.
模式不一致实现问题可能是由主数据库、ReplicationServer和复制数据库上的模式不一致引起的.
标识这些问题的错误消息报告在复制ReplicationServer的错误日志中.
主数据库或复制数据库中冲突的表或视图在主数据库或复制数据库中已经创建了与复制定义具有相同名称和列的表或视图.
如果已经创建了自定义函数字符串,请确保它们与复制数据库中的复制表相匹配.
如果在预订实现期间执行select,这可能会导致主数据库中出现错误.
在复制数据库中,当数据服务器接口试图在实现队列中应用事务时,这会造成错误.
根据错误操作指派,某些事务可能会被拒绝并被放到例外日志中.
缺少rs_select函数字符串如果主数据库不使用系统提供的函数字符串类(rs_sqlserver_function_class、rs_default_function_class、预订问题72ReplicationServerrs_db2_function_class)之一或一个作为rs_default_function_class或rs_db2_function_class的子类的函数字符串类,请确保存在与createsubscription或definesubscription命令的where子句相匹配的用于rs_select函数的函数字符串.
缺少interfaces文件条目登录尝试可能会因缺少interfaces文件条目而失败.
标识此实现问题的消息出现在复制ReplicationServer错误日志中.
复制ReplicationServer使用的interfaces文件应包含主ReplicationServer的条目和主数据服务器的条目.
原子实现问题基于checksubscription返回的状态修复原子实现问题.
表13.
原子实现问题复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作已定义/待执行无效等待处理同一个复制定义和复制数据库的其它预订.
检查是否正在为同一个复制定义和复制数据库创建和删除其它预订.
如果没有其它预订,请等待5分钟.
已定义/正在恢复无效无法连接到主ReplicationServer来定义预订.
检查复制ReplicationServer错误日志中的消息.
确保创建预订的用户在主ReplicationServer和复制ReplicationServer上具有相同的登录名和口令.
确保用户对主ReplicationServer至少具有primarysubscribe权限.
预订问题故障排除指南73复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作已定义/正在恢复已定义无法建立实现队列.
检验主数据服务器是否正在运行.
确保创建预订的用户在主数据服务器和复制ReplicationServer上具有相同的登录名和口令,对主表具有select权限,并且对rs_marker具有execute权限.
使用admindisk_space检查复制ReplicationServer的稳定队列段是否已用完.
使用adminwho,dsi和adminwho,sqm监控队列.
已定义已定义正在建立实现队列.
建立队列可能要花一些时间.
请等待此过程完成.
使用adminwho,sqm监控实现.
使用admindisk_space检查主ReplicationServer的稳定队列段是否已用完.
检查在主数据库中是否正在使用holdlock来选择行.
Qcomplete已定义等待激活请求到达主ReplicationServer.
实现队列已建立.
检验主数据库的RepAgent是否正在运行.
检查主ReplicationServer的稳定队列段是否已用完.
Qcomplete/正在恢复已定义/有效实现队列完成后,复制ReplicationServer就停止了.
等待.
复制ReplicationServer上的状态应返回到"Qcomplete".
Qcomplete正在激活正在主ReplicationServer上处理激活请求.
等待.
主ReplicationServer上的状态应更改为"有效".
预订问题74ReplicationServer复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作Qcomplete有效主ReplicationServer上的预订已完成.
等待激活请求或在复制ReplicationServer上应用实现队列.
检查主ReplicationServer和复制ReplicationServer间的路由.
检查复制数据库的复制ReplicationServer数据服务器接口(DSI)线程.
检查复制ReplicationServer的队列段是否已用完.
使用adminwho,dsi和adminwho,sqm监控队列.
如果adminwho,dsi显示DSI正在处理实现队列,则等待处理完队列.
等待的时间取决于队列的大小.
有效有效完成.
无.
非原子实现问题基于checksubscription返回的状态修复非原子实现问题.
表14.
非原子实现问题复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作已定义/待执行无效复制ReplicationServer正在等待创建或删除同一个复制定义和复制数据库的其它预订.
查找正在为同一个复制定义和复制数据库创建或删除的其它预订.
如果没有其它预订,请等待5分钟.
已定义/正在恢复无效复制ReplicationServer无法连接到主ReplicationServer来定义预订.
检查复制ReplicationServer错误日志中的消息.
确保创建预订的用户在主ReplicationServer和复制ReplicationServer上具有相同的登录名和口令.
用户对主ReplicationServer应该至少具有primarysub-scribe权限.
预订问题故障排除指南75复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作已定义已定义复制ReplicationServer正在建立实现队列.
主ReplicationServer正在等待激活请求.
检验是否正在建立实现队列.
验证主ReplicationServer是否已启动以及主数据库的稳定队列管理器(SQM)、稳定队列事务(SQT)和分配器(DIST)线程是否在运行.
已定义/正在恢复已定义复制ReplicationServer无法建立实现队列或无法向主ReplicationServer发送激活请求.
检验主数据服务器是否正在运行.
确保创建预订的用户在主数据服务器上具有相同的登录名和口令,对主表具有select权限,并且对rs_marker具有execute权限.
检查复制ReplicationServer的稳定队列段是否已用完.
检验主ReplicationServer是否正在运行以及主数据库的SQM、SQT和DIST线程是否正在运行.
检查主ReplicationServer的段是否已用完.
已定义活动复制ReplicationServer正在建立实现队列.
主ReplicationServer已经收到激活请求并且已经将其发送给复制ReplicationServer.
检验是否正在建立实现队列.
检验主ReplicationServer和复制ReplicationServer间的连接是否已启动.
验证复制数据库的数据服务器接口(DSI)线程是否在运行.
Qcomplete已定义等待主ReplicationServer上的分发器处理激活请求.
检查主ReplicationServer的稳定队列段是否已用完.
检验主ReplicationServer是否已启动以及主数据库的SQM、SQT和DIST线程是否正在运行.
Qcomplete/正在恢复已定义复制ReplicationServer已被回收.
等待主ReplicationServer上的分发器处理激活请求.
等待.
复制ReplicationServer上的状态应很快变为"Qcomplete".
预订问题76ReplicationServer复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作Qcomplete活动主ReplicationServer已收到并已处理激活请求.
现在,此ReplicationServer正在等待验证请求.
复制ReplicationServer正在等待激活请求.
检查从主ReplicationServer到复制ReplicationServer的路由.
检验复制数据库的DSI线程是否正在运行.
检查复制ReplicationServer的队列段是否已用完.
Qcomplete有效主ReplicationServer上的预订已完成.
复制ReplicationServer正在等待激活请求.
检查主ReplicationServer和复制ReplicationServer间的路由.
检查到复制数据库的DSI.
检查复制ReplicationServer的队列段是否已用完.
活动的但不是Qcomplete活动复制ReplicationServer正在同时应用和建立实现队列.
主ReplicationServer正在等待验证请求.
在处理完复制ReplicationServer上的队列后,才会发送此请求.
检验DSI线程是否正在处理实现队列.
检查复制ReplicationServer的稳定队列段是否已用完.
使用adminwho,sqm监控实现队列活动.
Qcomplete并且是活动的活动主ReplicationServer正在等待验证请求.
复制ReplicationServer正在应用实现队列.
检验DSI是否正在处理实现队列.
使用adminwho,sqm监控实现队列活动.
检验主数据服务器、主数据库的RepAgent和主ReplicationServer中的RepAgent用户线程是否正在运行.
检验主ReplicationServer是否正在运行以及主数据库的SQM、SQT和DIST线程是否正在运行.
检查主ReplicationServer的段是否已用完.
预订问题故障排除指南77复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作Qcomplete并且是活动的有效主ReplicationServer收到了验证请求.
复制ReplicationServer正在应用实现队列.
检验DSI线程是否正在处理实现队列.
使用adminwho,sqm监控实现队列活动.
检查主ReplicationServer和复制ReplicationServer间的路由.
已实现活动主ReplicationServer正在等待验证请求.
复制ReplicationServer已完成实现队列的应用.
检查主ReplicationServer的段是否已用完.
检验主数据服务器、主数据库的RepAgent和主ReplicationServer上的RepAgent用户线程是否正在运行.
检验主数据库的SQM、SQT和DIST线程是否正在运行.
已实现有效主ReplicationServer收到了验证请求.
复制ReplicationServer已完成实现队列的应用.
检查主ReplicationServer和复制ReplicationServer间的路由.
检验复制数据库的DSI是否正在运行.
检查复制ReplicationServer的稳定队列段是否已用完.
有效有效完成.
无.
批量实现问题基于checksubscription返回的状态修复在定义、激活和验证阶段发生的批量实现问题.
表15.
批量实现问题–定义阶段复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作已定义/待执行无效正在等待同一个复制定义和复制数据库的其它预订.
查找同一个复制定义和数据库的其它预订.
如果没有其它预订,请等待5分钟.
预订问题78ReplicationServer复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作已定义/正在恢复无效无法连接到主ReplicationServer来定义预订.
检查复制ReplicationServer错误日志中的消息.
确保创建预订的用户在主ReplicationServer和复制ReplicationServer上具有相同的登录名和口令.
已定义已定义定义循环已完成.
激活预订.
表16.
批量实现问题–激活阶段复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作正在激活/正在恢复已定义无法向主ReplicationServer发送激活请求.
验证主ReplicationServer是否在运行以及主数据库的稳定队列管理器(SQM)、稳定队列事务(SQT)和分配器(DIST)线程是否在运行.
检查复制ReplicationServer中的错误日志.
检查主ReplicationServer的段是否已用完.
正在激活活动主ReplicationServer已经收到激活请求并且已经将其返回给复制ReplicationServer.
复制ReplicationServer正在等待激活请求.
检验主ReplicationServer和复制ReplicationServer间的连接.
验证复制数据库的数据服务器接口(DSI)线程是否在运行.
活动活动激活阶段已完成.
验证预订.
如果为activatesubscription命令指定了withsuspension选项,现在就可以装载复制数据库.
预订问题故障排除指南79表17.
批量实现问题–验证阶段复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作正在激活/正在恢复活动无法向主ReplicationServer发送验证请求.
检验主ReplicationServer是否正在运行.
正在验证有效主ReplicationServer收到了验证请求.
复制ReplicationServer正在等待验证请求.
检验主ReplicationServer和复制ReplicationServer间的路由.
检验DSI是否正在运行.
检验复制ReplicationServer是否具有足够的队列段.
有效有效完成.
无.
取消实现问题基于checksubscription返回的状态修复取消实现问题.
从涉及的所有服务器的错误日志中查找具体信息.
还要检查正在删除预订的用户在复制ReplicationServer和主ReplicationServer上是否具有相同的登录名和口令,以及(如果您使用withpurge选项)复制数据库的维护用户是否对复制表具有select、delete和update权限.
表18.
取消实现问题–withpurge选项复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作正在取消实现/待执行不适用正在等待同一个复制定义和复制数据库的其它预订.
查找正在为同一个复制定义和复制数据库创建或删除的其它预订.
如果没有其它预订操作正在进行,请等待5分钟.
预订问题80ReplicationServer复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作正在取消实现/正在恢复不适用无法连接到主ReplicationServer来删除预订.
检查复制ReplicationServer错误日志中的消息.
如果删除预订的用户在主ReplicationServer和复制ReplicationServer上不具有相同的登录名和口令,请执行以下操作:为用户提供在主ReplicationServer和复制ReplicationServer上具有相同登录名和口令的ReplicationServer帐号,或者让另一个具有适当权限的用户删除预订.
同时,该用户对主ReplicationServer必须至少具有primarysub-scribe权限.
正在取消实现不适用主ReplicationServer正在等待删除请求.
检查主ReplicationServer的队列段是否已用完.
验证主ReplicationServer是否在运行以及主数据库的稳定队列管理器(SQM)、稳定队列事务(SQT)和分配器(DIST)线程是否在运行.
正在取消实现正在取消实现主ReplicationServer已经处理了删除请求并且已经将其发送给复制ReplicationServer.
复制ReplicationServer正在等待删除请求.
检查主ReplicationServer和复制ReplicationServer间的路由.
检查复制数据库的数据服务器接口(DSI)线程.
检查复制ReplicationServer的队列段是否已用完.
预订问题故障排除指南81复制ReplicationServer上的状态主ReplicationServer上的状态预订状态推荐操作正在取消实现/正在恢复正在取消实现主ReplicationServer已经处理了删除请求并且已经将其发送给复制ReplicationServer.
复制ReplicationServer无法创建和处理取消实现队列.
检查复制ReplicationServer的队列段是否已用完.
检验维护用户是否对复制表具有select权限.
检查复制数据库的DSI线程.
正在删除/正在恢复正在取消实现预订已经在复制ReplicationServer上取消实现,但复制ReplicationServer无法登录到主ReplicationServer来从系统表中删除预订.
检验主ReplicationServer是否正在运行.
如果删除预订的用户在主ReplicationServer和复制ReplicationServer上不具有相同的登录名和口令,请执行以下操作:为用户提供在主ReplicationServer和复制ReplicationServer上具有相同登录名和口令的ReplicationServer帐号,或者让另一个具有适当权限的用户删除预订.
正在删除正在取消实现主ReplicationServer正在删除预订.
复制ReplicationServer正在等待主ReplicationServer完成.
等待.
正在删除无效预订已从主ReplicationServer中删除.
接下来,复制ReplicationServer将删除预订.
等待.
无效无效预订已删除.
无.
预订问题82ReplicationServer表19.
取消实现问题–withoutpurge选项复制状态主状态预订状态推荐操作正在取消实现/待执行不适用正在等待同一个复制定义和复制数据库的其它预订请求.
检查是否正在为同一个复制定义和复制数据库创建和删除其它预订.
如果没有其它预订,请等待5分钟.
正在取消实现/正在恢复不适用无法连接到主ReplicationServer来删除预订.
检查复制ReplicationServer错误日志中的消息.
确保创建预订的用户在主ReplicationServer和复制ReplicationServer上具有相同的登录名和口令.
用户至少还应具有primarysub-scribe权限.
正在取消实现不适用主ReplicationServer正在等待删除请求.
确定主ReplicationServer的队列段是否已用完.
检验主ReplicationServer是否已启动,以及主数据库的SQM、SQT和DIST线程是否正在运行.
正在取消实现正在取消实现主ReplicationServer已经处理了删除请求并且已经将其发送给复制ReplicationServer.
复制ReplicationServer正在等待删除请求.
检查主ReplicationServer和复制ReplicationServer间的路由.
检查复制数据库的DSI线程.
确定复制ReplicationServer的队列段是否已用完.
正在取消实现/正在恢复正在取消实现主ReplicationServer已经处理了删除请求并且已经将其返回给复制ReplicationServer.
复制ReplicationServer异常终止.
等待预订守护程序重置恢复标志.
正在删除/正在恢复正在取消实现复制ReplicationServer无法登录到主ReplicationServer来从系统表中删除预订.
检验主ReplicationServer是否正在运行.
正在删除正在取消实现主ReplicationServer正在从系统表中删除预订.
复制ReplicationServer正在等待主ReplicationServer完成.
等待.
正在删除无效预订被从主ReplicationServer中删除.
接下来,复制ReplicationServer将删除预订.
等待.
预订问题故障排除指南83复制状态主状态预订状态推荐操作无效无效预订已删除.
无.
预订问题84ReplicationServerReplicationServer接口问题ReplicationServer接口(RSI)允许两个ReplicationServers通过路由交换事务.
通常,当ReplicationServer尝试连接到其它ReplicationServer时或定位符无效时,会发生RSI问题.
RSI包括:主ReplicationServer上的一个稳定队列和一个线程.
该线程会读取稳定队列并写入网络.
复制ReplicationServer上的线程.
该线程从网络读取数据并写入出站稳定队列.
虽然在主ReplicationServer与复制ReplicationServer的连接丢失时可能会出现很多错误,但这些错误都不会导致丢失数据或挂起RSI.
主线程会不断尝试连接到复制ReplicationServer,直到重新建立连接.
丢失连接会终止复制ReplicationServer上的RSI线程.
只有在连接存在时,复制ReplicationServer上的RSI线程才存在.
如果在复制ReplicationServer中执行adminwho,您将看到主ReplicationServer不再登录为RSI源.
当主ReplicationServer重新与复制ReplicationServer建立连接时,数据将被通过路由复制到复制ReplicationServer.
另请参见常见错误消息(第27页)故障排除概述(第3页)RSI用户的登录名或口令不正确主ReplicationServer使用ReplicationServer接口(RSI)登录名和口令登录到复制ReplicationServer.
RSI用户登录名和口令由rs_init创建,当您创建到复制ReplicationServer的路由时,也需要提供该登录名和口令.
如果复制ReplicationServer上的登录名和口令有问题,主ReplicationServer将记录以下错误之一:I.
2006/06/2314:29:43.
RSI:Tryingtoconnectto'eastRS'.
E.
2006/06/2314:29:43.
ERROR#1028RSI(eastRS)-seful/cm.
c(3463)Messagefromserver:Message:14021,State0,Severity12--'Invalidloginattemptedbyuser'Rep_Server_rsi''.
E.
2006/06/2314:29:44.
ERROR#1027RSI(eastRS)-seful/cm.
c(3463)OpenClientClient-Libraryerror:Error:67175468,Severity4--'ct_connect():protocolspecificlayer:externalerror:Theattempttoconnecttotheserverfailed.
'.
ReplicationServer接口问题故障排除指南85E.
2006/06/2314:29:44.
ERROR#13045RSI(eastRS)-seful/cm.
c(3467)Failedtoconnecttoserver'eastRS'asuser'REP_Server_rsi'.
SeeCT-Liband/orservererrormessagesformoreinformation.
E.
2006/06/2314:29:44.
ERROR#4044RSI(eastRS)-i/rsiint.
c(329)RSIfor'eastRS':Shuttingdownduetoanexception.
解决此问题:1.
使用isql对ReplicationServer系统数据库(RSSD)执行以下查询,从主ReplicationServer的RSSD检索RSI用户登录名和口令:selectusername,passwordfromrs_maintusers,rs_siteswherename=remote_RS_nameanddestid=id其中:remote_RS_name是目标ReplicationServer名称.
id是目标ReplicationServer的节点ID.
如果您使用口令进行了加密,则无法通过执行查询来访问口令.
2.
执行以下操作之一:使用alterroute将主ReplicationServer的口令更改为上一步检索到的RSI用户口令.
使用alteruser更改复制ReplicationServer上登录名的口令,然后使用resumeroute恢复路由.
复制ReplicationServer上的用户权限不正确ReplicationServer接口(RSI)登录名必须在复制ReplicationServer上具有connectsource或sa权限.
如果登录名缺少相应的权限,系统会将一条错误消息发送到主ReplicationServer的错误日志中.
解决此问题:1.
向复制ReplicationServer上的登录名授予connectsource权限.
2.
在主ReplicationServer上恢复路由.
RSI定位符无效无效的ReplicationServer接口(RSI)定位符指示主ReplicationServer上的RSI定位符与复制ReplicationServer上的RSI定位符不同,而且主ReplicationServer从其稳定队列中的错误位置删除了消息.
RSI定位符标识复制ReplicationServer稳定队列从主ReplicationServer收到的最后一个消息.
RSI使用rs_locater系统表中的RSI定位符删除稳定队列中的消息.
复制ReplicationServer使用它添加到自己的稳定队列中的最后一个消息来更新rs_locaterReplicationServer接口问题86ReplicationServer系统表中的RSI定位符.
主ReplicationServer会定期从复制ReplicationServer的rs_locater请求RSI定位符.
主ReplicationServer会删除其稳定队列中由该RSI定位符标识的消息以及该消息之前的消息,这些是复制ReplicationServer已收到的消息.
注意:RSI定位符与用于数据库日志截断的定位符不同.
如果主ReplicationServer上的RSI定位符与复制ReplicationServer上的RSI定位符不同,那么主ReplicationServer可能从其稳定队列中的错误位置删除了消息,从而使复制ReplicationServer上的RSI定位符无效.
如果RSI定位符不同,则:1.
确保复制ReplicationServer未运行.
2.
通过对复制ReplicationServer的ReplicationServer系统数据库(RSSD)执行以下命令,将复制ReplicationServer的RSI定位符设为0:updaters_locatersetlocater=0x0wheresender=primary_replication_server另请参见重置数据库日志定位符(第106页)ReplicationServer接口问题故障排除指南87ReplicationServer接口问题88ReplicationServerRepAgent问题RepAgent错误可能是由AdaptiveServer、ReplicationServer或RepAgent问题所致.
RepAgent将消息记录在AdaptiveServer错误日志中.
这些消息标识导致出错的服务器,以便您可以进行诊断和纠正问题.
RepAgent从AdaptiveServer日志中检索主对象的数据,并将日志记录信息转换为日志传送语言(LTL)命令.
这些命令被发送到主ReplicationServer进行分发和复制.
RepAgent还与AdaptiveServer和主ReplicationServer协调数据库日志截断问题.
有关RepAgent如何处理错误的详细信息,请参见《ReplicationServer管理指南第一卷》.
另请参见常见错误消息(第27页)故障排除概述(第3页)启动RepAgent时出问题当RepAgent启动时,可能发生以下错误.
登录名无效RepAgent只要求ReplicationServer用户提供登录名和口令.
该用户必须在ReplicationServer中具有connectsource权限.
RepAgent重试登录,并且AdaptiveServer日志中会报告错误9216.
如果RepAgent登录ReplicationServer再次失败,AdaptiveServer错误日志中会报告RepAgent错误9214.
权限无效RepAgent用户必须对ReplicationServer具有connectsource权限.
如果用户权限无效,AdaptiveServer错误日志中会显示RepAgent错误9211:00:00000:00024:2006/06/2314:44:45.
12serverRepAgent(4):ReceivedthefollowingerrormessagefromtheReplicationServer:Msg37024.
CONNECTSOURCEpermissionisrequiredtoexecutecommand.
.
00:00000:00024:2006/06/2314:44:45.
24serverError:9261,Severity:20,State:000:00000:00024:2006/06/2314:44:45.
27serverRepAgent(4):ThisRepAgentThreadisabortingduetoanunrecoverablecommunicationsorReplicationServererror.
00:00000:00024:2006/06/2314:44:45.
27serverRepAgentRepAgent问题故障排除指南89Threadfordatabase'westRS_RSSD'(dbid=4)terminatedabnormallywitherror.
(major92,minor61)ReplicationServer错误不同种类的问题可能源自ReplicationServer.
大部分规范化错误(由于复制对象设置中的不一致引起)都是可恢复的.
RepAgent会记录此类错误并继续处理.
规范化错误由错误号32000–32999标识.
即使已创建复制定义并且成功地实现预订,仍可能会发生错误.
例如,某一更新可能丢失,从而导致复制数据与主数据不一致.
此类错误应当只在复制系统的初始设置期间发生.
系统管理员应密切监控错误日志,并在错误被确定后立即改正它们.
复制的存储过程也可能发生规范化错误.
其它所有ReplicationServer错误(网络故障除外)都被RepAgent视为致命错误.
例如,配置文件中的ReplicationServer登录名和口令错误是致命错误.
RepAgent将断开与ReplicationServer的连接并终止运行.
在您纠正问题后,重新启动RepAgent.
另请参见预订问题(第65页)错误32032在数据库中没有定义表.
症状ReplicationServer错误日志中报告ReplicationServer错误32032:Message:32032,'Notablewithname'foo'isdefinedfordatabasewithidMY_PDS.
MY_PDB1.
解释已使用sp_setreplicate将某个表标记为已复制,但还没有为该表创建复制定义.
RepAgent将在日志记录中检索一个ReplicationServer不知道的对象.
解决方法为表创建复制定义.
错误32046text、unitext或image列的复制状态在AdaptiveServer数据库和复制定义之间不一致.
症状AdaptiveServer错误日志(用于RepAgent)中报告ReplicationServer错误32046:Message:32046--'Thestatusofcolumn'%s'inrepdefisinconsistentwiththatoftheLTLcommand.
'RepAgent问题90ReplicationServer解释AdaptiveServer数据库中的text、unitext和image列的复制状态是在RepAgent发送到ReplicationServer的数据修改日志传送语言(LTL)命令中传递的.
如果text、unitext或image列的状态在AdaptiveServer数据库与复制定义中不同,ReplicationServer会在复制修改时检测到这种不一致情况,并且RepAgent将会关闭.
如果text、unitext或image列在AdaptiveServer数据库中的状态为do_not_replicate,而复制定义包括该列以进行复制,则处理将会继续并且ReplicationServer将不含text、unitext或image数据的修改内容发送到复制数据库.
ReplicationServer在AdaptiveServer错误日志(用于RepAgent)中记录一条警告消息.
解决方法1当RepAgent由于text或image列在AdaptiveServer数据库中的状态为replicate_if_changed,在复制定义中的状态为always_replicate而关闭时,您必须更改复制状态以使它们匹配.
若要在text、unitext或image列的值发生更改时才复制这些列,请执行以下操作:1.
在主ReplicationServer上执行alterreplicationdefinition命令,将text、unitext或image列的状态更改为replicate_if_changed.
等待经修改的复制定义到达复制节点.
2.
重新启动RepAgent.
若要始终复制text、unitext或image列,请执行以下操作:1.
停止主表的更新.
2.
在主ReplicationServer上执行alterreplicationdefinition命令,将text、unitext或image列的状态更改为replicate_if_changed.
等待经修改的复制定义到达复制节点.
3.
重新启动RepAgent,让状态为replicate_if_changed的事务完成处理.
4.
在AdaptiveServer上执行sp_setrepcol并将状态更改为always_replicate.
5.
在主ReplicationServer上执行alterreplicationdefinition,将text、unitext或image列的状态更改为always_replicate.
然后等待系统将修改后的复制定义复制到复制节点.
6.
恢复对主表的更新.
解决方法2当ReplicationServer指出AdaptiveServer数据库中的text或image列的状态为do_not_replicate,而复制定义包括该列以进行复制时,您必须将复制状态更改为:复制text、unitext或image列,或者不复制text、unitext或image列.
RepAgent问题故障排除指南91若要复制text、unitext或image列,请执行以下操作:1.
在AdaptiveServer数据库上执行sp_setrepcol,并将text、unitext或image列的状态更改为always_replicate或replicate_if_changed.
它应当与复制定义中的状态匹配.
2.
等待后续事务修改ReplicationServer将要处理的text、unitext或image列.
3.
考虑更正与rs_subcmp程序不一致的所有问题.
若要不复制text、unitext或image列,请执行以下操作:1.
停止对主表的更新.
2.
删除对复制定义的预订.
3.
删除复制定义.
4.
重新创建不包含text、unitext或image列的复制定义,并重新创建预订.
5.
恢复对主表的更新.
错误32047为函数复制声明的存储过程被标记为要进行表复制.
症状ReplicationServer错误日志中报告ReplicationServer错误32047:Messagefromserver:Message:32047,State0,Severity12--'Function't2'isassociatedwithafunctionreplicationdefinition,butaninvokingstoredprocedurewasmarkedforatablereplicationdefinition.
'.
解释在ReplicationServer中将复制的存储过程声明为进行函数复制,而在AdaptiveServer中将它标记为进行表复制.
解决方法更正复制定义设置.
请参见《ReplicationServer管理指南第一卷》.
AdaptiveServer错误来自AdaptiveServer的错误可能因截断页无效或AdaptiveServer警报资源不足导致.
RepAgent不使用AdaptiveServer日志扫描线程,不会遇到与它相关的任何错误.
删除主对象时的可能问题从AdaptiveServer中删除主表或主存储过程时应小心,因为这样做会影响数据复制.
如果对主表进行更新,而该表已从AdaptiveServer删除,则AdaptiveServer错误日志(用于RepAgent)中将显示AdaptiveServer错误9104:RepAgent问题92ReplicationServerMessage:9104'CannotidentifytheobjectontheINSERTlogrecordfordatabase'MY_PDB1',XACTIDRidpageid=0xa0f;rownum=0x5,RIDRidpageid=0xa0f;rownum=0x6.
InformationassociatedwiththeINSERTlogrecordisnotreplicated.
复制数据操作的日志记录引用另一个名为oampage的日志页,该页包含被复制对象的信息.
由于该表已被删除,因此将释放oampage页并且无法复制数据.
如果将oampage分配给一个新创建的对象,AdaptiveServer可能将已删除对象的日志记录与新对象关联.
在下面的示例中,foo的oampage在foo被删除后,可能被分配给foo_bar:updatetablefoodroptablefoocreatetablefoo_barupdatefoo_barAdaptiveServer将第一个更新记录作为foo_bar的更新而不是foo的更新发送.
如果新表的行宽相比之下要大得多,则可能发生AdaptiveServer分段错误.
删除或重新创建复制的存储过程会导致意外的结果,模式更改会产生相同的效果.
应当只在RepAgent处理完存储过程的所有记录后,才进行此类更改.
另外,检查ReplicationServer的错误消息.
截断页无效辅助截断点标识一个特定页面,该页面包含被发送到ReplicationServer的最新事务的begintransaction语句.
RepAgent在AdaptiveServer上执行dbccsettrunc命令,以便在数据库日志中设置辅助截断点.
如果RepAgent向AdaptiveServer指定无效页,则将记录一个错误,且RepAgent将会中止.
您可能会看到AdaptiveServer错误4213:Message:4213,State:1,Severity:16--'Page2561indatabase'MY_DB'cannotbeusedasatruncationpagebecausethepageisnotallocated.
'ReplicationServer系统数据库中的rs_locater表将告知RepAgent在AdaptiveServer日志中设置辅助截断点的位置.
如果截断状态设置为ignore且日志已经截断,则可能发生此错误.
RepAgent随后将重新启动,而不重置rs_locater.
若要解决此问题,请将rs_locater设置为零,然后重新启动RepAgent.
另请参见重置数据库日志定位符(第106页)RepAgent问题故障排除指南93RepAgent问题94ReplicationServer数据服务器接口问题数据服务器接口(DSI)将来自ReplicationServer稳定队列的事务应用于数据服务器,该数据服务器可以是一个AdaptiveServer,也可以是一个拥有一个对ReplicationServer的接口的其它数据服务器.
在事务得到应用之前,ReplicationServer会使用函数字符串将命令格式转换为数据服务器指定的格式.
如果数据服务器没有收到更新,DSI可能挂起或关闭.
下列原因可导致DSI挂起或关闭:不正确的登录或权限数据服务器错误ReplicationServer错误如果DSI挂起,系统通常会向ReplicationServer错误日志发送一个消息.
对这一错误消息进行分析以解决问题.
改正错误后,请重新启动DSI.
如果DSI处于活动状态,唯一事务可能会被错误地解析为重复项,或者数据服务器上的事务可能会失败.
手动解决主数据库和复制数据库间的数据不一致问题或重新应用事务.
要研究DSI,应查找ReplicationServer所控制的数据库,并检查ReplicationServer上所有数据库连接的DSI状态.
使用select、adminwho和adminwho,dsi命令提取所需的信息并确定问题的准确原因.
注意:这些问题同样适用于并行DSI线程.
有关并行DSI线程的特定详细信息,请参见《ReplicationServer管理指南第二卷.
另请参见常见错误消息(第27页)故障排除概述(第3页)列出ReplicationServer所控制的数据库确定ReplicationServer所控制的数据库.
1.
登录到系统AdaptiveServer.
2.
更改到ReplicationServer系统数据库(RSSD).
3.
输入:selectdsname,dbnamefromrs_databases,rs_siteswhereprsid=idandname=replication_server数据服务器接口问题故障排除指南95adminwho和adminwho,dsiadminwho和adminwho,dsi检查数据库连接的数据服务器接口(DSI)状态.
adminwho命令显示ReplicationServer中所有线程的状态,其中包括DSI调度程序和执行程序线程.
在adminwho输出中,DSI调度程序线程被标识为"DSI",DSI执行程序线程被标识为"DSIEXEC".
如果ReplicationServer启动时DSI挂起,那么即使配置了其它DSI执行程序线程,输出时也只显示一个DSI执行程序线程.
adminwho,dsi显示所有正在运行的DSI调度程序线程的状态,并提供它们的配置值和其它信息.
如果某个数据库存在DSI调度程序线程,但不显示在adminwho,dsi输出中,请使用usetheresumeconnection命令重新启动该数据库的DSI.
有关adminwho,dsi输出的完整说明,请参见《ReplicationServer参考手册》.
DSI调度程序线程的状态解释在adminwho和adminwho,dsi输出中使用的数据服务器接口(DSI)调度程序线程状态.
活动–线程正在启动,在发生内部错误后重新启动,或正在向RSSD中记录例外.
等待命令–线程正在等待数据库稳定队列中的事务变得可用.
队列中没有完成的事务.
等待唤醒–在发生可以重试的错误后,线程会休眠两分钟.
在这两分钟内,导致错误的原因可能会自动消失,系统管理员也可能会解决该问题.
如果在休眠间隔中解决了问题,则线程会正确地重新启动.
如果一个失败的事务导致了一个数据服务器错误,而您已使用assignaction指派了retry_stop或retry_log错误操作,则该失败的事务将被重试.
等待消息–线程已将事务调度到DSI执行程序线程,正在等待它们的完成.
挂起–用户命令、错误或带有withsuspension子句的dropsubscription或activatesubscription命令已使DSI连接挂起.
此状态只会在adminwho的输出中出现.
关闭–线程尚未启动.
此状态只会在adminwho的输出中出现.
DSI执行程序线程的状态解释在adminwho输出中使用的数据服务器接口(DSI)执行程序线程状态.
活动–线程正在启动,正在数据服务器上执行事务,正在向RSSD记录例外,或在发生内部错误后正重新启动.
等待消息–线程正在处理事务并等待另一线程完成其事务的处理,或线程正等待接收来自稳定队列事务(SQT)接口的另一语句.
等待命令–线程正在等待接收来自DSI调度程序线程的另一事务.
关闭–取决于DSI调度程序线程的状态:数据服务器接口问题96ReplicationServer如果DSI调度程序线程关闭,它表示在ReplicationServer启动时DSI执行程序线程连接挂起,而且该连接尚未恢复.
如果DSI调度程序线程处于"活动"或"等待苏醒"状态,它表示DSI执行程序线程连接正从可重试的错误中恢复且正在启动或重新启动.
挂起–用户命令、错误或带有withsuspension子句的dropsubscription或activatesubscription命令已使连接挂起.
如果失败的事务导致了一个数据服务器错误,而您已使用assignaction指派了retry_stop或retry_log错误操作,则该事务不会使DSI连接挂起,并且会被重试.
有关这些命令的详细信息,请参见《ReplicationServer参考手册》的"ReplicationServer命令"中的"assignaction".
复制数据库的DSI的故障排除如果对主数据库的更改未能到达有活动预订的复制数据库,则复制数据库的数据服务器接口(DSI)可能处于挂起状态.
使用此过程找出问题的原因.
1.
登录到控制复制数据库的ReplicationServer.
2.
执行adminwho,dsi.
这会为每个含有复制数据的数据库返回一个条目.
如果某个数据库没有条目,请检查ReplicationServer错误日志,查看该数据库的DSI是否尚未启动或处于挂起状态.
DSI尚未启动或处于挂起状态时,ReplicationServer错误日志中报告的错误消息如下例所示:TheDSIthreadfor'RDS.
rdb2'isnotstarted,becausetheconnectiontothedatabasehasbeensuspendedortheconnectionhasnotbeencompleted.
TheDSIthreadfordatabase'RDS.
rdb2'isbeingshutdown.
DSIreceiveddataservererror#1105whichismappedtoSTOP_REPLICATION.
Seeloggeddataservererrorsformoreinformation.
ThedataservererrorwascausedbyRSoutputcommand#1mappedfrominputcommand#1ofthefailedtransaction.
TheDSIthreadfordatabase'RDS.
rdb2'isshutdown.
如果数据库有一个条目,但其状态为"等待命令",则DSI正在等待来自主数据库的事务.
确定此ReplicationServer没有更新的原因.
如果DSI线程的状态为"活动",则:可能错误地将唯一事务解析为重复项,或数据服务器上的事务可能失败并被写入例外日志.
另请参见DSI关闭或挂起时的错误(第98页)数据服务器接口问题故障排除指南97DSI处于活动状态时的错误(第101页)adminwho和adminwho,dsi(第96页)排除复制故障(第18页)DSI关闭或挂起时的错误不正确的登录或权限、数据服务器错误或ReplicationServer错误可能会导致数据服务器接口(DSI)挂起或关闭.
如果一个预订问题导致复制数据库的DSI线程异常终止,则可使用resumeconnection命令重新启动该线程.
如果可能,请在恢复连接前修复引发该问题的所有因素.
例如,如果维护用户在复制表上没有update权限,则应授予该用户update权限,然后再恢复连接.
如果您无法修复问题,恢复连接将导致DSI线程重新执行已经失败的命令并使DSI再次挂起.
为了避免这种循环,请为返回给DSI的错误指派其它操作.
您必须在创建该错误类的ReplicationServer中指派错误操作.
有关错误操作和类的信息,请参见《ReplicationServer管理指南第二卷》.
数据库连接失败排除连接失败的故障.
如果出现了数据库连接失败的错误,请验证:数据服务器已在interfaces文件中定义.
数据服务器正在运行.
维护用户名和口令正确.
若要查找数据库的维护用户名和口令,请登录系统AdaptiveServer,使用ReplicationServer系统数据库(RSSD)并执行以下查询:selectusername,passwordfromrs_maintusers,rs_databaseswheredestid=dbidanddsname=data_serveranddbname=database如果您使用口令进行了加密,则无法通过执行查询来访问口令.
如果维护用户名或口令不正确,请在数据服务器上进行更改,或者在ReplicationServer中使用alterconnection进行更改.
改正用户名或口令后,恢复连接.
异步事务连接失败当异步存储过程到达主ReplicationServer时,数据服务器接口(DSI)使用原始的登录名和口令连接到主数据服务器.
不使用维护登录名.
如果登录失败,则使用sysadminlog_first_tran将异步事务记入例外日志.
rs_exceptshdr系统表中的app_user和app_pwd列包含DSI用于登录到主数据服务器的登录名和口令.
数据服务器接口问题98ReplicationServer另请参见检查例外日志(第101页)数据服务器错误数据服务器错误(例如,权限冲突或重复键)记入ReplicationServer错误日志.
如果无法改正数据服务器错误,应请求跳过第一个事务(引发错误的事务)并重新启动数据服务器接口(DSI).
执行带有skiptransaction选项的resumeconnection.
警告!
跳过事务可能导致复制不一致.
如果错误是由唯一键冲突导致的,请在恢复连接之前,使用setautocorrection打开自动错误改正.
这些错误可能在非自动实现期间发生.
有关setautocorrection的详细信息,请参见《ReplicationServer参考手册》.
如果使用setautocorrection不起作用,请使用resumeconnection命令的skiptransaction选项.
此选项会将实现事务或取消实现事务一起跳过.
如果问题在预订实现期间出现,则应删除该预订,然后以可以避免该问题的方式重新创建预订.
另请参见预订问题(第65页)跳过事务的影响跳过导致错误的事务会强制数据服务器接口(DSI)继续将事务应用于数据库.
但是,此方法会对数据库产生重要的影响.
在下列情况中,会跳过要应用于数据库的事务:您执行带有skiptransaction选项的resumeconnection.
遇到了数据服务器错误,并且为该错误指派的操作是log或retry_log.
跳过的事务会带来以下结果:复制数据可能变得与主数据不一致.
如果一个异步事务源自复制数据库,而在主数据服务器中跳过了该事务,则不会更新主数据库.
如果后续事务依赖于某个跳过事务的未应用操作,那么跳过该事务所导致的不一致性可能会引发更多错误.
预订实现请求和预订取消实现请求是特殊类型的事务.
如果跳过了预订实现请求,它可能会使预订失效,并会导致必须删除预订.
预订实现请求或预订取消实现请求可能创建单独的稳定队列,称为实现或取消实现队列.
在此队列中,不能使用resumeconnection显式地跳过事务.
但可能因为指派了log或retry_log操作的数据服务器错误而跳过事务.
如果跳过了预订实现请求或取消预订实现请求,则可能会跳过相应队列中的所有事务.
但是在实现或取消实现队列中,如果DSI在应用事务的中途挂起,则队列中的某些事务可能已经提交,而其它事务可能没有提交.
之后,如果使用resume数据服务器接口问题故障排除指南99connection跳过该请求,先前提交的事务将影响复制数据库,其中队列中的某些事务应用到复制数据库,但实现或取消实现请求在失败后被跳过.
由于上述影响,只有在尝试了所有改正错误的办法而仍然无法解决问题时才跳过事务.
跳过事务之后,应设法使复制数据恢复到一致的状态.
自定义对数据服务器错误的处理ReplicationServer可以自定义其对数据服务器错误的响应.
如果希望在遇到数据服务器错误时数据服务器接口(DSI)仍继续应用更新,请在创建错误类的ReplicationServer上使用assignaction将错误操作从stop_replication更改为log或retry_log.
所有使用该错误类的数据库都会受到影响.
如果一个类的主数据库位于其它节点,可能需要等待系统将新的错误操作复制到本地节点.
要将更改限制为仅针对一个数据库,应使用createerrorclass命令创建新的错误类.
为该类指定所需的错误操作,然后更改数据库连接,以使用新的错误类.
若要检查导致连接挂起的事务中的命令,请使用sysadminlog_first_tran将第一个事务写入例外日志而不会跳过它.
ReplicationServer错误排除ReplicationServer错误日志中记录的ReplicationServer错误.
ProblemSuggestedAction函数字符串请参见:《ReplicationServer故障排除指南》的"故障排除概述"的"复制系统问题种类"的"预订问题"中的"函数字符串限制"《ReplicationServer故障排除指南》的"常见错误消息"的"ReplicationServer错误消息"中的"29024"预订请参见《ReplicationServer故障排除指南》中的"预订问题".
缺失对象这可能是由ReplicationServer系统数据库(RSSD)中的某些不一致导致.
请致电Sybase技术支持部门以获取帮助.
另请参见预订问题(第65页)函数字符串限制(第13页)错误29024(第45页)数据服务器接口问题100ReplicationServerDSI处于活动状态时的错误当数据服务器接口(DSI)处于活动状态而复制数据服务器没有收到更新时,可能会将唯一事务错误地解析为重复项,可能重新应用重复事务,或可能导致数据服务器上的事务失败.
如果错误的操作设置为log或retry_log,则错误和失败的事务会写入例外日志.
手动解决主数据库和复制数据库间的数据不一致问题或重新应用事务.
错误地重复事务的解决方法如果错误地修改了数据服务器或rs_exceptslast表中存储的origin_qid值,则可能会忽略非重复的事务,或者可能会再次应用重复的事务.
如果您怀疑发生这种情况,请检查存储的值,并将它们与数据库的稳定队列中的事务进行比较.
如果值是不正确的,则直接修改它们.
数据服务器接口(DSI)会记录最新提交或写入例外日志的事务,所以它可以在系统重新启动之后检测是否有重复.
每个事务都由一个唯一的源数据库ID和一个随每个事务递增的源队列ID来标识.
通过执行为数据服务器的函数字符串类定义的函数字符串,将来自每个源数据库的上一个提交的事务记录在数据服务器上.
对于缺省的函数字符串类rs_sqlserver_function_class,这会通过commit命令的函数字符串完成,即rs_commit函数.
每个数据服务器的函数字符串类必须支持rs_get_lastcommit函数,该函数为每个源数据库返回origin_qid和secondary_qid.
secondary_qid是用于实现预订或取消实现预订的查询的ID.
对于来自每个源的、上一个写入例外日志的事务,ReplicationServer系统数据库(RSSD)的rs_exceptslast表中记录着它们的origin_qid和secondary_qid.
但是,该表不会记录由sysadminlog_first_tran命令显式记入日志的事务.
这些事务会被记录到日志中,但不会被跳过.
当数据服务器接口启动或重新启动时,它获取由rs_get_lastcommit函数返回的origin_qid和存储在rs_exceptslast表中的origin_qid.
它会假定队列中origin_qid小于这两个值中较大值的任何事务为重复事务,并会忽略该事务.
另请参见稳定队列(第113页)检查例外日志检查例外日志以确定跳过的事务.
跳过的事务会写入例外日志.
孤立事务和由sysadminlog_first_tran记入日志的事务也在例外日志中.
数据服务器接口问题故障排除指南101如果复制数据库没有收到更新,则更新事务可能被跳过并被写入了例外日志中.
例外日志包括三个表:rs_exceptshdr、rs_exceptscmd和rs_systext.
在rs_exceptshdr表中,每个事务都有一个条目.
在rs_exceptscmd表中,事务的每个命令(源或输出)都有一个条目.
rs_systext表中存储了命令的文本.
请参见《ReplicationServer参考手册》.
1.
登录到控制数据库的ReplicationServer的系统AdaptiveServer.
2.
针对ReplicationServer系统数据库(RSSD)执行以下查询以查看已记入日志的要应用于数据库的所有事务的标头信息:select*fromrs_exceptshdrwhereerror_site=data_serveranderror_db=databaseorderbylog_time各行按事务的记录时间升序返回.
若要按降序列出行,请在查询的末尾包括"desc".
3.
将三个系统表连接起来,查看有关日志中的某个事务的所有信息.
以下查询将给出记录的每个事务的源命令及其相应的输出命令:selecthdr.
sys_trans_id,cmd_type,textvalfromrs_exceptshdrhdr,rs_exceptscmdcmd,rs_systextwhereerror_site=data_serveranderror_db=databaseandhdr.
sys_trans_id=cmd.
sys_trans_idandcmd_id=parentidorderbylog_time,src_cmd_line,output_cmd_index,sequence数据服务器接口问题102ReplicationServerAdaptiveServer日志问题AdaptiveServer主数据库日志是ReplicationServer分发数据的数据源.
RepAgent从该日志中检索事务,然后将它们发送到ReplicationServer.
AdaptiveServer日志问题包括:日志文件已达到最大,需要截断因截断主数据库日志而导致主ReplicationServer上的事务缺失或不完整因软件和硬件原因而导致日志文件被损坏另请参见常见错误消息(第27页)故障排除概述(第3页)截断AdaptiveServer日志在数据库日志太满时将其截断,以使AdaptiveServer能继续处理更新.
AdaptiveServer使用截断点来确保只截断RepAgent处理过的事务.
它使用一个辅助截断点在主数据库日志中标记RepAgent已经处理到的事务的位置.
RepAgent会定期更新这个辅助截断点,使之反映已成功传递到ReplicationServer的事务.
AdaptiveServer不会截断辅助截断点之后的日志.
请参见《ReplicationServer管理指南第一卷》.
有时,您可能需要截断辅助截断点之后的日志.
例如,如果RepAgent无法访问ReplicationServer,而且日志已满,您就可能需要在辅助截断点位置截断日志,而不是扩展日志或阻止客户端更新主数据库.
截断日志可能会导致主数据库与复制数据库之间出现不一致.
1.
确认已经为数据库设置了辅助截断点.
2.
关闭数据库中的辅助截断点.
3.
转储数据库日志.
请参见《AdaptiveServerEnterprise参考手册.
4.
设置辅助截断点.
另请参见日志截断问题(第106页)AdaptiveServer日志问题故障排除指南103检验辅助截断点的状态检查是否为数据库设置了辅助截断点.
1.
登录到主数据库中.
2.
执行dbccgettrunc.
例如,若要查看Parts数据库中是否设置了辅助截断点:>useParts>go>dbccgettrunc>go在输出中,ltm_trunc_state列中如果出现0,则表示数据库的辅助截断点已经关闭.
ltm_trunc_state列出现1,则表示辅助截断点已经打开.
关闭数据库中的辅助截断点对数据库禁用辅助截断点可截断日志的还未传送的部分.
截断日志只释放经确认RepAgent已发送到ReplicationServer的日志页.
注意:只有AdaptiveServer系统管理员和数据库所有者有权执行dbccsettrunc命令.
1.
挂起转发日志的RepAgent.
否则,执行dbccsettrunc会导致以下错误:ThelogtransfercontextforthecurrentdatabaseisalreadyreservedbyAdaptiveServerprocess7.
Thelogtransfercontextforthecurrentdatabaseisnotreserved.
2.
登录到包含要关闭其辅助截断点的数据库的AdaptiveServer.
3.
执行dbccsettrunc(ltm,ignore)关闭辅助截断点.
若要关闭名为Parts的数据库中的辅助截断点,请执行以下操作:>useParts>go>dbccsettrunc(ltm,ignore)>go4.
使用theTransact-SQLdumptransaction命令截断日志.
请参见《AdaptiveServerEnterprise参考手册》.
5.
转储事务日志.
这样可能导致对复制数据库的更新丢失.
主数据库不受影响.
您必须为复制数据库重新应用丢失的更新.
请参见《ReplicationServer管理指南第二卷》.
另请参见日志截断问题(第106页)AdaptiveServer日志问题104ReplicationServer设置辅助截断点在重新启动RepAgent之前重新建立辅助截断.
1.
登录到包含要重新建立其辅助截断点的数据库的AdaptiveServer.
2.
执行dbccsettrunc(ltm,valid)重新建立辅助截断点.
例如,若要在Parts数据库中重新建立辅助截断点,请执行以下操作:>useParts>go>dbccsettrunc(ltm,valid)>go3.
验证是否已启用辅助截断点:>useParts>go>dbccgettrunc>go输出应在ltm_trunc_state列中显示1.
4.
在rs_locater表中重置数据库的定位符.
5.
恢复ReplicationServer以重新启动RepAgent.
RepAgent从dbccgettrunc命令输出的ltm_truncpage列中返回的页开始扫描日志.
数据库日志定位符当一个RepAgent启动时,它会使用一个定位符来确定从何处开始扫描数据库日志.
数据库日志的定位符存储在控制数据库的ReplicationServer的ReplicationServer系统数据库(RSSD)中的rs_locater表内.
注意:该定位符与ReplicationServer接口(RSI)定位符不同.
定位符指向数据库日志页上的记录.
如果关闭了数据库的截断点,您或AdaptiveServer可能会截断定位符指向的日志页,从而使定位符失效.
当定位符无效时,RepAgent会将错误消息9215写入AdaptiveServer错误日志.
要恢复,请将定位符重置为0x0.
这样就会指示RepAgent从截断点开始扫描日志.
另请参见RSI定位符无效(第86页)错误9215(ASE624)(第54页)AdaptiveServer日志问题故障排除指南105重置数据库日志定位符将定位符重置为0x0,以指示RepAgent从截断点开始扫描日志.
使用AdaptiveServer存储过程rs_zeroltm更新控制数据库的ReplicationServer的ReplicationServer系统数据库(RSSD)中的rs_locater表:rs_zeroltmdata_server,database其中data_server和database分别是您要为其重置LTM定位符值的AdaptiveServer和数据库.
例如,若要重置MYDSAdaptiveServer和Parts数据库的定位符,请执行:rs_zeroltmMYDS,Parts日志截断问题在截断主数据库日志时,可能会发生不一致.
孤立的事务可能导致填满稳定队列.
入站队列需要更多磁盘空间.
可能缺少部分事务或整个事务,从而导致复制节点出现不一致的数据.
请参见《ReplicationServer管理指南第二卷》.
预订命令可能会丢失,从而会干扰实现或取消实现协议,而且需要手动清除.
如果在创建路由的过程中截断日志,对ReplicationServer系统数据库(RSSD)执行的预订命令可能会丢失.
因而无法创建路由.
如果发生此情况,请删除路由然后再重新创建.
有关如何恢复丢失的事务的详细信息,请参见《ReplicationServer管理指南第二卷.
检查是否存在孤立的事务提交或回退孤立的事务以避免填满入站队列.
孤立的事务是入站稳定队列中缺少终止命令commit或rollback的事务.
由于ReplicationServer要在某个队列段(或任何前面的队列段)中的每个事务都已提交或回退之后才会释放该队列段,所以,孤立的事务可能会导致入站队列被填满.
1.
登录到ReplicationServer.
2.
执行adminwho,sqt以显示有关ReplicationServer中的稳定队列的信息.
3.
使用adminwho,sqt的输出来确定截断了日志的数据库的入站队列的条目.
队列名称由数据库ID和队列类型标识符两部分组成.
对于入站队列,队列类型标识符为1.
例如,如果数据库ID是101,入站队列名称则为101:1.
4.
验证是否存在孤立的事务.
如果入站队列的输出显示某个打开的事务长时间没有变化,则说明队列中可能包含孤立的事务.
不过,可能很难区分孤立的事务与非常长的事务.
AdaptiveServer日志问题106ReplicationServera)转储稳定队列并检查有关事务的信息.
您可以通过只转储begin记录来查找用户名和执行命令的时间,然后,查看该用户在数据库中是否仍有打开的事务.
b)转储队列中的最后一块,然后查看命令的日期.
要确定情况是否如此,请转储队列中的最后一块,然后查看命令的日期.
您需要转储最后一块,因为即使发现该用户没有打开的事务,该队列中仍然可能存在孤立的事务.
如果队列很大,RepAgent可能跟不上队列.
使用adminwho,sqm可找到最后一块.
5.
使用sysadminpurge_first_open跳过孤立的事务.
6.
使用转储稳定队列的输出给复制数据库手动应用孤立的事务.
另请参见稳定队列(第113页)入站队列需要更多磁盘空间孤立的事务和连接失败等问题会强制稳定队列保留多于预期数量的事务.
如果入站队列需要更多磁盘空间,您会在ReplicationServer错误日志中看到类似如下的消息:_SQM_ADD_SEGMENT:Goingtowaitforasegmenttobefreed.
Administrativeactionisneeded.
要确定哪些稳定队列包含队列段,请登录到RSSD并执行:selectq_number,q_type,count(*)fromrs_segmentsgroupbyq_number,q_type此查询的输出会显示每个稳定队列使用的段数.
每个段要占用1MB磁盘空间.
请看段数最多的队列:q_type为0表示出站队列.
如果任何出站队列有两个以上的段,请验证它们所服务的连接是否仍在运行.
q_type为1表示入站队列.
如果其中任何一个队列的段数很大,那么它可能包含孤立的事务.
另请参见数据服务器接口问题(第95页)ReplicationServer接口问题(第85页)检查是否存在孤立的事务(第106页)AdaptiveServer日志问题故障排除指南107AdaptiveServer日志损坏的症状如果AdaptiveServer日志被损坏,则可能会在复制路径中的任何位置导致失败.
RepAgent在读取无法处理的日志数据时关闭.
RepAgent关闭是AdaptiveServer日志损坏的最常见症状.
此外,错误日志可能会显示与当前操作不一致的错误消息;不过,不会报告任何特定的日志损坏错误消息.
ReplicationServer的一个组件关闭.
当RepAgent将错误数据传递到ReplicationServer时,ReplicationServer组件(如数据服务器接口(DSI))可能会关闭.
例如,如果DSI遇到不匹配的数据类型,并且无法解析不同之处时,它就会关闭.
复制的数据看起来不同步.
确定日志是否损坏以及发生损坏的位置的过程是很复杂的.
它要求了解日志格式和AdaptiveServer及ReplicationServer的内部组件.
注意:如果您怀疑AdaptiveServer日志被损坏,请与Sybase技术支持部门联系,以帮助您诊断和解决问题.
AdaptiveServer日志问题108ReplicationServerReplicationMonitoringServices问题ReplicationMonitoringServices(RMS)是一个中间监控层,负责监控复制环境中的服务器和组件的状态.
它还提供了问题的故障排除信息以及用于修复这些问题的命令.
RMS是使用SybaseUnifiedAgentFramework(UAF)实现的.
UAF为分布式资源管理提供了灵活、可扩展的面向服务的方法.
它为代理插件(如RMS)的开发与配置提供了常用服务和接口.
RMS提供了跟踪功能,可帮助用户解决问题.
当您使用此功能时,有关RMS的内部工作的信息将写入RMS日志文件.
用户可以通过在RMS中设置跟踪标志来控制所记录信息的类型.
有关RMS跟踪命令的信息以及跟踪标志的完整列表,请参见《ReplicationServer参考手册》.
UAF和RMS错误日志RMS和UAF将错误消息、警告消息和信息性消息写入日志文件.
使用以下日志文件可在RMS中排除问题:UAF日志文件:$SYBASE/UAF-2_5/log/agent.
logRMS日志文件:$SYBASE/UAF-2_5/plugins/com.
sybase.
rms/logs/rms.
log有关RMS的详细信息,请参见《ReplicationServer管理指南第一卷》.
RMS跟踪标志列表跟踪标志控制在ReplicationMonitoringServices(RMS)日志文件中记录的信息的种类.
表20.
用于解决RMS问题的跟踪标志跟踪标志说明traceRMS_Commandon将RMS收到的每个命令写入错误日志.
命令可以发送自RM插件、isql会话或其它某些客户端应用程序.
此标志可用于确定引起特定问题的命令.
traceServer_Commandon将RMS发送给所监控服务器的每个命令写入错误日志.
此标志可用于确定RMS检索复制环境有关信息的方式.
traceStartupon在启动进程的每一步将跟踪消息添加到RMS日志文件.
使用此标志可诊断UnifiedAgentFramework(UAF)启动问题.
traceNetwork_Connectionon在创建与服务器的连接时将跟踪消息添加到RMS日志文件.
RMS将包括除跟踪消息中的口令以外的所有连接信息.
此标志可用于跟踪网络连接错误.
ReplicationMonitoringServices问题故障排除指南109有关跟踪标志的完整列表,请参见《ReplicationServer参考手册》.
同一台计算机上的多个UAF服务器在同一台计算机上执行多个UAF服务器会导致ReplicationMonitoringServices(RMS)报告不一致的和错误的服务器状态.
症状当UAF服务器启动时,如果已经有UAF服务器在运行,则RMS生成以下消息:2006-03-1012:57:16,520INFO[main]RMIService(136)-StartingRMIService.
.
.
2006-03-1012:57:16,629ERROR[RMIRegistryThread]RMIRegistryServiceStarter(34)-Failedtostartrmiregistry.
java.
rmi.
server.
ExportException:Portalreadyinuse:9999;nestedexceptionis:java.
net.
BindException:Addressalreadyinuseatsun.
rmi.
transport.
tcp.
TCPTransport.
listen(UnknownSource)atsun.
rmi.
transport.
tcp.
TCPTransport.
exportObject(UnknownSource)atsun.
rmi.
transport.
tcp.
TCPEndpoint.
exportObject(UnknownSource)atsun.
rmi.
transport.
LiveRef.
exportObject(UnknownSource)atsun.
rmi.
server.
UnicastServerRef.
exportObject(UnknownSource)atsun.
rmi.
registry.
RegistryImpl.
setup(UnknownSource)atsun.
rmi.
registry.
RegistryImpl.
(UnknownSource)atjava.
rmi.
registry.
LocateRegistry.
createRegistry(UnknownSource)atcom.
sybase.
ua.
services.
rmi.
RMIRegistryServiceStarter.
run(RMIRegistryServiceStarter.
java:28)Causedby:java.
net.
BindException:Addressalreadyinuseatjava.
net.
PlainSocketImpl.
socketBind(NativeMethod)atjava.
net.
PlainSocketImpl.
bind(UnknownSource)atjava.
net.
ServerSocket.
bind(UnknownSource)atjava.
net.
ServerSocket.
(UnknownSource)atjava.
net.
ServerSocket.
(UnknownSource)atsun.
rmi.
transport.
proxy.
RMIDirectSocketFactory.
createServerSocket(UnknownSource)atsun.
rmi.
transport.
proxy.
RMIMasterSocketFactory.
createServerSocket(UnknownSource)atsun.
rmi.
transport.
tcp.
TCPEndpoint.
newServerSocket(UnknownSource).
.
.
9more2006-03-1012:57:17,799ERROR[main]RMIService(142)-FailedtostartRMIConnectorserver.
java.
io.
IOException:CannotbindtoURL[rmi://abonner-sun:9999/agent]:javax.
naming.
NameAlreadyBoundException:agentReplicationMonitoringServices问题110ReplicationServer[Rootexceptionisjava.
rmi.
AlreadyBoundException:agent]解释一台计算机上只能运行一个UAF服务器.
操作将RMS重新安装到现有UAF中.
ASAReplicationAgent连接失败当ReplicationMonitoringServices(RMS)尝试建立连接时,AdaptiveServerAnywhere(ASA)ReplicationAgent(dbltm.
exe)失败.
解释RMS使用jConnectforJDBC,这会造成当RMS连接以确定其状态时,dbltm.
exe失败.
操作将以下EBF应用到dbltm.
exe:ASAv8.
0.
3EBF(5369、ASAv9.
0.
2EBF(3272)和ASAv10.
0.
0.
ReplicationMonitoringServices问题故障排除指南111ReplicationMonitoringServices问题112ReplicationServer稳定队列稳定队列暂时存储复制系统传送的消息.
检查稳定队列转储可帮助确定复制系统错误的原因.
稳定队列由存储在磁盘分区上的段组成.
每个段都有1MB的消息空间,此空间分成64个16KB的块.
段存储由系统传递的消息.
段中的每个块对应于磁盘和内存之间的物理数据传送.
一个段只被分配给一个队列–不同的队列不能共用一个段.
段中的每个块可能存储一条或多条消息.
系统段的映射存储在ReplicationServer系统数据库(RSSD)的rs_segments表中.
ReplicationServer按段删除队列中的消息.
它在内部删除段中的块.
然而,在删除1MB段中包含的所有块之前,系统表中不显示被释放的空间.
有一些可供您使用的稳定队列命令:sysadmindump_queue–转储入站或出站稳定队列的事务高速缓存的内容.
sysadminsqt_dump_queue–转储入站队列的事务高速缓存的内容.
sysadmindump_file–指定sysadmindump_queue或sysadmindump_queue使用的替代日志文件.
sysadminpurge_all_open–清除入站队列中所有打开的事务.
sysadminpurge_first_open–只清除入站队列中的第一个打开事务.
转储稳定队列后,段中可能包含已删除的和未删除的块.
可以通过检查队列的adminwho,sqm输出中的FirstSeg.
Block列来标识段的未删除块.
有时,队列在ReplicationServer正在该队列中添加和删除段时被转储.
在这种情况下,adminwho,sqm命令的输出可能不会准确显示稳定队列的内容.
在您可以输入sysadmindump_queue命令之前,段可能已被删除.
要防止ReplicationServer在您检查稳定队列的内容时更改此队列,可以将使用稳定队列的数据库连接或路由挂起.
也可以在独立模式下启动ReplicationServer,以防更改稳定队列.
请参见《ReplicationServer管理指南第二卷》.
有关稳定队列命令的信息,请参见《ReplicationServer参考手册》.
使用跟踪打印命令设置跟踪可打印发送到复制数据库的实际命令.
复制数据库的出站队列包含缺省命令.
如果除缺省命令以外还创建了函数字符串,请使用特殊的数据服务器接口(DSI)跟踪标志来打印实际被发送到复制数据库的命令.
1.
运行调试复制服务器repserver.
diag来设置跟踪.
缺省情况下,repserver.
diag位于bin目录中.
稳定队列故障排除指南1132.
将输出转发到标准输出或错误日志:标准输出:trace=GEN,TRC_STDERR错误日志:trace=GEN,TRC_ERRLOG3.
转储发送到复制节点的命令:trace=DSI,DSI_CMD_DUMP命令按以下形式记录到日志中:Commandsentto'RDS.
RDB':command确认可疑问题使用sysadmindump_queue可确认可疑问题是否存在.
1.
登录到ReplicationServer.
2.
执行adminwho,sqt.
3.
使用adminwho,sqt的输出确定哪个入站队列具有打开的事务.
将显示其状态被标记为"st:O"的打开事务.
该行的Info列包含队列编号和类型.
事务状态后跟命令数量,然后是begintransaction命令的本地队列ID,其格式为segment:block:row.
在以下adminwho,sqt输出示例中,事务的队列编号为103,队列类型为1,它处于打开状态,并且由三个命令组成.
begintransaction命令位于段21、块28、行0中:103:1st:O,cmds:3,qid:21:28:04.
段21的转储块28:sysadmindump_queue,103,1,21,28,1,RSSDReplicationServer将位于段1的块28的命令文本写入rs_queuemsg和rs_queuemsgtxt系统表或ReplicationServer日志中.
5.
如果使用了RSSD选项,请查看通过rs_queuemsg找到的命令信息:select*fromrs_queuemsgwhereq_number=103andq_type=1andq_seg=21andq_blk=28andq_row=06.
对rs_queuemsgtxt执行类似查询,以获取命令文本.
稳定队列114ReplicationServer转储队列输出解释解释多种类型的队列上的sysadmindump_queue命令输出.
稳定队列由分区组成.
分区是使用addpartition命令创建的.
添加到ReplicationServer中的每个分区都被分成1MB的段.
段被分成64个16KB的块.
消息包含长度固定的标题和长度可变的消息,它被写入到块中.
示例1:createsubscription之后的出站队列解释包含createsubscription事务的出站队列.
复制ReplicationServer上的createsubscription命令通过从主数据库中进行选择来启动实现进程:createsubscriptionemp_queue_subforemp_queuewithreplicateatNYDS.
nydb队列转储转储整个队列:sysadmindump_queue,103,0,-1,1,-2输出:I.
2006/07/0508:20:20.
QUEUEDUMPFOR103:0I.
2006/07/0508:20:20.
BLOCKBEGINq_number=103q_type=0blk=0:1cnt=1I.
2006/07/0508:20:20.
BeginTransactionOriginUser=TranName=I.
2006/07/0508:20:20.
ENTRYver=1100len=188orig=102lorig=0oqid=00000000000016c7000004ff0004000004ff0000000097f50087a0720000000000000000lqid=0:1:0st=21tr='00000000000016c70000'NYDSnydbcomlen=69activatesubscription0x01000065800000650I.
2006/07/0508:20:20.
ENDQUEUEDUMPFOR103:0解释BLOCKBEGIN16K块的开头.
q_number=103队列ID.
q_type=0队列类型(0=出站,1=入站).
blk=0:1块标识符(段0:块1).
cnt=1稳定队列故障排除指南115该块中的条目(命令)数.
BeginTransactionOriginUser=TranName=使用了发起用户名和事务名启动事务.
如果主数据库处的原始事务是在未提供事务名的情况下通过begintransaction显式启动的,则TranName为空.
ENTRY实际的消息.
len=188orig=102消息长度和发起节点ID.
oqid=00000000000016c7000004ff0004000004ff0000000097f50087a0720000000000000000原始队列ID:分配给命令字符串(位于发出命令的地方)的队列ID.
此ID用于重复检测.
Lqid=0:1:0本地队列ID:为SQM所记录的命令分配一个本地队列ID.
此队列ID作为发送者队列ID发送到下一个队列,目标使用此ID来确认命令.
Lqid由段号、块号和行号组成.
行号从0开始.
St=21状态和命令类型.
该字段是一个设置了状态和命令类型的位屏蔽.
该位的设置是0x01和0x20,表示commit和materialization命令.
0x01=commit的状态0x02=rollback的状态0x04=begin的状态0x08=orphan语句的状态0x10=materialization语句的状态0x20=materialization语句的状态0x40=trangoingtoprimary的状态0x80=忽略重复的DDL命令0x0100=materialization命令的状态0x0200=转储/装载消息0x0400=路由消息0x0800=DDL生成的标志0x1000=DSI标志处的DDL生成0x2000=特殊SQM消息0x4000=SQTmini-abort0x8000=消息已破坏tr='00000000000016c70000'NYDSnydbcomlen=69activatesubscription0x01000065800000650事务ID和命令,comlen表示命令的长度.
稳定队列116ReplicationServer示例2:一系列命令后的入站队列解释包含不同事务的入站队列.
以下命令在主数据库NYDS.
nydb中执行:sp_setreplicateemp_queue,trueinsertemp_queuevalues("123456789","Davis","Gen","ProcessEngineer","1/1/95",1111)insertemp_queuevalues("987654321","Irvine","Ben","MicrowaveEngineer","3/5/94",2222)grantallonemp_queuetopublic队列转储转储主ReplicationServer的入站队列:sysadmindump_queue,102,1,-1,1,-2输出:I.
2006/07/0508:27:05.
BLOCKBEGINq_number=102q_type=1blk=0:4cnt=10I.
2006/07/0508:27:05.
BeginTransactionOriginUser=saTranName=rs_logexecI.
2006/07/0508:27:05.
ENTRYver=1100len=216orig=102lorig=0oqid=00000000000016c7000004ff0005000004ff0005000097f5008af20b0000000000000000lqid=0:4:0st=4tr='00000000000016c70005'NYDSnydbcomlen=97begintransactionI.
2006/07/0508:27:05.
ENTRYver=1100len=204orig=102lorig=0oqid=00000000000016c7000004ff0007000004ff0005000097f5008af20b0000000000000000lqid=0:4:1st=1tr='00000000000016c70005'NYDSnydbcomlen=86committransactionI.
2006/07/0508:27:05.
BeginTransactionOriginUser=saTranName=_insI.
2006/07/0508:27:05.
ENTRYver=1100len=208orig=102lorig=0oqid=00000000000016c7000004ff0008000004ff0008000097f5008af20b0000000000000000lqid=0:4:2st=4tr='00000000000016c70008'NYDSnydbcomlen=91begintransactionI.
2006/07/0508:27:05.
ENTRYver=1100len=524orig=102lorig=0oqid=00000000000016c7000004ff0009000004ff0008000097f5008af20b0000000000000000lqid=0:4:3st=2097152tr='00000000000016c70008'NYDSnydbcomlen=406insertintodbo.
emp_queue(emp_id,emp_first,emp_last,emp_title,emp_date,id)values('123456789','Gen','Davis','ProcessEngineer','1/1/95',1111)I.
2006/07/0508:27:05.
ENTRYver=1100len=204orig=102lorig=0oqid=00000000000016c7000004ff000a000004ff0008000097f5008af20b0000000000000000lqid=0:4:4st=1tr='00000000000016c70008'NYDSnydbcomlen=85稳定队列故障排除指南117committransactionI.
2006/07/0508:27:05.
BeginTransactionOriginUser=saTranName=_insI.
2006/07/0508:27:05.
ENTRYver=1100len=208orig=102lorig=0oqid=00000000000016c7000004ff000b000004ff000b000097f5008af20b0000000000000000lqid=0:4:5st=4tr='00000000000016c7000b'NYDSnydbcomlen=91begintransactionI.
2006/07/0508:27:05.
ENTRYver=1100len=528orig=102lorig=0oqid=00000000000016c7000004ff000c000004ff000b000097f5008af20b0000000000000000lqid=0:4:6st=2097152tr='00000000000016c7000b'NYDSnydbcomlen=409insertintodbo.
emp_queue(emp_id,emp_first,emp_last,emp_title,emp_date,id)values('987654321','Ben','Irvine','MicrowaveEngineer','3/5/94',2222)I.
2006/07/0508:27:05.
ENTRYver=1100len=204orig=102lorig=0oqid=00000000000016c7000004ff000d000004ff000b000097f5008af20b0000000000000000lqid=0:4:7st=1tr='00000000000016c7000b'NYDSnydbcomlen=85committransactionI.
2006/07/0508:27:05.
BeginTransactionOriginUser=saTranName=_grrevI.
2006/07/0508:27:05.
ENTRYver=1100len=212orig=102lorig=0oqid=00000000000016c7000004ff000e000004ff000e000097f5008af20b0000000000000000lqid=0:4:8st=4tr='00000000000016c7000e'NYDSnydbcomlen=93begintransactionI.
2006/07/0508:27:05.
ENTRYver=1100len=204orig=102lorig=0oqid=00000000000016d2000005010016000004ff000e000097f5008af20b0000000000000000lqid=0:4:9st=1tr='00000000000016c7000e'NYDSnydbcomlen=85committransaction解释Q_type=1入站队列.
TranName=rs_logexec事务sp_setreplicate的名称.
TranName=_insAdaptiveServer对隐式插入事务使用事务名_ins.
TranName=_grrevgrant和revoke权限命令从AdaptiveServer获取特殊事务名.
注意:无论事务是否包含需要复制的更改,您都会看到所有begin、commit和rollback命令.
当RepAgent读取日志时,它不知道事务是否包含标记为要复制的对象更改.
稳定队列118ReplicationServer示例3:更新后的入站队列解释包含update事务的入站队列.
在主数据库中执行了以下update命令:updateemp_queuesetemp_first="General"whereemp_id="123456789"队列转储转储主ReplicationServer的入站队列:sysadmindump_queue,102,1,-1,1,-2输出:I.
2006/07/0508:29:52.
BLOCKBEGINq_number=102q_type=1blk=0:5cnt=3I.
2006/07/0508:29:52.
BeginTransactionOriginUser=saTranName=_updI.
2006/07/0508:29:52.
ENTRYver=1100len=208orig=102lorig=0oqid=00000000000016e3000005020002000005020002000097f5008bedfe0000000000000000lqid=0:5:0st=4tr='00000000000016e30002'NYDSnydbcomlen=91begintransactionI.
2006/07/0508:29:52.
ENTRYver=1100len=568orig=102lorig=0oqid=00000000000016e3000005020004000005020002000097f5008bedfe0000000000000000lqid=0:5:1st=2097152tr='00000000000016e30002'NYDSnydbcomlen=451updatedbo.
emp_queuesetemp_id='123456789',emp_first='General',emp_last='Davis',emp_title='ProcessEngineer',emp_date='1/1/95',id=1111whereid=1111I.
2006/07/0508:29:52.
ENTRYver=1100len=204orig=102lorig=0oqid=00000000000016e3000005020005000005020002000097f5008bedfe0000000000000000lqid=0:5:2st=1tr='00000000000016e30002'NYDSnydbcomlen=85committransaction解释TranName=_updAdaptiveServer对隐式更新事务使用事务名"upd".
RepAgent从日志中读取该名称.
示例4:更新后的出站队列解释包含update事务的出站队列.
在主数据库中执行了更新.
但没有为复制定义设置最小列功能:updateemp_queuesetemp_first="General"whereemp_id="123456789"稳定队列故障排除指南119队列转储转储出站队列或复制:sysadmindump_queue,103,0,-1,1,-2输出:I.
2006/07/0508:31:32.
BLOCKBEGINq_number=103q_type=0blk=0:3cnt=3I.
2006/07/0508:31:32.
BeginTransactionOriginUser=saTranName=_updI.
2006/07/0508:31:32.
ENTRYver=1100len=204orig=102lorig=0oqid=00000000000016e3000005020005000005020002000097f5008bedfe0000000000000001lqid=0:3:0st=4tr='00000000000016e30002'NYDSnydbcomlen=88begintransactionI.
2006/07/0508:31:32.
ENTRYver=1100len=268orig=102lorig=0oqid=00000000000016e3000005020005000005020002000097f5008bedfe0000000000000002lqid=0:3:1st=0tr='00000000000016e30002'NYDSnydbcomlen=149updateemp_queuesetemp_id='123456789',emp_first='General',emp_last='Davis',emp_title='ProcessEngineer',emp_date='1/1/95',id=1111whereid=1111I.
2006/07/0508:31:32.
ENTRYver=1100len=180orig=102lorig=0oqid=00000000000016e3000005020005000005020002000097f5008bedfe0000000000000003lqid=0:3:2st=1tr='00000000000016e30002'NYDSnydbcomlen=63committransaction解释cnt=3该块中有3行.
TranName=_upd如果执行update而没有显式启动事务,AdaptiveServer将使用_upd作为事务名.
同理,AdaptiveServer为delete命令使用_del,为insert命令使用_ins.
st=4,st=0,st=1begin、other和commit的状态.
稳定队列120ReplicationServer语言、排序顺序和字符集问题当您使用本地化功能时,可能会发生错误.
ReplicationServer为国际环境提供以下支持:消息本地化为英语、法语、德语、西班牙语、中文、朝鲜语和日语支持Sybase支持的所有字符集,以及在ReplicationServer节点之间进行字符集转换支持非二进制排序顺序由于ReplicationServer在包含很多独立进程的分布式环境中工作,因此必须仔细地设置其语言、排序顺序和字符集,以避免发生问题.
遵循《ReplicationServer设计指南》中的建议.
注意:RepAgent使用与AdaptiveServer相同的语言、排序顺序和字符集设置.
消息语言问题可以将ReplicationServer配置为用英语以及其它语言将消息打印到错误日志和客户端.
这使复制系统中的服务器程序(包括ReplicationServer和AdaptiveServer)能够使用所配置的语言将消息写入它们的错误日志.
视服务器情况的不同,它们在将消息发送给客户端时可能用、也可能不用客户端语言.
例如,AdaptiveServer会检查其客户端(ReplicationServer)的语言设置,然后以该语言返回消息.
但是,ReplicationServer不检查客户端的语言,而是以其自己的语言将消息返回到客户端.
如果用不同的语言配置服务器,这会导致错误日志中出现不同语言的消息.
存储过程使用其AdaptiveServer连接的语言.
因此,如果存在混合语言环境,则AdaptiveServer存储过程消息可能使用与ReplicationServer不同的语言.
例如,如果使用法语登录到AdaptiveServer并执行存储过程,则该存储过程将生成法语消息,即使ReplicationServer的语言设置是英语或日语也是如此.
如果使用AdaptiveServer中未安装的语言登录到AdaptiveServer,则AdaptiveServer将返回英语存储过程消息.
Sybase有时可能不将新消息或已更改的消息翻译成法语、德语、西班牙语、中文、朝鲜语或日语.
在这种情况下,ReplicationServer或rs_subcmp消息使用英语版的消息.
放错位置的消息本地化文件可能也会导致消息语言问题.
请检验文件是否位于正确的目录中.
为避免混合语言错误日志可能导致的混乱,Sybase建议您将ReplicationServer配置为全部使用同一种语言.
语言、排序顺序和字符集问题故障排除指南121排序顺序问题ReplicationServer中的大多数排序顺序问题均是由于在整个系统的不同服务器中使用了不同的排序顺序所致.
在尝试将记录插入或更新到字符列上具有唯一索引的表中时,收到数据服务器接口(DSI)错误.
按照主数据服务器的排序顺序,该值是唯一的,但按照复制数据服务器的排序顺序,该值不唯一.
例如,"lvis"和"LVIS"按二进制排序顺序判断是不同的,但按nocase排序顺序评估则相同.
dropsubscriptionwithpurge命令不彻底删除复制数据库中的行.
选择要清除的记录的查询在按复制数据服务器的排序顺序选择时遗漏了某些记录.
复制的数据不是复制节点所需要的数据.
在这种情况下,预订可能有一个或多个字符子句.
预订生命周期内的更新被使用主ReplicationServer的排序顺序进行处理,从而导致在排序顺序不同时在复制数据服务器上出现意外的语义.
要更正这些问题,可以编辑ReplicationServer配置文件以使用相同的排序顺序,并在必要时运行sybinit使主数据服务器和复制数据服务器也使用该排序顺序.
排序顺序服务器使用的排序顺序(即归类序列)确定如何比较和排列字符数据和标识符.
排序顺序由字符集确定.
ReplicationServer支持Sybase所支持的所有排序顺序,包括非二进制排序顺序.
对于欧洲语言,非二进制排序顺序对字符数据和标识符的正确排序非常必要.
在以下情况下,使用非二进制排序顺序:主数据服务器和复制数据服务器之间的字符集不相同,数据带有8位字符并且要执行以下任一操作:在预订的where子句中包含带有该数据的列使用包含带有此数据的列的orderby子句查询数据库.
字符集问题当服务器具有不同或不兼容的字符集时,可能会出现字符集问题.
通过将复制系统中的所有服务器配置为使用兼容的字符集可以解决这些问题.
在多字节和单字节数据服务器之间进行复制时,8位或多字节数据会被损坏.
语言、排序顺序和字符集问题122ReplicationServerSybase不支持在单字节和多字节系统之间进行任何字符集转换;它只原封不动地传递数据和对象名.
由于8位和多字节字符与字符集有关,因此它们的语义在复制后会改变.
复制数据服务器中的字符数据用问号()替代非ASCII字符,即使主数据服务器和复制数据服务器使用兼容的字符集也是如此.
此外,源自远程节点的对象名也包含一些问号()字符.
出现这种情况的原因是,不同字符集(甚至兼容字符集)包含一些独有的字符.
当尝试转换复制数据服务器的字符集中不存在的字符时,将使用问号()替代无法识别的字符.
如果在兼容字符集(例如,iso-1和cp850)之间复制,请确保对象名和字符数据不包含两个字符集各自特有的任何字符.
语言、排序顺序和字符集问题故障排除指南123语言、排序顺序和字符集问题124ReplicationServer获取帮助及其它信息使用Sybase入门CD、产品文档站点和联机帮助来了解关于此产品版本的更多信息.
GettingStartedCD(或下载)–包含PDF格式的发行公告和安装指南,也可能包含其它文档或更新信息.
位于http://sybooks.
sybase.
com/上的产品文档–是Sybase文档的在线版本,您可以使用标准Web浏览器进行访问.
您可以在线浏览文档,也可以采用PDF格式进行下载.
除产品手册外,该网站还包含指向EBF/维护、技术文档、案例管理、已解决的案例、社区论坛/新闻组和其它资源的链接.
产品中的联机帮助(如果有).
要阅读或打印PDF文档,您需要AdobeAcrobatReader,可以从AdobeWeb站点免费下载.
注意:产品文档网站可能会提供更新的发行公告,其中包含在产品发布后增加的重要产品或文档信息.
技术支持部门获得Sybase产品支持.
如果贵组织为此产品购买了支持合同,则您的一个或多个同事将被指定为授权支持联系人.
如果您有任何问题,或者在安装过程中需要帮助,请指定专人联系您所在地区的Sybase技术支持部门或Sybase子公司.
下载SybaseEBF和维护报告可以从Sybase网站获得EBF和维护报告.
1.
将Web浏览器定位到http://www.
sybase.
com/support.
2.
从菜单栏或滑出菜单中的"支持"下,选择"EBF/维护".
3.
如果出现提示,请输入您的MySybase用户名和密码.
4.
(可选)从"显示"下拉列表中选择过滤器,然后选择时间范围并单击"开始".
5.
选择产品.
挂锁图标表示您不具有特定EBF/维护版本的下载权限,因为您未注册成为授权支持联系人.
如果您尚未注册,但拥有您的Sybase代表提供的或通过您的支持联系人提供的有效信息,请单击"我的帐户"向您的MySybase配置文件添加"技术支持联系人".
获取帮助及其它信息故障排除指南1256.
单击"信息"图标以显示EBF/维护报告,或者单击产品说明以下载该软件.
Sybase产品和组件认证认证报告检验Sybase产品在特定平台上的性能.
查找有关认证的最新信息:有关合作伙伴产品认证,请转至http://www.
sybase.
com/detail_listid=9784有关平台认证,请转至http://certification.
sybase.
com/ucr/search.
do创建MySybase配置文件MySybase是一项免费服务,它允许您创建Sybase网页的个人化视图.
1.
转至http://www.
sybase.
com/mysybase.
2.
单击"立即注册".
辅助功能特性辅助功能可确保所有用户(包括残障人士)都能访问电子信息.
Sybase产品文档采用设计为实现辅助功能的HTML版本.
视力受损的用户可以使用自适应技术(如屏幕阅读器)浏览在线文档,或者使用屏幕放大器查看文档.
SybaseHTML文档已经过测试,符合《美国康复法》第508条的辅助功能要求.
符合第508条的文档一般也符合非美国地区的辅助功能指导原则,如针对网站的WorldWideWeb协会(W3C)原则.
注意:为优化使用性能,您可能需要对辅助工具进行配置.
某些屏幕阅读器按照大小写来辨别文本,例如将"ALLUPPERCASETEXT"看作首字母缩写,而将"MixedCaseText"看作单词.
您可能会发现按语法约定来配置工具更为方便.
有关工具的信息,请查阅相关文档.
有关Sybase如何支持辅助功能的信息,请参见"Sybase辅助功能"网站:http://www.
sybase.
com/products/accessibility.
该网站包括有关第508条和W3C标准的信息的链接.
您可以在产品文档中找到更多有关辅助功能特性的信息.
获取帮助及其它信息126ReplicationServer索引數字8位数据122AAdaptiveServer错误92,93错误,更正30错误日志5导致ReplicationServer错误的错误6添加数据服务器25alterroute命令62B变量,对于函数字符串错误13标准错误输出.
请参见stderr7Ccreateroute命令57操作系统问题确定3升级25在WindowsNT上3创建预订错误71存储过程混合语言的消息121连接失败98嵌套52存储过程的消息语言121错误1028301106139130454115020431504043150524421292802844290244537022463702346509537703538803939804039920252921053921554ReplicationServer内存不足38RSI连接85RSSD死锁39srv_spawn失败29创建路由60错误号8分配器内存不足错误39规范化90,92可恢复90来自AdaptiveServer92,93连接失败98数据服务器99数据服务器,自定义处理100异步事务98错误改正,自动99错误号8错误块,定义7错误日志AdaptiveServer5ReplicationServer5,7RMS109rs_init6UAF109分析5分析概述4复制代理5混合语言121数据服务器5网关5网络5错误消息OpenClient/Server6RepAgent,概述4RepAgent,格式10RepAgent,状态11ReplicationServer的格式8ReplicationServer,说明29rs_init,说明27查找过程5索引故障排除指南127错误块7多个,源于同一个问题7分析ReplicationServer7警告6内部6线程终止6信息性6致命6Ddbccgettrunc命令104DIST线程关闭43droproutewithnowait命令58dropsubscription命令68withpurge选项68,69withoutpurge选项68DSIrs_update_lastcommit未复制49检测重复101连接失败98数据丢失49验证复制97状态96单字节数据122导致问题的任务4导致问题的事件4登录,创建路由时不正确的60定位符数据库日志105重置106主与复制之间的不一致86队列数据,查看3对象,复制的,删除92多字节数据122EERSSD3二进制排序顺序122二进制文件,更改4F非二进制排序顺序122非原子实现66问题75分析ReplicationServer错误消息7分析错误日志5复制image列未复制19text列未复制19unitext列未复制19故障,故障排除18确定停止位置22问题13找不到定义43复制代理错误日志,非AdaptiveServer5错误日志,故障排除中的角色5添加25复制的对象,删除92复制状态不一致image列90text列90unitext列90G跟踪标志ReplicationServer22RMS109孤立的事务106规范化错误90国际环境,问题121,122H函数字符串不正确的变量13未找到匹配45恢复,手动故障排除过程24生成号,增大24问题14Iimage列复制问题19复制状态不一致90interfaces文件无目标ReplicationServer条目61无源ReplicationServer条目60索引128ReplicationServerJ键冲突错误99截断事务日志34,41数据库103问题原因106截断点关闭104检查104设置105截断页,无效93警告6K可恢复规范化错误90客户端应用程序,添加25口令,为数据库查找98L例外日志101连接DSI失败98RSI错误85恢复98无43连接源命令,不执行44路由rs_helproute诊断消息61,62变更62创建,过程57创建,删除后60创建,问题59创建路由协议消息等待61创建系统表预订62队列中的删除路由协议63概述57故障排除概述57间接,创建60检查问题的过程23目标上的登录不正确60清除58删除59删除,过程58删除,问题63删除路由协议等待发送64未发送删除路由协议63未发送协议消息61系统表预订,创建62系统表预订,删除63Mmd_sqm_write_request_limit参数,增大39memory_limit参数,增加38,39命令日志3模式不一致72Nnum_thread参数,增加29内部错误6内核,重建25OOpenClient/Server错误消息6origin_qid,不正确24P排序顺序二进制与非二进制122描述122问题122配置问题12故障排除15批量取消实现68,69,83批量实现67匹配的函数字符串,找不到45Q嵌入式ReplicationServer系统数据库请参见ERSSD取消实现不删除预订数据68,83错误69概述68批量69批量,使用withoutpurge选项83清除,状态列表69清除预订和68,69删除预订数据和68选项68索引故障排除指南129预订问题,故障排除17权限缺少或不正确46,72预订需要primarysubscribe46RREPAGENTUSER线程关闭54RepAgent错误消息,概述4错误消息,格式10错误消息,严重级11错误消息,状态11启动时的问题89嵌套的存储过程52添加25RepAgent错误消息的严重级11RepAgent错误消息的状态11ReplicationManager请参见RMReplicationMonitoringServices请参见RMSReplicationServerinterfaces文件,无条目60,61常见错误46常见信息性消息和警告消息52创建路由时登录不正确60错误,类型6错误日志,查阅7错误日志,分析概述4错误日志,故障排除中的角色5错误消息格式8错误消息说明29间接路由的中间节点60添加25由AdaptiveServer错误导致的错误6诊断版本,运行22ReplicationServer错误消息connectsource未执行44RSSD日志设备已满40RSSD死锁39RSSD重新启动41srv_spawn失败29函数字符串不匹配45内存不足38数据服务器错误30无数据库连接43相同主数据库和复制数据库44需要createobject46需要primarysubscribe46找不到复制定义43ReplicationServer系统数据库.
请参见RSSD39repserver.
diag,使用22resumeconnection命令skiptransaction选项和69使用98RM队列数据,查看3命令日志3RMSdbltm,和111错误日志109概述109跟踪功能109rs_helproute存储过程未发送协议消息61诊断消息61,62rs_init常见错误29错误日志6错误消息说明27问题12rs_init错误未知的主机名28找不到AdaptiveServer条目27资源文件中的排版28rs_lastcommit系统表24rs_marker存储过程61rs_oqid系统表22rs_recovery系统表可恢复操作22rs_subcmp混合语言121rs_update_lastcommit49RSI定位符不一致86连接错误85数据丢失49RSSD路由,创建62路由,删除63日志设备已满40死锁39系统表,检查22系统表的行被换出46重新启动41RSSD的高速缓存太小46索引130ReplicationServerRTL复制错误36复制性能降低26日志,RSSD40日志,事务截断34,41已满35转储34,41日志文件ReplicationServer6rs_init6入站队列需要更多磁盘空间107Ssetautocorrection命令,键冲突99SQT线程,关闭43stderr故障排除中的角色5说明7SybaseIQ复制错误36复制性能降低26SybaseUnifiedAgentFramework请参见UAF删除复制的对象92升级AdaptiveServer4ReplicationServer组件4生成号,增大24实时装载请参见RTL实现方法65非原子66,67过程65模式不一致72批量67说明65问题71预订问题,故障排除16原子66示例RepAgent错误消息11ReplicationServer错误日志9事务查看标头信息102打开25大25孤立106嵌套52异步98事务日志.
请参见日志,事务35数据丢失DSI49RSI49数据丢失后正在拒绝消息22数据服务器错误99错误日志5错误日志,非AdaptiveServer5自定义错误处理100数据库查找维护用户名和口令98大25截断点103列出95跳过事务99无连接43数据库日志,定位符105Ttext列复制问题19复制状态不一致90替换非ASCII字符的问号123替换为的非ASCII字符123UUAF错误日志109多个服务器110概述109UnifiedAgentFramework请参见UAFunitext列复制问题19复制状态不一致90WWindowsNT操作系统问题3WindowsNT上的堆栈跟踪3网关错误日志5网络错误日志5索引故障排除指南131网络问题确定3唯一键冲突99维护用户名,为数据库查找98稳定队列入站,需要更多磁盘空间107转储113转储,使用22问题操作系统3复制13恢复,手动14配置12网络3硬件3预订12,65种类12问题的种类12X系统表rs_oqid系统表,检查22rs_recovery系统表,检查22检查22行被换出46系统表中的行,换出46线程终止消息6信息性消息6性能问题,重要25Y异步命令,错误7,98异步事务失败98硬件问题,确定3语言存储过程121混合121配置121预订connectsource命令,未执行44RSSD日志设备已满40update权限和维护用户72监控69取消实现68,83取消实现故障,故障排除17权限,缺少或不正确46,72实现故障,故障排除16维护用户权限72问题12,65无数据库连接43需要primarysubscribe46验证登录帐户要求72找不到复制定义43状态83原子实现66监控66确定预订是否需要恢复66问题73源ReplicationServer的错误日志中的错误消息所描述问题的解决方法.
路由创建时出现的错误消息60约定样式1语法1Z诊断工具,说明15正在检测丢失的消息22致命错误6转储事务日志34,41稳定队列113转换,字符集122资源争用25字符集问题122指南122转换122自动错误改正99索引132ReplicationServer
华纳云双11钜惠出海:CN2海外物理服务器终身价688元/月,香港/美国机房,免费送20G DDos防御,50M CN2或100M国际带宽可选,(文内附带测评)华纳云作为一家专业的全球数据中心基础服务提供商,总部在香港,拥有香港政府颁发的商业登记证明,APNIC 和 ARIN 会员单位。主营香港服务器、美国服务器、香港/美国OpenStack云服务器、香港高防物理服务器、美国高防服务器、香港高防I...
CloudServer是一家新的VPS主机商,成立了差不多9个月吧,提供基于KVM架构的VPS主机,支持Linux或者Windows操作系统,数据中心在美国纽约、洛杉矶和芝加哥机房,都是ColoCrossing的机器。目前商家在LEB提供了几款特价套餐,最低月付4美元(或者$23.88/年),购买更高级别套餐还能三个月费用使用6个月,等于前半年五折了。下面列出几款特别套餐配置信息。CPU:1cor...
麻花云怎么样?麻花云公司成立于2007年,当前主打产品为安徽移动BGP线路,数据中心连入移动骨干网。提供5M,10M大带宽云主机,香港云服务器产品,数据中心为香港将军澳机房,香港宽频机房 cn2-GIA优质线路、采用HYPER-V,KVM虚拟技术架构一、麻花云官网点击直达麻花云官方网站合肥网联网络科技有限公司优惠码: 专属优惠码:F1B07B 享受85折优惠。最新活动 :双11 云上嗨购 香港云主...
permissiondenied为你推荐
比肩工场大运比肩主事,运行长生地是什么意思?嘀动网动网和爱动网各自的优势是什么?百度指数词什么是百度指数www.mywife.ccmywife哪部最经典ip查询器怎么样查看自己电脑上的IP地址66smsm.com【回家的欲望(回家的诱惑)大结局】 回家的诱惑全集66 67 68 69 70集QOVD快播观看地址??www.147.qqq.comWWW147EEE.COM这个网站现在改哪个网址了www.xvideos.com请问www.****.com.hk 和www.****.com.cn一样吗?henhenlu.com谁有大片地址呀 麻烦告诉我 谢谢啦 O会给你打满分的官人放题《墨竹题图诗》 大意
a5域名交易 oneasiahost 全球付 z.com sub-process 绍兴高防 购买国外空间 shopex主机 个人免费主页 美国凤凰城 starry cdn网站加速 稳定空间 hostease 免费主页空间 中国电信宽带测速 hdchina 腾讯服务器 优惠服务器 服务器机柜 更多