本文为原创,转载请注明出处:
修改目的端trail文件的最大大小。
本文产生的背景:
在OGG源
数据库上,检查文件
系统使用率的过程中,发现$OGG_HOME的使用率相当高,于是追查原因,查到dirdat目录下有大量的trail文件没有删除。这些trail文件都是去年产生的,早就被传输到目的端了。但是为什么没有被mgr 的PURGEOLDEXTRACTS 参数正常删除呢?
后来检查发现:源头的trail file(/u02/ggs/dirdat/aa)和目的端的trail file(u02/ggs/dirrdat/aa)的名字一样,这是导致源头os上 trail文件没有删除的原因。
具体是这么回事:比如说源头trail file(/u02/ggs/dirdat/aa)到了aa001000,此时目的端的trail file(u02/ggs/dirrdat/aa)却只到了aa000010。
OGG的mgr进程删除trail文件的判断逻辑为:
检查整个复制环境(包括源头和目的端)中的相同trail文件名的trail,获得最小的那个trail文件号,在此号之前的那些trail文件就会被OGG的mgr进程的PURGEOLDEXTRACTS 参数正常删除掉。
这里有人会问:为啥源头到了/u02/ggs/dirdat/aa001000,目的端却只到了/u02/ggs/dirdat/aa000010 ?这是不是意味着丢了数据?
这个很好解释,包括但是不限于如下的原因:
1.源头trail文件最大大小是20M一个,目的端trail文件的最大大小是2M一个。
2.源头trail文件中包括10个表的信息,目的端trail文件中包括2个表的信息(即:传输进程的参数文件起到了过滤需要同步的table的作用)
因此,如上的情况不代表传丢了数据。
本文的思路就是调整目的端trail文件的大小,让目的端trail文件号的生成速度加快,即:让目的端的trail文件号尽快的追上源头的trail文件号,从而让OGG的mgr进程尽快的删除源头的trail文件。
额外注意:
1.调整目的端trail文件的大小 是在源头进行的,具体来说就是:修改源头的传输进程
2.在整个过程中,只需要停止一下传输进程,然后修改rmttrail文件大小,然后再启动传输进程即可。可以说风险极其微小。
调整步骤(以下均在源头机器上进行)
1.info 传输进程, showch
2.info 传输进程, detail
3.stop 传输进程
4.alter rmttrail /u02/ggs/dirdat/aa, extract 传输进程, megabytes 1
--->这个alter命令是修改远程的trail file /u02/ggs/dirdat/aa 的最大大小为1MB
5.info 传输进程, showch
6.info 传输进程, detail
7.start 传输进程
如下是当时操作的记录:
GGSCI (hosta) 2> info dpaa, showch
EXTRACT DPAA Last Started 2014-07-25 17:30 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:07 ago)
Log Read Checkpoint File /u02/ggs/dirdat/aa019357
2014-08-01 14:08:29.000000 RBA 44906368
Current Checkpoint Detail:
Read Checkpoint #1
GGS Log Trail
Startup Checkpoint (starting position in the data source):
Sequence #: 18965
RBA: 36113095
Timestamp: 2014-07-25 16:37:28.000000
Extract Trail: /u02/ggs/dirdat/aa
Current Checkpoint (position of last record read in the data source):
Sequence #: 19357
RBA: 44906368
Timestamp: 2014-08-01 14:08:29.000000
Extract Trail: /u02/ggs/dirdat/aa
Write Checkpoint #1
GGS Log Trail
Current Checkpoint (current write position):
Sequence #: 5341
RBA: 36395386
Timestamp: 2014-08-01 14:08:35.734473
Extract Trail: /u02/ggs/dirdat/aa
Header:
Version = 2
Record Source = A
Type = 1
# Input Checkpoints = 1
# Output Checkpoints = 1
File Information:
Block Size = 2048
Max Blocks = 100
Record Length = 2048
Current Offset = 0
Configuration:
Data Source = 0
Transaction Integrity = 1
Task Type = 0
Status:
Start Time = 2014-07-25 17:30:55
Last Update Time = 2014-08-01 14:08:35
Stop Status = A
Last Result = 400
GGSCI (hosta) 3> info DPAA, showch
EXTRACT DPAA Last Started 2014-07-25 17:30 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:07 ago)
Log Read Checkpoint File /u02/ggs/dirdat/aa019357
2014-08-01 14:09:43.000000 RBA 46549780
Current Checkpoint Detail:
Read Checkpoint #1
GGS Log Trail
Startup Checkpoint (starting position in the data source):
Sequence #: 18965
RBA: 36113095
Timestamp: 2014-07-25 16:37:28.000000
Extract Trail: /u02/ggs/dirdat/aa
Current Checkpoint (position of last record read in the data source):
Sequence #: 19357
RBA: 46549780
Timestamp: 2014-08-01 14:09:43.000000
Extract Trail: /u02/ggs/dirdat/aa
Write Checkpoint #1
GGS Log Trail
Curre