在Oracle11g Streams單向傳輸的基礎上,配置Streams雙向傳輸測試
描述:
原來在兩個資料庫伺服器直接配置了Streams的單向傳輸,
原來的源資料庫為兩臺叢集64位HP-UNIX的Oracle11gR2資料庫,
原來的目標資料庫為1臺64位Linux的Oracle11gR2的資料庫,
現在上面的基礎上,把1臺64位Linux的Oracle11gR2的當作源資料庫,把兩臺叢集64位HP-UNIX的Oracle11gR2資料庫當作目標資料庫,
安裝Streams的單向傳輸步驟進行配置,這樣就變成了兩個資料庫伺服器之間的Steams的雙向傳輸。
10.2.2.1:為源資料庫 10.1.1.1及10.1.1.2 叢集資料庫為目標資料庫
1、源資料庫歸檔模式
源:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 420
Next log sequence to archive 422
Current log sequence 422
2、在源資料庫啟用追加日誌
啟用輔助日誌
SQL> alter database add supplemental log data;
Database altered.
3、需要傳輸testUser 使用者的資料,在源資料庫建立source佇列
> sqlplus strmadmin/strmadmin
SQL> BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE(
2 queue_table=>'SOURCE_QUEUE_TABLE',
3 queue_name=>'SOURCE_QUEUE',
4 queue_user=>'strmadmin');
5 END;
6 /
PL/SQL procedure successfully completed.
或者:
SQL> EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
PL/SQL procedure successfully completed.
該命令會建立一個佇列預設名:streams_queue,佇列表預設是:STREAMS_QUEUE_TABLE
佇列儲存的object型別是anaydata
移除佇列:
exec dbms_streams_adm.remove_queue(
queue_name => 'streams_queue',
cascade => true,
drop_unused_queue_table => true);
可以用查詢dba_queues,dba_queue_tables來檢查:
SQL> select owner,queue_table,name from dba_queues where wner='STRMADMIN';
OWNER QUEUE_TABLE NAME
----------------- ------------------------- ------------------
STRMADMIN SOURCES_QUEUE_TABLE SOURCES_QUEUE
STRMADMIN SOURCES_QUEUE_TABLE AQ$_SOURCES_QUEUE_TABLE_E
SQL>select owner,queue_table,object_type from dba_queue_tables where wner='STRMADMIN';
OWNER QUEUE_TABLE OBJECT_TYPE
-------------- --------------------- ------------------
STRMADMIN SOURCES_QUEUE_TABLE SYS.ANYDATA
4、在目標資料庫建立接收佇列
$ sqlplus strmadmin/strmadmin
SQL> BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE(
2 queue_table=>'TARGET_QUEUE_TABLE',
3 queue_name=>'TARGET_QUEUE',
4 queue_user=>'strmadmin');
5 END;
6 /
PL/SQL procedure successfully completed.
5、在源資料庫建立capture程式
CBDBS01-> sqlplus
SQL> BEGIN DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
2 schema_name=>'testUser',
3 streams_type=>'capture',
4 streams_name=>'capture_stream',
5 queue_name=>'strmadmin.SOURCE_QUEUE',
6 include_dml=>true,
7 include_ddl=>true,
8 SOURCE_DATABASE=>'bhoms',
9 include_tagged_lcr=>false,
10 inclusion_rule=>true);
11 END;
12 /
PL/SQL procedure successfully completed.
可以透過dba_capture檢視:
SQL> select CAPTURE_NAME,QUEUE_NAME,START_SCN,STATUS,CAPTURE_TYPE from dba_capture;
SQL> select * from ALL_CAPTURE_PREPARED_SCHEMAS;
6、在源資料庫繼續建立傳播程式
CBDBS01-> sqlplus strmadmin/strmadmin
SQL> BEGIN DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
2 schema_name=>'testUser',
3 streams_name=>'source_to_target',
4 source_queue_name=>'strmadmin.SOURCE_QUEUE',
5 destination_queue_name=>'strmadmin.TARGET_QUEUE@CBOMS',
6 include_dml=>true,
7 include_ddl=>true,
8 source_database=>'bhoms',
9 inclusion_rule=>true,
10 queue_to_queue=>true);
11 END;
12 /
PL/SQL procedure successfully completed.
重新啟動propagation process
檢視propagation process名稱
select * from all_propagation;
可以透過dba_propagations檢視propagation是否啟動
SQL> select PROPAGATION_NAME,SOURCE_QUEUE_NAME,DESTINATION_QUEUE_NAME,DESTINATION_DBLINK,STATUS from dba_propagation
如果status不是“ENABLED”,而是“DISABLED”
可以啟動
SQL>exec dbms_propagation_adm.start_propagation('source_to_target'); (關閉為exec dbms_propagation_adm.stop_propagation('source_to_target');)
7、在目標資料庫建立apply程式
$ sqlplus strmadmin/strmadmin
SQL> BEGIN
2 DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
3 schema_name=>'testUser',
4 streams_type=>'apply',
5 streams_name=>'target_apply_stream',
6 queue_name=>'strmadmin.TARGET_QUEUE',
7 include_dml=>true,
8 include_ddl=>true,
9 include_tagged_lcr=>false,
10 source_database=>'bhoms',
11 inclusion_rule=>true);
12 END;
13 /
PL/SQL procedure successfully completed.
可以透過:
dba_apply
v$streams_apply_reader
v$streams_apply_coordinator
v$streams_apply_server
8、直接設定SCN的方式進行例項化
源:
獲取源庫互置使用者的SCN
sqlplus strmadmin/strmadmin
SQL> set serveroutput on
SQL> DECLARE
2 iscn NUMBER;
3 BEGIN
4 iscn:=DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
5 DBMS_OUTPUT.PUT_LINE('Instantiation SCN is :'||iscn);
6 END;
7 /
Instantiation SCN is :5475315
PL/SQL procedure successfully completed.
在目標資料庫:
設定為目標庫互置使用者的SCN
sqlplus strmadmin/strmadmin
SQL> BEGIN
2 DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN(
3 source_schema_name=>'testUser',
4 source_database_name=>'bhoms',
5 instantiation_scn=>&iscn);
6 END;
7 /
Enter value for iscn: 5475315
old 5: instantiation_scn=>&iscn);
new 5: instantiation_scn=>5475315);
PL/SQL procedure successfully completed.
9、在目標資料庫啟動Apply程式
SQL> BEGIN
2 DBMS_APPLY_ADM.SET_PARAMETER(
3 apply_name => 'target_apply_stream',
4 parameter=>'disable_on_error',
5 value=>'n');
6 END;
7 /
PL/SQL procedure successfully completed.
SQL> BEGIN
2 DBMS_APPLY_ADM.START_APPLY(
3 apply_name=>'target_apply_stream');
4 END;
5 /
PL/SQL procedure successfully completed.
附註:
1、#停止Apply程式
SQL>begin
dbms_apply_adm.stop_apply(
apply_name => 'target_apply_stream');
end;
/
2、啟動Apply程式
begin
dbms_apply_adm.start_apply(
apply_name => 'target_apply_stream');
end;
/
檢視Apply狀態
SQL> select apply_name,queue_name,status from dba_apply;
3、啟動傳播程式
exec dbms_propagation_adm.start_propagation('source_to_target');
4、在源資料庫上啟動capture
SQL> BEGIN
2 DBMS_CAPTURE_ADM.START_CAPTURE(
3 capture_name=>'capture_stream');
4 END;
5 /
PL/SQL procedure successfully completed.
5、#停止Capture程式
begin
dbms_capture_adm.stop_capture(
capture_name => 'capture_stream');
end;
/
begin
dbms_capture_adm.start_capture(
capture_name => 'capture_stream');
end;
/
檢視Capture狀態:
SQL> select capture_name,status from dba_capture;
7、把資料庫的歸檔日誌空間設定成20GB
show parameter recover
alter system set db_recovery_file_dest_size=20G scope=both;
如果空間太小,還需要寫個rman的指令碼刪除多餘的歸檔日誌。
8、在目標資料庫沒有例項化錯誤ORA-26687:
在叢集的select * from dba_apply_error
ORA-26687: no instantiation SCN provided for "testUser"."TEST11" in source database "BHOMS"
在目標資料庫檢視初始化資料是否成功:
select source_database,source_object_name,instantiation_scn from dba_apply_instantiated_objects;
如果查詢出來的物件所對應的source_database為源資料庫的資料庫名稱則是已經例項化了
解決:
如果查詢出來的物件所對應的source_database不是源資料庫的資料庫名,則可以修改資料庫的資料字典(需要超級使用者sys進行操作)
select source_database,source_object_name,instantiation_scn from dba_apply_instantiated_objects order by instantiation_scn
for update
把物件所對應的source_database不是源資料庫的資料庫名的資料查詢出來
select * from dba_apply_instantiated_objects s where s.source_database='CBOMS'
把下面的這些表物件的source_database值更改為源資料庫的資料庫名
update dba_apply_instantiated_objects s set s.source_database='BHOMS'
where s.source_database='CBOMS' and s.source_object_owner='testUser'
and s.source_object_name not like 'T%'
這樣可以解決了。
檢視資料庫表的對應的scn
SELECT * FROM DBA_CAPTURE_PREPARED_TABLES order by scn
啟動capture,propagation,apply並測試:
select * from dba_capture;
select * from dba_propagation;
select * from dba_apply;
select * from dba_apply_error;
select * from dba_apply_instantiated_objects;
select * from dba_rule_set_rules;
select * from dba_rule_sets;
select * from dba_rules;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-682166/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在Oracle11g Streams測試Streams資料傳輸Oracle
- 在schema模式下的Streams資料傳輸,出現某個表不能傳輸錯誤ORA-26687模式
- 請教雙向資料傳輸的解決辦法
- vue.js父子元件雙向傳輸資料(v-model在元件中的使用)Vue.js元件
- 從傳統測試轉向敏捷測試敏捷測試
- streams(單向資料同步)的使用的一些體會
- 100GB大檔案怎樣傳輸?是時候向傳統傳輸方式告別了!
- CoaXPress 是如何只用一條線纜實現雙向傳輸和供電的
- 【iCore3 雙核心板】例程十六:USB_HID實驗——雙向資料傳輸
- 實現服務端和客戶端的實時雙向資料傳輸-WebSocket簡單瞭解服務端客戶端Web
- Oracle可傳輸表空間測試Oracle
- 【iCore4 雙核心板_ARM】例程十六:USB_HID實驗——雙向資料傳輸
- vue 雙向繫結(v-model 雙向繫結、.sync 雙向繫結、.sync 傳物件)Vue物件
- Node.js Streams 基礎總結Node.js
- 在 Linux 上檢測 IDE/SATA SSD 硬碟的傳輸速度LinuxIDE硬碟
- idou老師教你學Istio 17 : 透過HTTPS進行雙向TLS傳輸HTTPTLS
- idou老師教你學Istio 17 : 通過HTTPS進行雙向TLS傳輸HTTPTLS
- WebSphere MQ傳輸環境搭建和測試WebMQ
- LDP傳輸地址配置——VecloudCloud
- 【iCore1S 雙核心板_ARM】例程十五:USB_HID實驗——雙向資料傳輸
- oracle 10g 傳輸表空間的測試Oracle 10g
- USB 控制寫傳輸、控制讀傳輸、無資料控制傳輸都是在什麼場景下?
- 跨境檔案傳輸換上鐳速傳輸,看看能提速多少?
- Linux iperf 網路傳輸效能測試工具Linux
- Jumpserver基礎運維-02檔案傳輸Server運維
- SAP 透過配置傳輸的方式恢復某個CLIENT下的基礎配置資料client
- 703n路由器 刷openwrt 修改 串列埠雙向傳輸和串列埠波特率路由器串列埠
- 當跨國檔案傳輸陷入困境時,不妨試試raysync傳輸協議協議
- 如何實現PO的輸出向客戶傳送郵件的增強
- vue 基礎入門筆記 13:父元件向子元件傳值、父元件向子元件傳遞方法Vue筆記元件
- 使用可傳輸表空間向rac環境遷移資料
- 鐳速傳輸:安全檔案傳輸的意義
- # 向伺服器上傳圖片伺服器
- 揭秘|國內影視檔案傳輸的真相,跨境檔案傳輸更不簡單
- STREAMS筆記(2) 其他建立Streams的方式筆記
- [原始碼解析]PyTorch如何實現前向傳播(1) --- 基礎類(上)原始碼PyTorch
- Vue父子元件如何雙向繫結傳值Vue元件
- 低成本暢享高速檔案傳輸,鐳速傳輸流量版上線!