0

次のクエリを実行すると、データベースサーバーがクラッシュする理由を理解するのに助けが必要です。

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です。
  • データベースはOracle10gです
  • CLOBのXMLは整形式です

上記のPLSQLに、データベースのフリーズを回避するために変更できる明らかなものがない場合、これらのタイプのクエリによるクラッシュを回避するためにサーバーまたはデータベースを微調整する方法/方法について誰かが考えていますか?

考えられる解決策やアドバイスは高く評価されています、ありがとう!

4

2 に答える 2

1

あなた(またはあなたのDBA)は、何が起こっているかの詳細について、アラートログとトレースファイルを調べる必要があります。壊滅的なOracleエラーが発生した場合は、クラッシュしたプロセスのトレースファイルを書き込む 必要があります。

また、すべてのレベルでNLS設定/DB文字セットを確認してください。私はかつて、DB文字セットを変更することで解決した、あなたの説明と表面的に類似した状況がありました。

別のマシンの別のユーザー(OSおよびDBユーザー)が同じクエリを試行するとどうなりますか?

DBAにブロックの破損をチェックさせます。DBブロックをダンプして、奇数文字がないか確認します。

そして、あなたが見つけたものを私たちに知らせてください。これは私にとって興味深いことです。

于 2012-07-18T01:41:44.780 に答える
0

Oracle 11gにアップグレードすると、問題が解決しました。11gは10gよりも効率的にXML操作を処理し、障害もはるかにうまく処理します。

Oracleフォーラムの別の人が、さまざまなXML操作を使用して同様の結論を出しているため、ここではアップグレードが適切なソリューションであると考えるのが安全でしょう。

于 2012-07-19T00:47:10.353 に答える