Oracle Databaseの互換性の概要

新しい機能に以前のリリースとの互換性がない場合、データベースの互換性が問題の原因であることがあります。

異なるリリースのOracle Databaseソフトウェアで同じ機能がサポートされており、その機能が同様に動作する場合は、リリースが異なってもデータベースには互換性があります。新しいリリースのOracle Databaseへアップグレードする場合、一部の新機能が原因で以前のリリースとの互換性が失われることがあります。

アップグレードしたデータベースで以前のリリースとの互換性が失われるのは、次の場合です。

  • 新機能によってディスクに格納されるデータ(データ・ディクショナリの変更を含む)が、以前のリリースでは処理できない場合。

  • 既存の機能の動作が、以前の環境と新しい環境とで異なる場合。

トピック:

Oracle DatabaseのCOMPATIBLE初期化パラメータ

非CDBおよびマルチテナント・アーキテクチャ・コンテナのCOMPATIBLE初期化パラメータの設定方法を確認してください。

Oracle Databaseでは、COMPATIBLE初期化パラメータを使用して、データベースの互換性を制御できます。

COMPATIBLE初期化パラメータの理解

パラメータ・ファイルでCOMPATIBLE初期化パラメータが設定されていない場合、Oracle Database 12cリリース2 (12.2)ではデフォルトで12.2.0に設定されます。COMPATIBLE初期化パラメータを12.2.0に設定しない場合、アップグレードしたデータベースがOracle Database 12cリリース2 (12.2)機能にとって必要なCOMPATIBILITY設定で実行されていないため、Oracle Database 12cの新機能を使用することはできません。

Oracle DatabaseのCOMPATIBLEパラメータが12.2.0に増加されると、データベースに対する最初のJavaコールによって、名前変換操作が開始されます。この操作は、完了するまでに数分間かかることがあります。互換性パラメータを増加した後に、データベースに対して最初のJavaコールが行われるときは、この遅延を予期しておく必要があります。名前変換を実行する際のこの初期遅延は、最初のJavaコール中にのみ発生します。

注意:

  • Oracle Database 12cにアップグレードする前に、COMPATIBLE初期化パラメータをOracle Database 12cの最小設定である11.2.0以上に設定する必要があります。

  • COMPATIBLEパラメータは、ピリオドで区切られた3つ以上の10進数である必要があります。次に例を示します。

    SQL> ALTER SYSTEM SET COMPATIBLE = '12.1.0.2' SCOPE=SPFILE;
  • COMPATIBLEパラメータの増加は、アップグレードしたデータベースを完全にテストした後にのみ行うことをお薦めします。

  • COMPATIBLEパラメータを増やした後に、データベースはダウングレードできません。

注意:

Oracle Databaseリリース11.2からアップグレードする場合、COMPATIBLEの値を11.2.0以上に設定する必要があります。これは、アップグレード時に行う必要があります。COMPATIBLE初期化パラメータ値を増加した後に以前の互換性レベルにダウングレードすることはできないため、アップグレードの準備が完了するまで、この変更は行わないでください。

参照:

初期化パラメータの管理の詳細は、『Oracle Database管理者ガイド』を参照してください

マルチテナント・アーキテクチャでのCOMPATIBILEパラメータ設定のルール

コンテナ・データベース(CDB)のCOMPATIBLEパラメータは、そのコンテナ・データベースに接続されているプラガブル・データベース(PDB)のCOMPATIBLEパラメータ設定に影響します。PDBをCDBに接続したときに発生する次のシナリオを確認してください。

  • PDBのCOMPATIBLECDB$ROOT COMPATIBLEパラメータの設定と同じ。

    結果: PDB COMPATIBLEパラメータ設定への変更はありません。

  • PDB COMPATIBLECDB$ROOT COMPATIBLEパラメータ設定より低い。

    結果: PDB COMPATIBILEパラメータはCDB$ROOTと同じCOMPATIBLEパラメータ設定に、自動的に増やされます。PDBに接続した後では、以前のリリースにPDBをダウングレードできません。

  • PDB COMPATIBLECDB$ROOT COMPATIBLEパラメータ設定より高い。

    結果: PDBを接続できません。CDB$ROOTと同等以下のCOMPATIBLEパラメータを持つPDBだけが、CDBに接続できます。

