OGG能否复制迁移包含CLOB字段的table

Oracle的官方文档“Can GoldenGate Replicate An Oracle Table That Contains Only CLOB Column(s)? (文档 ID 971833.1)

给出了解释:OGG并不支持CLOB的复制迁移。详见如下:

APPLIES TO:

Oracle GoldenGate - Version 4.0.0 and laterInformation in this document applies to any platform.

Question

Can GoldenGate replicate an Oracle table that contains only CLOB columns?

Answer

To ensure Data Integrity when performing Update and Delete operations, GoldenGate requires each Source and Target Table to have a Unique Identifier. This Unique Identifier can be:            * a Primary Key            * a Unique Index            * one or more columns that contain unique values and are specified with a GoldenGate KEYCOLS clause.

To make those columns available to GoldenGate, they must be logged to the Redo Log byOracle‘s Supplemental Logging feature.  Oracle does not support Supplemental Logging for CLOB columns; therefore Updates and Deletes on those columns cannot be replicated by GoldenGate.

据上,简单翻译之:

Oracle为确保执行更新和删除操作时的数据完整性,GoldenGate要求源和目标表具有唯一的标识符。这个唯一标识符可以是:主键、唯一索引、包含唯一值的一个或多个列,并使用GoldenGate KEYCOLS子句指定。要使这些列对GoldenGate可用,必须通过Oracle的补充日志功能将它们记录到Redo日志中。Oracle不支持为CLOB列添加日志记录;故,GoldenGate也就无法复制这些列上的更新和删除。

那么,使用OGG在做迁移时,如何进行操作呐?

答案:这里给出一种方案,结合oracle export方式;

步骤如下:

1. 使用OGG同步没有clobblob类型数据的表

使用oracle系统视图all_tab_columns和PL/SQL在导出表的时候提供的Object selection功能快速导出不包含clob和blob的表数据,命令如下:

SELECT DISTINCT (‘TABLE "‘
|| a.OWNER
|| ‘"."‘
|| a.TABLE_NAME
|| ‘"‘)
FROM sys.all_tab_columns a
WHERE a.OWNER = ‘CA_GROUP‘
AND a.TABLE_NAME NOT IN
(SELECT t.TABLE_NAME
FROM sys.all_tab_columns t
WHERE t.OWNER = ‘CA_GROUP‘
AND t.DATA_TYPE IN (‘CLOB‘, ‘BLOB‘)
);

以上命令,会找出不包含CLOB或BLOB的表,使用OGG先行同步数据;

2. 变更日,进行停库,使用expdp命令进行补数,将包含CLOBBLOB的表进行单独迁移,为了加快导出速度,可加parallel并行度

SELECT DISTINCT (‘TABLE "‘

|| a.OWNER

|| ‘"."‘

|| a.TABLE_NAME

|| ‘"‘)

FROM sys.all_tab_columns a

WHERE a.OWNER     = ‘CA_GROUP‘

AND a.TABLE_NAME IN

(SELECT t.TABLE_NAME

FROM sys.all_tab_columns t

WHERE t.OWNER = ‘CA_GROUP‘

AND t.DATA_TYPE IN (‘CLOB‘, ‘BLOB‘)

);

原文地址:https://www.cnblogs.com/jimoyu/p/12209883.html

时间: 2024-11-02 19:41:02

OGG能否复制迁移包含CLOB字段的table的相关文章

Oracle导出包含clob字段的sql脚本工具

之前工作中遇到生产环境不允许导入Oracle的dmp文件,只能导入sql脚本,但是表中存在clob字段,直接用plsql工具无法导出clob字段,用了下dbvisualizer可以直接导出,亲测可用. dbvisualizer是一款十分好用的数据库工具,支持数据库AmazonRedShift.DB2LUW.Exasol.H2.Informix.JavaDB/Derby.Microsoft SQL Server.MIMERSQL.MySQL.Netezza.NuoDB.Oracle.Postgre

从oracle迁移带clob字段的表数据至postgresql

在oarcle的sql脚本中字段长度超过4000执行会有异常,而在postgresql中超过4000仍可以正常执行,产品同时支持多个数据库,如oracle和postgresql,在基础数据较多时,只能通过导出基础数据相关表的dmp或backup文件进行升级部署.开发的时候以oracle作为开发库,需要将基础数据弄到postgresql制作backup文件,通过程序直接读oracle表写到postgresql. 步骤: 1.修改oracle和postgresql库的ip.用户名和密码: 2.修改库

【LOB】使用USER_LOBS视图获得当前用户包含LOB字段的表

包含LOB类型字段的表往往需要特殊关照,如何快速的获得包含LOB对象的数据库表?使用DBA_LOBS.ALL_LOBS和USER_LOBS视图可以很方便地获得包含BLOB或CLOB字段的表. 简单看一下效果. 1.创建两个包含LOB类型字段的表T1和T2[email protected]> create table t1 (a clob); Table created. [email protected]> create table t2 (a blob); Table created. 2.

好记性不如烂笔头18-java对Oracle的CLOB字段的操作

分布式文件系统的发展很快,在Oracle中,LOB(Large Object,大型对象)类型的字段现在虽然用的没有以前那么多了.但是在一些特殊的场合,需要用它保存一些数据量非常大的业务领域(如图象.档案等),还是有不少的市场. LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(BinaryLarge Object),适用于存贮非文本的字节流数据(如程序.图象.影音等).而CLOB,即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据

Oracle 插入超4000字节的CLOB字段的处理方法

最近在做系统开发的时候需要想Oracle数据库插入超过4000字节的CLOB字段,在网上查询了N久才发现下面的解决方案,故留存以备后查. 我们可以通过创建单独的OracleCommand来进行指定的插入,即可获得成功,这里仅介绍插入clob类型的数据,blob与此类似,这里就不介绍了,下面介绍两种办法 在通过拼组sql语句来实现数据插入的应用中,我们很有可能会遇到需要插入大型数据的情况,例如,在oracle中需要插入字节数超过4000的字段内容时,我们如果通过简单的拼组sql语句来实现插入,显然

【Oracle】【35】BLOB字段和CLOB字段

前言: BLOB用来存储大量二进制数据.如图片.音乐等,转为二进制数再存储 CLOB用来存储大量文本数据.如HTML页面等,varchar2最大是4000,预计会超过4000的用Clob 正文: 1,我用的是java + mybatis,直接用String处理就可以了.String最大能存4G 数据库:创建表 -- Create table create table CLOB_TEST ( id VARCHAR2(32) default sys_guid(), content CLOB ) 实体

SimpleCursorAdapter参数from必须包含_id字段的原因

String [] from ={Books.Id,Books.Name,Books.Author,Books.Category}; int [] to={R.id.ID,R.id.nameID,R.id.authorID,R.id.categoryID}; ListAdapter bookAdapter = new SimpleCursorAdapter(this,R.layout.booklist,cursor,from,to);调试的时候在SimpleCursorAdapter出现no r

Linux[Fedora]查找文件包含的字段

find 与 grep组合查找 find . –name '文件类型' | xargs grep –n '查找内容'文件类型可正则表达式通配, [.]表示当前目录下进行查找,也可自由指定目录.比如: find /etc –name '*properties' | xargs grep –n 'cacheSize' 查询/etc目录下,包含cacheSize字段并以properties结尾的文件 find . –name '文件类型' –exec grep –n '查找内容'find /etc –

【Oracle】给clob字段插入数据

// 插入 //OracleCommand cmd = "insertInto into GIS_PolygonPoint(PCode,PointColl) values('140134', :var)"; // 修改 //OracleCommand cmd = new OracleCommand("update yd_line set coord=:coordstr where lineid=" + LineId.ToString(), conn); string