stream簡單配置之capture,propagation,apply應用(四)
一、要求
1、初始化引數的修改
Ø global_names必須設定為true,global_name=db_name+db_domain。
Ø job_queue_processes必須>2
Ø compatible,必須高於10.2.0,並且target中該引數值不能低於source database.
Ø streams_pool_size,指定適當的大小,當然如果設定了sga_target,該引數也可由系統自動調節
2、source database必須啟用歸檔模式
3、雙機互相建立database link
二、建立使用者及搭建環境
這裡設定我們的source資料庫是jssweb,target資料庫是jssstr,資料庫版本10201,兩機準備工作均已做好(主要指上面說的那幾條)
1、一個一個來吧,首先自然是source
SQL> conn / as sysdba
已連線。
SQL> set sqlprompt "JSSWEB> "
--建立一個專用於streams的表空間,很有必要
JSSWEB> create tablespace stream_tbs datafile 'E:\oracle\oradata\jssweb\stream01.dbf' size 200m;
表空間已建立。
--建立streams管理使用者,並授予dba許可權
JSSWEB> create user stradmin identified by stradmin default tablespace stream_tbs;
使用者已建立。
--由於streams使用者操作需要較多許可權,此處僅用於演示,簡便期間直接授予dba許可權
JSSWEB> grant dba to stradmin;
授權成功。
2、target當然也是同理,建立專用表空間及使用者。
JSSSTR> create tablespace stream_tbs datafile 'E:\oracle\oradata\jssstr\stream01.dbf' size 200m;
表空間已建立。
JSSSTR> create user stradmin identified by stradmin default tablespace stream_tbs;
使用者已建立。
JSSSTR> grant dba to stradmin;
授權成功。
3、切換回source資料庫,以streams的操作使用者stradmin連線
JSSWEB> conn stradmin/stradmin
已連線。
建立連線到target的資料庫鏈:
JSSWEB> create database link jssstr connect to stradmin identified by stradmin using 'jssstr';
資料庫連結已建立。
JSSWEB> select sysdate fromdual@jssstr;
SYSDATE
-------------------
2008-09-01 10:18:24
--建立佇列
JSSWEB> exec dbms_streams_adm.set_up_queue();
PL/SQL 過程已成功完成。
4、再次切換到target資料庫,以streams的操作使用者stradmin連線
JSSSTR> conn stradmin/stradmin
已連線。
JSSSTR> create database link jssweb connect to stradmin identified by stradmin using 'jssweb';
資料庫連結已建立。
JSSSTR> select sysdate fromdual@jssweb;
SYSDATE
--------------
2008-09-01 10:24:38
--建立佇列
JSSSTR> exec dbms_streams_adm.set_up_queue();
PL/SQL 過程已成功完成。
三、配置複製過程
1、首先到source資料庫
--建立捕獲規則
JSSWEB> begin
2 dbms_streams_adm.add_table_rules(
3 table_name => 'scott.emp',
4 streams_type => 'capture',
5 streams_name => 'capture_stream',
6 queue_name => 'stradmin.streams_queue',
7 include_dml => true,
8 include_ddl => true,
9 inclusion_rule => true);
10 end;
11 /
PL/SQL 過程已成功完成。
--建立傳播規則
JSSWEB> begin
2 dbms_streams_adm.add_table_propagation_rules(
3 table_name => 'scott.emp',
4 streams_name => 'sour_to_targ',
5 source_queue_name => 'stradmin.streams_queue',
6 destination_queue_name =>'stradmin.streams_queue@jssstr.jss.cn',
7 include_dml => true,
8 include_ddl => true,
9 source_database => 'jssweb.jss.cn',
10 inclusion_rule => true,
11 queue_to_queue => true);
12 end;
13 /
PL/SQL 過程已成功完成。
JSSWEB> select capture_name,status from dba_capture;
CAPTURE_NAME STATUS
------------------------------ --------
CAPTURE_STREAM DISABLED
2、切換到target資料庫
--建立應用規則
JSSSTR> begin
2 dbms_streams_adm.add_table_rules(
3 table_name => 'scott.emp',
4 streams_type => 'apply',
5 streams_name => 'apply_stream',
6 queue_name => 'stradmin.streams_queue',
7 include_dml => true,
8 include_ddl => true,
9 source_database => 'jssweb.jss.cn',
10 inclusion_rule => true);
11 end;
12 /
PL/SQL 過程已成功完成。
--初始化資料,首先從源庫匯出,再執行匯入,複製的方式很多,邏輯匯入匯出、rman、duplication之類的,基本上你想怎麼操作都可以,這裡因為只操作一個表,三思決定直接通過資料庫鏈複製。
JSSSTR> create table scott.EMP
2 (
3 EMPNO NUMBER(4) not null primary key ,
4 ENAME VARCHAR2(10),
5 JOB VARCHAR2(9),
6 MGR NUMBER(4),
7 HIREDATE DATE,
8 COMM NUMBER(7,2),
9 DEPTNO NUMBER(2)
10 );
表已建立。
JSSSTR> insert into scott.emp select *fromscott.emp@jssweb;
已建立13行。
JSSSTR> commit;
提交完成。
--設定起始應用的scn值
JSSSTR> DECLARE
2 iscn NUMBER;
3 BEGIN
4 iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
5 DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@jssstr.jss.cn(
6 source_object_name => 'scott.emp',
7 source_database_name => 'jssweb.jss.cn',
8 instantiation_scn => iscn);
9 END;
10 /
PL/SQL 過程已成功完成。
--啟動應用程式
JSSSTR> exec dbms_apply_adm.start_apply('apply_stream');
PL/SQL 過程已成功完成。
JSSSTR> select apply_name,status from dba_apply;
APPLY_NAME STATUS
------------------------------ --------
APPLY_STREAM ENABLED
3、切換到source資料庫,啟動捕獲程式
JSSWEB> exec dbms_capture_adm.start_capture('capture_stream');
PL/SQL 過程已成功完成。
JSSWEB> select capture_name,status from dba_capture;
CAPTURE_NAME STATUS
------------------------------ --------
CAPTURE_STREAM ENABLED
四、測試
如果一切順利,我們的streams就配置好了,下面驗證一下。
JSSWEB> select *from scott.emp where empno=7499;
EMPNO ENAME JOB MGR HIREDATE COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 300 30
JSSWEB> update scott.emp set deptno=40 where empno=7499;
已更新 1 行。
JSSWEB> commit;
提交完成。
JSSSTR> select * from scott.emp where empno=7499;
EMPNO ENAME JOB MGR HIREDATE COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 300 40
JSSWEB> alter table scott.emp add tmpcol varchar2(10);
表已更改。
JSSSTR> desc scott.emp;
名稱 是否為空? 型別
--------------- -------- --------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
TMPCOL VARCHAR2(10)
由以上測試可以看到,dml,ddl操作均可順利傳輸並應用於target端,streams單表單向複製完成~~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23071790/viewspace-698000/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle streams相關啟_停_刪capture_apply_propagationOracleAPTAPP
- Widget的簡單應用並適配iOS10iOS
- 【CoCollider】讓系統和應用適配如此簡單IDE
- Spark Stream 簡單例子Spark單例
- thymeleaf 簡單應用
- div 簡單應用
- ajax簡單應用
- smbclient 簡單應用client
- websoket的簡單應用Web
- npm的簡單應用NPM
- appfabric 簡單應用APP
- ORACLE簡單應用 (轉)Oracle
- STREAM的CAPTURE出現PAUSED FOR FLOW CONTROLAPT
- js call apply bind簡單的理解JSAPP
- 單例項和RAC打造的ORACLE STREAM(四)單例Oracle
- jsp的簡單應用JS
- 快應用簡單瞭解
- MapReduce應用案例--簡單排序排序
- 遞迴的簡單應用遞迴
- rename命令的簡單應用
- Nginx 簡單應用(Windows os)NginxWindows
- DataGuard之Apply Services(redo應用和SQL應用)APPSQL
- iOS13簡單適配iOS
- iPhoneX簡單適配iPhone
- JavaScript 中call apply 那點簡單事JavaScriptAPP
- 8 Apply Services 應用服務APP
- easypoi 讀取 Excel 簡單應用Excel
- Lucene介紹及簡單應用
- windbg sx命令與簡單應用
- pythontornodo的簡單應用1Python
- pythontonado框架簡單應用Python框架
- jQuary中ajax的簡單應用
- gRPC的Golang簡單應用RPCGolang
- @Autowire/@Qualifilter/@Resource的簡單應用Filter
- 3D Touch 簡單應用3D
- 並查集的簡單應用並查集
- unity 委託事件簡單應用Unity事件
- Android ExpandableListView的簡單應用AndroidView