下級エンジニアなのでStandard Editionを使用しています。
Enterprise EditionかつDiagnostics Packとかないので
AWRとかは使えません。ということで仕方なくStatspackをインストールしました。
また別のDB構築時に使うと思うのでメモみたいな感じで残します。
環境
Azure
Windows Server 2016
Oracle Database 12c Standard Edition 12.2.0.1.0 - 64bit Production
30150416パッチと30268021パッチを適用しています。
インストール準備
sysdbaでログイン
sqlplus / as sysdba
Statspack用の表領域を作成する。サイズはとりあえず300Mで作成しました。
※デフォルトだとSYSAUX表領域へ書き込まれてしまうため
create tablespace STATSPACK datafile 'V:\oracle\hoge\statspack.dbf' size 300M autoextend on next 100M segment space management auto;
##インストール
sysユーザーでログインします。
sqlplus sys/pass as sysdba
Statspackのインストールはsysdbaでログインした状態で以下のコマンドを実行する。
@?
は自動で{ORACLE_HOME}に変換されます。
@?/adbms/admin/spcreate.sql
コマンドを打った後、パスワード、デフォルト表領域、一時表領域を聞かれますので入力します。
perfstat_passwordに値を入力してください:
PERFSTATユーザーが作成されるので、パスワードは適当に入力します。
default_tablespaceに値を入力してください:
インストール準備で作成したSTATSPACK表領域を割り当てるのでSTATSPACKと入力します。
temporary_tablespaceに値を入力してください:
一時表領域はTEMPのままなのでそのままTEMPと入力します。
ずらーっと実行されてエラーはありませんと表示されるとStatspackのインストールは完了です。
Statspackのインストール後設定
DBMS_SHARED_POOLをインストール
@?/rdbms/admin/dbmspool.sql
@?/rdbms/admin/prvtpool.plb
有効になっているか確認
DBMS_SHARED_POOLがVALIDなっていればOK。
select object_name,status from dba_objects where object_name='DBMS_SHARED_POOL';
スナップショットの取得
手動で取得
スナップショット取得は以下のコマンドで取得出来ます。
execute statspack.snap
レベルを指定していないので、レベル5で取得されます。
レベルを指定する場合は以下のコマンドを実行します(推奨は7)
execute statspack.snap(i_snap_level => 7)
PL/SQLプロシージャが正常に完了しました。と表示されると取得が正常に出来ています。
間隔を指定して自動取得する
自動取得用のSQLを実行する。
@?/rdbms/admin/spauto.sql
ジョブIDを確認する。
インストールしたばかりならジョブIDは1のはず。
select job, what from dba_jobs;
2時間毎
execute dbms_job.interval(<ジョブID>, 'sysdate+(1/12)');
1時間毎(デフォルト)
execute dbms_job.interval(<ジョブID>, 'sysdate+(1/24)');
30分毎
execute dbms_job.interval(<ジョブID>, 'sysdate+(1/48)');
自動取得を停止する
execute dbms_job.remove(<ジョブID>);
レポートの出力
@?/rdbms/admin/spreport.sql
begin_snapとend_snapが聞かれるのでリストから選択して番号を入力する。
begin_snapとend_snapの入力後、出力ファイル名を入力する。
ファイルはカレントディレクトリに出力されます。
※コマンドプロンプトを開いてすぐにログインしていた場合はC:\Users\hoge みたいな感じ
参考URL
Statspackのレポートの見方は以下のサイトを参考にして見ています。
Oracle|Statspackの見方(解析方法