Stream推荐安装---10gR2之一

 

10gR2 streams推荐安装配置

 

很多业务的实现都可以借助Oracle Streams复制来实现,数据复制,数据仓库,不同硬件平台的数据库移植等等。Streams复制可以实现从一个源库到多个目标库,多个源库到一个目标库的复制,源库和目标可以处在不同的硬件平台和版本,甚至可以工作在不同字符集下。Streams复制可以基于表级,可以基于用户级也可以基于整个数据库配置。

 

10gR2+stream推荐数据库安装版本为10204,推荐安装的patch: Note 437838.1

 

一、推荐数据库安装参数:

 

Source DB:

global_names

_job_queue_interval

sga_target

streams_pool_size

 

global_names建议设置为true

 

1_job_queue_interval

     推荐设置为1default5job queuescan的频率(单位为秒)。11g已经利用schedule控制job queue,此参数可以不做调整。

 

2COMPATIBLE = 10.2.0

     该参数设置为10.2.0Streams环境可以利用到10g Release 2的新特性。

 

3GLOBAL_NAMES =true   

     为了能够使Streams复制能够在各个数据库共享信息,建议把Streams环境中数据库的这个参数都设置为true   

 

4JOB_QUEUE_PROCESSES=4

     指定每个实例job queue进程的Jn(J000 ... J999). 该参数在有传播进程的实例上至少设置为2,我们应该把参数设置为实例上能够最多同时运行的job数量+2

 

5SGA_TARGET  >0  Default: 0 (SGA autotuning is enabled)

     sga_target设置为非零值(动态管理内存)+streams_pool_size>=200(最小值)。如果streams_pool_size=0Streams将从shared_pool_size中占用10%的空间。

    

6TIMED_STATISTICS(Default =Typical)

     STATISTICS_LEVEL设置为TYPICAL or ALL, TIMED_STATISTICS设置为true。视图 :

V$STREAMS_CAPTURE,  V$STREAMS_APPLY_COORDINATOR, V$STREAMS_APPLY_READER,

V$STREAMS_APPLY_SERVER将可以得到elapse time相关的统计数据。

 

 

 

 

二、数据库存储:

=======================================

1. Tablespace for Streams Administrator queues

----------------------------------------------

1、建议为Streams单独创建表空间,保留Streams相关的对象

 

