关于Oracle Stream的安装、配置和使用
生活随笔
收集整理的這篇文章主要介紹了
关于Oracle Stream的安装、配置和使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于Oracle Stream的安裝 、配置和使用
因項目預研需要,所以想找一個能夠滿足內外網數據庫 同步方案,前面先是測試 了一下Oracle的高級復制功能,未果;才轉而進行Oracle Stream的測試,大概是我水平太差了,前后測試了3.5遍總算把Oracle Stream運行正常起來了。
錯誤的原因其實稱不上原因,無他,讀文檔讀的不細致,手誤、本身對這方面也缺乏理論認識。
關于Oracle流的原理
Oracle 流能夠共享信息。Oracle流每個單元的共享信息來自于消息,我們可以在流中共享這些消息。流可以在同一個數據庫或不同數據庫之間傳播信息。"流路由"指定信息到達特定的目的地。流比起傳統的在不同數據庫之間捕獲、管理 、共享消息的解決方案,有著更強大的功能和靈活性。流提供的功能可用于分布式企業程序、數據倉庫和高可用性解決方案。我們可以在同一時刻使用oracle流的所有功能。我們可以使用流的新功能而不會嚴重影響數據庫的性能。
使用Oracle流,我們可以控制流里的信息,流的流向,流進入目標數據庫時,消息怎樣運作,中止流。通過配置流,可以滿足我們的特殊需求。基于我們的特殊情況,流可以在數據庫里自動捕獲、傳播和管理DML、DDL消息。我們可以把用戶定義的消息放入流中,流可以自動把信息傳播到其它數據庫或應用程序。當消息到達目的數據庫時,流可以根據我們的設定應用它們。 本文主要參考文檔《Step by step 配置Oracle Stream》楊寶秋(hrb_qiuyb)
《stream_concepts_administration_讀書筆記.doc》具體參見
http://www.itpub.net/thread-849868-1-1.html 試驗環境采用虛擬機方式,操作系統Windows2003,Oracle版本10.2.0
??? 數據源機器配置??? 目標機器配置
計算機名??? Source??? Dest
IP地址??? 192.168.23.130??? 192.168.23.131
SID??? Source??? Dest 第一步:進行Stream前的參數配置,Source和Dest機器上均運行,運行命令可完全一致
SQL> conn sys/inxite as sysdba;
已連接。
SQL> alter system set aq_tm_processes=2 scope=both;
系統已更改。
SQL> alter system set global_names=true scope=both;
系統已更改。
SQL> alter system set job_queue_processes=20 scope=both;
系統已更改。
SQL> alter system set parallel_max_servers=20 scope=both;
系統已更改。
SQL> alter system set undo_retention=3600 scope=both;
系統已更改。
SQL> alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;
系統已更改。
SQL> alter system set streams_pool_size=25M scope=spfile;
系統已更改。
SQL> alter system set utl_file_dir='*' scope=spfile;
系統已更改。
SQL> alter system set open_links=4 scope=spfile;
系統已更改。
SQL> alter system set log_archive_dest='e:/OracleDB/arch' scope=spfile;
系統已更改。
SQL> alter system set log_archive_start=TRUE scope=spfile;
系統已更改。
SQL> alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile;
系統已更改。 第二步:查看系統歸檔狀態(雙機可以同時檢查,檢查方式完全一致)
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1247900 bytes
Variable Size????????????? 92276068 bytes
Database Buffers?????????? 71303168 bytes
Redo Buffers??????????????? 2945024 bytes
數據庫裝載完畢。
SQL> alter database archivelog;
數據庫已更改。
SQL> alter database open;
數據庫已更改。
SQL> archive log list;
數據庫日志模式??????????? 存檔模式
自動存檔???????????? 啟用
存檔終點??????????? USE_DB_RECOVERY_FILE_DEST
最早的聯機日志序列???? 1
下一個存檔日志序列?? 2
當前日志序列?????????? 2
SQL> 第三步:創建Stream用戶和表空間(雙機可以同時設置,設置方式完全一致)
#創建主環境的Stream專用表空間
SQL> create tablespace tbs_stream datafile 'e:/OracleDB/tbs_stream01.dbf'
? 2? size 100m autoextend on next 100m maxsize 1000m segment space management auto;
表空間已創建。
#將logminer 的數據字典從system表空間轉移到新建的表空間,防止撐滿system表空間
SQL> execute dbms_logmnr_d.set_tablespace('tbs_stream');
PL/SQL 過程已成功完成。
#創建Stream管理用戶
SQL> create user strmadmin identified by strmadmin default tablespace tbs_stream
?temporary tablespace temp;
用戶已創建。
#授權Stream管理用戶
SQL> grant connect,resource,dba,aq_administrator_role to strmadmin;
授權成功。
SQL> begin
? 2? dbms_streams_auth.grant_admin_privilege(
? 3? grantee => 'strmadmin',
? 4? grant_privileges => true);
? 5? end;
? 6? /
PL/SQL 過程已成功完成。 第四步:配置各自雙方的數據庫連接
在source機器上添加dest數據源,名稱為dest
在dest機器上添加source數據源,名稱為source 第五步:啟用追加日志
可以基于Database級別或Table級別,啟用追加日志(Supplemental Log)。在建立根據Schema
粒度進行復制的Oracle Stream 環境中,如果確認Schema 下所有Table 都有合理的主鍵
(Primary Key),則不再需要啟用追加日志。
#啟用Database 追加日志
SQL> alter database add supplemental log data ;
數據庫已更改。
#啟用Table追加日志
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE, FOREIGN KEY)
?COLUMNS; 第六步:創建主數據庫數據庫鏈,以連接到從數據庫
首先查看兩臺Oracle服務器的域名是否一致,如果不一致,需要alter database rename global_name to xxx
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
SOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM
SQL>conn strmadmin/strmadmin;
SQL> create database link dest connect to strmadmin identified by strmadmin using 'dest';
數據庫鏈接已創建。
SQL> select * from tab@dest;
未選定行 第七步:創建從數據庫數據庫鏈,以連接到主數據庫
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
DEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
SQL>conn strmadmin/strmadmin
SQL> create database link source connect to strmadmin identified by strmadmin using 'source';
數據庫鏈接已創建。
SQL> select * from tab@source;
未選定行 第八步:創建Master(源)流隊列
SQL> connect strmadmin/strmadmin
已連接。
SQL> begin
? 2? dbms_streams_adm.set_up_queue(
? 3? queue_table => 'source_queue_table',
? 4? queue_name => 'source_queue');
? 5? end;
? 6? /
PL/SQL 過程已成功完成。 第九步:創建Backup(目標)流隊列
SQL> connect strmadmin/strmadmin
已連接。
SQL> begin
? 2? dbms_streams_adm.set_up_queue(
? 3? queue_table => 'dest_queue_table',
? 4? queue_name => 'dest_queue');
? 5? end;
? 6? /
PL/SQL 過程已成功完成。 第十步:確保需要復制源機器上Schema對象的存在,并將Schema導出
exp userid=test/test@source file='e:/test.dmp' object_consistent=y rows=y
因項目預研需要,所以想找一個能夠滿足內外網數據庫 同步方案,前面先是測試 了一下Oracle的高級復制功能,未果;才轉而進行Oracle Stream的測試,大概是我水平太差了,前后測試了3.5遍總算把Oracle Stream運行正常起來了。
錯誤的原因其實稱不上原因,無他,讀文檔讀的不細致,手誤、本身對這方面也缺乏理論認識。
關于Oracle流的原理
Oracle 流能夠共享信息。Oracle流每個單元的共享信息來自于消息,我們可以在流中共享這些消息。流可以在同一個數據庫或不同數據庫之間傳播信息。"流路由"指定信息到達特定的目的地。流比起傳統的在不同數據庫之間捕獲、管理 、共享消息的解決方案,有著更強大的功能和靈活性。流提供的功能可用于分布式企業程序、數據倉庫和高可用性解決方案。我們可以在同一時刻使用oracle流的所有功能。我們可以使用流的新功能而不會嚴重影響數據庫的性能。
使用Oracle流,我們可以控制流里的信息,流的流向,流進入目標數據庫時,消息怎樣運作,中止流。通過配置流,可以滿足我們的特殊需求。基于我們的特殊情況,流可以在數據庫里自動捕獲、傳播和管理DML、DDL消息。我們可以把用戶定義的消息放入流中,流可以自動把信息傳播到其它數據庫或應用程序。當消息到達目的數據庫時,流可以根據我們的設定應用它們。 本文主要參考文檔《Step by step 配置Oracle Stream》楊寶秋(hrb_qiuyb)
《stream_concepts_administration_讀書筆記.doc》具體參見
http://www.itpub.net/thread-849868-1-1.html 試驗環境采用虛擬機方式,操作系統Windows2003,Oracle版本10.2.0
??? 數據源機器配置??? 目標機器配置
計算機名??? Source??? Dest
IP地址??? 192.168.23.130??? 192.168.23.131
SID??? Source??? Dest 第一步:進行Stream前的參數配置,Source和Dest機器上均運行,運行命令可完全一致
SQL> conn sys/inxite as sysdba;
已連接。
SQL> alter system set aq_tm_processes=2 scope=both;
系統已更改。
SQL> alter system set global_names=true scope=both;
系統已更改。
SQL> alter system set job_queue_processes=20 scope=both;
系統已更改。
SQL> alter system set parallel_max_servers=20 scope=both;
系統已更改。
SQL> alter system set undo_retention=3600 scope=both;
系統已更改。
SQL> alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;
系統已更改。
SQL> alter system set streams_pool_size=25M scope=spfile;
系統已更改。
SQL> alter system set utl_file_dir='*' scope=spfile;
系統已更改。
SQL> alter system set open_links=4 scope=spfile;
系統已更改。
SQL> alter system set log_archive_dest='e:/OracleDB/arch' scope=spfile;
系統已更改。
SQL> alter system set log_archive_start=TRUE scope=spfile;
系統已更改。
SQL> alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile;
系統已更改。 第二步:查看系統歸檔狀態(雙機可以同時檢查,檢查方式完全一致)
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1247900 bytes
Variable Size????????????? 92276068 bytes
Database Buffers?????????? 71303168 bytes
Redo Buffers??????????????? 2945024 bytes
數據庫裝載完畢。
SQL> alter database archivelog;
數據庫已更改。
SQL> alter database open;
數據庫已更改。
SQL> archive log list;
數據庫日志模式??????????? 存檔模式
自動存檔???????????? 啟用
存檔終點??????????? USE_DB_RECOVERY_FILE_DEST
最早的聯機日志序列???? 1
下一個存檔日志序列?? 2
當前日志序列?????????? 2
SQL> 第三步:創建Stream用戶和表空間(雙機可以同時設置,設置方式完全一致)
#創建主環境的Stream專用表空間
SQL> create tablespace tbs_stream datafile 'e:/OracleDB/tbs_stream01.dbf'
? 2? size 100m autoextend on next 100m maxsize 1000m segment space management auto;
表空間已創建。
#將logminer 的數據字典從system表空間轉移到新建的表空間,防止撐滿system表空間
SQL> execute dbms_logmnr_d.set_tablespace('tbs_stream');
PL/SQL 過程已成功完成。
#創建Stream管理用戶
SQL> create user strmadmin identified by strmadmin default tablespace tbs_stream
?temporary tablespace temp;
用戶已創建。
#授權Stream管理用戶
SQL> grant connect,resource,dba,aq_administrator_role to strmadmin;
授權成功。
SQL> begin
? 2? dbms_streams_auth.grant_admin_privilege(
? 3? grantee => 'strmadmin',
? 4? grant_privileges => true);
? 5? end;
? 6? /
PL/SQL 過程已成功完成。 第四步:配置各自雙方的數據庫連接
在source機器上添加dest數據源,名稱為dest
在dest機器上添加source數據源,名稱為source 第五步:啟用追加日志
可以基于Database級別或Table級別,啟用追加日志(Supplemental Log)。在建立根據Schema
粒度進行復制的Oracle Stream 環境中,如果確認Schema 下所有Table 都有合理的主鍵
(Primary Key),則不再需要啟用追加日志。
#啟用Database 追加日志
SQL> alter database add supplemental log data ;
數據庫已更改。
#啟用Table追加日志
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE, FOREIGN KEY)
?COLUMNS; 第六步:創建主數據庫數據庫鏈,以連接到從數據庫
首先查看兩臺Oracle服務器的域名是否一致,如果不一致,需要alter database rename global_name to xxx
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
SOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM
SQL>conn strmadmin/strmadmin;
SQL> create database link dest connect to strmadmin identified by strmadmin using 'dest';
數據庫鏈接已創建。
SQL> select * from tab@dest;
未選定行 第七步:創建從數據庫數據庫鏈,以連接到主數據庫
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
DEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
SQL>conn strmadmin/strmadmin
SQL> create database link source connect to strmadmin identified by strmadmin using 'source';
數據庫鏈接已創建。
SQL> select * from tab@source;
未選定行 第八步:創建Master(源)流隊列
SQL> connect strmadmin/strmadmin
已連接。
SQL> begin
? 2? dbms_streams_adm.set_up_queue(
? 3? queue_table => 'source_queue_table',
? 4? queue_name => 'source_queue');
? 5? end;
? 6? /
PL/SQL 過程已成功完成。 第九步:創建Backup(目標)流隊列
SQL> connect strmadmin/strmadmin
已連接。
SQL> begin
? 2? dbms_streams_adm.set_up_queue(
? 3? queue_table => 'dest_queue_table',
? 4? queue_name => 'dest_queue');
? 5? end;
? 6? /
PL/SQL 過程已成功完成。 第十步:確保需要復制源機器上Schema對象的存在,并將Schema導出
exp userid=test/test@source file='e:/test.dmp' object_consistent=y rows=y
總結
以上是生活随笔為你收集整理的关于Oracle Stream的安装、配置和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft Office Bac
- 下一篇: 游红原大草原有感