Oracleデータ・ディクショナリの現在の状態の表示方法

アップグレードと移行の診断のためにOracleデータ・ディクショナリの状態を確認するには、次の3つの方法のいずれかを使用します。

例6-1 dbupgdiag.sqlスクリプトの実行

dbupgdiag.sqlスクリプトは、アップグレードの前または後のいずれかで、データベースのステータスに関する診断情報を収集します。My Oracle Supportノート556610からスクリプトをダウンロードし、データベースのSYSユーザーとしてスクリプトを実行します。このスクリプトにより、db_upg_diag_sid_timestamp.logという名前のログ・ファイルに、読みやすい形式で診断情報が生成されます。sidはデータベースのOracleシステム識別子で、timestampはファイルが生成された時刻です。

たとえば、/u01/dbupgdiag-scriptディレクトリにスクリプトをダウンロードして配置する場合は次のとおりです。

/u01/dbupdiag-script/ $ sqlplus / as sysdba
sql> alter session set nls_language='American';
sql> @dbupgdiag.sql
sql> exit

スクリプトは、SQL*Plusを使用して、ソース・データベースでアップグレード前に実行することも、アップグレードしたデータベースでアップグレード後に実行することもできます。スクリプトの詳細は、My Oracle Supportノート556610.1の指示および出力サンプル・ファイルを参照してください。

例6-2 DBA_REGISTRYでのSQL問合せの実行

ディクショナリの現在の状態を表示するには、次の例のようなSQL問合せを実行します。

SQL> spool /tmp/regInvalid.out
SQL> set echo on
-- query registry
SQL> set lines 80 pages 100
SQL> select substr(comp_id,1,15) comp_id,substr(comp_name,1,30)
      comp_name,substr(version,1,10) version_full,status
from dba_registry order by comp_id;

例6-3 無効なオブジェクトをチェックするSQL問合せの実行

無効なオブジェクトをチェックするには、次の例のようにSQL問合せを実行します。

  1. データベース内のすべての無効なオブジェクトをリストします。

    SQL> select owner, object_name, object_type from dba_invalid_objects order by owner, object_type, object_name;
  2. データベース内の無効なOracle管理オブジェクトをリストします。

    SQL> select owner, object_name, object_type from sys.dba_invalid_objects where oracle_maintained='Y';

    データベースをアップグレードし、utlrp.sqlを実行した後は、すべてのOracle管理オブジェクトが有効である必要があります。

  3. データベース内の無効なアプリケーション・オブジェクトをリストします。

    SQL> select owner, object_name, object_type from sys.dba_invalid_objects where oracle_maintained='N';