oracle stream配置向导
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. Stream 的工作原理
Stream 是Oracle Advanced Queue技术的一种扩展应用,这种技术最基本的原理就是收集事件,把时间保存在队列中,然后把这些事件发布给不同的订阅者。
从DBA的角度来说,就是把捕获Oracle数据库产生的Redo日志,然后把这些日志通过网络传播到多个数据库,其他数据库通过应用这些日志,达到复制变化的作用。
在Stream 环境下,复制的起点数据库叫作Source Database,复制的终点数据库叫作Target Database。在这两个数据库上都要创建一个队列,其中的Source Database上的是发送队列,而Target Database上的是接收队列。
数据库的所有操作都会被记录在日志中。配好Stream环境后,在Source Database上会有一个捕获进程(Capture Process), 该进程利用Logminer技术从日志中提取DDL,DML语句,这些语句用一种特殊的格式表达,叫作逻辑变更记录(Logical Change Record, LCR). 一个LCR对应一个原子的行变更,因此源数据库上的一个DML语句,可能对应若干个LCR记录。这些LCR会保存到Sourece Database 的本地发送队列中。然后传播进程(Propagation Process)把这些记录通过网络发送到Target Database的接收队列。在Target Database上会有一个应用进程(Apply Process),这个进程从本地的接收队列中取出LCR记录,然后在本地应用,实现数据同步
2. 前期规划的几点:
1). 确定复制集:如是数据库级还是表级
2). 决定复制站点
3). 决定LCR是本地捕获还是下游捕获
本地捕获:在源数据库进行,从联机日志和归档日志获得LCR
下游捕获:在目标数据库进行,从归档日志获得LCR.
本地捕获可以保护更多的数据,但是会占用源数据库的资源。
4). 决定复制拓扑结构:这时要决定复制数据库的用途,是只用于预防灾难,还是平时保持空闲,或允许用户使用。
3.Streams Replication 实例
3.1 准备工作:
源数据库是grop,目标数据库是h10g;
源主机IP是:192.168.2.111
目标主机IP是:192.168.2.222
第一步:进行Stream前的参数配置,Source和Dest机器上均运行,运行命令可完全一致
alter system set aq_tm_processes=2 scope=both;
alter system set global_names=true scope=both; #默认为false, Database Link 使用的是数据库的global_name。
alter system set job_queue_processes=20 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=200M scope=spfile;
注意:streams_pool_size一定要够大,因为如果启用了SGA_TARGET,ORACLE可能分配很少内存给stream导致大量信息被spill到磁盘导致查询DBA_APPLY,DBA_CAPTURE,DBA_PROPGATION全部状态ENABLED但就是没有数据被同步。
说明:streams_pool_size在生产环境中最好>200m
alter system set utl_file_dir='*' scope=spfile;
alter system set open_links=4 scope=spfile;
alter system set log_archive_dest='/u01/arch' scope=spfile;
alter system set log_archive_start=TRUE scope=spfile;
alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile;
3.2查看系统归档状态
(双机可以同时检查,检查方式完全一致)
1. SQL> alter system set
log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
2.关闭数据库
SQL> shutdown immediate
3.启动数据mount状态:
SQL> startup mount;
4、修改数据库为归档模式:
SQL> alter database archivelog;
5、打开数据库,查询:
SQL> alter database open;
6、查看归档模式
SQL> archive log list;
3.3创建Stream用户和表空间
(双机可以同时设置,设置方式完全一致)
注:不能使用默认的表空间.
#创建主环境的Stream专用表空间
create tablespace tbs_stream datafile '/u01/tbs_stream01.dbf' size 100m autoextend on next 100m maxsize 1000m
segment space management auto;
#将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;
/
3.4配置各自双方的数据库连接