oracle_stream配置初步

版本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然后到丛库上去看结果了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值