实现含有blob字段的表的瘦身
2016-04-22 14:40
323 查看
最近在实现一个业务功能:
一个table(含有blob列)的瘦身,从a库搬家搬到b库,原理就是a库上delete一行记录,在b库上插入此条记录。
用笨方法实现:a库上导出想要delete的row,在b库上导入,在b库上导入成功之后,再从a库上删除此条记录。
其实这个瘦身的需求可以使用OGG 12c (OGG version 12.1.2.1.0)来完成。
前提:
SQL> ALTER TABLE user.blob_table ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
核心参数
源头抽取进程:
NOCOMPRESSDELETES FETCHMISSINGCOLUMNS
目的端复制进程:
INSERTDELETES
额外说一句:由于OGG 12c不支持Oracle database 10g,因此,该需求不适用于Oracle database 10g
下面来分析一下实现原理:
1.ALTER TABLE user.blob_table ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 这个语句无法把blob字段值带到redo log中
2.而经过用如上核心参数测试,确实能达到如下效果:在a库上删除的记录能在b库上insert成功(包括blob值也能带到b库上),
经过查询OGG 12c文档,http://docs.oracle.com/goldengate/1212/gg-winux/GIORA/setup.htm#GIORA374
发现OGG用的是flashback query来获取的blob的字段值。于是做如下实验:
2.1 停止OGG抽取进程
2.2 源头(a库)上delete该表一条记录,并commit
2.3 切换undo tablespace ,本步骤参考:IF: How to Switch to a New Undo Tablespace (文档 ID 1951695.1)
2.4 启动OGG抽取进程
2.5 此时OGG的复制进程是启动的,使用PLSQL-developer工具,查询备库(b库)上的那条记录,发现blob字段值是空的,其他值都复制过来了。
2.6 于是确认:OGG 12c 的此功能是借助flashback query获取的blob的字段值。
一个table(含有blob列)的瘦身,从a库搬家搬到b库,原理就是a库上delete一行记录,在b库上插入此条记录。
用笨方法实现:a库上导出想要delete的row,在b库上导入,在b库上导入成功之后,再从a库上删除此条记录。
其实这个瘦身的需求可以使用OGG 12c (OGG version 12.1.2.1.0)来完成。
前提:
SQL> ALTER TABLE user.blob_table ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
核心参数
源头抽取进程:
NOCOMPRESSDELETES FETCHMISSINGCOLUMNS
目的端复制进程:
INSERTDELETES
额外说一句:由于OGG 12c不支持Oracle database 10g,因此,该需求不适用于Oracle database 10g
下面来分析一下实现原理:
1.ALTER TABLE user.blob_table ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 这个语句无法把blob字段值带到redo log中
2.而经过用如上核心参数测试,确实能达到如下效果:在a库上删除的记录能在b库上insert成功(包括blob值也能带到b库上),
经过查询OGG 12c文档,http://docs.oracle.com/goldengate/1212/gg-winux/GIORA/setup.htm#GIORA374
发现OGG用的是flashback query来获取的blob的字段值。于是做如下实验:
2.1 停止OGG抽取进程
2.2 源头(a库)上delete该表一条记录,并commit
2.3 切换undo tablespace ,本步骤参考:IF: How to Switch to a New Undo Tablespace (文档 ID 1951695.1)
2.4 启动OGG抽取进程
2.5 此时OGG的复制进程是启动的,使用PLSQL-developer工具,查询备库(b库)上的那条记录,发现blob字段值是空的,其他值都复制过来了。
2.6 于是确认:OGG 12c 的此功能是借助flashback query获取的blob的字段值。
相关文章推荐
- android DecimalFormat使用,保留小数点后x位
- 2016西电校赛网络赛 Problem I 万神的竞赛
- 转载/验证码
- Linux系统中date格式输出
- 微信数据分析
- Eclipse Remot Debug
- C语言运算符优先级
- 条件运算符
- 【C#关于编码那点事】
- bond模式 七种网卡绑定模式详解
- 在Centos中yum安装和卸载软件的使用方法
- Android 二维码扫描框 加四个角及中间横线自动下滑
- 堆栈区别:
- Educational Codeforces Round 12 E. Beautiful Subarrays trie求两异或值大于等于k对数
- 指针与数组的比较
- 20160421HTTP Status 500 - java.lang.LinkageError loader constraint violation when resolving method o
- 产品推广都有哪些方法可以用?
- 游戏服务器的数据保存
- 200. Number of Islands
- Android之从TCP/IP、HTTP看Socket通信