源字符集
有效对象
复制
说明
使用 SOURCECHARSET 参数可以控制数据从源字符集转换为复制设置的目标字符集。默认情况下,Replicat 会转换版本 11.2.1 及更高版本的字符集,但您可能需要在以下情况下进行干预:
-
启用提取版本早于 11.2.1 的数据的准确转换。提取版本 11.2.1 之前的版本不会将有关源字符集的信息写入线索,因此必须直接将信息提供给 Replicat。提取版本 11.2.1 和更高版本将有关源字符集的信息写入线索以供 Replicat 使用,并且忽略任何
SOURCECHARSET规范。 -
覆盖线索文件中的源数据库字符集。将
SOURCECHARSET与OVERRIDE选项一起使用可指定要使用的字符集。一个示例用例是,通过忽略源数据库字符集,将数据库迁移到 UNICODE 或特定字符集数据库,从垃圾输入、垃圾输出非字符集识别数据库类型。
Replicat 使用 SOURCECHARSET 字符集时会发出警告消息。
使用 REPLACEBADCHAR 参数处理源数据中有无效字符或目标字符集不支持源字符的验证错误。它提供了以下选项:在这些错误上异常终止、跳过导致错误的记录或为字符指定替代值。
默认值
无
语法
SOURCECHARSET {<source_charset> | PASSTHRU | OVERRIDE} [DB2ZOS]
<source_charset>
指定提取版本早于 11.2.1 的数据的源字符集。Replicat 在将字符类型列转换为目标字符集时使用指定的字符集。
对于 <source_charset>,指定表示源数据库的相应字符集标识符。
对于 Oracle,如果未指定 SOURCECHARSET,但目标上存在 NLS_LANG 环境变量,则 Replicat 将 NLS_LANG 值用作源数据库字符集。如果不存在 SOURCECHARSET 和 NLS_LANG,复制将异常终止以防止可能的数据损坏。
PASSTHRU
PASSTHRU
强制 Replicat 应用数据而不转换字符集。字符集差异被忽略,如下所示:
-
如果数据库是 Oracle,则数据按存储在线这就是存储数据的方式应用。
-
如果数据库支持绑定为二进制数据,则在数据库支持绑定为二进制数据时,数据按原样应用数据。否则,数据将按原样应用。
如果指定了 PASSTHRU,且 MAP 语句中存在 CHAR/VARCHAR/CLOB 与 NCHAR/NVARCHAR/NCLOB 之间的映射,复制将异常终止。
如果指定 PASSTHRU 模式时,任何 Oracle GoldenGate 列映射函数都用于基于字符的列,Replicat 会发出警告消息,并将这些函数的结果转换为目标数据库字符集,然后再将它们映射到目标列。
仅当确定源字符集和目标字符集兼容时,才应使用 PASSTHRU。如果您不确定 PASSTHRU 是否适用于您的环境,请先联系 Oracle 技术支持,然后再使用它。
OVERRIDE
强制复制使用指定的字符集,从而覆盖线索文件中的源数据库字符集。此选项将覆盖字符类型列字符集,但以下情况除外:
-
字符集由
CHARSET和COLCHARSET参数覆盖。 -
使用
NCHAR、NVARCHAR和NCLOB数据类型。 -
数据库将列字符集显式改写为数据库字符集以外的集。
z/OS 的 DB2
对 z/OS 对 Db2 有效。
如果包含来自 z/OS 平台的 Db2 数据的线索版本为 Oracle GoldenGate 12.1 或更低版本,则为必需字段。此参数可确保 Replicat 识别数据来自 z/OS 上的 Db2,这允许混合使用 ASCII 和 EBCDIC 字符格式。
示例
示例 1
SOURCECHARSET ISO-8859-9
示例 2
SOURCECHARSET PASSTHRU
示例 3
SOURCECAHRSET JA16EUC
示例 4
SOURCECHARSET OVERRIDE WE8ISO8859P15