更新记录格式
有效对象
提取所有数据库。此参数只能用于 TRANLOG 提取。它不能用于提取或分配服务。
说明
导致 Extract 将 UPDATE 操作之前和之后的映像组合到线索中的单个记录内。使用 UPDATERECORDFORMAT 参数它适用于经典和集成捕获模式中的提取。
使用 GETUPDATEBEFORES、GETBEFORECOLS 和 LOGALLSUPCOLS 参数时,在生成映像之前。(如果更新为主键、唯一索引或用户指定的 KEYCOLS 键,则默认情况下,之前和之后的图像存储在同一记录中。UPDATERECORDFORMAT 在这些情况下不适用。) 非 Oracle 数据库需要 NOCOMPRESSUPDATES 参数。
当为更新单个行生成两条记录时,会产生额外的磁盘 I/O 以及提取和复制的处理。如果在所有列上启用了补充日志记录,则未修改的列可能会在记录之前和之后重复。这条小径的总体尺寸也更大。使用 UPDATERECORDFORMAT 可降低此开销。
使用 UPDATERECORDFORMAT 时,Extract 会将之前和之后的图像写入单个记录,该记录包含处理 UPDATE 操作所需的所有信息。除了提高下游进程的读取性能外,这还使列映射函数能够在同一时间点访问前列值和后列值,而不必在读取后列值时高速缓存前映像列值。
UPDATERECORDFORMAT 对参数文件中的所有 TABLE 语句生效。
如果同时指定 UPDATERECORDFORMAT 和 ``FORMATRELEASE`` 11.x or earlier, then Extract will abend. Note: Many-columned tables can cause the trail record to reach its maximum size when UPDATERECORDFORMAT`,则使用。记录的其余部分以一个或多个附加的链式记录片段继续。这对处理性能影响较小。
注:INSERTALLRECORDS 仅适用于 ``UPDATERECORDFORMAT`
`FULL``. So if you are using ``INSERTALLRECORDS`` in Replicat, you must set ``UPDATERECORDFORMAT` `FULL`` in the Extract.
{: .infoboxnote}
默认值
如果指定 UPDATERECORDFORMAT,则必须设置 COMPACT 或 FULL。但对于 Oracle AI Database,如果未指定任何参数 logallsupcols 或 updaterecordformat,则缺省情况下设置 logallsupcols 和 updaterecordformat compact。
如果指定参数,则必须指定选项 full 或 compact。
对于异构数据库,如果使用参数,则必须设置 compact 或 full。如果不使用该参数,则 updaterecordformat 根本不是 on,您在线索中获得一个后置图像,除非您启用 getupdatebefores,否则您在线索中将获得两条记录,而不是统一记录。
语法
UPDATERECORDFORMAT [FULL | COMPACT]
FULL
生成一个包含 UPDATE 的前后图像的线索记录,其中前图像包括前后图像的事务处理记录中可用的所有列。在 Logdump 实用程序中查看时,此记录显示为 GGSUnifiedUpdate。
COMPACT
生成一条线索记录,其中包含 UPDATE 的前后图像,其中前图像包括事务处理记录中可用的所有列,但后图像仅限于主键列和 UPDATE 中修改的列。对于包含集成复制的配置,建议使用 UPDATERECORDFORMAT COMPACT。这是默认设置。
在 Logdump 实用程序中查看 FULL 或 COMPACT 时,记录显示为 GGSUnifiedUpdate。该记录包含以下内容:
-
标头
-
之前图像的长度
-
每列的前面值
-
主键、唯一索引或
KEYCOLS列的后缀值 -
修改后的列的值
-
内部令牌数据
示例
UPDATERECORDFORMAT COMPACT