简化了的建立流的步骤!

三个过程搞定流:

1。


ACCEPT strm_pwd_src PROMPT 'Enter Password of Streams Admin "strmadmin" at Source : ' HIDE
ACCEPT strm_pwd_dest PROMPT 'Enter Password of Streams Admin "strmadmin" at Destination : ' HIDE
ACCEPT schema_name PROMPT 'Enter Schema name you want to replicate to the target:'
ACCEPT target_db_name PROMPT 'Enter Target db name:'
connect "STRMADMIN"/&strm_pwd_src;
BEGIN
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
schema_name => '"&schema_name"',
streams_type => 'capture',
streams_name => '"STREAMS_CAPTURE"',
queue_name => '"STRMADMIN"."STREAMS_CAPTURE_Q"',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
inclusion_rule => true);
END;
/
BEGIN
DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
schema_name => '"&schema_name"',
streams_name => '"STREAMS_PROPAGATION"',
source_queue_name => '"STRMADMIN"."STREAMS_CAPTURE_Q"',
destination_queue_name => '"STRMADMIN"."STREAMS_APPLY_Q"@&target_db_name',
include_dml => true,
include_ddl => true,
source_database => 'LAB10G.CENTRAL',
inclusion_rule => true );
END;
/
COMMIT;
connect "STRMADMIN"/&strm_pwd_dest@"&target_db_name";
BEGIN
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
schema_name => '"&schema_name"',
streams_type => 'apply',
streams_name => '"STREAMS_APPLY"',
queue_name => '"STRMADMIN"."STREAMS_APPLY_Q"',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
inclusion_rule => true);
END;
/

2。

ACCEPT strm_pwd_src PROMPT 'Enter Password of Streams Admin "strmadmin" at Source : ' HIDE
ACCEPT strm_pwd_dest PROMPT 'Enter Password of Streams Admin "strmadmin" at Destination : ' HIDE
ACCEPT schema_name PROMPT 'Enter Schema name you want to replicate to the target:'
ACCEPT target_db_name PROMPT 'Enter Target db name:'
ACCEPT source_db_name PROMPT 'Enter Source db name:'
connect STRMADMIN/&strm_pwd_dest@&target_db_name;
set serverout on;
DECLARE
handle1 number;
ind number;
percent_done number;
job_state VARCHAR2(30);
le ku$_LogEntry;
js ku$_JobStatus;
jd ku$_JobDesc;
sts ku$_Status;
BEGIN
handle1 := DBMS_DATAPUMP.OPEN('IMPORT','SCHEMA', '&source_db_name');
DBMS_DATAPUMP.ADD_FILE(handle1, 'StreamImport_1246301109502.log', 'STREAMS_DIR_RPT10G', '', DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE)
;
dbms_datapump.set_parameter(handle =>handle1, name => 'FLASHBACK_TIME', value => 'TO_TIMESTAMP (to_char(sysdate,''dd.mm.yyyy HH2
4:MI:SS''),''dd.mm.yyyy HH24:MI:SS'')');
DBMS_DATAPUMP.METADATA_FILTER(handle1, 'SCHEMA_EXPR', 'IN (''&schema_name'')');
DBMS_DATAPUMP.SET_PARAMETER(handle1, 'INCLUDE_METADATA', 1);
DBMS_DATAPUMP.START_JOB(handle1);
percent_done :=0;
job_state := 'UNDEFINED';
while (job_state != 'COMPLETED') and (job_state != 'STOPPED') loop
dbms_datapump.get_status(handle1, dbms_datapump.ku$_status_job_error + dbms_datapump.ku$_status_job_status + dbms_datapump.ku$_sta
tus_wip,-1,job_state,sts);
js := sts.job_status;
if js.percent_done != percent_done
then
dbms_output.put_line('*** Job percent done = ' || to_char(js.percent_done));
percent_done := js.percent_done;
end if;
if(bitand(sts.mask, dbms_datapump.ku$_status_wip) != 0)
then
le := sts.wip;
else
if(bitand(sts.mask,dbms_datapump.ku$_status_job_error) != 0)
then
le := sts.error;
else
le := null;
end if;
end if;
if le is not null
then
ind := le.FIRST;
while ind is not null loop
dbms_output.put_line(le(ind).LogText);
ind := le.NEXT(ind);
end loop;
end if;
end loop;
dbms_output.put_line('Job has completed');
dbms_output.put_line('Final job state = ' || job_state);
dbms_datapump.detach(handle1);
END;
/

3。

ACCEPT strm_pwd_src PROMPT 'Enter Password of Streams Admin "strmadmin" at Source : ' HIDE
ACCEPT strm_pwd_dest PROMPT 'Enter Password of Streams Admin "strmadmin" at Destination : ' HIDE
ACCEPT schema_name PROMPT 'Enter Schema name you want to replicate to the target:'
ACCEPT target_db_name PROMPT 'Enter Target db name:'
ACCEPT source_db_name PROMPT 'Enter Source db name:'
connect "STRMADMIN"/&strm_pwd_dest@"&target_db_name";
set serverout on;
DECLARE
v_scn NUMBER;
BEGIN
v_scn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN(
SOURCE_SCHEMA_NAME => '&schema_name',
source_database_name => '&source_db_name',
instantiation_scn => v_scn,
RECURSIVE => true );
END;
/
DECLARE
v_started number;
BEGIN
SELECT DECODE(status, 'ENABLED', 1, 0) INTO v_started
FROM DBA_APPLY where apply_name = 'STREAMS_APPLY';
if (v_started = 0) then
DBMS_APPLY_ADM.START_APPLY(apply_name => '"STREAMS_APPLY"');
end if;
END;
/
connect "STRMADMIN"/&strm_pwd_src;
set serverout on;
DECLARE
v_started number;
BEGIN
SELECT DECODE(status, 'ENABLED', 1, 0) INTO v_started
FROM DBA_CAPTURE where CAPTURE_NAME = 'STREAMS_CAPTURE';
if (v_started = 0) then
DBMS_CAPTURE_ADM.START_CAPTURE(capture_name => '"STREAMS_CAPTURE"');
end if;
END;
/
BEGIN
DBMS_OUTPUT.PUT_LINE('*** Progress Message ===> Started the capture process STREAMS_CAPTURE at source database LAB10G.central and th
e apply process STREAMS_APPLY at the destination database successfully. ***');
END;
/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值