OGG的Sybase抽取进程报错 “The log transfer context for the current database cannot be reserved because the current database has been enabled for a Rep Agent Thread”
**OGG Sybase Extract error "The log transfer context for the current database cannot be reserved because the current database has been enabled for a Rep Agent Thread" (Doc ID 1480285.1)**
适用
Oracle GoldenGate - Version 11.1.1.1.0 and later
Information in this document applies to any platform.
症状
Sybase database中新建的OGG抽取进程报下面的错误:
2012-08-01 17:50:33 ERROR OGG-00146 VAM function VAMInitialize returned unexpected result: error 600 - VAM Client
Report <Server message : <SybaseVAM Data Context>: number(9150) severity(16) state(0) line(1)
Procedure: Not Available
The log transfer context for the current database cannot be reserved because the current database has been enabled for a Rep Agent Thread
WHEN FAILED : While reserving log context for scan log session
WHERE FAILED : Sybase Log Context Module
CONTEXT OF FAILURE : No Information Available!>.
原因
OGG使用Sybase Log Transfer Manager (LTM) 来读取Sybase transaction log。当Sybase RepServer在运行时,ogg的抽取进程不能运行。在同一个数据库的事务日志中,一次只有一个进程可以保留一个上下文以读取事务日志。
解决方案
执行如下命令以禁用Sybase Rep Agent
sp_config_rep_agent databasename, disable
处理事务日志的抽取进程必须管理secondary log truncation point (TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT)
需要授予ogg 抽取的用户replication_role权限,以设置 truncation point (dbcc settrunc (ltm,valid)) 并重新加抽取进程。
sp_role 'grant', replication_role, gg_user