快速搭建streams表級複製環境
一、要求
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 from dual@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 from dual@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 *from scott.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/7607759/viewspace-440537/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis多例項及主從複製環境搭建Redis
- mongodb複製集(replica sets)+分片(sharding)環境搭建MongoDB
- 生產環境中MySQL複製的搭建KPMySql
- Pytorch複製現有環境PyTorch
- 使用 kind 快速搭建 kubernetes 環境
- 使用docker快速搭建hive環境DockerHive
- CentOS7.8 環境搭建 Redis 主從複製和哨兵模式CentOSRedis模式
- MySQL主從複製環境部署MySql
- Laradock 快速搭建PHP開發環境PHP開發環境
- 基於ECS快速搭建Docker環境Docker
- Elasticsearch快速入門和環境搭建Elasticsearch
- oracle9i下streams複製(zt)Oracle
- MySQL Xtrabackup真實生產環境搭建主從複製全過程MySql
- vue cli快速搭建Vue開發環境Vue開發環境
- (WSL) Ubuntu 快速搭建 PHP 開發環境UbuntuPHP開發環境
- React基礎——快速搭建開發環境React開發環境
- 快速搭建本地docker的開發環境Docker開發環境
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- 快速搭建 Linux(LNMP + Linux 安裝 + 環境配置)LinuxLNMP
- 使用minikube快速搭建k8s環境K8S
- 手把手教你,如何在windows系統搭建mysql主從複製的環境WindowsMySql
- 【Mongodb】分片複製集環境新增新的分片MongoDB
- 環境搭建
- webpack4 x 快速搭建vue開發環境WebVue開發環境
- ubuntu搭建nodejs生產環境——快速部署手冊UbuntuNodeJS
- Day2——基於ECS快速搭建Docker環境Docker
- hadoop3.1.0 HDFS快速搭建偽分散式環境Hadoop分散式
- 如何快速搭建微服務開發測試環境微服務
- 基於minikube快速搭建kubernetes單節點環境
- 五分鐘用 Docker 快速搭建 Go 開發環境DockerGo開發環境
- 淺談之SpringBoot的環境搭建及快速入門Spring Boot
- Elk環境篇 --- 本地快速搭建你的ElasticSearch及KibanaElasticsearch
- WIN7環境使用nodejs快速搭建web專案Win7NodeJSWeb
- 使用json-Server快速模擬服務環境搭建JSONServer
- 體驗有禮:基於ECS快速搭建Docker環境Docker
- centos8中快速搭建Java Web開發環境CentOSJavaWeb開發環境
- 搭建lnmp環境LNMP
- 搭建gym環境