這兩天測試了一下Stream,在網上找了一些資料,集合大話Oracle RAC上的一些資訊,測試通過,把結果整理出來分享一下,各位有時間可以自己試試
1 基礎環境
1.1 來源資料庫
作業系統:windows XP
IP地址:10.80.88.35
資料庫:Oracle 10.2.0.1.0
ORACLE_SID:sttest
Global_name:STTEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
1.2 目標資料庫
作業系統:windows 7
IP地址:10.80.88.231
資料庫:Oracle 11.2.0.1.0
ORACLE_SID:orcl
Global_name:ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
1.3 複製規劃,將決定如何配置
將sttest庫裡的jiang使用者下的所有對象複製到orcl庫裡,採用是本地捕獲和單向複製
2 配置環境
2.1 在pfile中設定初始化參數,來源資料庫和目標資料庫都得設定
aq_tm_processes=2
global_names=true
job_queue_processes=10
parallel_max_servers=20
undo_retention=3600
nls_date_format='YYYY-MM-DD HH24:MI:SS'
streams_pool_size=160M
utl_file_dir='*'
open_links=4
#設定歸檔目錄及格式
log_archive_dest_1='LOCATION=......'
log_archive_format='ARC%S_%R.%T'
之後用pfile重啟資料庫,並將資料庫置為歸檔模式
shutdown immediate;
start nomount pfile='......';
create spfile from pfile=......'';
alter database mount;
alter database archivelog;
alter database open;
2.2 配置TNS
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.80.88.231)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
STTEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lenovo-jy)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = lenovo-jy)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sttest)
)
)
2.3 建立stream 系統管理使用者
2.3.1 在來源資料庫上建立主環境stream系統管理使用者
create tablespace streams_tbs datafile 'D:\oracle\oradata\sttest\streams_tbs.dbf' size 200M autoextend on;
execute dbms_logmnr_d.set_tablespace('streams_tbs');
create user strmadmin identified by STRMADMIN default tablespace streams_tbs temporary tablespace temp;
grant connect,resource,dba,aq_administrator_role to strmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/
2.3.2 在目標資料庫上建立從環境stream系統管理使用者,由於目標資料庫是11G的,密碼要用大寫,不然後續建立到目標資料庫的db link時會串連不上
create tablespace streams_tbs datafile 'E:\app\root\oradata\orcl\streams_tbs.dbf' size 200M autoextend on;
execute dbms_logmnr_d.set_tablespace('streams_tbs');
create user strmadmin identified by STRMADMIN default tablespace streams_tbs temporary tablespace temp;
grant connect,resource,dba,aq_administrator_role to strmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/
2.4 啟用追加日誌,可以基於Database層級或Table層級,啟用追加日誌(Supplemental Log);在建立根據Schema粒度進行複製的Oracle Stream環境中,如果確認Schema下所有Table都有合理的主鍵(Primary Key),則不再需要啟用追加日誌
alter database add supplemental log data;
alter table add supplement log group log_group_name(table_column_name) always;
2.5 建立 DBlink,針對主要資料庫建立的資料庫鏈的名字必須和從資料庫的global_name相同
2.5.1 建立主要資料庫資料庫鏈
alter database rename global_name to STTEST.REGRESS.RDBMS.DEV.US.ORACLE.COM;
connectstrmadmin/STRMADMIN@sttest
CREATE DATABASE LINK ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM CONNECT TO strmadmin IDENTIFIED BY STRMADMIN USING 'orcl';
2.5.2 建立從資料庫資料庫鏈
alter database rename global_name to ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM;
connectstrmadmin/STRMADMIN@orcl
CREATE DATABASE LINK STTEST.REGRESS.RDBMS.DEV.US.ORACLE.COM CONNECT TO strmadmin IDENTIFIED BY STRMADMIN USING 'sttest';
2.6 建立Source隊列
2.6.1 在來源資料庫上建立 Master Source隊列
connectstrmadmin/STRMADMIN@sttest
begin
dbms_streams_adm.set_up_queue(
queue_table => 'sttest_queue_table',
queue_name => 'strmadmin.sttest_queue');
end;
/
2.6.2 在目標資料庫上建立 Backup Source隊列
connectstrmadmin/STRMADMIN@orcl
begin
dbms_streams_adm.set_up_queue(
queue_table => 'orcl_queue_table',
queue_name => 'strmadmin.orcl_queue');
end;
/