Oracle DatabaseのCOMPATIBLE初期化パラメータの値

参照してCOMPATIBLEのデフォルト値、最小値および最大値を見つけてください。

次の表に、Oracle Database 12cおよびOracle Database 12cへのアップグレードがサポートされている各リリースでのCOMPATIBLE初期化パラメータのデフォルト値、最小値および最大値を示します。

表1-2 COMPATIBLE初期化パラメータ

Oracle Databaseのリリース デフォルト値 最小値 最大値

Oracle Database 12cリリース2 (12.2)

12.2.0

11.2.0

12.2.0

Oracle Database 12c リリース1(12.1)

12.0.0

11.0.0

12.1.0

Oracle Database 11gリリース2(11.2)

11.2.0

10.0.0

11.2.0

Oracle Databaseのアップグレードでのダウングレードおよび互換性の概要

Oracle Database 12cにアップグレードする前に、COMPATIBLE初期化パラメータを11.2.0以上に設定する必要があります。

Oracle Database 12cにアップグレード後、COMPATIBLE初期化パラメータを新しいリリースのリリース番号と一致するように設定できます。このように設定すると、新しいリリースのすべての機能を使用できますが、以前のリリースにダウングレードすることはできません。COMPATIBLE初期化パラメータがより小さい値に設定されている場合、Oracle Database 12cの機能のサブセットのみを使用できます。

注意:

COMPATIBLEパラメータを増やすと、データベースをダウングレードできません。

Oracle DatabaseでのCOMPATIBLE初期化パラメータの動作

COMPATIBLE初期化パラメータによって、リリースの互換性に基づいてOracle Database機能を有効化または無効化できます

COMPATIBLE初期化パラメータは、次のように動作します。

  • COMPATIBLE初期化パラメータによって、機能の使用を有効化または無効化することで、既存のアプリケーションによるデータの使用を保護するために役立ちます。

    COMPATIBLE初期化パラメータを11.2.0に設定してOracle Database 12cデータベースを実行すると、データベース・ソフトウェアによって、Oracle Databaseリリース11gリリース2 (11.2)と互換性のあるデータベース構造がディスクに生成されます。Oracle Databaseのより新しいリリースに含まれる機能の使用を試み、データベースがCOMPATIBLE初期化パラメータとの互換性を失うと、エラーが発生します。ただし、Oracle Databaseリリース11gリリース2と互換性のない変更がディスクに作成されない新機能は、有効化されます。

  • 使用するCOMPATIBLE初期化パラメータ設定との互換性をデータベースが失う変更がデータベースに行われると、データベースは起動せず、初期化はエラーで終了します。この場合、COMPATIBLE初期化パラメータを、データベースに対する適切な値に設定する必要があります。

参照:

データベース構造の詳細は、『Oracle Database概要』を参照してください。

Oracle Databaseの互換性レベルの確認

このSQL問合せを使用して、データベースの互換性レベルがCOMPATIBLE初期化パラメータの値に対応しているかどうかを確認します。

SQL> SELECT name, value FROM v$parameter
         WHERE name = 'compatible';

Oracle DatabaseでのCOMPATIBLE初期化パラメータ設定のタイミング

COMPATIBLEパラメータの増加は、アップグレードしたデータベースのテストが完了した後にのみ行うことをお薦めします。

アップグレードの完了後、COMPATIBLE初期化パラメータの設定をOracle Database 12cの最大レベルまで増加できます。ただし、COMPATIBLEパラメータを増やすと、後でデータベースをダウングレードできません。