【Oracle】統計情報のバックアップとリカバリの方法

Oracleの統計情報をユーザー単位でバックアップする方法と、バックアップファイルからリカバリする方法です。バックアップには旧来のexpコマンドを利用します。(expdpではないです)

今回は対象のDBユーザーを dbhoge とし、保存用のテーブルを SAVE_STATS_HOGE としています。

またテーブル単位でのバックアップとインポートは下記で紹介中です。

[clink url=”http://www.steponboard.net/oracle/576/”]

全ての統計情報をバックアップする

全ての統計情報をバックアップし、ファイルとして出力します。

# su - oracle
$ sqlplus sys as sysdba

SQL> exec DBMS_STATS.DROP_STAT_TABLE (ownname => 'DBHOGE',stattab => 'SAVE_STATS_HOGE');
SQL> exec DBMS_STATS.CREATE_STAT_TABLE('DBHOGE', 'SAVE_STATS_HOGE');
SQL> exec DBMS_STATS.EXPORT_SCHEMA_STATS('DBHOGE', stattab =>'SAVE_STATS_HOGE');
SQL> quit

$ exp dbhoge/dbhoge_pass@orcl file=>(gzip > /tmp/stat_table.exp.gz ) tables=SAVE_STATS_HOGE statistics=none

これで stat_table.exp.gz というバックアップファイルが出力されます。

バックアップファイルからインポートする

出力されたバックアップファイルから統計情報をインポートします。

# su - oracle
$ sqlplus sys as sysdba

// 既にバックアップ用に作成された統計情報テーブルが存在していれば事前に削除
SQL> exec DBMS_STATS.DROP_STAT_TABLE (ownname => 'DBHOGE',stattab => 'SAVE_STATS_DBHOGE');
SQL> quit

// impコマンドから統計情報テーブルをインポート
$ imp dbhoge/dbhoge_pass@orcl file=<(gunzip -c /tmp/stat_table.exp.gz) IGNORE=Y FULL=Y

$ sqlplus sys as sysdba

// バックアップ用の統計情報テーブルから統計情報をインポート(事前に削除してから)
SQL> EXECUTE DBMS_STATS.DELETE_SCHEMA_STATS('DBHOGE');
SQL> exec DBMS_STATS.IMPORT_SCHEMA_STATS(ownname => 'DBHOGE' ,stattab => 'SAVE_STATS_DBHOGE');
SQL> quit

これで完了です。

コメントを残す

メールアドレスが公開されることはありません。