[原创]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4658 | 回复: 0   主题: [原创]        下一篇 
jun.zhang
注册用户
等级:上士
经验:278
发帖:76
精华:0
注册:2011-12-27
状态:离线
发送短消息息给jun.zhang 加好友    发送短消息息给jun.zhang 发消息
发表于: IP:您无权察看 2011-12-27 12:24:56 | [全部帖] [楼主帖] 楼主

章主要介绍对“当为下列控制暂停状态的时候解决数据流的捕获”,这个问题的一些解决办法

这种警告往往出现在目标site无法很快的与源stream同步,在10中,它是自动启动的,为的是减少事件进入排队区的比率。

如果有Streams AQ出现的话,而又不是FLOWCONTROl的状态,那就应该不会是该问题。

这里介绍的是实现一下的控制(仅对9.2 source)。当缓存查询超过阀值内存,也叫溢出,Stream会将这些信息写入磁盘,这样Stream不再会对内存中队列进行优化,所以最大限度减少溢出是流量控制的的一种控制形式。

在9i中用一个心跳表。其作用是确保事实更新元数据也对Stream复制提供一个快速的反馈。在oracle 10g 源数据库和目标数据库stream控制为自动,但如果结合9iR2使用,必须手动控制9iR2 source site。

     我们要从一些视图信息查看一些状态信息。主要有一下几点

a)       HC脚本会显示捕获状态和捕捉的一个具体统计

用此语句查看:SELECT CAPTURE_NAME, STATE FROM V$STREAMS_CAPTURE;

b)V$BUFFERED_SUBSCRIBERS可能显示太多的浏览信息

     在V$BUFFERED_PUBLISHERS;中可以显示以下信息

* the queue owner and name
* the number of messages that have been enqueued, but not browsed
* the number of messages that have been spilled, but not browsed
* the percentage of the streams pool that is being used (or 0 if there is no streams pool)
* the state of the publisher. Possible values are:
- PUBLISHING MESSAGES (normal)
- IN FLOW CONTROL: TOO MANY UNBROWSED MESSAGES
- IN FLOW CONTROL: OVERSPILLED MESSAGES
- IN FLOW CONTROL: INSUFFICIENT MEMORY AND UNBROWSED MESSAGES


c)传播时可能会有ORA-25307的错误

以一个HC(Health Scripts)为例,运行过后抛出ORA-25307的错误,原因是排队率过高,原因是捕获过程中排队LCRS是因为内存不足,或者就是因为发出的信息比捕获信息要慢。

原因可以归结为一下几点:

1)  INIT.ORA参数中stream pool太小或者没有设置

2)  AQ_TM_PROCESSES参数过高

3)  捕获参数没有正确的设置

4)  太多的队列信息被浏览

5)  由于长期运行的事物,捕获较慢引起的高延迟

6)  检查应用延迟,就是从dba_apply_process中查看。

7)  长期运行的事物

8)  一些已知的bug

9)  为特定的数据库版没有找到适当补丁

10)服务器捕获进程更新,但是客户端没有更新

解决的办法如下:

1)  更改INIT.ORA设置为大于200MB最佳

2)  降低AQ_TM_PROCESSES参数值

3)  正确的配置捕获参数,例如从新启动捕获进程,然后再实行捕捉,如果有大量的内存操作,可以设置 _SGA_SIZE相关的参数

4)  如果有太多的未被浏览的信息,那就很有可能是传播过程中出现问题可以如下解决

1、  具体通过DBMS_CAPTURE_ADM.STOP_CAPTURE进行流量控制

2、  用DBMS_PROPAGATION_ADM.STOP_PROPAGATION停止传播

3、  检查DBA_QUEUE_SCHEDULES / DBA_PROPAGATION,确保传播进程,如果不用就是用kill -9杀掉操作系统的进程

4、  设置JOB_QUEUE_PROCESSES为0,等待几分钟过,确保CJQ进程和其他J进程都消失(OS下),然后再将JOB_QUEUE_PROCESSES设置成原来的值。

5、  用HC脚本

6、  使用DBMS_PROPAGATION_ADM.START_PROPAGATION开始传播

7、  检查DBA_QUEUE_SCHEDULES / DBA_PROPAGATION,确保开始的传播和它相相关的J进程。

8、  检查DBA_QUEUE_SCHEDULES列的TOTAL_NUMBER,TOTAL_BYTES ...如果有传播的话,这列值将会不断改变。

请联系Oracle支持工作,进一步诊断ORA-25307的错误




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论