两个oracle数据库 一个为ASCII编码,一个为utf-8编码。目标库为utf-8。 由于ASCII编码只有查询权限。增加了一个中间库来实现中间库也是ASCII
用物化视图的方法:1:在ASCII库建物化视图
create materialized view log on TEMP with primary key;
2:在中间库建物化视图,将字段类型为VARCHAR2的字符转为字节流防止乱码问题。
create materialized view TEMP refresh fast on demand on select utl_raw.cast_to_raw(MC) mc from TEMP@ascii
create materialized view log on TEMP with primary key;
3:在目标库即utf-8上建物化视图进行转码
create materialized view TEMP refresh fast on demand on
select REPLACE(utl_raw.cast_to_varchar2(utl_raw.convert(nvl (mc,'5a525346'),'AMERICAN_AMERICA.UTF8','SIMPLIFIED CHINESE_CHINA.ZHS16GBK')),'ZRSF',NULL) MC
from TEMP@ascii中间库
注意点:utl_raw.convert 函数是为了防止有空值转换会有异常,replace中的也是asiii 下的 ZRSF的字节流名称。
附带一个刷新执行语句 exec dbms_mview.refresh('TEMP','C') 全量刷新。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30210660/viewspace-1630885/
,如需转载,请注明出处,否则将追究法律责任。