2.3.?Oracle_migration_inc工具集使用

2.3.1. 导出DDL
2.3.2. 初始化foreign server
2.3.3. 导入DDL
2.3.4. 同步数据
2.3.5. 新增表DDL同步
2.3.6. 对比迁移记录数目

工具集使用前,如果没有UXDB数据库,需要初始化一个UXDB数据库,然后启动这个数据库,具体方法可以参见《优炫数据库安装手册 V2.1》。工具集使用需要一些参数,为了说明的方便,假设连接信息如下:

这里只先介绍工具常用的参数和用法,更多使用方法可以参见帮助说明。例如:运行export_oracle -?可以看见一些使用例子和参数说明。

2.3.1.?导出DDL

./export_oracle -s 192.168.0.2:1521/fdw_test -u ora_user1 -p ora123456 -l table_owner1 > table_owner1.ddl

导出DDL时注意字符集的选择(使用-e 参数可指定字符集),目前支持两种常用的字符集gbk和utf8,如果不指定字符集,默认为utf8。字符集必须要与oracle客户端及oracle服务器使用的字符集一致。

2.3.2.?初始化foreign server

  1. 首先在oracle_migration_inc目录下可以看见一个配置文件conn.config,它有6个配置项,修改这6个配置项如下:

    oracle_server_uri=//192.168.0.2:1521/fdw_test
    oracle_server_user=ora_user1
    uxdb_server_host=127.0.0.1
    uxdb_server_port=5432
    uxdb_server_dbname=uxdb
    uxdb_log_user=uxdb
  2. 运行init_foreign_server_inc:

    ./init_foreign_server_inc -f conn.config -p ux123456 -r ora123456

    init_foreign_server的参数包含UXDB连接信息和Oracle连接密码,此时并没有连接Oracle,只是将Oracle连接信息写入UXDB的foreign server。

2.3.3.?导入DDL

./import_uxdb_inc -f conn.config -p ux123456 -i table_owner1.ddl
  • 导入DDL前一定要先初始化foreign server,因为导入时需要生成Oracle外部表,这些外部表依赖于foreign server。

  • 导入DDL时如果遇到同名schema,会先删除这个schema以及它包含的所有表。

  • 导入成功后,在UXDB中生成同名schema,同时生成同名表和相同表结构的外部表,例如Oracle中有张表test_table(id int,name char(20),primary key(id)),那么UXDB中生成同名本地表test_table(id int, name char(20),primary key(id)),同时生成外部表test_table_uxmigrationftbl(id int,name char(20))。

2.3.4.?同步数据

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 > not_sync.txt

同步schema为table_owner1的所有表的数据,并把同步失败的表记录到not_sync.txt文件。

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -t table_owner1.test_table

同步单表table_owner1.test_table的数据。

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 -s 2017/5/20-17:30:00 -i 120 > not_sync.txt

同步schema为table_owner1的所有表的数据,从2017/5/20-17:30:00开始每两个小时同步一次,如果单次同步时间大于同步周期,那么以单次同步时间为准。

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 -s 2017/5/20-17:30:00 -i 120 -a

同步schema为table_owner1的所有表的数据,从2017/5/20-17:30:00开始每两个小时同步一次,同步之前检查并同步新增表DDL。

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 -s 2017/5/20-17:30:00 -i 120 -a

同步schema为table_owner1的所有表的数据,从2017/5/20-17:30:00开始每两个小时同步一次,同步之前检查并同步新增表DDL。

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 -s 2017/5/20-17:30:00 -i 120 -a -D

同步schema为table_owner1的所有表的数据,从2017/5/20-17:30:00开始每两个小时同步一次,同步之前检查并同步新增表DDL,并把同步程序放后台执行。在后台执行时,所有fprintf打印定向到status.log文件,所有printf打印定向到exception.log文件。status.log文件记录了所有同步打印,而exception.log文件记录了新增表、失败表和删除表打印。

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 -s 2017/5/20-17:30:00 -i 120 -v

周期同步表,并且把同步状态记录到public.ux_migration_update和public.ux_migration_check表中。ux_migration_update记录了最近一次表发生了更新并且更新成功的时间;ux_migration_check可以记录多次同步同一张表的对于每张表的开始时间和同步时长。它们的字段定义可以使用\d名字在数据库中查询。

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 -s 2017/5/20-17:30:00 -i 120 -q 3

周期同步表,并且并发度为3,即创建3个子进程,每个子进程每次同步一张表。

./sync_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 -m

同步表和列注释,因为目前不支持并发同步注释,所以这个参数-m不能与-q并用。可以加-t(单表)或者-b(按照表名的升序排列,从某表开始)选择性同步表注释。加入-m参数的sync只同步注释,不同步数据。

2.3.5.?新增表DDL同步

./add_table_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1

检查schema为table_owner1的所有新增表,如果有新增那么就同步过来。

./add_table_inc -f conn.config -p ux123456 -r ora123456 -t table_owner1.test_table

检查是否有新增表table_owner1.test_table,如果有就同步过来。实时同步接口说明。

select ux_migration_update_tables('test_table1,test_table2,test_table3','cjcl');

更新schema为cjcl下表test_table1,test_table2,test_table3。

select ux_migration_update_tables('test_table1,test_table2,test_table3');

更新当前schema下表test_table1,test_table2,test_table3。

接口返回值说明:

-1:faiure_reason   //发生了严重错误
0   //同步成功
n:test_table1,test_table2,...,test_tablen   //有n张表没有同步成功并附带表名列表

影响接口的参数表设置:

public.ux_migration_setting   这张表中有5个参数影响接口行为
concurrency   //指定并发度,默认为0
realtime_gap   //实时同步少于这个时间间隔(s),那么就不更新,默认0
realtime_max_records   //超过这个记录数目的表不同步,默认为0即不限制
save_status   //将表同步信息记录到两张状态表(ux_migration_update、ux_migration_check),同sync_table -v参数效果
timeout_per_record   //每条记录同步的最长时间(s),同sync_table -o参数效果

2.3.6.?对比迁移记录数目

./analyse_result_inc -f conn.config -p ux123456 -r ora123456 -l table_owner1 > not_correpond.txt

对比两边数据库对应表记录数目,把不一致的记录到文件not_correspond.txt。

XML 地图 | Sitemap 地图