Oracle GoldenGate将字符集设置分为两部分:数据平台字符集与操作系统区域的字符集。
从Oracle GoldenGate 11.2.1和更高版本开始,OGG默认支持字符集的转化。
OGG字符集设置准则:Target字符集与Source字符集一致,或者Target字符集是Source字符集的超集。
与字符集相关的参数:
1.SOURCECHARSET ZHS16GBK
适用范围:replicat
解释说明:使用SOURCECHARSET参数控制数据从源字符集到Replicat的目标字符集的转换
使用语法:SOURCECHARSET {source_charset | PASSTHRU | OVERRIDE} [DB2ZOS]
2.SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
适用范围:extract and replicat
解释说明:使用SETENV参数设置环境变量的值。 当Extract或Replicat启动时,它使用指定的值,而不是在操作系统环境中设置的值。
SETENV语句中的变量集将覆盖在操作系统级设置的任何现有变量。每个变量使用一个SETENV语句来设置。
适用语法:SETENV ( {environment_variable | GGS_CacheRetryCount | GGS_CacheRetryDelay} = 'value' )
3.HAVEUDTWITHNCHAR
适用范围:replicat
解释说明:当源数据包含具有NCHAR,NVARCHAR2或NCLOB属性的用户定义类型时,请使用HAVEUDTWITHNCHAR参数。
当跟踪中遇到此数据时,HAVEUDTWITHNCHAR会导致Replicat连接到AL32UTF8中的Oracle目标,这在用户定义的数据类型包含其中一个属性时是必需的。
如果目标的字符集为AL32UTF8,则不需要HAVEUDTWITHNCHAR。 但是,只有NLS_LANG设置为目标上的AL32UTF8才需要。
默认情况下,Replicat将忽略NLS_LANG并连接到数据库本机字符集中的Oracle数据库。
Replicat使用不支持NCHAR,NVARCHAR2或NCLOB属性的Oracle调用接口的OCIString对象,因此Replicat必须将其绑定为CHAR。
在这种情况下,连接到AL32UTF8中的目标可以防止数据丢失。
必须在参数文件中的USERID或USERIDALIAS参数之前指定HAVEUDTWITHNCHAR。、
使用语法:HAVEUDTWITHNCHAR
4.REPLACEBADCHAR
适用范围:extract and replicat
解释说明:当映射字符类型列时,在源或目标字符集中不存在有效代码点时,可使用REPLACEBADCHAR参数来控制进程的响应。
默认情况下,仅在源和目标数据库具有不同的字符集时执行无效代码点的检查,并且默认响应将被拒绝。
当源数据库和目标数据库具有相同的字符集时,可以使用FORCECHECK选项强制进程检查无效的代码点。
REPLACEBADCHAR适用于全局变量。
使用语法:REPLACEBADCHAR {ABORT | SKIP | ESCAPE | SUBSTITUTE string | NULL | SPACE} [FORCECHECK] [NOWARNING]
其余参数以后补充