Oracle

  (最終更新日:2017.07.14)

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

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

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

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



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

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

# 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

これで完了です。

スポンサーリンク
スポンサーリンク

関連記事

  1. Oracle

    OracleのセッションIDからOSのプロセスIDを調べる方法

    Oracleで障害調査を行いたいときなどに、sidからOSのプロセスI…

  2. Oracle

    Oracleで全てのテーブルやインデックスのCreate文を作成する方法

    Oracle で指定したユーザーが所有している全てのテーブルやインデッ…

  3. Oracle

    長時間動いているセッション(SQL)の情報を取得するSQL

    Oracleで長時間稼働している処理(SQL)の情報を取得するSQLが…

  4. Oracle

    [Statspackレポート] Statspackのエクスポートとインポートの手順

    何かと便利なStatspackレポートを生成するためのStatspac…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. PHP PhantomJSでFatal error: Unc…
  2. 【Oracle】DataPumpの対話式コマンドモードを抜け…
  3. CentOS7のPHP5.6にPhpSpreadsheetを…
  4. Azure仮想マシン(CentOS 7)のStandardデ…
  5. 【CentOS 7】特定ユーザーのクォータ設定を削除(無制限…
PAGE TOP