oracle 10gR2中streams的配置[zt]
在10gR2中,oracle簡化了stream的配置的全過程,在9iR2及10gR1中,需要針對Stream的捕獲、傳播、應用程式進行配置的步驟已經被dbms_streams_adm新提供的過程(pre_instantiation_setup/post_instantiation_setup)給封裝起來啦,
配置stream只需要呼叫兩個儲存過程就可以搞定啦!
Ref: http://blog.chinaunix.net/u/26040/showart.php?id=396628
a 源庫與目標庫初始化引數的設定
alter system set aq_tm_processes=4 scope=spfile;
alter system set job_queue_processes=5 scope=spfile;
alter system set global_names=true scope=spfile;
alter system set streams_pool_size=51m scope=spfile;
說明streams_pool_size在生產環境中最好>200m
b 源庫與目標庫tnsnames.ora配置
確保正確,可用tnsping通
c 源庫與目標庫複製管理員的建立
create user strmadmin identified by strmadminpw
default tablespace &tbs_name quota unlimited on &tbs_name;
grant connect, resource, dba to strmadmin;
d 源庫與目標庫建立互連的資料鏈
connect ;
create database link test99.net connect to strmadmin
identified by strmadminpw using 'test99';
connect ;
create database link test96.net connect to strmadmin
identified by strmadminpw using 'test96';
說明:必須確保雙方的資料庫鏈是可以連通.
用pre_instantiation_setup/post_instantiation_setup過程時
db link必須用db_name.domain的格式
e 源庫與目標庫必須處於歸檔模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
2 執行pre_instantiation_setup過程
在呼叫dbms_streams_adm的pre_instantiation_setup/post_instantiation_setup過程時, 它們必須成對出現,pre_instantiation_setup過程中,maintain_mode引數可取GLOBAL與 TRANSPORTABLE TABLESPACES,如果取GLOBAL時,表示全庫複製,否則可以定義需要複製的表空間; perform_actions引數為TRUE,進行配置產生的源指令碼將記錄在dba_recoverable_*字典表, 如果pre_instantiation_setup執行時遇到錯誤,可以透過執行dbms_steams_adm的
recover_operation過程 在更正錯誤後繼續執行復制配置; source_database/destination_database是我們已經建立好的dblink,必須確保正確啊, 否則pre_instantiation_setup過程將會失敗,報ORA-23621錯誤,解決辦法在後面會介紹; bi_directional引數設定為true時,表示是多源複製,即目標與源庫雙向同步, 否則即只從源庫向目標庫同步資料; exclude_schemas引數指需要排除在全庫同步的表空間,多個表空間的話用逗號分開,
*表示排除配置stream時庫中已經存在的表空間;
start_processes引數指配置完成後啟動捕獲及應用程式。
SQL>connect ;
declare
empty_tbs dbms_streams_tablespace_adm.tablespace_set;
begin
dbms_streams_adm.pre_instantiation_setup(
maintain_mode => 'GLOBAL',
tablespace_names => empty_tbs,
source_database => 'test96.net',
destination_database => 'test99.net',
perform_actions => true,
bi_directional => true,
include_ddl => true,
start_processes => true,
exclude_schemas => 'WMSYS,STRMADMIN,DBSNMP,TSMSYS,',
exclude_flags => dbms_streams_adm.exclude_flags_unsupported +
dbms_streams_adm.exclude_flags_dml + dbms_streams_adm.exclude_flags_ddl);
end;
/
簡單解釋一下引數的含義:
- maintain_mode:複製模式,可以是全庫複製(global)或者表空間複製(transportable tablespaces)。
- tablespace_names:如果是表空間複製則需要指定要複製的表空間的名字。
- source_database:源庫global name
- destination_database:目標庫global name
- perform_actions:true直接執行配置,false的話則生成配置指令碼到script_directory_object/script_name引數指定的位置
- bi_directional: true雙向複製,false單向複製
- include_ddl:是否複製ddl操作
- start_processes:配置完成後是否啟動捕獲/應用程式
- exclude_schemas:指定不需要複製的schema,用逗號分割多個schema,*號則排除所有schema,NULL則不排除任何schema(sys/system/stxsys始終不復制)。該引數只在全庫複製時有效。
- exclude_flags:指定排除哪些物件的操作不進行復制。本例中排除streams不支援的物件上的dml和ddl操作。可以從dba_streams_unsupported查詢不支援的物件。
這裡只列出了部分引數,實際上該過程還有很多的引數,比如capture/propagation/apply程式的名字,捕獲佇列和應用佇列的名字等,都可以透過引數指定。詳細請參考官方文件。
如果參與複製的源庫與目標庫的db link等配置的正確,該過程將成功結束,
並且在strmadmin模式建立一系統用於複製的佇列與字典表,如果db link配置出錯,執行pre_instantiation_setup過程時,將會報如下錯誤:
ORA-23621: Operation corresponding
3 用rman複製源庫到目標庫
a 對源庫用rman進行備份,複製備份集與產生的歸檔到目標庫,
並將目標庫down下來,啟動nomount狀態。
rman nocatalog target /
rman>backup database;
rman>sql'alter system archive log current';
b 求得源庫的scn
SQL>connect
SQL>set serveroutput on size 1000000
SQL>declare
until_scn number;
begin
until_scn:= dbms_flashback.get_system_change_number;
dbms_output.put_line('until scn: '||until_scn);
end;
/
until scn: 429596
c 用rman將源庫複製到目標庫
rman nocatalog target /
rman> connect auxiliary ;
rman> run
{
set until scn 429596;
duplicate target database to 'TEST'
nofilenamecheck
open restricted;
}
d 重新命名目標庫的global_name
alter database rename global_name to test99.net;
e 重新建立目標庫的db link
connect ;
create database link test96.net connect to strmadmin
identified by strmadminpw using 'test96';
4 執行post_instantiation_setup過程
post_instantiation_setup也在源庫執行,需要注意的引數是instantiation_scn?
它的取值是我們從源庫上獲的scn的值-1=429595.
SQL>connect ;
SQL>declare
empty_tbs dbms_streams_tablespace_adm.tablespace_set;
begin
dbms_streams_adm.post_instantiation_setup(
maintain_mode => 'GLOBAL',
tablespace_names => empty_tbs,
source_database => 'test96.net',
destination_database => 'test99.net',
perform_actions => true,
bi_directional => true,
include_ddl => true,
start_processes => true,
instantiation_scn => 429595,
exclude_schemas => '*',
exclude_flags => dbms_streams_adm.exclude_flags_unsupported +
dbms_streams_adm.exclude_flags_dml + dbms_streams_adm.exclude_flags_ddl);
end;
/
在目標庫禁止restricted session
SQL>connect as sysdba
SQL>alter system disable restricted session;
5 測試stream的配置結果
a 在test96上建立一個schema,並在該schema下建立一些物件,可以在test99上看到
b 在test99上建立一個schema,並在該schema下建立一些物件,可以在test96上看到
6 關於雙向複製中avoid change cycling
檢視目標庫apply程式的tag:
COLUMN APPLY_NAME HEADING 'Apply Process Name' FORMAT A30
COLUMN APPLY_TAG HEADING 'Tag Value' FORMAT A30
SQL>connect as sysdba;
SELECT APPLY_NAME, APPLY_TAG FROM DBA_APPLY;
Apply Process Name Tag Value
------------------------------ -----------
APPLY$_TEST96_42 010781
檢視源庫apply程式的tag:
COLUMN APPLY_NAME HEADING 'Apply Process Name' FORMAT A30
COLUMN APPLY_TAG HEADING 'Tag Value' FORMAT A30
SQL>connect as sysdba;
SELECT APPLY_NAME, APPLY_TAG FROM DBA_APPLY;
Apply Process Name Tag Value
------------------------------ ------------------------------
APPLY$_TEST99_15 010498
說明:消除多源複製中的遞迴問題,stream中已經有很好的消除機制,
源端正常作業寫入的redo entry的tag是NULL的,如果是由於源端的apply程式
產生的redo entry,在redo entry中將帶有tag標誌,這樣在源端捕獲程式在
捕獲的redo entry中,過慮掉tag是NULL的,然後就可以消除change cycling.
以上主要為大家介紹了pre_instantiation_setup/post_instantiation_setup過程在配置全庫複製的方法,以下介紹dbms_streams_adm的maintain_global過程如何配置stream全庫複製方法,適用於10gR2及以後版本。
a 源庫與目標庫初始化引數的設定
alter system set aq_tm_processes=4 scope=spfile;
alter system set job_queue_processes=5 scope=spfile;
alter system set global_names=true scope=spfile;
alter system set streams_pool_size=51m scope=spfile;
說明streams_pool_size在生產環境中最好>200m
b 源庫與目標庫tnsnames.ora配置
確保正確,可用tnsping通
c 源庫與目標庫複製管理員的建立
create user strmadmin identified by strmadminpw
default tablespace &tbs_name quota unlimited on &tbs_name;
grant connect, resource, dba to strmadmin;
d 源庫與目標庫建立互連的資料鏈
connect ;
create database link test99.net connect to strmadmin
identified by strmadminpw using 'test99';
connect ;
create database link test96.net connect to strmadmin
identified by strmadminpw using 'test96';
說明:必須確保雙方的資料庫鏈是可以連通.
用pre_instantiation_setup/post_instantiation_setup過程時
db link必須用db_name.domain的格式
e 源庫與目標庫必須處於歸檔模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
f 源庫與目標庫必須建立directory
create directory dir_test96 as '/home/oracle/worksh';
create directory dir_test99 as '/home/oracle/worksh';
2 在源庫執行MAINTAIN_GLOBAL過程
SQL>connect ;
begin
dbms_streams_adm.maintain_global(
source_directory_object => 'dir_test96',
destination_directory_object => 'dir_test99',
source_database => 'test96.net',
destination_database => 'test99.net',
perform_actions => true,
include_ddl => true,
instantiation => DBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORK);
end;
說明:在執行maintain_global時,源庫與目標庫必須建立directory,然後在源庫執行, 目標庫幾乎什麼都不用做,stream環境已經配置好啦,測試(略)
xsb注:相關內容也可以在《構建Oracle高可用環境》一書中有詳細配置步聚。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12402/viewspace-1003152/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle9i下streams複製(zt)Oracle
- oracle 11g streams 配置詳解Oracle
- zt_Oracle 10gR2新SQL提示——opt_paramOracle 10gSQL
- Oracle StreamsOracle
- [zt]ORACLE 10gR2 RAC環境增加及刪除節點Oracle 10g
- [zt] Oracle 11g DataGuard 配置Oracle
- 理解 PHP 中的 StreamsPHP
- Oracle 10gR2 下配置簡單ASM例項Oracle 10gASM
- 在Oracle11g Streams單向傳輸的基礎上,配置Streams雙向傳輸測試Oracle
- Oracle中的Hash Join詳解 ztOracle
- zt_A new hint in 10gR2: OPT_PARAM
- [zt] JDBC連線Oracle RAC的連線串配置JDBCOracle
- Oracle中觸發器的應用 (zt)Oracle觸發器
- ZT Oracle中,一個Delete操作的流程Oracledelete
- Oracle Stream(2)--Streams功能Oracle
- Oracle Stream(1)--Streams概述Oracle
- 在Oracle 10gR2中設定指定的恢復點Oracle 10g
- oracle 12c Deprecation of Oracle StreamsOracle
- Oracle 10gr2的後的undoOracle 10g
- 淺談oracle中重建索引 (ZT)Oracle索引
- Webspere配置Oracle RAC 資料來源的問題 (ZT)WebOracle
- 配置Oracle Streams時在刪除程式出錯ORA-26663Oracle
- Oracle資料庫中索引的維護 ztOracle資料庫索引
- Oracle資料庫中索引的維護(zt)Oracle資料庫索引
- Oracle的MTS (ZT)Oracle
- Oracle中EM的配置Oracle
- 在Oracle11g Streams測試Streams資料傳輸Oracle
- [zt] 高階複製、流複製(Streams)、備庫區別
- (zt)Oracle中password file orapwd的作用及說明Oracle
- 在異構平臺配置Oracle11gR2 Streams同時再配置相同平臺的Oracle11gR2 DataguardOracle
- oracle 10gR2 rac+asm 資料庫安裝配置步驟Oracle 10gASM資料庫
- oracle 10gR2 RAC 的一個BUGOracle 10g
- ORACLE鎖的管理(zt)Oracle
- Oracle 10gR2 JDBC介紹Oracle 10gJDBC
- oracle中的數值資料儲存格式分析(ZT)Oracle
- Oracle效能調優實踐中的幾點心得(zt)Oracle
- [zt] SQL存取Oracle當中掃描資料的方法SQLOracle
- VNCServer 配置 及Vncview的使用(zt)VNCServerView