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

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

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

  2. Oracle

    [TNS-00525: 操作するには権限が不十分です] リスナーが起動できないときの対処方法

    CentOS 6のサーバにOracleを入れたり消したりしていたらリス…

  3. Oracle

    Oracle:impdpでexcludeを使ってテーブルを除外する

    Oracle DBの impdp コマンドで、excludeオプション…

  4. Oracle

    アーカイブログを削除する方法

    アーカイブログ・モードの時にガンガン作成されるアーカイブログ・…

  5. Oracle

    expdpで一貫性(整合性)を維持してバックアップする方法

    Oracleのexpdpコマンドでデータの整合性を維持した一貫性バック…

コメント

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

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

最近の記事

  1. RHELでphp mbstringをyumインストールする方…
  2. Red Hat Subscription Managerでプ…
  3. Oracleで統計情報を別のユーザー(スキーマ)に移行する方…
  4. 【CentOS 7】HISTIGNOREで指定してもhist…
  5. ColdFusion 2016をCentOS 7にインストー…
PAGE TOP