oracle使用dblink高速复制表数据的动态存储过程
多年前写的复制目标数据库指定表的数据到本地表。 程序丢了可惜,分享下。 执行存储过程,通过指定目标数据库登录信息,动态生成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()到日志表,中断后重新执行可继续同步,如果目标表频繁读写,不保证数据完全正常,故最好是目标表不变动情况下执行同步。 有问题请私信或留言。 -把目标表同步到本地库的表名,无则创建与目标表一致的表名 errMsg OUT VARCHAR2)--输出执行信息。 程序同步到执行结束时的目标表所有数据,不按任何字段排序,只判断并记录row_number()到日志表,中断后重新执行可继续同步,如果目标表频繁读写,不保证数据完全正常,故最好是目标表不变动情况下执行同步。 有问题请私信或留言。
用户评论
使用方法不够详细