ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
全てのストアド・プログラムをネイティブに再コンパイルする
スポンサード リンク

こちらでは、特定のストアド・プログラムをネイティブ・コンパイルする方法を説明しましたが、ここでは全てのストアド・プログラムをネイティブ・コンパイルする方法を説明します。

Cコンパイラがインストールされて無い場合は、Windowsの場合だと、Visual C++ 2005 Express Editionなどらインストールする必要があります。

oracle10gでの全てのストアド・プログラムをネイティブに再コンパイルする手順は、以下になります。

1.spnc_commandsの編集
 「特定のストアド・プログラムをネイティブ・コンパイルする方法」を参照

2.初期化パラメータの設定
 「特定のストアド・プログラムをネイティブ・コンパイルする方法」を参照

3.ORACLEを「SYS」ユーザーでログインし、「upgrade」モードで起動します。

C:\>sqlplus sys/change_on_install as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 土 6月 16 17:42:37 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
に接続されました。
SQL>
SQL> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL>
SQL> startup upgrade;
ORACLEインスタンスが起動しました。

Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 109052608 bytes
Database Buffers 171966464 bytes
Redo Buffers 7139328 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>



スポンサード リンク


4.事前に無効なオブジェクトの数を把握します。
   
SQL> select count(*) from all_objects where status='INVALID';   

5.事前に無効なネイティブ・コンパイルするのオブジェクトの数を把握します。
   
SQL> select plsql_code_type, count(*) 
 2  from dba_plsql_object_settings
 3  group by plsql_code_type;

6.すべてのPL/SQLモジュールを無効にします。
   %ORACLE_HOME%\rdbms\admin\dbmsupgnv.sqlを「SYS」ユーザーで実行します。
   この実行で、すべてのPL/SQLモジュールが無効にし、ディクショナリ表を更新して、plsql_code_type設定がNATIVEに変更されます。

7.コミット文を実行します。


SQL>commit;


8.ORACLEをSHUTDOWNし、標準モード(NORMAL)で再起動します。


9.コンパイルの実行

   「SYS」ユーザーで以下のスクリプトを実行して、コンパイルします。
   %ORACLE_HOME%\rdbms\admin\utlirp.sql
    このスクリプトで、無効なPL/SQLモジュールが全て再コンパイルされます。
   なんらかの理由でこの手順が異常終了した場合、utlrp.sqlスクリプトを再実行して再コンパイルできます。


10.無効なオブジェクトの数を把握します。
   4で実施した数と一致すれば正常に再コンパイルが完了したことになります。
SQL> select count(*) from all_objects where status='INVALID';   

スポンサード リンク



ストアド・プログラムをメモリ上に固定する(DBMS_SHARED_POOL.KEEP)
メモリ上に固定したストアド・プログラムの解放(DBMS_SHARED_POOL.UNKEEP)
特定のストアド・プログラムをネイティブ・コンパイルする
全てのストアド・プログラムをネイティブに再コンパイルする
ソース・コードの最適化(PLSQL_OPTIMIZE_LEVEL)

PL/SQL へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