stream流配置学习
来源:互联网 发布:文字编辑排版软件 编辑:程序博客网 时间:2024/05/16 06:34
源数据库为mytest,目标数据库为mytest1
设置初始参数
sqlplus sys/sys@mytest 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=10 scope=both;
系统已更改。
SQL> alter system set open_links=4 scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 373293056 bytes
Fixed Size 1249056 bytes
Variable Size 130023648 bytes
Database Buffers 234881024 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
sqlplus sys/sys@mytest1 as sysdba
SQL> alter system set global_names=true scope=both;
系统已更改。
SQL> alter system set aq_tm_processes=2 scope=both;
系统已更改。
SQL> alter system set job_queue_processes=10 scope=both;
系统已更改。
SQL> alter system set open_links=4 scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 209715200 bytes
Fixed Size 1248116 bytes
Variable Size 88081548 bytes
Database Buffers 113246208 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
新建stream专用用户
sqlplus sys/sys@mytest as sysdba
SQL> create user "YUZH_STR" identified by "sys";
用户已创建。
SQL> grant DBA, IMP_FULL_DATABASE, EXP_FULL_DATABASE to "YUZH_STR";
授权成功。
SQL> BEGIN
2 DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
3 grantee => '"YUZH_STR"',
4 grant_privileges => true);
5 END;
6 /
PL/SQL 过程已成功完成。
SQL> COMMIT;
提交完成。
sqlplus sys/sys@mytest1 as sysdba
SQL> create user "YUZH_STR" identified by "sys";
用户已创建。
SQL> grant DBA, IMP_FULL_DATABASE, EXP_FULL_DATABASE to "YUZH_STR";
授权成功。
SQL> BEGIN
2 DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
3 grantee => '"YUZH_STR"',
4 grant_privileges => true);
5 END;
6 /
PL/SQL 过程已成功完成。
SQL> COMMIT;
提交完成。
如下以整个yuzh的schema传输为例子实行
sqlplus sys/sys@mytest as sysdba
SQL> conn yuzh_str/sys
已连接。
创建DBLINK
SQL> CREATE DATABASE LINK MYTEST1 connect to "yuzh_str" identified by "sys" using 'mytest1';
数据库链接已创建。
创建Source队列
SQL> BEGIN
2 DBMS_STREAMS_ADM.SET_UP_QUEUE(
3 queue_table => '"STREAMS_CAPTURE_QT"',
4 queue_name => '"STREAMS_CAPTURE_Q"',
5 queue_user => '"YUZH_STR"');
6 END;
7 /
PL/SQL 过程已成功完成。
SQL> COMMIT;
提交完成。
创建capture进程
SQL> BEGIN
2 DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
3 schema_name => '"YUZH"',
4 streams_type => 'capture',
5 streams_name => '"STREAMS_CAPTURE"',
6 queue_name => '"YUZH_STR"."STREAMS_CAPTURE_Q"',
7 include_dml => true,
8 include_ddl => false, --这里如果设置成true,则ddl操作也会同步
9 include_tagged_lcr => false,
10 inclusion_rule => true);
11 END;
12 /
PL/SQL 过程已成功完成。
创建传播进程
SQL> BEGIN
2 DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
3 schema_name => '"YUZH"',
4 streams_name => '"STREAMS_PROPAGATION"',
5 source_queue_name => '"YUZH_STR"."STREAMS_CAPTURE_Q"',
6 destination_queue_name => '"YUZH_STR"."STREAMS_APPLY_Q"@MYTEST1',
7 include_dml => true,
8 include_ddl => false,
9 source_database => 'MYTEST',
10 inclusion_rule => true );
11 END;
12 /
PL/SQL 过程已成功完成。
SQL> COMMIT;
提交完成。
sqlplus sys/sys@mytest1 as sysdba
SQL> conn yuzh_str/sys
已连接。
创建DBLINK
SQL> CREATE DATABASE LINK MYTEST connect to "YUZH_STR" identified by "sys" using 'mytest';
数据库链接已创建。
创建接收队列
SQL> BEGIN
2 DBMS_STREAMS_ADM.SET_UP_QUEUE(
3 queue_table => '"STREAMS_APPLY_QT"',
4 queue_name => '"STREAMS_APPLY_Q"',
5 queue_user => '"YUZH_STR"');
6 END;
7 /
PL/SQL 过程已成功完成。
创建apply进程
SQL> BEGIN
2 DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
3 schema_name => '"YUZH"',
4 streams_type => 'apply',
5 streams_name => '"STREAMS_APPLY"',
6 queue_name => '"YUZH_STR"."STREAMS_APPLY_Q"',
7 include_dml => true,
8 include_ddl => false,
9 include_tagged_lcr => false,
10 inclusion_rule => true);
11 END;
12 /
PL/SQL 过程已成功完成。
启动apply进程
SQL> DECLARE
2 v_started number;
3 BEGIN
4 SELECT DECODE(status, 'ENABLED', 1, 0) INTO v_started
5 FROM DBA_APPLY where apply_name = 'STREAMS_APPLY';
6 if (v_started = 0) then
7 DBMS_APPLY_ADM.START_APPLY(apply_name => '"STREAMS_APPLY"');
8 end if;
9 END;
10 /
PL/SQL 过程已成功完成。
sqlplus sys/sys@mytest as sysdba
SQL> conn yuzh_str/sys
启动captrue进程
SQL> set serverout on;
SQL> DECLARE
2 v_started number;
3 BEGIN
4 SELECT DECODE(status, 'ENABLED', 1, 0) INTO v_started
5 FROM DBA_CAPTURE where CAPTURE_NAME = 'STREAMS_CAPTURE';
6 if (v_started = 0) then
7 DBMS_CAPTURE_ADM.START_CAPTURE(capture_name => '"STREAMS_CAPTURE"');
8 end if;
9 END;
10 /
PL/SQL 过程已成功完成。
export_import脚本
sqlplus sys/sys@mytest1 as sysdba
SQL> conn yuzh_str/sys
SQL> set serverout on;
SQL> DECLARE
2 handle1 number;
3 ind number;
4 percent_done number;
5 job_state VARCHAR2(30);
6 le ku$_LogEntry;
7 js ku$_JobStatus;
8 jd ku$_JobDesc;
9 sts ku$_Status;
10 BEGIN
11 handle1 := DBMS_DATAPUMP.OPEN('IMPORT','SCHEMA', 'MYTEST');
12 DBMS_DATAPUMP.ADD_FILE(handle1, 'StreamImport_1280463491691.log', 'streee
1', '', DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
13 DBMS_DATAPUMP.SET_PARAMETER(handle1, 'FLASHBACK_SCN', 908129);
14 DBMS_DATAPUMP.METADATA_FILTER(handle1, 'SCHEMA_EXPR', 'IN (''YUZH'')');
15 DBMS_DATAPUMP.SET_PARAMETER(handle1, 'INCLUDE_METADATA', 1);
16 DBMS_DATAPUMP.START_JOB(handle1);
17 percent_done :=0;
18 job_state := 'UNDEFINED';
19 while (job_state != 'COMPLETED') and (job_state != 'STOPPED') loop
20 dbms_datapump.get_status(handle1, dbms_datapump.ku$_status_job_error + db
ms_datapump.ku$_status_job_status + dbms_datapump.ku$_status_wip,-1,job_state,st
s);
21 js := sts.job_status;
22 if js.percent_done != percent_done
23 then
24 dbms_output.put_line('*** Job percent done = ' || to_char(js.percent_d
one));
25 percent_done := js.percent_done;
26 end if;
27 if(bitand(sts.mask, dbms_datapump.ku$_status_wip) != 0)
28 then
29 le := sts.wip;
30 else
31 if(bitand(sts.mask,dbms_datapump.ku$_status_job_error) != 0)
32 then
33 le := sts.error;
34 else
35 le := null;
36 end if;
37 end if;
38 if le is not null
39 then
40 ind := le.FIRST;
41 while ind is not null loop
42 dbms_output.put_line(le(ind).LogText);
43 ind := le.NEXT(ind);
44 end loop;
45 end if;
46 end loop;
47 dbms_output.put_line('Job has completed');
48 dbms_output.put_line('Final job state = ' || job_state);
49 dbms_datapump.detach(handle1);
50 END;
51 /
自动启用 FLASHBACK 以保持数据库完整性。
启动 "YUZH_STR"."SYS_IMPORT_SCHEMA_03":
正在使用 BLOCKS 方法进行估计...
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 128 KB
处理对象类型 SCHEMA_EXPORT/USER
处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/PROCACT_INSTANCE
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
. . 导入了 "YUZH"."YUZH_TEST14" 4 行
. . 导入了 "YUZH"."YUZH_TEST15" 4 行
. . 导入了 "YUZH"."YUZH_TEST1" 0 行
. . 导入了 "YUZH"."YUZH_TEST10" 0 行
. . 导入了 "YUZH"."YUZH_TEST11" 0 行
. . 导入了 "YUZH"."YUZH_TEST12" 0 行
. . 导入了 "YUZH"."YUZH_TEST13" 0 行
. . 导入了 "YUZH"."YUZH_TEST16" 0 行
. . 导入了 "YUZH"."YUZH_TEST17" 0 行
. . 导入了 "YUZH"."YUZH_TEST18" 0 行
. . 导入了 "YUZH"."YUZH_TEST19" 0 行
. . 导入了 "YUZH"."YUZH_TEST2" 0 行
. . 导入了 "YUZH"."YUZH_TEST20" 0 行
. . 导入了 "YUZH"."YUZH_TEST3" 0 行
. . 导入了 "YUZH"."YUZH_TEST4" 0 行
. . 导入了 "YUZH"."YUZH_TEST5" 0 行
. . 导入了 "YUZH"."YUZH_TEST6" 0 行
. . 导入了 "YUZH"."YUZH_TEST7" 0 行
. . 导入了 "YUZH"."YUZH_TEST8" 0 行
. . 导入了 "YUZH"."YUZH_TEST9" 0 行
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
*** Job percent done = 100
作业 "YUZH_STR"."SYS_IMPORT_SCHEMA_03" 已于 15:45:49 成功完成
Job has completed
Final job state = COMPLETED
PL/SQL 过程已成功完成。
验证dml操作,是成功的
PLUS:启用追加日志
可以基于Database级别或Table级别,启用追加日志(Supplemental Log)。在建立根据Schema粒度进行复制的Oracle Stream环境中,如果确认Schema下所有Table都有合理的主键(Primary Key),则不再需要启用追加日志。
#启用Database 追加日志
alter database add supplemental log data;
#启用Table追加日志
alter table add supplement log group log_group_name(table_column_name) always;
- stream流配置学习
- Flume NG 学习笔记(三)流配置
- Pig flume流配置文件
- Streams散记之一-如何清除流配置
- C#stream学习
- java stream 学习笔记
- java8 Stream学习笔记
- java8 stream学习笔记
- Java8のStream学习
- JDK8 Stream API 学习
- Java8のStream学习
- JAVA8--Stream学习
- 学习使用stringstream stream;
- java8 stream学习
- 【java学习】Stream流
- 学习Java8--stream
- Java JDK6学习笔记 Stream
- 学习node.js之stream
- flex网站整理
- 关于ListView 和Adapter一些事
- PKU 1157 LITTLE SHOP OF FLOWERS
- 《林锐:高质量C/C++编程指南》笔记【4】
- C++中static的作用
- stream流配置学习
- 集群、分布式你想好怎么用了吗?
- 为什么C++赋值运算符重载函数不能被继承? 【转】
- 用C#读写ini配置文件
- javascript 闭包
- struts2 标签初识 Form Tags
- 关于老婆的使用说明书----参照国药标准说明书解释
- VC++中统一修改AfxMessageBox的标题
- 权限字段,权限对象的创建,以及如何分配给角色