多年前写的复制目标数据库指定表的数据到本地表。
程序丢了可惜,分享下。
执行存储过程,通过指定目标数据库登录信息,动态生成dblink,打开游标,按批次插入本地指定表中,每批次1万条数据。同步记录和日志信息写在自动生成的sync_log表中。同步完成后自动删除动态生成的存储过程、dblink。
本程序不同步blob和clob字段,玩oracle的人都懂,用sql同步此类数据,速度上不去,此类数据应该要用导出导入的方式提升速度。
具体请参阅程序,可根据自已需要进行修改。
参数说明:
CREATE OR REPLACE PROCEDURE syncTable(
ip IN VARCHAR2,--目标数据库ip地址
port IN NUMBER,--目标数据库端口号
sid varchar2,--目标数据库SID
ora_user VARCHAR2,--目标数据库登录用户名
passwd VARCHAR2,--目标数据库登录密码
src_table_name IN VARCHAR2,--目标数据需要同步的表(数据源)
dest_table_name IN VARCHAR2,--把目标表同步到本地库的表名,无则创建与目标表一致的表名
errMsg OUT VARCHAR2)--输出执行信息。
程序同步到执行结束时的目标表所有数据,不按任何字段排序,只判断并记录row_number()到日志表,中断后重新执行可继续同步,如果目标表频繁读写,不保证数据完全正常,故最好是目标表不变动情况下执行同步。
有问题请私信或留言。
1