oracle流复制实例,配置Oracle 10g 双向流复制

构建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的大小

到一个合理值以避免过多的缓存队列溢出到磁盘上。

logo.gif

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值