山岡 (2011年11月18日 19:31) 産業システム部 / システム開発事業部 / Oracle
「共有プールのキャッシュを消したい!!でもどうすれば...」
そんな経験に出くわしたことはありませんか?
24時間365日長期運用を行なっているシステムや、 多種多様なSQLがガンガン実行されるシステムに携わっていると、 稀に共有プール内のメモリ断片化の影響でパフォーマンスが著しく低下することがあります。 そんなときはどうすればよいでしょう?
もっとも簡単な方法はキャッシュをクリアしてクリーンな状態にすることです。 もちろん、クリーンな状態になるので、共有プール内で保持していたSQLの解析結果はなくなってしまいます。 再度システムを運用していって、共有プールに情報を蓄積していかなくてはなりません。 その点が考慮すべき箇所になりますので、ある意味最後の手段かもしれませんが、 パフォーマンスがどうしようもないときの切り札の1つとしては知っておいて損はありません。
そんな"おまじない"がこちらです。
> ALTER SYSTEM FLUSH SHARED_POOL;
とても簡単ですね。 えてして最後の切り札というものはシンプルなものです。
ちなみにもう少し補足すると、SQL*PlusでSYSでログインして実行します。 実行後は、データベースを再起動する必要はありません。 Oracle10gから使うことができます。
【Oracle】共有プールのキャッシュを消したい!!でもどうすれば...
山岡 (2011年11月18日 19:31)
産業システム部 / システム開発事業部 / Oracle
「共有プールのキャッシュを消したい!!でもどうすれば...」
そんな経験に出くわしたことはありませんか?
24時間365日長期運用を行なっているシステムや、
多種多様なSQLがガンガン実行されるシステムに携わっていると、
稀に共有プール内のメモリ断片化の影響でパフォーマンスが著しく低下することがあります。
そんなときはどうすればよいでしょう?
もっとも簡単な方法はキャッシュをクリアしてクリーンな状態にすることです。
もちろん、クリーンな状態になるので、共有プール内で保持していたSQLの解析結果はなくなってしまいます。
再度システムを運用していって、共有プールに情報を蓄積していかなくてはなりません。
その点が考慮すべき箇所になりますので、ある意味最後の手段かもしれませんが、
パフォーマンスがどうしようもないときの切り札の1つとしては知っておいて損はありません。
そんな"おまじない"がこちらです。
とても簡単ですね。
えてして最後の切り札というものはシンプルなものです。
ちなみにもう少し補足すると、SQL*PlusでSYSでログインして実行します。
実行後は、データベースを再起動する必要はありません。
Oracle10gから使うことができます。