Home > Database > Mysql Tutorial > 配置Oracle 10g 双向流复制

配置Oracle 10g 双向流复制

WBOY
Release: 2016-06-07 17:09:40
Original
994 people have browsed it

构建Oracle双向流复制是一个十分复杂的过程,我写这个文档的目的是尽量有条理地列出所需做的工作,帮助DBA更有效的建设流复制环境

构建Oracle双向流复制是一个十分复杂的过程,我写这个文档的目的是尽量有条理地列出所需做的工作,帮助DBA更有效的建设流复制环境。

1.以scott模式为复制示例,一般只要在创建数据库时选择了安装sample schema,都会存在该scott模式;至少保证源库中存在该schema,以便可以初始化到目标库中。

2.在源和目标2个数据库中创建strmadmin流管理用户,当然你也可以选用其他名字。同时在2个库中都要创建streams使用的表空间,以便让logmnr使用它:

CREATE TABLESPACE streams_tbs DATAFILE 'XXXXXX' SIZE 100M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

/* 10g r2中logmnr默认使用SYSAUX表空间 */

exec DBMS_LOGMNR_D.SET_TABLESPACE ('streams_tbs');

/* 创建完表空间后,接着要创建strmadmin用户 */

CREATE USER strmadmin IDENTIFIED BY strmadmin
DEFAULT TABLESPACE streams_tbs
QUOTA UNLIMITED ON streams_tbs;

GRANT DBA TO strmadmin;

BEGIN
DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'strmadmin',
grant_privileges => true);
END;
/

/* 可以通过查询dba_streams_administrator视图检查用户是否正确授予流管理权限 */

SQL> SELECT * FROM dba_streams_administrator;

USERNAME                       LOC ACC
------------------------------ --- ---
MACLEAN                        YES YES
STRMADMIN                      YES YES

3.在2边数据库中都需要设置合理的实例初始化参数,我们以10g release2为例:

参数名与推荐值:_job_queue_interval = 1
描述:job的队列的扫描参数,默认为5,即5s扫描一次
出于何种考虑:设置较小的_job_queue_interval有利于propagation作业
如何设置:alter system set "_job_queue_interval"=1 scope=spfile; 

/* 注意scope=spfile的参数都需要重启实例方能生效 */

参数名与推荐值:COMPATIBLE>= 10.2.0.0
描述:数据库版本兼容性参数,以前介绍过,不再展开
出于何种考虑:10g release2的部分Streams新特性要求该参数至少为10.2.0.0或更高
如何设置:只有从较低版本升级到10g r2的数据库需要设置该参数,
alter system set compatible="10.2.0.0" scope=spfile;

参数名与推荐值:GLOBAL_NAMES=true
描述:指定是否要求database link名与数据库全局名一致,默认为FALSE也就是不需要一致
出于何种考虑:帮助我们准确识别database link和数据库的关系,避免误操作
如何设置:alter system set global_names=true scope=spfile;

参数名与推荐值:job_queue_processes>4
描述:指定了实例中job队列进程的数量(如J000…J999).
出于何种考虑:该参数控制了实例中能够并行运行的job的最大值,应设一个大于已配置的propagations
数量的值,同时也要考虑到可能还有其他数据库作业
如何设置:alter system set job_queue_processes=15;

参数名与推荐值:PARALLEL_MAX_SERVERS
描述:指定了实例中最大并行进程的数量
出于何种考虑:
在Streams环境中,capture进程和apply进程都会用到多个并行进程。
设置该初始化参数为适当值(10*CPU#)以保证总是有足够的可用并行进程;
每多一个capture或apply进程,则有必要为该参数+2再加上加入的capture或apply进程的并行度parallelism参数。
如何设置:
alter system set PARALLEL_MAX_SERVERS=40;

参数名与推荐值:REMOTE_ARCHIVE_ENABLE
描述:指定是否将归档日志传送到远程目的地
出于何种考虑:只有downstream capture时会用到,不展开

参数名与推荐值:SGA_MAX_SIZE
描述:设置合理的SGA内存最大值
出于何种考虑:常见参数,不展开

参数名与推荐值:SGA_TARGET=0
描述:disable掉10g中的Automatic Shared Memory Management.
出于何种考虑:Oracle推荐在stream环境中手动指定streams_pool和shared_pool的大小而不使用10g中的内存自动管理特性
如何设置:
alter system set sga_target=0;

参数名与推荐值:调优STREAMS_POOL_SIZE
描述:
为流池指定大小。流池包括了缓存的队列消息。此外,流池也会被用于并行capture和apply的内部通信。
建议参考V$STREAMS_POOL_ADVICE视图的信息判断最佳大小,避免spill溢出
出于何种考虑:
该参数可以动态修改。若该参数归零则实例中streams相关的进程和作业都将无法运行。流池的大小受到以下因素的影响:
1.capture进程的并行度,每增加一个capture进程有必要为流池增加10MB的大小;
此外当capture参数PARALLELISM大于1时,有必要为流池增加10Mb*parallelism的大小;
举例来说,若某capture进程的并行度parallelism设置为3,则需要为Streams池增加30Mb。
2.apply进程的并行度,每增加一个apply进程有必要为streams pool增加1MB;
此外当apply进程的并行度大于1时,,为streams pool增加1Mb*parallelism的大小;
举例来说某apply进程的parallelism被设置为5,则需要为streams池增加5Mb。
3.Logical Change Records(LCRS)被存储在buffered queues缓存队列中;
适当增加Streams pool大小以适应源库和目标库上数据复制的数据量;
Oracle建议在低负载的数据库上最小设置Streams pool为256Mb,而在活跃度高的OLTP环境中设置为500Mb;
通过V$STREAMS_POOL_ADVISE视图给出的建议进一步调整Streams Pool的大小
到一个合理值以避免过多的缓存队列溢出到磁盘上。

linux

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template