2、把captureapply放在各自单独的queue

 

     对于捕获和应用在同一个数据库中的情况,建议把captureapply放在各自单独的queue,queue names的命名不要超过24个字符,queue table name不要超过18个字符。

   dbms_streams_adm.set_up_queue(queue_table_name='Q_CAP_A,queue_name=>'CAP_A', )

     dbms_streams_adm.set_up_queue(queue_table_name='Q_APP_FROM_B',queue_name=>'APP_FROM_B');

 

3、给Stream管理用户授权

 

     DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STRMADMIN');

 

 

三、源库捕获相关配置:

 

1、源库一定要处于归档方式

     追加日志(supplemental log)

     确认源库已经开启了追加日志,在10gR2如果创建复制环境,追加日志模式自动开启。

     DBMS_STREAMS_ADM 自动为本地捕获相关对象添加追加日志

 

     确认源库的追加日志模式:

 

     数据库级别:

     SELECT supplemental_log_data_pk, supplemental_log_data_ui FROM V$DATABASE;

 

     表级:

SELECT supplemental_log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk FROM dba_capture_prepared_tables UNION

     SELECT supplemental_log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk FROM dba_capture_prepared_schemas UNION

     SELECT supplemental-log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk FROM dba_capture_prepared_database;

 

     检查追加日志组:

     Select log_group_name, table_name, decode(always, 'ALWAYS', 'Unconditional',NULL, 'Conditional') ALWAYS from DBA_LOG_GROUPS

 

     检查追加日志组的列:

     Select log_group_name, column_name, position from dba_log_group_columns where table_name = 'DEPARTMENTS' and wner='HR';  

 

2. Implement a Heartbeat Table

 

     Stream进程在redo日志满10M后进行一次检查点操作,查看试图DBA_CAPTUREapplied_scn是否在不断变化可以判断捕获进程是否正常工作,我们可以把这个视图的applied_scn信息和对应的目标库定期的输出到监控表来监控捕获进程。

 

3. Perform. periodic maintenance

   A. checkpoints信息默认在SYSAUX tablespace进行维护捕获参数checkpoint_retention_time(default = 60 days)决定了checkpoint信息的保存量的大小,每次清理checkpoint记录的同时修改捕获进程视图中FIRST_SCNFIRST_SCN记录的是最早的捕获进程记录。我们可以用dbms_capture_adm.alter_capture修改checkpoint_retention_time参数来减少checkpoint信息保留周期。在安装stream环境初期可以把checkpoints信息默认表空间移动到用户定义的标空间。

 

   B. 在创建或者REBUILD STREAM进程的时候,执行DBMS_CAPTURE.BUILD命令可以把数据字典当前信息DUMPREDO,减少创建或者REBUILD STREAM过程产生的日志,该过程和DBMS_CAPTURE_ADM.PREPARE_(TABLE, SCHEMA, GLOBAL)_INSTANTIATION结合使用。

 

4. Capture Process Configuration

   A.  Configuring Capture

我们可以用DBMS_STREAMS_ADM.MAINTAIN_(TABLES,SCHEMA,GLOBAL,TTS) procedures 自动创建stream复制环境,MAINTAIN_TABLES中的TABLE_NAME参数可以为一个或者一个数组,该方法对于不同参数进行了重写;如果maintain_*过程不能满足需求可以利用ADD_*_RULES  来创建复制环境。为了提高性能,捕获规则要尽量简单,如果捕获规则包含类似LIKE等低效语句或者非常复杂将会降低stream复制的性能。

 

为了减少捕获日志,可以对于一些不必要的对象进行过滤,include_tagged_lcr inclusion_rule 2个参数可以结合把不必要的对象放在负的rule set

 

    B.  Parameters

        Set the following parameters after a capture process is created:

 

        PARALLELISM  Default: 1 

        Ensure that the appropriate supplemental logging has been configured

        at the source database before setting this parallelism parameter.

 

        _CHECKPOINT_FREQUENCY=1000  Default: 10 

        默认为挖掘10M日志,进行一次checkpoint.如果源库有非常频繁的lob或者ddl操作,或者日志产生量非常大,建议加大这个参数,减少checkpoint的频率

 

        _SGA_SIZE  Default: 10

        streams pool分配给logminer进程的内存,默认值10M,建议增大此参数,尤其是源库要处理大量lob字段的情况。如果源库出现ORA-1341错误则不要增加此参数了。

       

        修改参数示例脚本:

        dbms_capture_adm.set_parameter('capture_ex','_checkpoint_frequency','100');

 

5. Propagation Configuration

   A.  Configuring Propagation

       和捕获进程的创建一样可以利用maintain_*过程或者ADD_*__PROPAGATION_RULES过程进行传播进程的安装。ADD_*_PROPAGATION_RULES传播DML DDL, 如果只想传播DML语句可以利用 ADD_SUBSET_PROPAGATION_RULES进行配置。 传播进程添加对象的时候不进行语义检查,所以在添加传播对象的时候一定要注意要确保拼写正确。ADD_GLOBAL_PROPAGATION_RULES过程和ADD_TABLE_RULES might过程可以填加相同的对象,避免重复传播。

 

B.  Propagation mode

10.2以上版本可以设置queue_to_queue propagation传播.  如果源库为RAC 数据库,安装了捕获进程后,一个新的UQEUE服务将被创建,我们可以在DBA_SERVICES 视图找到类似如下一条数据format:sys$schema.queue_name.global_nameNAME列保存QUEUE的服务名, network列保存了当前QUEUE的网络名。DBA_QUEUE_TABLES保存了QUEUE TABLESOWNER INSTANCE相关信息。切换OWNER INSTANCE

exec DBMS_AQADM.ALTER_QUEUE_TABLE(queue_table=>'QUEUE_TABLE',

primary_instance=>1, secondary_instance=>2);

如果用maintain_(TABLE,SCHEMA,GLOBAL)过程配置STREAMqueue_to_queue参数资东北设置为TRUE,The database link for this queue_to_queue propagation must use a TNS

servicename (or connect name) that specifies the GLOBAL_NAME in the CONNECT_DATA clause of the descriptor. specify (CONNECT_DATA=(SERVICE_NAME='global_name of target database')). Do NOT include a specific INSTANCE in the CONNECT_DATA clause.

 

db.mycompany.com=

 (description=

  (load_balance=on)

   (address=(protocol=tcp)(host=node1-vip)(port=1521))

   (address=(protocol=tcp)(host=node2-vip)(port=1521))

  (connect_data=

     (service_name=db.mycompany.com)))

 

db1.mycompany.com=

 (description=

  (address=(protocol=tcp)(host=node1-vip)(port=1521))

  (connect_data=

    (service_name=db.mycompany.com)

    (instance_name=db1)))

 

db2.mycompany.com=

 (description=

  (address=(protocol=tcp)(host=node2-vip)(port=1521))

  (connect_data=

    (service_name=db.mycompany.com)

(instance_name=db2)))

 

    10.2以前版本创建的用queue_to_dblink方式的传播进程,如果数据库链路不能连接到owning instance of the queue, propagation will not succeed.  我们可以继续使用 10.1. best practices for this propagation, 或者重新创建传播进程并且设置queue_to_queueTRUE.  重建的时候要确认queue is empty没有unapplied spilled messages before you drop the propagation.

   Queues created prior to 10.2 on RAC instances should be dropped and recreated

in order to take advantage of the automatic service generation and queue_to_queue propagation.  Be sure to perform. this activity when the queue is empty and no new LCRs are being enqueued into the queue.

 

C.  Parameters

    LATENCY=5  Default: 60

     传播进程等待的时间,默认为60秒,为了提高传播性能,需要减小这个参数值。

 

  dbms_aqadm.alter_propagation_schedule('strmadmin.streams_queue','DEST_DB',

                                          destination_queue=>'Q1',latency=>5);

 

D.  Network Connectivity

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/756652/viewspace-442206/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/756652/viewspace-442206/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值