1
、创建数据库链
create database link DBL_CNRMB
connect to
用户名
identified by "
密码
"
using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=IP
地
址
)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=
数据库实例名
)))';
注:在
PLSQL
工具中执行,用户名、密码、
IP
地址、数据库实例名均要替换,创建成功后
在本地数据库执行带数据库链(
@dbl_CNRMB
)
SQL
远程查询测试
select * from
用户名
.
表
名
@dbl_CNRMB
2
、创建增量记录表
create table PZ_FJCNRMB_CQ
(
zlpdsj DATE,
zxsj DATE,
msg VARCHAR2(2000)
)
;
insert into PZ_FJCNRMB_CQ (zlpdsj)
values (to_date('05-08-2016 10:19:40', 'dd-mm-yyyy hh24:mi:ss'));
commit;
注:在
PLSQL
工具中执行
3
、创建本地数据库表
参照源数据库表结构,在本地数据库创建结构相同的数据表
,
以表名
:T_CNRMB_SJ
为例
4
、创建数据抽取存储过程(首次全量)
CREATE OR REPLACE PROCEDURE SP_FJCNRMB_CQ_FULL IS
V_SJL NUMBER := 0;
BEGIN
FOR CUR_CQ IN (SELECT * FROM
用户名
.
表名
@DBL_CNRMB WHERE XZQH = '4500') LOOP
INSERT INTO T_CNRMB_SJ
(
字段
1,
字段
2,
字段
3,
字段
4,
字段
5, .. .)
VALUES
(CUR_CQ.
字段
1,
CUR_CQ.
字段
2,
CUR_CQ.
字段
3,
CUR_CQ.
字段
4,
CUR_CQ.
字段
5,
.. .);
V_SJL := V_SJL + 1;
--
每
2000
条提交一次到本地数据库表
IF MOD(V_SJL, 2000) = 0 THEN
COMMIT;