Oracleでは、Oracle Databaseのディクショナリ・オブジェクトのオプティマイザ統計を収集するためのスクリプトを提供しています。データベースのアップグレード前にこれらのスクリプトを実行しておくと、アップグレード時の停止時間を短縮できます。
この処理は、アップグレードの他の処理と同様にテスト・データベースでテストする必要があります。また、データベース・コンポーネントの一部がインストールされていない場合は、これらのスクリプトで参照されるスキーマが存在しない場合があります。
この付録には、次の項目が含まれます。
Oracle9iリリース2(9.2)を使用している場合は、DBMS_STATS.GATHER_SCHEMA_STATS
プロシージャを使用して統計を収集する必要があります。次のサンプル・スクリプトでは、このプロシージャを使用してシステム・コンポーネント・スキーマに対する統計を収集します。
このスクリプトを実行するには、SQL*Plusを使用して、AS SYSDBA
でデータベースに接続する必要があります。
spool gdict grant analyze any to sys; exec dbms_stats.gather_schema_stats('WMSYS',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('MDSYS',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('CTXSYS',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('XDB',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('WKSYS',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('LBACSYS',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('ORDSYS',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('ORDPLUGINS',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('SI_INFORMTN_SCHEMA',- options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('OUTLN',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('DBSNMP',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('SYSTEM',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); exec dbms_stats.gather_schema_stats('SYS',options=>'GATHER', - estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, - method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE); spool off
注意: 特定のコンポーネント・スキーマがデータベースに存在しない場合、統計の収集は失敗する場合があります。これは、コンポーネントがインストールされていない場合、または無効である場合に発生します。 |
このスクリプトは、表dictstattab
を作成し、RDBMSコンポーネント・スキーマに対する統計をその表にエクスポートします。特定のコンポーネント・スキーマがデータベースに存在しない場合、エクスポートは失敗します。これは、コンポーネントがインストールされていない場合、または無効である場合に発生します。
このスクリプトは、データベースに統計をインポートする場合に有効です。たとえば、次のPL/SQLサブプログラムは既存の統計を削除した後、SYS
スキーマに対する統計をインポートします。
EXEC DBMS_STATS.DELETE_SCHEMA_STATS('SYS'); EXEC DBMS_STATS.IMPORT_SCHEMA_STATS('SYS','dictstattab');
次のスクリプトを実行するには、SQL*Plusを使用してAS SYSDBA
でデータベースに接続する必要があります。
spool sdict grant analyze any to sys; exec dbms_stats.create_stat_table('SYS','dictstattab'); exec dbms_stats.export_schema_stats('WMSYS','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('MDSYS','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('CTXSYS','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('XDB','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('WKSYS','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('LBACSYS','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('ORDSYS','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('ORDPLUGINS','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('SI_INFORMTN_SCHEMA','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('OUTLN','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('DBSNMP','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('SYSTEM','dictstattab',statown => 'SYS'); exec dbms_stats.export_schema_stats('SYS','dictstattab',statown => 'SYS'); spool off