Oracle

  (最終更新日:2018.01.12)

Oracleで統計情報を別のユーザー(スキーマ)に移行する方法

Oracleでは統計情報のバックアップやインポートが可能ですが、別のユーザー(スキーマ)のDBに入れるとなると正攻法では不可となっていました。例えば本番ではユーザー hoge に対して、開発用DBでは hoge_deve になってる場合に統計情報を移行したいというシチュエーションです。

そこで今回、いろいろ試行錯誤してみたら上手く移行できたのでその方法をメモ的に残しておきたいと思います。

ただあくまで「開発環境などへの移行目的」として紹介していますので、本番での利用はおすすめしません。。。

統計情報をエクスポートする

まずは元DBから統計情報をエクスポートします。

# su - oracle
$ sqlplus sys as sysdba
SQL> exec DBMS_STATS.CREATE_STAT_TABLE('USER1', 'SAVE_STATS_USER1');
SQL> exec DBMS_STATS.EXPORT_SCHEMA_STATS('USER1', stattab =>'SAVE_STATS_USER1');
SQL> quit

統計情報を格納したテーブルからエクスポートします。

$ exp user1/user1_pass@orcl file=>(gzip > /tmp/stat_table.exp.gz ) tables=SAVE_STATS_USER1 statistics=none

統計情報をインポートする

続いて移行先のDBサーバにログインして統計情報をインポートします。
先ほど取得したバックアップは事前にアップロードしといてください。

$ imp user2/user2_pass@orcl file=<(gunzip -c /tmp/stat_table.exp.gz) IGNORE=Y FULL=Y

続いてSQLコマンドで統計情報を仮インポートしているテーブルのデータをアップデートしておきます。これが異なるユーザーに移行する際に必要な作業です。

update SAVE_STATS_USER1 set C5 = 'USER2'

あとは仮テーブルから統計情報をインポートします。

$ sqlplus sys as sysdba
SQL> EXECUTE DBMS_STATS.DELETE_SCHEMA_STATS('USER2');
SQL> exec DBMS_STATS.IMPORT_SCHEMA_STATS(ownname => 'USER2' ,stattab => 'SAVE_STATS_USER1');
SQL> exec DBMS_STATS.DROP_STAT_TABLE (ownname => 'USER2',stattab => 'SAVE_STATS_USER1');
SQL> quit

これで完了です。
無事に移行できたかどうか・・・・ 統計情報の状況を確認するSQLで確認してみてください。

-- テーブル用
SELECT TABLE_NAME NAME,LAST_ANALYZED FROM USER_TABLES order by NAME;

-- インデックス用
SELECT TABLE_NAME,INDEX_NAME,LAST_ANALYZED FROM USER_INDEXES order by TABLE_NAME,INDEX_NAME;

では。

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

関連記事

  1. Oracle

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

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

  2. Oracle

    最新のOpatchをダウンロードする方法

    Oracleから最新のOpatchをダウンロードする方法が非常に分かり…

  3. Oracle

    Statspackレポートを定期的(1日1回)に自動で作成する方法

    OracleのStatspackレポートを、自動で1日1回、1時間間隔…

  4. Oracle

    【Oracle】統計情報をCronで手動更新する為のスクリプト

    Oracleの統計情報を手動で(といってもCronの自動実行で)更新す…

  5. Oracle

    Linux版Oracle Database 11gの起動手順と停止手順

    すごく基礎的なことなんですが、Linux版のOracle Da…

  6. Linux

    LinuxカーネルパラメータSEMMNSとSEMMSLの値を確認する方法

    OracleでPROCESSESパラメータの値を変更する際には、OSカ…

コメント

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

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

最近の記事

  1. 【Apache】OpenSSL headers not fo…
  2. 【CentOS 7】yum updateがくっそ遅いときに試…
  3. Linux版のTomcat 9でWebアプリケーションマネー…
  4. CentOS 7でTomcat 9の起動スクリプトの作成と自…
  5. Warning: tomcat.service change…
PAGE TOP