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

何かと便利なStatspackレポートを生成するためのStatspackデータですが、エクスポートしてインポートすることで別サーバへデータを移行させることもでき、調査時などには役に立ちます。

Statspackをエクスポートする

まずはエクスポートの手順です。
通常の expコマンド にて下記のようにエクスポートすることが可能です。spuexp.par というエクスポートのパラメータを指定する必要があります。

$ exp userid=perfstat/[パスワード] parfile=$ORACLE_HOME/rdbms/admin/spuexp.par statistics=none

Export: Release 11.2.0.1.0 - Production on 木 9月 25 14:05:16 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


接続先: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
UTF8キャラクタ・セットおよびAL16UTF16 NCHARキャラクタ・セットでエクスポートを実行します
サーバーではJA16EUCキャラクタ・セットを使用します(キャラクタ・セットの変換可能)
. プリスキーマ・プロシージャ型オブジェクトとアクションをエクスポート中
. ユーザーPERFSTATの外部関数ライブラリ名をエクスポート中
. PUBLICタイプのシノニムをエクスポート中
. プライベート・タイプのシノニムをエクスポート中
. ユーザーPERFSTATのオブジェクト型定義をエクスポート中
PERFSTATのオブジェクトをエクスポートします...
. データベース・リンクをエクスポート中
. 順序番号をエクスポート中
. クラスタ定義をエクスポート中
. PERFSTATの表をエクスポートします... 従来型パス経由...
.. 表          STATS$BUFFERED_QUEUESをエクスポート中          0行エクスポートされました。
.. 表     STATS$BUFFERED_SUBSCRIBERSをエクスポート中          0行エクスポートされました。
.. 表   STATS$BUFFER_POOL_STATISTICSをエクスポート中         20行エクスポートされました。
.. 表          STATS$CR_BLOCK_SERVERをエクスポート中          0行エクスポートされました。
.. 表     STATS$CURRENT_BLOCK_SERVERをエクスポート中          0行エクスポートされました。
.. 表        STATS$DATABASE_INSTANCEをエクスポート中          1行エクスポートされました。
.. 表          STATS$DB_CACHE_ADVICEをエクスポート中        415行エクスポートされました。
.. 表                 STATS$DLM_MISCをエクスポート中          0行エクスポートされました。
.. 表   STATS$DYNAMIC_REMASTER_STATSをエクスポート中          0行エクスポートされました。
.. 表       STATS$ENQUEUE_STATISTICSをエクスポート中       1880行エクスポートされました。
.. 表          STATS$EVENT_HISTOGRAMをエクスポート中      27212行エクスポートされました。
.. 表               STATS$FILESTATXSをエクスポート中        380行エクスポートされました。
.. 表           STATS$FILE_HISTOGRAMをエクスポート中       4060行エクスポートされました。
.. 表               STATS$IDLE_EVENTをエクスポート中        129行エクスポートされました。
.. 表  STATS$INSTANCE_CACHE_TRANSFERをエクスポート中          0行エクスポートされました。
.. 表        STATS$INSTANCE_RECOVERYをエクスポート中         20行エクスポートされました。
.. 表       STATS$INTERCONNECT_PINGSをエクスポート中          0行エクスポートされました。
.. 表          STATS$IOSTAT_FUNCTIONをエクスポート中        280行エクスポートされました。
.. 表     STATS$IOSTAT_FUNCTION_NAMEをエクスポート中         14行エクスポートされました。
.. 表         STATS$JAVA_POOL_ADVICEをエクスポート中         40行エクスポートされました。
.. 表                    STATS$LATCHをエクスポート中      10700行エクスポートされました。
.. 表           STATS$LATCH_CHILDRENをエクスポート中          0行エクスポートされました。
.. 表     STATS$LATCH_MISSES_SUMMARYをエクスポート中       2574行エクスポートされました。
.. 表             STATS$LATCH_PARENTをエクスポート中          0行エクスポートされました。
.. 表        STATS$LEVEL_DESCRIPTIONをエクスポート中          5行エクスポートされました。
.. 表             STATS$LIBRARYCACHEをエクスポート中        440行エクスポートされました。
.. 表     STATS$MEMORY_DYNAMIC_COMPSをエクスポート中        320行エクスポートされました。
.. 表        STATS$MEMORY_RESIZE_OPSをエクスポート中        141行エクスポートされました。
.. 表     STATS$MEMORY_TARGET_ADVICEをエクスポート中        140行エクスポートされました。
.. 表              STATS$MUTEX_SLEEPをエクスポート中        600行エクスポートされました。
.. 表                   STATS$OSSTATをエクスポート中        400行エクスポートされました。
.. 表               STATS$OSSTATNAMEをエクスポート中         20行エクスポートされました。
.. 表                STATS$PARAMETERをエクスポート中       7060行エクスポートされました。
.. 表                  STATS$PGASTATをエクスポート中        320行エクスポートされました。
.. 表        STATS$PGA_TARGET_ADVICEをエクスポート中        280行エクスポートされました。
.. 表    STATS$PROCESS_MEMORY_ROLLUPをエクスポート中       1620行エクスポートされました。
.. 表           STATS$PROCESS_ROLLUPをエクスポート中        420行エクスポートされました。
.. 表     STATS$PROPAGATION_RECEIVERをエクスポート中          0行エクスポートされました。
.. 表       STATS$PROPAGATION_SENDERをエクスポート中          0行エクスポートされました。
.. 表           STATS$RESOURCE_LIMITをエクスポート中         80行エクスポートされました。
.. 表                 STATS$ROLLSTATをエクスポート中        220行エクスポートされました。
.. 表         STATS$ROWCACHE_SUMMARYをエクスポート中       1100行エクスポートされました。
.. 表                 STATS$RULE_SETをエクスポート中         20行エクスポートされました。
.. 表                 STATS$SEG_STATをエクスポート中          0行エクスポートされました。
.. 表             STATS$SEG_STAT_OBJをエクスポート中          0行エクスポートされました。
.. 表            STATS$SESSION_EVENTをエクスポート中          0行エクスポートされました。
.. 表                  STATS$SESSTATをエクスポート中          0行エクスポートされました。
.. 表          STATS$SESS_TIME_MODELをエクスポート中          0行エクスポートされました。
.. 表                      STATS$SGAをエクスポート中         80行エクスポートされました。
.. 表                  STATS$SGASTATをエクスポート中        288行エクスポートされました。
.. 表        STATS$SGA_TARGET_ADVICEをエクスポート中        140行エクスポートされました。
.. 表       STATS$SHARED_POOL_ADVICEをエクスポート中        332行エクスポートされました。
.. 表                 STATS$SNAPSHOTをエクスポート中         20行エクスポートされました。
.. 表                  STATS$SQLTEXTをエクスポート中      40560行エクスポートされました。
.. 表                 STATS$SQL_PLANをエクスポート中          0行エクスポートされました。
.. 表           STATS$SQL_PLAN_USAGEをエクスポート中          0行エクスポートされました。
.. 表           STATS$SQL_STATISTICSをエクスポート中         20行エクスポートされました。
.. 表              STATS$SQL_SUMMARYをエクスポート中      39606行エクスポートされました。
.. 表   STATS$SQL_WORKAREA_HISTOGRAMをエクスポート中        280行エクスポートされました。
.. 表      STATS$STATSPACK_PARAMETERをエクスポート中          1行エクスポートされました。
.. 表        STATS$STREAMS_APPLY_SUMをエクスポート中          0行エクスポートされました。
.. 表          STATS$STREAMS_CAPTUREをエクスポート中          0行エクスポートされました。
.. 表      STATS$STREAMS_POOL_ADVICEをエクスポート中        400行エクスポートされました。
.. 表                  STATS$SYSSTATをエクスポート中      12080行エクスポートされました。
.. 表             STATS$SYSTEM_EVENTをエクスポート中       2457行エクスポートされました。
.. 表           STATS$SYS_TIME_MODELをエクスポート中        380行エクスポートされました。
.. 表               STATS$TEMPSTATXSをエクスポート中         20行エクスポートされました。
.. 表            STATS$TEMP_SQLSTATSをエクスポート中
.. 表                   STATS$THREADをエクスポート中         20行エクスポートされました。
.. 表      STATS$TIME_MODEL_STATNAMEをエクスポート中         19行エクスポートされました。
.. 表                 STATS$UNDOSTATをエクスポート中        971行エクスポートされました。
.. 表                 STATS$WAITSTATをエクスポート中        360行エクスポートされました。
. シノニムをエクスポート中
. ビューをエクスポート中
. ストアド・プロシージャをエクスポート中
. 演算子をエクスポート中
. 参照整合性制約をエクスポート中
. トリガーをエクスポート中
. 索引タイプをエクスポート中
. ビットマップ、ファンクションおよび拡張可能索引をエクスポート中
. ポスト可能なアクションをエクスポート中
. マテリアライズド・ビューをエクスポート中
. スナップショット・ログをエクスポート中
. ジョブ・キューをエクスポート中
. リフレッシュ・グループと子をエクスポート中
. ディメンションをエクスポート中
. ポストスキーマ・プロシージャ型オブジェクトとアクションをエクスポート中
. 統計をエクスポート中
エクスポートは警告なしで正常終了しました。

