您的位置:首页 > 数据库 > Oracle

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然后到丛库上去看结果了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: