简化了的建立流的步骤!

来源:互联网 发布:oppoa33指纹锁屏软件 编辑:程序博客网 时间:2024/05/17 02:30

三个过程搞定流:

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;
/

原创粉丝点击