データ・ディクショナリのアップグレードおよびアップグレード・ステータスの表示に対する改善

Oracle Database 12cでは、アップグレード処理およびアップグレードされたデータベースのアップグレード・ステータスの表示方法が改善されました。

パラレル・アップグレード・ユーティリティを使用したデータ・ディクショナリのパラレル・アップグレード

Oracle Databaseのデータ・ディクショナリのアップグレードは、パラレル・アップグレード・ユーティリティを使用してパラレルに実行されるようになったため、アップグレード処理が高速化されます。

1つのSQLプロセスでデータ・ディクショナリをロードするかわりに、サーバーのCPU容量に応じて複数のプロセスを使用できます。パラレル・アップグレード・ユーティリティ(catctl.pl)は、LinuxおよびUnixの場合はdbupgradeを使用して、Windowsの場合はdbupgrade.comを使用してコマンドラインから実行でき、可能なかぎり高速にディクショナリにデータをロードし、upgradeモードのかわりにnormalモードで実行可能なすべての作業を遅延します。パラレル・アップグレード・ユーティリティを使用してデータベースをアップグレードすると、停止時間全体が短縮されます。

アップグレード・ステータスの設定に対する変更

Oracle Database 12cリリース1以上のリリースでは、UPGRADEDステータスの意味が変更されています。

アップグレードが完了し、アップグレード中にエラーが発生しなかった場合、Oracle Server、Oracle Multimedia (ORDIM)、Spatial (SDO)およびXDBのステータスは、すべてUPGRADEDに設定されます。この動作は、12.1より前のリリースとは異なります。以前のリリースでは、Oracle Server、Oracle Multimedia (ORDIM)、Spatial (SDO)およびXDBのステータスは、アップグレード後にVALIDに設定されました。12.1以上のリリースでは、UPGRADEDステータスは、データ・ディクショナリがエラーなしでロードされたことを示します。エラーがregistry$errorに記録されている場合、アップグレードのステータスはINVALIDに設定されます。

アップグレード完了時にエラーがない場合は、データベースのステータスはUPGRADEDに設定されます。この動作は、アップグレード後にデータベースのステータスがVALIDに設定されていた以前のリリースとは異なります。UPGRADEDステータスは、データ・ディクショナリが、エラーなくロードされたことを示します。エラーがregistry$errorに記録されている場合、アップグレードのステータスはINVALIDに設定されます。

utlrp.sql再コンパイル・スクリプト実行後のステータスの変更

Oracle Database 12cでは、VALIDステータスの意味が変更されています。

Oracle Databaseの以前のリリースでは、データベースのアップグレード後のVALIDは、データ・ディクショナリのすべてのオブジェクトが再コンパイルされ、使用の準備ができたことを意味しました。Oracle Database 12cでは、VALIDステータスの取得は別の意味になります。utlrp.sqlスクリプトを通常モードで実行し、データ・ディクショナリのオブジェクトを再コンパイルしてそのデータ・ディクショナリをUPGRADEDステータスからVALIDステータスに移動します。

データベースのアップグレードが有効かどうかは、アップグレード後、アップグレードされたデータベースが最初に起動される前にutlrp.sqlが実行されるまで保証できません。アップグレードの実行後にutlrp.sqlを実行しないと、データ・ディクショナリ・オブジェクトのコンパイルが最初のアクセス中に強制されます。データベースに最初にアクセスするユーザーは、この最初のアクセス中にアクセスされる無効なオブジェクトごとにパフォーマンス上の悪影響を受けます。これらの無効なオブジェクトが再コンパイルされた後は、通常の処理に戻ります。utlrp.sqlを実行すると、アップグレード後にデータベースを使用する準備が整います。検出されたエラーは、すぐにレポートされます。アップグレードしたデータベースのユーザーに問題が発生する前に、それらを修正できます。