我们在 RHEL 5.4 64 位上运行 Oracle。我们最近从 10.2.0.1 升级到了 10.2.0.4。升级过程中生成了许多错误(下面从 trace.log 中列出了示例),但在之后的应用程序测试期间一切似乎都很好(清除 EXP、插入、更新、删除等)。这些错误看起来都与高级队列表和视图有关。我们根本没有使用复制,这是一个简单的单实例数据库。
ORA-24002: QUEUE_TABLE SYS.AQ_EVENT_TABLE does not exist
ORA-24032: object AQ$_AQ_SRVNTFN_TABLE_T exists, index could not be created
ORA-24032: object AQ$_ALERT_QT_S exists, index could not be created for queue
ORA-06512: at "SYS.DBMS_AQADM_SYSCALLS", line 117
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 5116
这是否值得担心?如果是,我该如何清理/重新创建损坏和/或丢失的对象?
答案1
我的建议是不要忽视它。
最近,我从解释型 PL/SQL 更改为本机编译型 PL/SQL 后遇到了与 AQ 相关的问题。我的 AQ 表混乱不堪,数据字典也出现损坏。我们的产品没有明确使用任何 AQ 功能,但 Oracle 似乎确实在其某些功能中使用了它。
我们面临的主要问题是,我们无法使用 DataPump 导出,因为它们因 AQ 相关错误而崩溃。此外,OEM 对这个数据库的访问非常不稳定。所有用户操作似乎都正常。
如果您检查警报日志,您可能会收到一些奇怪的 ORA-600,这是由于 AQ 子系统不可用造成的。
我的建议是向 Oracle 提交 SR,然后从那里开始。他们可以为您提供一个未发布的程序,用于删除并重新创建 AQ 表。如果您没有任何数据字典损坏,这应该很简单……但请确保您有能力承受一些停机时间,因为他们的程序无法在用户登录时运行。还要确保您有一些好的备份 - 由于所有这些原因,我们最终不得不回滚 1 周(幸运的是只是一个 Dev 数据库)。