oracle全量增量_Oracle跨实例数据全量、增量抽取例子

本文详细介绍了如何在Oracle数据库中进行跨实例的数据全量和增量抽取。首先,创建数据库链接DBL_CNRMB,然后创建增量记录表PZ_FJCNRMB_CQ。接着,在本地数据库创建与源数据库相同结构的表T_CNRMB_SJ。最后,通过存储过程SP_FJCNRMB_CQ_FULL实现首次全量数据抽取,并在循环中插入数据,每2000条提交一次以优化性能。
摘要由CSDN通过智能技术生成

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值