错误数据涉及AQ队列维护的思考

本文详细解释了OracleDB的高级队列(AQ)的概念,包括系统架构、数据错误处理流程以及如何设计以避免错误数据积累。重点介绍了在处理AQ时需要注意的关键步骤,如停止触发器、限制Java线程访问、清理无用队列和恢复触发器等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

名词解释

AQ:Oracle DB的高级队列。用于解决多台服务读任务队列。
系统架构
enqueue dequeue
Tabletrigger ---> AQ <-------- Java Thread(多线程)
数据错误:
因为Trigger的业务逻辑或者源头的数据问题,导致大量的AQ生成,造成正常的数据消息排在队列后面。
后续使用AQ时注意:
a.处理错误数据的过程:
1.停 Trigger ,通过开关表或者 disable trigger.
2.限制Java Thread访问,因为Java Thread是类似long polling的方式,一直block等待消息,在 timeout后才断开。 通过停应用,或调整Thread的sleep时间,或者配置文件的开关。
3.truncate ta table。或者通过单独的procedure来消费无用的queue。
4.恢复trigger,恢复应用。
5.验证正确性。
b.设计:
1.Queue带优先级标志,这样可以通过逻辑消费掉无用的Queue。
2.Java Thread的控制开关,可以通过定时读取配置文件来刷新开关标志。便于维护或处理问题时,断开于数据库的长连接。
3.Trigger设置开关,便于堵住源头的数据进入AQ队列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值