oracle10 單向stream流複製

 

 操作系統:windows

IP地址:192.168.7.150

數據庫:Oracle 10.2.0.1

  ORACLE_SIDsz431

  從數據庫:

  操作系統:windows

  IP地址:192.168.7.96

  數據庫:Oracle 10.2.0.1

      ORACLE_SIDtx431

 

 

 1 初始化參數   
      alter system set aq_tm_processes=2 scope=both;
  alter system set global_names=true scope=both;
  alter system set job_queue_processes=10 scope=both;
  alter system set parallel_max_servers=20 scope=both;
  alter system set undo_retention=3600 scope=both;
  alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;
  alter system set streams_pool_size=25M scope=spfile;
  alter system set utl_file_dir='*' scope=spfile;
  alter system set open_links=4 scope=spfile;

      alter system set log_archive_dest_1='LOCATION=d:/oracle/test' scope=both;

      alter system set log_archive_format='arch%t_%s_%r.arc'

 

  執行完畢後重啓數據庫

 

2 sqlplus / as sysdba 登錄

創建stream 表空間


create tablespace tbs_stream datafile 'D:/oracle/product/10.2.0/oradata/tx431/stream01.dbf' size 100M;

 

用戶

create user strmadmin identified by strmadmin default tablespace tbs_stream temporary tablespace temp;


授權

grant connect,resource,dba,aq_administrator_role to strmadmin;


 begin
    dbms_streams_auth.grant_admin_privilege(
   grantee => 'strmadmin',
    grant_privileges => true);
    end;

 

#查看是否歸檔,stream 主要是獲取日誌 然後解析

驗證是否歸檔:
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination          d:/oracle/test 

Oldest online log sequence     2662
Next log sequence to archive   2679
Current log sequence           2679

#如果歸檔就不用做下面的

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 6442450944 bytes
Fixed Size                  2030408 bytes
Variable Size            1392510136 bytes
Database Buffers         5033164800 bytes
Redo Buffers               14745600 bytes
Database mounted.

alter database archivelog;

alter database open;



 

 

#創建dblink 需要用strmadmin登錄

 sz431 需要和global_name 前面一樣 後面150sz431
create database link sz431 connect to strmadmin identified by strmadmin using '150sz431'
create database link tx431 connect to strmadmin identified by strmadmin using '96tx431'

 

#主庫 queue
begin
dbms_streams_adm.set_up_queue(
queue_table => 'sz431_queue_table',
queue_name => 'sz431_queue');
end;

#從庫queue
begin
dbms_streams_adm.set_up_queue(
queue_table => 'tx431_queue_table',
queue_name => 'tx431_queue');
end;


#
主庫 capture

begin
dbms_streams_adm.add_schema_rules(
schema_name => 'zk1',
streams_type => 'capture',
streams_name => 'capture_sz431150',
queue_name => 'strmadmin.sz431_queue',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => null,
inclusion_rule => true);
end;

 


#
主庫  傳播過程 strmadmin.tx431_queue@tx431 後面是dblink
begin
dbms_streams_adm.add_schema_propagation_rules(
schema_name => 'zk1',
streams_name => 'sz431150_to_tx43196',
source_queue_name => 'strmadmin.sz431_queue',
destination_queue_name => 'strmadmin.tx431_queue@tx431',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'sz431',
inclusion_rule => true);
end;

 

# 實時傳播  tx431 dblink
begin
dbms_aqadm.alter_propagation_schedule(
queue_name => 'sz431_queue',
destination => 'tx431',
latency => 0);
end;

 

#主庫導出數據

exp zk1/[email protected] file="d:/test.dmp”

 

#從庫導入數據

imp zk1/[email protected]  file="d:/test.dmp” full=y

 

#剛開始做好後,capture , propagation,apply 狀態都是enabled

但數據就是不行 最後查出來是scn 不一樣

 

# sz431上設置tx431 zk1 schemaInstantiation SCN

PL/SQL 過程已成功完成。
 DECLARE
    iscn NUMBER;        
   BEGIN
   iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
   DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN@tx431(
    source_schema_name    => 'zk1',
   source_database_name => 'sz431',
    instantiation_scn     => iscn,
    recursive             => true);
 END;
 /

 

 


#
從庫 apply 過程

begin
dbms_streams_adm.add_schema_rules(
schema_name => 'zk1',
streams_type => 'apply',
streams_name => 'apply_tx431',
queue_name => 'strmadmin.tx431_queue',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'SZ431',
inclusion_rule => true);
end;

 

#啓用apply 進程
begin
dbms_apply_adm.start_apply(
apply_name => 'apply_tx431');
end;

#停止Apply進程
   begin
   dbms_apply_adm.stop_apply(
   apply_name => 'apply_tx431');
   end;
 


#
主庫開始 capture

begin
dbms_capture_adm.start_capture(
capture_name => 'capture_sz431150');
end;

#停止Capture進程
  begin
  dbms_capture_adm.stop_capture(
  capture_name => 'capture_sz431150');
  end;

#查看下propagation 狀態
select propagation_name,destination_dblink,status,ERROR_MESSAGE from dba_propagation

# dba_apply 狀態
 SELECT apply_name, apply_captured, status FROM dba_apply;


#
開始傳播
exec dbms_propagation_adm.start_propagation('sz431150_to_tx43196');

 

 

#然後就可以測試了


#stop

exec dbms_propagation_adm.stop_propagation('sz431150_to_tx43196');


#
清除配置

exec dbms_streams_adm.remove_streams_configuration;

 


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章