ablog

不器用で落着きのない技術者のメモ

statspack のスナップショットが自動取得されない

現象

SQL> conn perfstat/perfstat
SQL> @?/rdbms/admin/spauto.sql

として、statspack のスナップショットが自動取得されるよう設定したのに、自動取得されない。
ジョブを調べてみると、

SQL> sqlplus / as sysdba
SQL> set pagesize 50000
SQL> set linesize 200
SQL> col job for 999
SQL> col what for a20
SQL> col interval for a30
SQL> col last_date for a17
SQL> col last_sec for a10
SQL> col next_date for a17
SQL> col next_sec for a10
SQL> select job,
	what,
	instance,
	to_char(last_date,'YYYY-MM-DD HH24:MI') last_date,
	last_sec,
	to_char(next_date,'YYYY-MM-DD HH24:MI') next_date,
	next_sec,
	total_time,
	broken,
	interval 
	from dba_jobs; 

 JOB WHAT                   INSTANCE LAST_DATE         LAST_SEC   NEXT_DATE         NEXT_SEC   TOTAL_TIME B INTERVAL
---- -------------------- ---------- ----------------- ---------- ----------------- ---------- ---------- - ------------------------------
   2 statspack.snap;               1                              2010-04-07 12:00  12:00:00            0 N trunc(SYSDATE+1/24,'HH')

NEXT_DATE を過ぎてもジョブが実行されず、NEXT_DATE が更新されずに過去日付のままになる。

原因

初期化パラメータ job_queue_processes が 1 以上に設定されていないため。

解決策

SPFILE を使っている場合
SQL> conn / as sysdba
SQL> show parameter job_queue_processes
SQL> alter systen set job_queue_processes = 1 scope=both;
SQL> show parameter job_queue_processes
PFILE を使っている場合
$ cd ${ORACLE_HOME}/dbs
$ vi init${ORACLE_SID}.ora
*.job_queue_processes=1 # ← 1 以上に変更する。
$ sqlplus / as sysdba
SQL> show parameter job_queue_processes
NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
job_queue_processes                  integer                          0
SQL> shutdown immediate
SQL> srartup
SQL> show parameter job_queue_processes