ablog

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

ORA-20200: Database/Instance 273180916/1 does not exist in STATS$DATABASE_INSTANCE

現象

spreport.sql で statsupack レポートを出力しようとすると、ORA-20200 エラーが発生する。

$ sqlplus perfstat/perfstat
SQL> @?/rdbms/admin/spreport.sql

Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
  273180916 ORCL                1 orcl



Instances in this Statspack schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Using  273180916 for database Id
Using          1 for instance number
declare
*
ERROR at line 1:
ORA-20200: Database/Instance 273180916/1 does not exist in
STATS$DATABASE_INSTANCE
ORA-06512: at line 23

「Database/Instance 273180916/1 does not exist」って怒られたので、DBID と INSTANCE_NUMBER を確認してみる。

SQL> select dbid from v$database; 

      DBID
----------
 273180916

SQL> select instance_number from v$instance;

INSTANCE_NUMBER
---------------
              1

問題なさそう。

原因

スナップショットが全くないからエラーになっていたと思われる。スナップショットを2つ取得すると、statspack レポートを出力できるようになった。

解決策

statspck のスナップショットを2つ取得する。

$ sqlplus prefstat/perfstat
SQL> exec statspack.snap(7);
SQL> exec statspack.snap(7);

statspack レポートを出力してみる。

SQL> @?/rdbms/admin/spreport.sql

無事成功。