この記事ではOracle Real Application Clusters(RAC)構成のOracle DBへSTATSPACKの設定をする際のチェックするポイントをご紹介いたします。
STATSPACKの導入と基本的な設定に関しては、以下の記事をご覧ください。
・「STATSPACK導入について」
RACにおけるSTATSPACK設定
ご紹介する設定は以下2点です。
・スナップショットレベルの設定
・spauto.sql スクリプトでのスナップショット自動取得設定
結論、RACへのSTATSPACK導入・設定をする際には各インスタンスにそれぞれ設定をしてあげなければなりません。(下図を参照)
この記事で想定するOracleの構成は以下の通りです。
・Oracle DB 19c ・RAC構成(2ノード) └SID#1:TESTRAC1 └SID#2:TESTRAC2 |
1 スナップショットレベルの設定
スナップショットレベルを7に設定します。
また、未だ何も設定をしていない時点を想定しています。
1.はじめにインスタンス#1にログインしていることを確認します。
SQL> select instance_name ,status from v$instance;
INSTANCE_NAME STATUS ----------------------- ------------ TESTRAC1 OPEN
|
2.スナップショットレベルを7に設定します。
SQL> execute statspack.modify_statspack_parameter(i_snap_level=> 7)
|
3. スナップショットレベルが7に設定されていることを確認します。
SQL> select instance_number ,snap_level from stats$statspack_parameter;
INSTANCE_NUMBER SNAP_LEVEL --------------------------- --------------- 1 7
|
<チェックポイント>
カラム「instance_number」を確認してインスタンス#1にしか設定されていないことを確認します。
4.インスタンス#2にログインし、同じ手順を実施します。
5.インスタンス#2でもスナップショットレベルが7に設定されていることを確認します。
SQL> select instance_number ,snap_level from stats$statspack_parameter;
INSTANCE_NUMBER SNAP_LEVEL --------------------------- --------------- 1 7 2 7
|
<チェックポイント>
インスタンス#2にログインして設定してあげることでインスタンス#2でも設定が有効になります。
2 spauto.sql スクリプトでのスナップショット自動取得設定
スナップショットレベルの設定と同様に、インスタンス#1、インスタンス#2それぞれにログインしてスクリプトを実行します。
実行後の設定は以下の通りです。
select instance,job ,next_date ,interval ,what from dba_jobs;
INSTANCE JOB NEXT_DATE INTERVAL WHAT ------------- ------ -------------------- ------------------------------------- ------------------------ 1 1 22-09-14 trunc(SYSDATE+1/24,'HH') statspack.snap; 2 21 22-11-02 trunc(SYSDATE+1/24,'HH') statspack.snap;
|
<チェックポイント>
カラム「instance」を確認してインスタンス#1と#2にそれぞれ設定されていることを確認します。
おわりに
このようにRAC環境でSTATSPACKの設定を行う際には、それぞれのインスタンスで手順を実施する必要があります。
本記事の内容がひとつの例として、皆さんの参考になれば幸いです。