
- OS:Oracle Linux 9.7
- 導入製品:Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0
本記事では、Oracle Statspackの導入・インストール手順を実行ログ付きでまとめました。
- Oracle Statspackの概要
- Oracle Statspackのインストール手順
Oracle Statspackとは
Oracle Statspackは、Oracle AI Database/Oracle Databaseのパフォーマンス問題を調査・分析するための無料のツールです。
自動及び手動で統計情報の取得した時点(以下をスナップショットと呼ぶ)を活用して、2つのスナップショットで差分からパフォーマンスの調査・分析を行います。
インストール手順
Oracle Statspackのインストール手順は以下になります。
- PDBに接続
- 初期化パラメータの確認
- 専用の表領域を作成(任意)
- Statspackのインストールスクリプト実行
- PERFSTATユーザ・オブジェクトの確認
- PERFSTATユーザに権限付与
PDBに接続
Oracle Statpackは、プラガブルデータベース (PDB) のインストールを前提にしています。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 READ WRITE NO
SQL> alter session set container=ORCLPDB1;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
ORCLPDB1初期化パラメータの確認
初期化パラメータtimed_statisticsと初期化パラメータjob_queue_processesの確認を行います。
初期化パラメータtimed_statisticsはTRUEに設定(デフォルト)されている必要があります。
初期化パラメータstatistics_levelがTYPICALかALL以外に設定されている場合、timed_statisticsはFALSEに自動設定されてしまうため一応確認しましょう。
SQL> SHOW PARAMETER timed_statistics
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
timed_statistics boolean TRUE
SQL> show parameter statistics_level
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
client_statistics_level string TYPICAL
statistics_level string TYPICAL次に、初期化パラメータjob_queue_processesは1以上に設定されていることが重要です。
そのため、job_queue_processesを1以上に設定する必要があります。
JOB_QUEUE_PROCESSESには、DBMS_JOBジョブおよびOracle Scheduler (DBMS_SCHEDULER)ジョブの実行用に作成可能な、CDBまたはPDBごとのジョブ・ワーカーの最大数を指定します。
引用元:Oracle公式サイト
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show parameter job_queue_processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 80
SQL> alter session set container=ORCLPDB1;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
ORCLPDB1
SQL> show parameter job_queue_processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 80専用の表領域を作成(任意)
必須ではなく任意の工程で、Statspackで使用する専用の表領域を作成します。
StatspackはSYSAUX表領域をデフォルトで使用することも可能ですが、AWRや監査でデータベースファイルが増大になり管理が複雑になるため、専用表領域を作成することも広く採用されています。
SQL> CREATE TABLESPACE PERFSTAT
2 DATAFILE 'データベースファイルのパス' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 10G;
Tablespace created.Statspack専用の表領域が作成できたら、下記のSELECT文を実行して確認できます。
set pages 300
set lines 300
col tablespace_name for a50
col NOW_SIZE[MB] for 9999999999
col USED_SIZE[MB] for 9999999999
col USED_PER for 999990.99
SELECT
df.tablespace_name,
SUM(df.bytes/(1024*1024)) as "NOW_SIZE[MB]",
SUM((df.bytes-NVL(fs.free_bytes,0))/(1024*1024)) as "USED_SIZE[MB]",
ROUND(SUM((df.bytes-NVL(fs.free_bytes,0))/(1024*1024))/SUM(df.bytes/(1024*1024)) * 100,2) as "USED_PER"
FROM
dba_data_files df
LEFT JOIN (
SELECT
file_id,
SUM(bytes) as free_bytes
FROM
dba_free_space
GROUP BY
file_id
) fs
ON
df.file_id = fs.file_id
GROUP BY
df.tablespace_name
;
Statspackのインストールスクリプト実行
インストールスクリプト$ORACLE_HOME/rdbms/admin/spcreateを実行して、データベースにStatspackをインストールします。
Statspackのインストール時に、以下の指定が求められます。
- perfstatユーザのパスワード
- perfstatユーザのデフォルト表領域
- perfstatユーザのデフォルト一時表領域
SQL> @?/rdbms/admin/spcreate
Session altered.
Choose the PERFSTAT user's password
-----------------------------------
Not specifying a password will result in the installation FAILING
Enter value for perfstat_password: *********
*********
Choose the Default tablespace for the PERFSTAT user
---------------------------------------------------
Below is the list of online tablespaces in this database which can
store user data. Specifying the SYSTEM tablespace for the user's
default tablespace will result in the installation FAILING, as
using SYSTEM for performance data is not supported.
Choose the PERFSTAT users's default tablespace. This is the tablespace
in which the STATSPACK tables and indexes will be created.
TABLESPACE_NAME CONTENTS STATSPACK DEFAULT TABLESPACE
-------------------------------------------------- --------------------- ----------------------------
PERFSTAT PERMANENT
SYSAUX PERMANENT *
USERS PERMANENT
Pressing <return> will result in STATSPACK's recommended default
tablespace (identified by *) being used.
Enter value for default_tablespace: PERFSTAT
Using tablespace PERFSTAT as PERFSTAT default tablespace.
Choose the Temporary tablespace for the PERFSTAT user
-----------------------------------------------------
Below is the list of online tablespaces in this database which can
store temporary data (e.g. for sort workareas). Specifying the SYSTEM
tablespace for the user's temporary tablespace will result in the
installation FAILING, as using SYSTEM for workareas is not supported.
Choose the PERFSTAT user's Temporary tablespace.
TABLESPACE_NAME CONTENTS DB DEFAULT TEMP TABLESPACE
-------------------------------------------------- --------------------- --------------------------
TEMP TEMPORARY *
Pressing <return> will result in the database's default Temporary
tablespace (identified by *) being used.
Enter value for temporary_tablespace: TEMP
Using tablespace TEMP as PERFSTAT temporary tablespace.
<省略>
Creating Package STATSPACK...
Package created.
No errors.
Creating Package Body STATSPACK...
Package body created.
No errors.
NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
SQL>
SQL> -- Bug#25233027: xxx Set this parameter to FALSE for creating common objects in consolidated database
SQL> alter session set "_oracle_script" = FALSE;
Session altered.インストールに失敗した際は、$ORACLE_HOME/rdbms/admin/spdropを実行することが削除することができます。
@?/rdbms/admin/spdrop
@?/rdbms/admin/spcreateログファイルからもインストール時にエラーが発生していないことを確認できます。
[oracle@learnbytebybyte ~]$ ls -la spc*.lis
-rw-r--r--. 1 oracle oinstall 195 May 4 11:56 spcpkg.lis
-rw-r--r--. 1 oracle oinstall 7082 May 4 11:56 spctab.lis
-rw-r--r--. 1 oracle oinstall 4417 May 4 11:56 spcusr.lis
[oracle@learnbytebybyte ~]$ grep -i "ORA-\|error" sp*.lis
spcpkg.lis:No errors.
spcpkg.lis:No errors.
spcpkg.lis:SPCPKG complete. Please check spcpkg.lis for any errors.
spctab.lis:SPCTAB complete. Please check spctab.lis for any errors.
spcusr.lis:SPCUSR complete. Please check spcusr.lis for any errors.PERFSTATユーザ・オブジェクトの確認
Statspackをインストールすると、perfstatユーザが作成されるため接続してみましょう。
#PDBにインストールした場合
connect perfstat/<password>@<PDB接続文字列>
#非CDBにインストールした場合
connect perfstat/<password>perfstatユーザでINVALID(無効)なオブジェクトがないか確認しましょう。
SQL> set pages 300
SQL> set lines 300
SQL> col object_type for a20
SQL> SELECT
2 object_type,
3 count(*)
4 FROM
5 user_objects
6 GROUP BY
7 object_type
8 ORDER BY
9 object_type
10 ;
OBJECT_TYPE COUNT(*)
-------------------- ----------
INDEX 73
PACKAGE 1
PACKAGE BODY 1
SEQUENCE 1
TABLE 73
VIEW 1
6 rows selected.
SQL> col object_name for a50
SQL> col object_type for a20
SQL> col status for a15
SQL> SELECT
2 object_name,
3 object_type,
4 status
5 FROM
6 user_objects
7 WHERE
8 status != 'VALID'
9 ORDER BY
10 object_type,
11 object_name
12 ;
no rows selectedこれでOracle Statspackのインストールまでは完了です。
PERFSTATユーザに権限付与
自動取得ジョブを登録する上で、PERFSTATユーザにCREATE JOB権限が必要です。
SQL> connect / as sysdba
Connected.
SQL> alter session set container = orclpdb1;
Session altered.
SQL> grant create job to perfstat;
Grant succeeded.Oracle Statspackの使い方
スナップショットの取得・レポート出力・自動取得設定など、Statspackの実運用について以下の記事で解説しています。

まとめ
本記事では、Oracle Statspackのインストールを、検証ログとともに以下の流れでまとめました。
- PDBに接続
- 初期化パラメータの確認
- 専用の表領域を作成(任意)
- Statspackのインストールスクリプト実行
- PERFSTATユーザ・オブジェクトの確認
- PERFSTATユーザに権限付与
Statspackは追加ライセンス不要で利用できる貴重なパフォーマンス診断ツールです。
本手順を参考にぜひ導入してみてください。
最後までご愛読ありがとうございました。
