2017-08-18 8 views
0

データベースoracle 11gの後に、プロセスdeleteの後にプロセスのoracleの削除処理が非常に遅い場合、サーバーを数回再起動しましたが、修正できませんでした。問題を解決してください。プロセスの削除とオラクルの削除の中断が非常に遅い

+0

あなたは何を削除しましたか? –

+0

テーブル内のデータを約25.000.000行だけ削除していますが、作業中のベリをキャンセルした後、このプロセスをキャンセルしました。 –

+0

deja vuはこの質問を繰り返し繰り返します;-) Oracleはトランザクションをロールバックしていました。あなたが一度サーバーの状態を確認していないかどうかわかりません – tbone

答えて

0

テーブルにデータがもうない場合は、truncateテーブルを作成してください。この句を使用すると、メモリがクリアされ、クエリが再び高速化されます。ここhttps://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10007.htm#SQLRF01707

TRUNCATE TABLE employees_demo; 

詳細同じ質問簡素化オーバーHow to stop oracle undo process?

+0

このプロセスが中止された後、サーバーが何度か再起動されましたが、助けになりませんでした –

+0

@AniSevanyanはい、わかりました。あなたのテーブルに問い合わせることはできますか? –

+0

はい、データベースは動作していますが、以前のバージョンと比較して遅い –

2

は:

あなたはdelete文をアボートし、Oracleは、すでに行の一部を削除作業の一部を行っていました。行を削除している間に、OracleはUNDOを保存していました。このUNDOは、マルチバージョンの並行性制御によって他のトランザクションから読み取ってコミットするまで使用され、ロールバックの場合に使用されます。

削除をアボートした場合、delete文はアトミックなので、OracleはUNDOを適用してそれらの行を表に戻す必要があります。それはすべて起こったか、何も起こらなかった。 UNDOを適用するのは比較的遅く、完了するまでリソースを使用します。その余分な作業はOracleを再起動しても終了しません.OracleはUNDOが完了するまでUNDOを適用します。

次のステップでは、リソースがUNDOの適用に費やされているかどうか、または低速に別の原因があるかどうかを調べることです。残念ながら、私はトラブルシューティングに役立つことはできません。

ロールバックの進行状況を確認する簡単な方法の1つは、このクエリを実行し、1分待ってから再度実行し、それを使用して数がゼロになるまでの分数を見積もることです。ロールバックが開始されたら、ロールバックを停止または改善する方法はありません。サーバーを再起動してプロセスを強制終了しても、処理が高速化されるわけではありません。その数が0になるまで待ち、行が消えるだけです。

select used_urec from gv$transaction; 
+0

もしそうなら、それはUNDOの後に修正されますか? –

+0

はい、UNDOを適用することが低速のソースである場合、完了したリソースは解放されます。 –

+0

そして、遅さの原因を確認する方法 –

関連する問題