下游Streams捕獲簡介

2021-08-24 18:44:07 字數 3704 閱讀 6576

下游streams捕獲

一般來說,捕獲是在源資料庫中具體資料庫變更產生的地方被配置和抽取的。然而,出於效能和管理方面的原因,捕獲過程也可以被配置在中間資料庫執行,這種情況不同於源資料庫具體變更發生的地點。中間資料庫充當了捕獲過程的主要場所。這種捕獲配置被稱為是下游streams

捕獲。它的特點在發布的10g

資料庫文件中有詳細的描述。

在下游streams

捕獲方法中,來自源資料庫的存檔修改日誌文件被複製到下游streams

資料庫中。捕獲過程捕獲了在下游streams

資料庫中文件的變更。存檔修改日誌文件可以通過各種方法被複製到下游streams

資料庫中。包括日誌傳輸服務,dbms_file_transfer

包,文件傳輸協議(ftp

),或是其他的方法。

在本地捕獲和下游streams

方法之間有乙個很明顯的區別。在本地捕獲方法中,捕獲閱讀重做日誌,有時也可能會閱讀歸檔日誌。在下游streams

捕獲中,捕獲過程經常閱讀的是歸檔日誌。這是因為重做日誌被歸檔以後可以從源資料庫複製到中間資料庫。在這種情況下,複製過程就必然會有一定的延遲時間。

為什麼採用下游streams

捕獲

下游streams

捕獲是一種很有用的方法因為捕獲過程是在目的資料庫發生的。在源資料庫的過程活動和記憶體資源等多餘資源沒有任何應用。在源資料庫中採用這種方式沒有任何系統開銷。整個捕獲和列隊活動都在下游streams

資料庫中進行。

如果在捕獲過程中參與了多源資料庫,對於多源資料庫資源的捕獲過程將被集中到乙個單獨的資料庫中,這是為了方便管理。而且由於捕獲程序和應用程序都發生在乙個機器上,所以傳播程序看起來就有點多餘了。對下游streams

資料庫複製重做日誌成為了必不可少的一步,為防止資訊丟失它又提供了改進的保護措施,而且在下游streams

資料庫的重做日誌在某些情況下可能會被用於源資料庫的恢復。

下游streams

捕獲缺點

然而,使用下游streams

捕獲也並不是沒有任何缺點。因為下游streams

捕獲過程需要等待重做日誌和日誌轉換而隨後的從源資料庫到下游streams

資料歸檔日誌的複製,這使得在捕獲資料庫更改的過程中有不可避免的延遲。另外,如果網路或其它原因歸檔日誌不能及時傳輸到目的資料庫則在源資料庫端要提供足夠的空間用於保留日誌。

下游streams

捕獲配置

操作需求

源資料庫至少需要oracle10g

版本。同時,下游streams

捕獲資料庫應該與源資料庫保持相同的版本。

在源資料庫端和下游streams

資料庫端的作業系統必須是一樣的,但是作業系統的版本可以是不同的。例如,乙個32-bit

的作業系統用在源資料庫的主機上,相同的32-bit

作業系統必須也支援下游streams

資料庫主機。其他的硬體元素,例如像cpu

型號,記憶體型別,儲存配置,可以在源資料庫和下游streams

資料庫中是不同的。

資料庫鏈結

當配置下游streams

資料庫時,可以給它配置乙個與源資料庫的鏈結。雖然建立在源資料庫和下游streams

資料庫之間的鏈結是可選的,僅建立乙個鏈結還是有很多優勢的。資料庫鏈結的名字和源資料庫的全域性名字是相符的。

這樣的乙個資料庫鏈結簡化了下游streams

捕獲過程的建立和管理。當creat_captuer

或者alter_capture

在下游streams

捕獲過程中執行時,dba

可以通過資料庫鏈結建立use_database_link

引數詳細描述下游streams

捕獲過程。

當針對源資料庫的鏈結存在時,具體的管理活動就會自動體現。如果沒有資料庫鏈結,有些活動就需要通過手動完成。

但在我看來:資料庫鏈結絕對是多餘的,一切工作都可以由em來完成!

現在列乙個例子給大家看看下游捕獲是多麼的簡單!

host name

instance name

global database name

database role

dhcp-cbjs05-151-183

henry

henry.sun.net

source database

nazar

stream1

stream1.sun.net

downstream / destination database

修改引數傳輸日誌到目的資料庫:

這樣乙個下游複製的流就建立好了!

log_archive_dest_2

service=henry noregister template=/export/home/oracle/arch/stream1_%t_%s_%r.arc

在源庫上:

sql> select dbms_flashback.get_system_change_number() from dual;

dbms_flashback.get_system_change_number()

-----------------------------------------

8331188817820

$> expdp sgreports/sgreports tables=sgreports.test2 directory=expdir logfile=test2.log dumpfile=test2.dmp flashback_scn=8331188817820

在目的庫上:

create directory impdir as '/oracle/ora_backup';

impdp system/sys directory=impdir dumpfile=test2.dmp logfile=test2.log
connect strmadmin/strmadmin@stream1

begin dbms_streams_adm.add_table_rules(

table_name => 'sgreports.test2',

streams_type => 'capture',

streams_name => 'capture_stream1',

queue_name => 'capture_stream1_queue',

include_dml => true,

source_database=>'henry.sun.net',

include_ddl => true,

inclusion_rule => true);

end;

/

下游Streams捕獲簡介

下游streams捕獲 一般來說,捕獲是在源資料庫中具體資料庫變更產生的地方被配置和抽取的。然而,出於效能和管理方面的原因,捕獲過程也可以被配置在中間資料庫執行,這種情況不同於源資料庫具體變更發生的地點。中間資料庫充當了捕獲過程的主要場所。這種捕獲配置被稱為是下游streams 捕獲。它的特點在發布...

Java 8 Streams部分API簡介

寫在前面,下面的鏈式呼叫曾經讓我驚豔過。有時,我會想,一行 如此之長是否真的合適,出了錯也許會比較難找,比如某個set返回不是msginfo物件而是null的話,定位都會是這一行 然而,這不妨礙心中莫名其妙的自豪感,身為碼農,最重要的不是對自己流利 和自身高尚品質的絕對自信麼?笑 d msginfo...

STM32輸入捕獲簡介

輸入捕獲模式可以用來測量脈衝寬度或者測量頻率。stm32的定時器,除了tim6和tim7,其他定時器都有輸入捕獲功能。stm32的輸入捕獲,簡單的說就是通過檢測timx chx上的邊沿訊號,在邊沿訊號發生跳變 比如上公升沿 下降沿 的時候,將當前定時器的值 timx cnt 存放到對應的通道的捕獲 ...