START REPLICAT
使用 START REPLICAT 可以启动复制。要确认复制是否已启动,请使用 INFO REPLICAT 或 STATUS REPLICAT 命令。
针对 Oracle 目标数据库启动集成复制组时,START REPLICAT 会自动在目标数据库中注册复制。
协调复制只能作为整体进行启动。没有用于启动单个线程的选项。如果先前协调复制不是正常关闭的,则各线程可能在线索文件中的不同位置处停止。发生这种情况时,如果自上一次运行后更改了参数文件,START REPLICAT 会写入警告,如果线程数发生了变化,则会引发错误。
正常起点
复制可以从正常起点(初始或当前检查点)开始,也可以从线索文件中用户指定的替代位置开始。
不带任何选项的 START REPLICAT 会导致复制程序从下列点之一开始处理,以保持数据完整性:
-
在正常或异常终止后:线索中上次运行未处理的第一个事务处理(由当前的读取检查点表示)。
-
创建组之后首次启动时:从活动线索文件的开头 (
seqno 0,rba 0)。
替代起点
START REPLICAT 的 SKIPTRANSACTION、ATCSN 和 AFTERCSN 选项使复制作为整体或某个协调复制的特定线程在线充中正常起点以外的某个事务处理处开始进行处理。使用这些选项可以:
-
指定在有错误导致复制无法在线索中向前执行时使用的逻辑恢复位置。可以将复制置于特定位置,以跳过导致出错的一个或多个事务处理(如果知道相应数据将不会应用于目标)。
-
跳过以下这种情况的复制的事务处理:在初始加载期间,对目标应用备份后,这些事务处理会导致出现重复记录和缺少记录错误。这些选项会导致复制进程放弃发生时间早于备份中捕获的最新更改集的事务处理。您可以将对应备份完成的序列标识符值映射到 CSN 值,然后启动复制以从指定的 CSN 开始应用事务处理。
注:跳过某个事务处理,或者在某个 CSN 处或之后启动,可能会导致复制启动速度比正常情况慢,具体取决于在到达适当的事务处理记录之前必须在线萨中读取的数据量。要查看启动进度,请使用 `SEND
REPLICAT` command with the `STATUS` option. To omit the need for Replicat to read through transactions that ultimately will be skipped, you can use the `ATCSN` or `AFTERCSN` option when starting Extract, so that those transactions are omitted from the trail, see `START EXTRACT`. {: .infoboxnote}
语法
START REPLICAT group_name
[SKIPTRANSACTION | {ATCSN csn | AFTERCSN csn}]
[FILTERDUPTRANSACTIONS | NOFILTERDUPTRANSACTIONS]
[THREADS (threadID[, threadID][, ...][, thread_range[, thread_range][, ...])
group_name
复制组的名称,也可使用通配符 (*) 指定多个组。例如,T* 启动名称以 T 开头的所有复制组。
SKIPTRANSACTION
使复制跳过其在线索中预期启动位置后面遇到的第一个事务处理。来自这第一个事务处理的所有操作都会被排除。
如果还对此复制使用 MAXTRANSOPS 参数,进程可能会从某个事务处理中间的某个位置开始读取线索文件。在这种情况下,将跳过该部分事务处理的剩余部分,复制将从文件中的下一个起始事务处理记录继续进行正常处理。如果使用 DISCARDFILE 参数,跳过的记录将写入放弃文件;否则,将向报告文件写入类似以下消息的消息:
User requested START SKIPTRANSACTION. The current transaction will be skipped. Transaction ID txid, position Seqno seqno, RBA rba
仅在复制读取的线索是联机更改同步配置(包含检查点)的一部分时有效 SKIPTRANSACTION。对任务类型初始加载(即 SPECIALRUN 与 ADD REPLICAT 结合使用)无效。
ATCSN csn |
AFTERCSN csn |
在特定 CSN 处设置用户定义的起点。使用 ATCSN 或 AFTERCSN 时,将向报告文件写入类似以下消息之一的消息:
User requested start at commit sequence number (CSN) csn-string
User requested start after commit sequence number (CSN) csn-string
关于这些选项的一般信息:
-
仅在复制读取的线索是联机更改同步配置(包含检查点)的一部分时有效。对任务类型初始加载(即
SPECIALRUN与ADD REPLICAT结合使用)无效。 -
要支持在某个 CSN 处或之后启动,应将 CSN 存储在每个事务处理的第一个线索记录中。如果启动复制时针对某个早期线索版本使用
AFTERCSN,则复制将异常终止并向报告写入错误,指出不支持线索格式。ATCSN使复制在具有指定 CSN 的事务处理处开始进行处理。线索中 CSN 值低于指定 CSN 值的任何事务处理都会跳过。
AFTERCSN使复制在具有指定 CSN 的事务处理后面出现的事务处理处开始进行处理。线索中 CSN 值低于或等于指定 CSN 值的任何事务处理都会跳过。
csn指定 CSN 值。以对数据库有效的格式输入 CSN 值。有关 CSN 格式和说明,请参见 Commit Sequence Number (CSN) 。如果格式无效,复制会异常终止,并向报告文件写入消息。要确定在完成初始加载后提供的 CSN,请使用加载实用程序完成加载时使用的提交标识符。否则,请按照初始加载过程中的说明来确定何时启动复制。
FILTERDUPTRANSACTIONS | NOFILTERDUPTRANSACTIONS
使复制忽略已处理的事务处理。在提取重新定位到新起点(请参见 "START EXTRACT " 的 ATCSN 或 AFTERCSN 选项),并且您确信线索中存在可能会导致复制异常终止的重复事务处理时使用。此选项需要使用检查点表。默认值为 FILTERDUPTRANSACTIONS。但是,如果使用 NOFILTERDUPTRANSACTIONS,则集成复制默认设置被覆盖,并会导致其不筛选重复项。因此,它对经典复制和集成复制的影响相同。
THREADS (threadID[, threadID][, ...][, thread_range[, thread_range][, ...])
在复制处于协调模式下时,对 SKIPTRANSACTION、ATCSN 和 AFTERCSN 有效。对不带这些选项的 START REPLICAT 无效。在指定位置处启动指定的一个或多个复制线程。
threadID[, threadID][, ...]
指定一个线程 ID,或以 threadID, threadID, threadID 格式指定逗号分隔的线程列表。
thread_range[, thread_range][, ...]
以 threadIDlow-threadIDhigh 形式指定线程范围,或以 threadIDlow-threadIDhigh,threadIDlow-threadIDhigh 格式指定的逗号分隔的范围列表。
允许组合这些格式,例如 threadID, threadID,threadIDlow-threadIDhigh。
示例
START REPLICAT reps
以下命令在 Oracle 特定的 CSN 处启动复制。
START REPLICAT reps, ATCSN 6488359
以下命令在具有指定 CSN 的事务处理后面 SQL Server 特定的 CSN 处启动复制。
START REPLICAT reps, AFTERCSN 0X000004D2:0000162E:0009
以下命令在启动复制时,使协调复制的线程 4 和 5 跳过其最后一个检查点后面的第一个事务处理。如果有一个 10 线程协调复制,线程 0-3 和 6-10 全都将在正常起点(即它们的最后一个检查点)处启动。
START REPLICAT reps SKIPTRANSACTION THREADS(4-5)
以下示例将导致协调复制的线程 1-3 从 CSN 6488359 开始。
START REPLICAT reps ATCSN 6488359 THREADS(1-3)