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
推荐设置为1,default为5。job queue的scan的频率(单位为秒)。11g已经利用schedule控制job queue,此参数可以不做调整。
2、COMPATIBLE = 10.2.0
该参数设置为10.2.0,Streams环境可以利用到10g Release 2的新特性。
3、GLOBAL_NAMES =true
为了能够使Streams复制能够在各个数据库共享信息,建议把Streams环境中数据库的这个参数都设置为true。
4、JOB_QUEUE_PROCESSES=4
指定每个实例job queue进程的Jn(J000 ... J999). 该参数在有传播进程的实例上至少设置为2,我们应该把参数设置为实例上能够最多同时运行的job数量+2。
5、SGA_TARGET >0 Default: 0 (SGA autotuning is enabled)
sga_target设置为非零值(动态管理内存)+streams_pool_size>=200(最小值)。如果streams_pool_size=0,Streams将从shared_pool_size中占用10%的空间。
6、TIMED_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、把capture和apply放在各自单独的queue中
对于捕获和应用在同一个数据库中的情况,建议把capture和apply放在各自单独的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_CAPTURE的applied_scn是否在不断变化可以判断捕获进程是否正常工作,我们可以把这个视图的applied_scn信息和对应的目标库定期的输出到监控表来监控捕获进程。
3. Perform. periodic maintenance
A. checkpoints信息默认在SYSAUX tablespace进行维护. 捕获参数checkpoint_retention_time(default = 60 days)决定了checkpoint信息的保存量的大小,每次清理checkpoint记录的同时修改捕获进程视图中FIRST_SCN,FIRST_SCN记录的是最早的捕获进程记录。我们可以用dbms_capture_adm.alter_capture修改checkpoint_retention_time参数来减少checkpoint信息保留周期。在安装stream环境初期可以把checkpoints信息默认表空间移动到用户定义的标空间。
B. 在创建或者REBUILD STREAM进程的时候,执行DBMS_CAPTURE.BUILD命令可以把数据字典当前信息DUMP到REDO,减少创建或者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_name,NAME列保存QUEUE的服务名, network列保存了当前QUEUE的网络名。DBA_QUEUE_TABLES保存了QUEUE TABLES的OWNER INSTANCE相关信息。切换OWNER INSTANCE:
exec DBMS_AQADM.ALTER_QUEUE_TABLE(queue_table=>'QUEUE_TABLE',
primary_instance=>1, secondary_instance=>2);
如果用maintain_(TABLE,SCHEMA,GLOBAL)过程配置STREAM,queue_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_queue为TRUE. 重建的时候要确认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/