OGG过程,字符集由AL32UTF8到ZHS16GBK时,两边都设定ZHS16GBK后,目标端配置文件需加参数:HAVEUDTWITHNCHAR。下面比较其他几个参数关系:
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 l GGS CacheRetryCountGGS CacheRetrvDelav} ='value’)
3.HAVEUDTWITHNCHAR
适用范围:replicat
解释说明:当源数据包含具有NCHAR,NVARCHAR2或NCLOB属性的用户定义类型时,请使用AVEUDTWTTHNCHAR参数。
当跟踪中遇到此数据时,HAVEUDTWITHNCHAR会导致Replicat连接到AL32UTF8中的Oracle目标,这在用户定义的数据类型包含其中一个属性时是必需的。
如果目标的字符集为AL32UTF8,则不需要HAVEUDTWITHNCHAR。 但是,只有NLS LANG设置为目标上的AL32UTF8才需要。
默认情况下,Replicat将忽略NLS_LANG并连接到数据库本机字符集中的Oracle数据库。
Replicat使用不支持NCHAR,NVARCHAR2或NCLOB属性的Oracle调用接口的0CIString对象,因此Replicat必须将其绑定为CHAR。
在这种情况下,连接到AL32UTF8中的目标可以防止数据丢失。
必须在参数文件中的USERID或USERIDALIAS参数之前指定HAVEUDTWITHNCHAR。
使用语法:HAVEUDTWITHNCHAR
4.REPLACEBADCHAR
适用范围:extract and replicat
解释说明:当映射字符类型列时,在源或目标字符集中不存在有效代码点时,可使用REPLACEBADCHAR参数来控制进程的响应。
默认情况下,仅在源和目标数据库具有不同的字符集时执行无效代码点的检查,并且默认响应将被拒绝。
当源数据库和目标数据库具有相同的字符集时,可以使用FORCECHECK选项强制进程检查无效的代码点。
REPLACEBADCHAR适用于全局变量。
使用语法:REPLACEBADCHAR{ABORTSKIPESCAPE|SUBSTITUTE string| NULL| SPACE} [FORCECHECK] [NOWARNING]