赞
踩
**概述**
文档类别 | 测试文档 |
---|---|
文档时间 | 2021-02 |
文档标题 | 对Oracle GoldenGate及Ogg Veridata功能验证(一) |
作者 | Ora_Ckpt_Lu |
**目的**
1.Oracle GoldGate 19c使用集成抽取模式是否能够应用至Oracle database 11.2.0.4.0;
2.使用Oracle GoldGate 19c集成抽取、集成复制对CLOB,BLOB,LONG,XML数据类型支持程度;
3.Oracle GoldenGate veridata 数据验证工具对Oracle GoldenGate同步数据一致性校验真实性;
4.Oracle GoldenGate veridata 数据验证工具对Out-of-sync数据的修复方法可行性;
**结果**
1、Oracle GoldenGate 19c集成抽取模式可以适用于Oracle database 11.2.0.4.0未打补丁版本,
官方推荐如果适用集成抽取则需要打一些推荐补丁,本实验环境未应用任何数据库补丁2、Oracle GoldenGate 19c集成抽取模式对Oracle数据库表含有CLOB,BLOB,XML数据类型是支持的,
但是对于LONG对象类型表存在同步丢失内容(丢失long列的字节长度)问题,具体原因还在继续排查3、使用Oracle GoldenGate veridata 数据验证工具可以运行在没有Oracle
GoldenGate同步环境中,支持异构数据
数据比较,数据比对效率高,通过主键以及其他列hash比较方式进行数据一致性比较,同时支持Oracle lob之间快速比较4、使用Oracle GoldenGate veridata 数据验证工具 可以对源与目标数据不一致的地方进行数据修复,数据修复同样适用于
Oracle lob类型,并且高效,可以用作同步时对同步失败表进行修复,但是需要做大量预先定义工作。
**目录**
使用Python的Cx_Oracle模块创建相关表
#-*- coding:utf-8 -*- import cx_Oracle import os import sys os.environ['NLS_LANG']='SIMPLIFIED CHINESE_CHINA.UTF8' def CrtTab(conn): cursor = conn.cursor() #创建BLOB表 sqlstr1 = ''' CREATE TABLE TAB_BLOB( name VARCHAR2(24) primary key, content BLOB ) ''' #创建CLOB表 sqlstr2 = """ CREATE TABLE TAB_CLOB( name VARCHAR2(24) primary key, content CLOB ) """ #创建LONG表 sqlstr3 = """ CREATE TABLE TAB_LONG( name VARCHAR2(24) primary key, content LONG ) """ #创建XML表 sqlstr4 = """ CREATE TABLE TAB_XML( id VARCHAR2(24) primary key, content xmltype ) """ cursor.execute(sqlstr1) cursor.execute(sqlstr2) cursor.execute(sqlstr3) cursor.execute(sqlstr4) cursor.close() def main(): conn = cx_Oracle.connect('scott', 'scott', '192.168.3.103:1521/pri') print("已连接到数据库pri!") CrtTab(conn) print("已创建相关表!") conn.close() if __name__ == '__main__': main()
#-*- coding:utf-8 -*- import cx_Oracle import os import sys os.environ['NLS_LANG']='SIMPLIFIED CHINESE_CHINA.UTF8' def IstTab(conn): cursor = conn.cursor() #将本地图片插入TAB_BLOB path = 'E:\\人社厅硬件交接\\巡检\\巡检报告\\7月2日巡检\\5500\\' for file in os.listdir(path): name = file content = open(path + file,'rb') content = content.read() sqlstr = "insert into tab_blob(name,content) values('%s',:blobData)" %(file) cursor.setinputsizes(blobData=cx_Oracle.BLOB) cursor.execute(sqlstr,{ 'blobData':content}) cursor.execute('commit') #将本地文本文件插入TAB_CLOB path1 = 'E:\工作\手记\\' for file in os.listdir(path1): name = file content = open(path1 + name, 'rb') content = content.read() sqlstr = "insert into tab_clob(name,content) values('%s',:clobData)" % (file) cursor.setinputsizes(clobData=cx_Oracle.CLOB) cursor.execute(sqlstr, { </
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。