これでダンプファイル『spuexp.dmp』とログファイル『spuexp.log』がカレントディレクトリに出力されているはずですので確認してみます。

$ ls -lhtr | grep spu
-rw-r--r-- 1 oracle oinstall 9.8K  9月 25 14:05 spuexp.log
-rw-r--r-- 1 oracle oinstall  20M  9月 25 14:05 spuexp.dmp

Statspackをインポートする

続いてインポートする手順です。 このままインポートしては制約でエラーが発生してしまいますので、いろいろと制約を無効化する必要があります。

こんな感じでエラーがでます。

. . 表 "STATS$BUFFER_POOL_STATISTICS"をインポートしています
IMP-00019: Oracleエラー2291により、行のインポートは拒否されました
IMP-00003: Oracleエラー2291が発生しました。
ORA-02291: 整合性制約(PERFSTAT.STATS$BUFFER_POOL_STATS_FK)に違反しました - 親キーがありません

参照制約を無効化するSQLと有効化するSQLを作成するSQLファイルを作成します。

$ vi alter_const.sql
set echo off
set feedback off
set pagesize 0
set linesize 200

spool dis_const.sql
prompt set echo on
prompt set termout on
prompt set feedback on
prompt spool dis_const.log
select 'alter table ' || table_name
|| ' disable constraint '
|| constraint_name || ';'
from user_constraints
where constraint_type='R';
prompt spool off
spool off

spool en_const.sql
prompt set echo on
prompt set termout on
prompt set feedback on
prompt spool en_const.log
select 'alter table ' || table_name
|| ' enable constraint '
|| constraint_name || ';'
from user_constraints
where constraint_type='R';
prompt spool off
spool off

作成したSQLファイルを実行して制約変更SQLファイルを作成します。

$ sqlplus perfstat/pafpaf
SQL> @alter_const.sql

dis_const.sql と en_const.sql という2つのファイルが作成されているはずですので、事前にStatspackの全データを削除して dis_const.sql を実行して参照制約を無効化させます。

$ sqlplus perfstat/pafpaf
SQL> @?/rdbms/admin/sptrunc.sql
begin_or_exitに値を入力してください: [エンターキー]
SQL> @dis_const.sql
SQL> exit

これでようやく準備が整いました
ダンプファイルからインポートします。

$ imp perfstat/[パスワード] file=spuexp.dmp log=spuimp.log ignore=y

最後に制約を有効化すれば完了です。

$ sqlplus perfstat/[パスワード]
SQL> @en_const.sql
SQL> exit

インポート途中でちょいとエラーが出ます。
問題なくインポートされているようですが気持ちが悪いですね‥ ちょっと調査してみたいと思います。

コメントを残す

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