译自:How Can The Checkpoints In The Extract Checkpoint File Be Changed? (文档 ID 964684.1)

问题:
如何改变抽取进程检查点文件中的检查点?
解决概览:
抽取进程的检查点可以通过拷贝然后在新的检查点文件中改变检查点值来改变。
解决:
抽取进程维护三个主要的检查点信息:

	1. recovery checkpoint:如果抽取进程宕了,确定抽取进程将会从哪个位置读取
	2. current checkpoint:表示抽取进程在stop后者abend前,抽取进程当前正在读或者当时在读的位置
	3. output checkpoint:表示在trial文件中当前写的位置

在某些情况下,一个替代的检查点文件必须从一个已经存在的文件创建。例如,设置一个测试抽取进程与生产进程在同一检查点处并行运行,或者改变进程的rac与否,等等
下面的根据已存在检查点文件创建检查点文件的方式是可行的。在执行完一下步骤后,请在两个进程均执行info extract showch和info extract detail来两个检查点文件之间的检查点是一致的。
1) stop extract
2)从当前抽取获得相关检查点信息:recovery checkpoint、current checkpoint、output checkpoint、trial文件位置
info xxx,showch
示例输出:
Recovery Checkpoint (position of oldest unprocessed transaction in the data source):

Sequence #: 34381

RBA: 8615440

Timestamp: 2008-08-27 18:51:27.000000

Redo File: /rdbms/oracle/ora1012i/64/oradata/ora1012a/redo01.log



Current Checkpoint (position of last record read in the data source):

Sequence #: 34381

RBA: 8615936

Timestamp: 2008-08-27 18:51:27.000000

Redo File: /rdbms/oracle/ora1012i/64/oradata/ora1012a/redo01.log


Write Checkpoint #1


GGS Log Trail


Current Checkpoint (current write position):

Sequence #: 0

RBA: 2970

Timestamp: 2008-08-27 18:52:24.196674

Extract Trail: ./dirdat/pj
3)在./dirchk路径下,会有一个与抽取进程同名的以.cpe为后缀的文件。重命名该文件。这相当于将进程删掉了。
4)添加相同名称的抽取进程
GGSCI > ADD EXTRACT <extract_name>, TRANLOG, EXTSEQNO <Current Checkpoint sequence #>, EXTRBA <Current Checkpoint RBA>

GGSCI > INFO EXTRACT <extract_name>

这里current checkpoint和recovery checkpoint是一样的。
5)改变recovery checkpoint
GGSCI > ALTER EXTRACT <extract_name>, IOEXTSEQNO <Recovery Checkpoint #>, IOEXTRBA <Recovery Checkpoint RBA>

GGSCI > INFO EXTRACT <extract_name>

根据2)步得到的信息修改recovery和current checkpoint。
6)添加远端trial文件(传输)或者本地trial文件(抽取)
GGSCI > ADD RMTTRAIL./dirdat/<extrail trail>, METGABYTES xx, SEQNO <current write position Sequence #> , RBA <current write position RBA>, EXTRACT <extract>
没有必要严格按照以上步骤执行,只要拷贝相应checkpoint然后执行相应步骤即可。例如,在步骤6中,如果新的extract写到一个不同的路径且以1号文件,0rba开始,那么可以只添加RMTTRAIL。

警告:
改变生产环境抽取进程的检查点是很危险的。任何错误都有可能导致永久的数据丢失或者数据不一致。
此方法不适用DB2。

注:抽取进程:抽取+传输