| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> oracle >> Oracle數據庫10gR2中stream多源複制方法
 

Oracle數據庫10gR2中stream多源複制方法

2008-08-06 07:16:36  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  在10gR2中,oracle簡化了stream的配置的全過程,在9iR2及10gR1中,需要針對stream的捕獲、傳播、應用進程進行配置的步驟

  已經被dbms_streams_adm新提供的過程(pre_instantiation_setup/post_instantiation_setup)給封裝起來啦,

  配置stream只需要調用兩個存儲過程就可以搞定啦,真是太激動人心啦,下面簡單地介紹一下dbms_streams_adm的新過程的用法。

  1.在stream進行配置前,需要做些准備工作

  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 strmadmin/strmadminpw@test96;

  create database link test99.net connect to strmadmin

  identified by strmadminpw using 'test99';

  connect strmadmin/strmadminpw@test99;

  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 strmadmin/strmadminpw@test96;

  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;

  /

  如果參與複制的源庫與目標庫的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 strmadmin/strmadminpw@test96;

  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 sys/sys@test99;

  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 strmadmin/strmadminpw@test99;

  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 strmadmin/strmadminpw@test96;

  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 sys/sys@test99.net 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 sys/sys@test99 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 sys/sys@test99 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.

  10gR2stream全庫複制

  以上主要爲大家介紹了pre_instantiation_setup/post_instantiation_setup過程在配置全庫複制的方法,以下介紹dbms_streams_adm的maintain_global過程如何配置stream全庫複制方法,適用于10gR2及以後版本。

  1l.在stream進行配置前,需要做些准備工作

  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 strmadmin/strmadminpw@test96;

  create database link test99.net connect to strmadmin

  identified by strmadminpw using 'test99';

  connect strmadmin/strmadminpw@test99;

  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 strmadmin/strmadminpw@test96;

  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環境已經配置完畢。
 
 
 
上一篇《講解Oracle數據庫TNS常見錯誤的解決辦法》
下一篇《從DBA到Oracle Applications DBA的轉變過程》
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

 
 
 
在10gR2中,oracle簡化了stream的配置的全過程,在9iR2及10gR1中,需要針對stream的捕獲、傳播、應用進程進行配置的步驟 已經被dbms_streams_adm新提供的過程(pre_instantiation_setup/post_instantiation_setup)給封裝起來啦, 配置stream只需要調用兩個存儲過程就可以搞定啦,真是太激動人心啦,下面簡單地介紹一下dbms_streams_adm的新過程的用法。 1.在stream進行配置前,需要做些准備工作 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 [url=mailto:strmadmin/strmadminpw@test96]strmadmin/strmadminpw@test96[/url]; create database link test99.net connect to strmadmin identified by strmadminpw using 'test99'; connect [url=mailto:strmadmin/strmadminpw@test99]strmadmin/strmadminpw@test99[/url]; 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 [url=mailto:strmadmin/strmadminpw@test96]strmadmin/strmadminpw@test96[/url]; 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; / 如果參與複制的源庫與目標庫的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 [url=mailto:strmadmin/strmadminpw@test96]strmadmin/strmadminpw@test96[/url]; 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 [url=mailto:sys/sys@test99]sys/sys@test99[/url]; 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 [url=mailto:strmadmin/strmadminpw@test99]strmadmin/strmadminpw@test99[/url]; 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 [url=mailto:strmadmin/strmadminpw@test96]strmadmin/strmadminpw@test96[/url]; 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 [url=mailto:sys/sys@test99.net]sys/sys@test99.net[/url] 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 [url=mailto:sys/sys@test99]sys/sys@test99[/url] 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 [url=mailto:sys/sys@test99]sys/sys@test99[/url] 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. 10gR2stream全庫複制 以上主要爲大家介紹了pre_instantiation_setup/post_instantiation_setup過程在配置全庫複制的方法,以下介紹dbms_streams_adm的maintain_global過程如何配置stream全庫複制方法,適用于10gR2及以後版本。 1l.在stream進行配置前,需要做些准備工作 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 [url=mailto:strmadmin/strmadminpw@test96]strmadmin/strmadminpw@test96[/url]; create database link test99.net connect to strmadmin identified by strmadminpw using 'test99'; connect [url=mailto:strmadmin/strmadminpw@test99]strmadmin/strmadminpw@test99[/url]; 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 [url=mailto:strmadmin/strmadminpw@test96]strmadmin/strmadminpw@test96[/url]; 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環境已經配置完畢。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
竹林裏的甜美養眼美女
MM尖尖的下巴
靓麗的草根美女
超靓迷人的大眼睛美女
海南(二)
霧繞三清山
Oldtime
美麗婺源
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有