Oracle Databaseで、テーブルを指定して統計情報をバックアップし、またバックアップからインポートする際のメモです。
通常は統計情報の更新を停止させており、必要に応じてテーブル単位で統計情報を再取得するような運用のときに使えます。
現在の統計情報を確認する
まずは現在の統計情報を確認します。
対象のテーブルと関連するインデックスの統計情報があります。
今回の結果は下記のような感じ。
TABLE_NAME | LAST_ANALYZED_TABLE | INDEX_NAME | LAST_ANALYZED_INDEX |
---|---|---|---|
TABLE_A | 2015/01/08 22:48:54 | SYS_C0015113 | 2015/01/08 22:48:54 |
TABLE_A | 2015/01/08 22:48:54 | TABLE_A_INDEX99 | 2015/01/08 22:48:55 |
テーブルの統計情報をバックアップする
バックアップ用に統計情報を格納するテーブルを作成。
続いて EXPORT_TABLE_STATS で統計情報をバックアップしますが、この時、cascade オプションを TRUE に指定することで、関連するインデックスの統計情報も合わせてバックアップすることができます。
テーブルを指定して統計情報を更新する
テーブルを指定して、テーブルと関連するインデックスそれぞれの統計情報を一気に更新してみます。
統計情報を確認してみると確かに更新されています。
TABLE_NAME | LAST_ANALYZED_TABLE | INDEX_NAME | LAST_ANALYZED_INDEX |
---|---|---|---|
TABLE_A | 2015/09/24 14:09:25 | SYS_C0015113 | 2015/09/24 14:09:25 |
TABLE_A | 2015/09/24 14:09:25 | TABLE_A_INDEX99 | 2015/09/24 14:09:25 |
統計情報をバックアップからインポートする
ではいよいよ統計情報をバックアップから復元してみます。
まずは既存の統計情報を削除。インデックスの統計情報も削除されます。
続いてバックアップからインポートします。
cascade オプションを指定している(デフォルトでTRUE)ので、インデックスも復元されます。
確認してみると無事に復元されました。
めでたしめでたし。
TABLE_NAME | LAST_ANALYZED_TABLE | INDEX_NAME | LAST_ANALYZED_INDEX |
---|---|---|---|
TABLE_A | 2015/01/08 22:48:54 | SYS_C0015113 | 2015/01/08 22:48:54 |
TABLE_A | 2015/01/08 22:48:54 | TABLE_A_INDEX99 | 2015/01/08 22:48:55 |