用于提取XML Clob的SQL导致Oracle 10g数据库冻结

时间:2012-07-18 00:16:13

标签: sql xml oracle oracle10g

当我执行以下查询时,我需要帮助找出数据库服务器崩溃的原因:

SELECT T.COLLECTION_ID, T.CYCLE_ID, T.PHASE_ID, EXTRACT(T.XML_DOCUMENT, '/') 
FROM THINGS T
WHERE T.COLLECTION_ID = 1668 AND T.CYCLE_ID = 26601 AND T.DELETED = 0 
ORDER BY T.COLLECTION_ID, T.CYCLE_ID, T.PHASE_ID

其他详情:

  • 此记录的上述XML_DOCUMENT列中的CLOB为780kb
  • 数据库是Oracle 10g
  • CLOB中的XML格式正确

如果上面的PLSQL中没有任何明显的东西可以更改以避免冻结数据库,那么是否有人对如何/如果我可以调整我的服务器或数据库以避免一般的这些类型的查询崩溃有任何想法?

任何可能的解决方案或建议都非常有价值,谢谢!

2 个答案:

答案 0 :(得分:1)

您(或您的DBA)需要查看警报日志和跟踪文件,以获取有关正在发生的事情的详细信息。任何灾难性的Oracle错误应该为崩溃的进程写一个跟踪文件。

同时检查所有级别的NLS设置/数据库字符集;我曾经遇到过与你的描述有些肤浅相似的情况,我通过更改数据库字符集来解决这个问题。

如果另一台计算机上的其他用户(操作系统和数据库用户)尝试相同的查询,会发生什么?

让DBA检查块损坏。转储DB块并检查奇数字符。

请告诉我们您的发现;这对我很有意思。

答案 1 :(得分:0)

升级到Oracle 11g已经解决了我们的问题。 11g比10g更有效地处理XML操作,并且更好地处理故障。

Another person on Oracle forums使用不同的XML操作得出了类似的结论,因此可以安全地假设升级是适当的解决方案。

相关问题