使用 Oracle GoldenGate 将 SQL Server 表数据同步到 Oracle 中。
偶尔检查MSSQL日志使用情况,发现日志越来越大,17GB了。(之前没怎么注意)
再看看日志处于什么状态:
发现日志一直处于活动事务中,即日志中应该还有一个长的事务没有提交。
看看当前有哪些会话有打开的事务(执行多几遍,确认有3个没关闭的连接和事务)
这3个连接并非当前请求,status='sleeping' ,cmd = ‘AWAITING COMMAND’,open_tran > 0 ,这表明客户端连接已经中断了,但是数据库中仍然保留该连接,而客户端中断时没有正确处理事务的提交或回滚情况,导致数据库中事务仍然在打开中。对于spid = 51 和spid=97 的,看到最后批处理执行时间已经很多天之前了,主要是数据仓库来查询数据的,这连接也没什么用了,可以直接 kill 掉。 对于spid = 95 的,为 GoldenGate 数据库用户执行的,也是一直在执行的,但不应该一直保留着。
pid = 95 的连接,重启ogg 的复制进程,如图:
重启完后,在查看日志,事务日志使用率变为了 0.35%,这时就等着收缩吧!