oracle_stream配置初步
2010-06-24 09:56
337 查看
版本oracle11.1.0.7.0
主库: oradb
丛库: streamdb
--1.修改主从数据库参数,对于11g可以不用设置下面参数,默认值就可以
alter system set aq_tm_processes=2 scope=both;
alter system set global_names=true scope=both;
alter system set job_queue_processes=10 scope=both;
alter system set parallel_max_servers=20 scope=both;
alter system set undo_retention=3600 scope=both;
alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;
alter system set streams_pool_size=25M scope=spfile;
alter system set utl_file_dir='*' scope=spfile;
alter system set open_links=4 scope=spfile;
--2.将数据库设为归档模式
alter system set log_archive_dest_1='location=d:/archivelog/' scope=spfile;--可选
alter system set log_archive_start=TRUE scope=spfile;
alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile;
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
--3.创建stream管理用户
--#创建主环境的Stream专用表空间
create tablespace tbs_stream datafile 'D:/oracle/oradata/oradb/tbs_stream01.dbf'
size 100m autoextend on maxsize unlimited;
#将logminer 的数据字典从system表空间转移到新建的表空间,防止撑满system表空间
execute dbms_logmnr_d.set_tablespace('tbs_stream');
#创建Stream管理用户
create user strmadmin identified by strmadmin
default tablespace tbs_stream temporary tablespace temp;
#授权Stream管理用户
grant connect,resource,dba,aq_administrator_role to strmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/
--4.同理创建从环境用户环境
create tablespace tbs_stream datafile 'D:/oracle/oradata/streamdb/tbs_stream01.dbf'
size 100m autoextend on maxsize unlimited;
execute dbms_logmnr_d.set_tablespace('tbs_stream');
create user strmadmin identified by strmadmin
default tablespace tbs_stream 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;
/
--5.网络配置,在主数据库的tnsnames.ora中添加从数据库的连接,
在从数据库的tnsnames.ora中添加主数据库的连接
--6.启用追加日志主数据库上
alter database add supplemental log data;
--7.创建db_link
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#建立数据库链
create database link streamdb connect to strmadmin identified by strmadmin using 'streamdb';
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#建立数据库链
create database link oradb connect to strmadmin identified by strmadmin using 'oradb';
--8.创建流队列
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.set_up_queue(
queue_table => 'oradb_queue_table',
queue_name => 'oradb_queue');
end;
/
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.set_up_queue(
queue_table => 'streamdb_queue_table',
queue_name => 'streamdb_queue');
end;
/
--9.创建捕获进程
#以strmadmin身份,登录主数据库。提醒一下,本文档以 hr 用户做示例。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_rules(
schema_name => 'scott',
streams_type => 'capture',
streams_name => 'capture_oradb',
queue_name => 'strmadmin.oradb_queue',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => null,
inclusion_rule => true);
end;
/
--10.实例化复制数据库
在主数据库环境中,执行如下 Shell 语句。如果从库的 hr 用户不存在,建立一个 hr 的空用户。
exp userid=scott/tiger@oradb file='g:/test/scott.dmp' object_consistent=y rows=y
imp userid=system/oracle@streamdb file='g:/test/scott.dmp' ignore=y commit=y log='g:/test/scott.log' streams_instantiation=y fromuser=scott touser=scott
--11 创建传播进程
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_propagation_rules(
schema_name => 'scott',
streams_name => 'capture_oradb',
source_queue_name => 'strmadmin.oradb_queue',
destination_queue_name => 'strmadmin.streamdb_queue@streamdb',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'oradb',
inclusion_rule => true);
end;
/
#修改propagation休眠时间为0,表示实时传播 LCR。
begin
dbms_aqadm.alter_propagation_schedule(
queue_name => 'strmadmin.oradb_queue',
destination => 'streamdb',
latency => 0);
end;
/
#创建应用进程
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_rules(
schema_name => 'scott',
streams_type => 'apply',
streams_name => 'apply_streamdb',
queue_name => 'strmadmin.streamdb_queue',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'oradb',
inclusion_rule => true);
end;
/
#启动stream
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#启动Apply进程
begin
dbms_apply_adm.start_apply(
apply_name => 'apply_streamdb');
end;
/
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#启动Capture进程
begin
dbms_capture_adm.start_capture(
capture_name => 'capture_oradb');
end;
/
#停止stream
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#停止Capture进程
begin
dbms_capture_adm.stop_capture(
capture_name => 'capture_oradb');
end;
/
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#停止Apply进程
begin
dbms_apply_adm.stop_apply(
apply_name => 'apply_streamdb');
end;
/
#3.14 清除所有配置信息
#要清除Stream配置信息,需要先执行3.13,停止Stream进程。
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
exec DBMS_STREAMS_ADM.remove_streams_configuration();
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
exec DBMS_STREAMS_ADM.remove_streams_configuration();
#测试
#查看capture状态
#以strmadmin身份登陆主数据库
SELECT CAPTURE_NAME, QUEUE_NAME, RULE_SET_NAME, NEGATIVE_RULE_SET_NAME, STATUS FROM DBA_CAPTURE;
#
以strmadmin身份,登录主数据库,执行如下语句:
SELECT CAPTURE_NAME, QUEUE_NAME, STATUS, CAPTURED_SCN, APPLIED_SCN FROM DBA_CAPTURE;
#5.3 如何知道 Appy进程是否运行正常?
#以strmadmin身份,登录从数据库,执行如下语句:
SELECT apply_name, apply_captured, status FROM dba_apply;
#然后就可以在主库上create table然后到丛库上去看结果了!
主库: oradb
丛库: streamdb
--1.修改主从数据库参数,对于11g可以不用设置下面参数,默认值就可以
alter system set aq_tm_processes=2 scope=both;
alter system set global_names=true scope=both;
alter system set job_queue_processes=10 scope=both;
alter system set parallel_max_servers=20 scope=both;
alter system set undo_retention=3600 scope=both;
alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;
alter system set streams_pool_size=25M scope=spfile;
alter system set utl_file_dir='*' scope=spfile;
alter system set open_links=4 scope=spfile;
--2.将数据库设为归档模式
alter system set log_archive_dest_1='location=d:/archivelog/' scope=spfile;--可选
alter system set log_archive_start=TRUE scope=spfile;
alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile;
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
--3.创建stream管理用户
--#创建主环境的Stream专用表空间
create tablespace tbs_stream datafile 'D:/oracle/oradata/oradb/tbs_stream01.dbf'
size 100m autoextend on maxsize unlimited;
#将logminer 的数据字典从system表空间转移到新建的表空间,防止撑满system表空间
execute dbms_logmnr_d.set_tablespace('tbs_stream');
#创建Stream管理用户
create user strmadmin identified by strmadmin
default tablespace tbs_stream temporary tablespace temp;
#授权Stream管理用户
grant connect,resource,dba,aq_administrator_role to strmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/
--4.同理创建从环境用户环境
create tablespace tbs_stream datafile 'D:/oracle/oradata/streamdb/tbs_stream01.dbf'
size 100m autoextend on maxsize unlimited;
execute dbms_logmnr_d.set_tablespace('tbs_stream');
create user strmadmin identified by strmadmin
default tablespace tbs_stream 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;
/
--5.网络配置,在主数据库的tnsnames.ora中添加从数据库的连接,
在从数据库的tnsnames.ora中添加主数据库的连接
--6.启用追加日志主数据库上
alter database add supplemental log data;
--7.创建db_link
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#建立数据库链
create database link streamdb connect to strmadmin identified by strmadmin using 'streamdb';
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#建立数据库链
create database link oradb connect to strmadmin identified by strmadmin using 'oradb';
--8.创建流队列
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.set_up_queue(
queue_table => 'oradb_queue_table',
queue_name => 'oradb_queue');
end;
/
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.set_up_queue(
queue_table => 'streamdb_queue_table',
queue_name => 'streamdb_queue');
end;
/
--9.创建捕获进程
#以strmadmin身份,登录主数据库。提醒一下,本文档以 hr 用户做示例。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_rules(
schema_name => 'scott',
streams_type => 'capture',
streams_name => 'capture_oradb',
queue_name => 'strmadmin.oradb_queue',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => null,
inclusion_rule => true);
end;
/
--10.实例化复制数据库
在主数据库环境中,执行如下 Shell 语句。如果从库的 hr 用户不存在,建立一个 hr 的空用户。
exp userid=scott/tiger@oradb file='g:/test/scott.dmp' object_consistent=y rows=y
imp userid=system/oracle@streamdb file='g:/test/scott.dmp' ignore=y commit=y log='g:/test/scott.log' streams_instantiation=y fromuser=scott touser=scott
--11 创建传播进程
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_propagation_rules(
schema_name => 'scott',
streams_name => 'capture_oradb',
source_queue_name => 'strmadmin.oradb_queue',
destination_queue_name => 'strmadmin.streamdb_queue@streamdb',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'oradb',
inclusion_rule => true);
end;
/
#修改propagation休眠时间为0,表示实时传播 LCR。
begin
dbms_aqadm.alter_propagation_schedule(
queue_name => 'strmadmin.oradb_queue',
destination => 'streamdb',
latency => 0);
end;
/
#创建应用进程
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_rules(
schema_name => 'scott',
streams_type => 'apply',
streams_name => 'apply_streamdb',
queue_name => 'strmadmin.streamdb_queue',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'oradb',
inclusion_rule => true);
end;
/
#启动stream
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#启动Apply进程
begin
dbms_apply_adm.start_apply(
apply_name => 'apply_streamdb');
end;
/
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#启动Capture进程
begin
dbms_capture_adm.start_capture(
capture_name => 'capture_oradb');
end;
/
#停止stream
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#停止Capture进程
begin
dbms_capture_adm.stop_capture(
capture_name => 'capture_oradb');
end;
/
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#停止Apply进程
begin
dbms_apply_adm.stop_apply(
apply_name => 'apply_streamdb');
end;
/
#3.14 清除所有配置信息
#要清除Stream配置信息,需要先执行3.13,停止Stream进程。
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
exec DBMS_STREAMS_ADM.remove_streams_configuration();
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
exec DBMS_STREAMS_ADM.remove_streams_configuration();
#测试
#查看capture状态
#以strmadmin身份登陆主数据库
SELECT CAPTURE_NAME, QUEUE_NAME, RULE_SET_NAME, NEGATIVE_RULE_SET_NAME, STATUS FROM DBA_CAPTURE;
#
以strmadmin身份,登录主数据库,执行如下语句:
SELECT CAPTURE_NAME, QUEUE_NAME, STATUS, CAPTURED_SCN, APPLIED_SCN FROM DBA_CAPTURE;
#5.3 如何知道 Appy进程是否运行正常?
#以strmadmin身份,登录从数据库,执行如下语句:
SELECT apply_name, apply_captured, status FROM dba_apply;
#然后就可以在主库上create table然后到丛库上去看结果了!
相关文章推荐
- 关于Oracle Stream的安装、配置和使用
- oracle 10g-->11g schema级别下游实时捕获stream配置
- 【ORACLE 高可用】 ORACLE STREAM 基于单表的流复制 配置 案例
- [转]Oracle Stream配置详细步骤
- oracle Stream主从配置
- 【转】Oracle Stream配置详细步骤
- oracle stream 配置中 ORA-01361: global name mismatch 问题诊断。
- Oracle Stream配置详细步骤
- 关于Oracle Stream的安装、配置和使用
- ORACLE的网络配置,与权限初步
- 关于Oracle Stream的安装、配置和使用
- oracle简单stream 一个用户单向复制配置
- 【ORACLE 高可用】ORACLE STREAM 基于用户的流复制配置 案例
- oracle stream 详细配置
- 配置oracle stream(step by step setup database level Streams Replication)
- 配置oracle stream(step by step setup schema level Streams Replication)
- ArcSDE for Oracle配置和调整初步
- ArcSDE for Oracle配置和调整初步
- Oracle Stream配置详细步骤
- windows7 下 oracle 11g 标准版安装、配置及初步使用