5.4 ルート・コンテナにAPEXがインストールされている場合のPDBの接続

ターゲット・データベースでルート・コンテナCDB$ROOTOracle APEXがインストールされているシナリオ(デフォルトのインストール・オプション)について学習します。

この項では、ターゲット・データベースでルート・コンテナCDB$ROOTAPEXがインストールされているシナリオ(デフォルトのインストール・オプション)について説明します。なお、接続するデータベースの元の場所がどこであるかや、元のデータベースでAPEXがどのように構成されていたかについては、複数のシナリオがあります。

5.4.1 シナリオ1: APEXを含む非CDBの接続

Oracle APEXを含む非CDBを接続します。

以前のリリースのOracle Databaseからアップグレードする場合は、非CDB (またはAPEXがローカルにインストールされたPDB)でOracle Database 12cにアップグレードしてから、ご使用のCDBにそのデータベースを接続する必要があります。または、非CDB (またはAPEXがローカルにインストールされたPDB)のOracle Database 12c以降を構成してある場合は、そのデータベースをCDBに接続できます。いずれの場合も、元のデータベースは、APEXがインストールされており、以前はPDBではありませんでした。

ご使用のオペレーティング・システムの『Oracle Databaseインストレーション・ガイド』で説明されているとおり、スタンドアロン・データベースに接続するには、$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sqlスクリプトを実行する必要があります。このスクリプトによって、ローカル・オブジェクトではなく、必要なメタデータ・リンク・オブジェクトが作成され、APEXを含む一般的なすべてのデータベース・オプションのデータベース・オブジェクトが再コンパイルされます。

APEXをインストールした後に、そのPDB用にWebサーバーを構成する必要があります。

元のデータベース(現在はPDB)にインストールされているAPEXのバージョンが、ターゲット・データベースのルート・コンテナにインストールされているバージョンと異なる場合は、そのPDBをオープンしようとするとエラーが発生します。

5.4.2 シナリオ2: 他のCDBからの共通のAPEXを含むPDBの接続

他のCDBからOracle APEXを含むPDBを接続します。

元のCDBのルート・コンテナにAPEXがインストールされている既存のOracle Database 12c以降からPDBをコピーまたは移動するには、そのPDB用にWebサーバーを構成する以外に、さらに他のステップを実行する必要はありません。

このシナリオでは、APEXリリース22.2がインストールされているものとし、接続するPDB内のAPEX_220200スキーマはすでにメタデータ・リンク・オブジェクトが定義されており、ターゲットCDB内のメタデータ・リンク・オブジェクトに対してエラーなしでコンパイルされると仮定しています。

元のデータベースにインストールされているAPEXのバージョンが、ターゲット・データベースのルート・コンテナにインストールしたAPEXのバージョンと異なる場合は、PDBをオープンしようとするとエラーが発生します。

5.4.3 シナリオ3: 他のCDBからのローカルAPEXを含むPDBの接続

他のCDBからローカルOracle APEXを含むPDBを接続します。

APEXがルート・コンテナではなくローカルにインストールされている既存のOracle Database 12c以降からPDBをコピーまたは移動する場合に、そのPDBをエラーなしでオープンするには、さらに他のステップを実行する必要があります。

このシナリオでは、APEXリリース22.2がインストールされているものとし、接続するPDB内のAPEX_220200スキーマにはすべてのAPEXデータベース・オブジェクトが含まれておりメタデータ・リンク・オブジェクトは含まれていないと仮定しています。このため、$ORACLE_HOME/rdbms/admin/apex_to_common.sqlを実行して一般的なオブジェクトを削除し、パッケージ、ビューおよびその他に対するメタデータ・リンクを作成する必要があります。

ローカル・オブジェクトをPDBのメタデータ・リンクで置き換えるには:

  1. 作業ディレクトリを$ORACLE_HOME/rdbms/adminに変更します。
  2. SQL*Plusを起動し、APEXがインストールされているデータベースに、SYSDBAロールが指定されているSYSとして接続します。たとえば:
    • Windowsの場合:

      SYSTEM_DRIVE:\ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
    • UNIXおよびLinuxの場合:

      $ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
  3. 次のように、コンテナを、構成するPDBに設定します。

    ALTER SESSION SET CONTAINER = <PDB_name>;
  4. apex_to_common.sqlを実行します。たとえば:

    @apex_to_common.sql

元のデータベースにインストールされているAPEXのバージョンが、ターゲット・データベースのルート・コンテナにインストールしたAPEXのバージョンと異なる場合は、PDBをオープンしようとするとエラーが発生します。

5.4.4 シナリオ4: APEXを含まない非CDBまたはPDBの接続

Oracle APEXがインストールされていない場合は非CDBまたはPDBを接続します。

このシナリオでは、元のデータベースにも、接続するPDBにも、APEXスキーマ(たとえば、Oracle APEXリリース22.2の場合はAPEX_220200)は含まれません。PDBを問題なくオープンして新しいPDB内でAPEXを実行するには、元のデータベースまたはPDBにAPEXをインストールしてから、ターゲット・データベースへの接続を試行する必要があります。元のデータベースまたはPDBにインストールするAPEXのバージョンは、ターゲット・データベースにインストールしたバージョンと同じである必要があります。

5.4.5 APEXバージョン同士に互換性がない場合の作業

互換性のないバージョンのOracle APEXでの作業方法を学習します。

APEXのバージョンがルート・コンテナCDB$ROOTとPDBとで異なる場合は、そのPDBをオープンするたびにエラーが発生し、そのPDB内での通常のデータベース操作が妨げられます。バージョンの互換性が確保されるまで、PDBは、RESTRICTED SESSION権限を持つユーザーによって制限モードでのみオープンできます。

5.4.5.1 CDB内のAPEXのパッチ適用またはアップグレード

ルート・コンテナでOracle APEXに対してパッチ適用またはアップグレードを行う方法を学習します。

ルート・コンテナ内よりもPDB内のAPEXのほうが、新しいマイナー・リリース・バージョンである場合(たとえば、PDBにAPEXリリース5.1.4が含まれており、CDBにAPEXリリース5.1.3が含まれている場合)、エラーが発生することなくそのPDBをオープンするには、ルート・コンテナ内のAPEXのバージョンにパッチを適用する必要があります。CDB内よりもPDB内のAPEXのメジャー・バージョンのほうが新しい場合(たとえば、PDBにAPEXリリース19.2があり、CDBにAPEXリリース18.1がある場合)、エラーが発生することなくそのPDBをオープンするには、CDB内のAPEXのバージョンをアップグレードする必要があります。

ルート・コンテナ内のAPEXにパッチを適用するには:

  1. My Oracle Supportから適切なパッチをダウンロードします。
  2. 解凍してインストール・ファイルを抽出します。
  3. 作業ディレクトリを、インストール・ファイルを抽出したディレクトリに変更します。
  4. SQL*Plusを起動し、APEXがインストールされているデータベースに、SYSDBAロールが指定されているSYSとして接続します。たとえば:
    • Windowsの場合:

      SYSTEM_DRIVE:\ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
    • UNIXおよびLinuxの場合:

      $ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
  5. たとえば、apxpatch_con.sqlを実行します。
    @apxpatch_con.sql
  6. パッチ・セット・ノートの説明に従って、imagesディレクトリを更新します。

5.4.5.2 PDB内のAPEXのパッチ適用またはアップグレード

PDBでOracle APEXに対してパッチ適用またはアップグレードを行う方法を学習します。

ルート・コンテナ内よりもPDB内のAPEXのマイナー・バージョンほうが低い場合(たとえば、PDBにAPEXリリース4.2.0があり、CDBにAPEXリリース4.2.6がある場合)は、そのPDB内のAPEXのバージョンにパッチを適用する必要があります。ルート・コンテナ内よりもPDB内のAPEXのメジャー・バージョンほうが低い場合(たとえば、PDBにAPEXリリース4.2があり、CDBにAPEXリリース19.2がある場合)は、そのPDB内のAPEXのバージョンをアップグレードする必要があります。

5.4.5.2.1 PDB内のAPEXのパッチ適用

PDBでOracle APEXにパッチを適用する方法を学習します。

PDB内のOracle APEXにパッチを適用するには:

  1. My Oracle Supportから適切なパッチをダウンロードします。
  2. 解凍してインストール・ファイルを抽出します。
  3. 作業ディレクトリを、インストール・ファイルを抽出したディレクトリに変更します。
  4. SQL*Plusを起動し、APEXがインストールされているデータベースに、SYSDBAロールが指定されているSYSとして接続します。たとえば:
    • Windowsの場合:

      SYSTEM_DRIVE:\ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
    • UNIXおよびLinuxの場合:

      $ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
  5. 次の例に示すように、catcon.plを使用してapxpatch.sqlを実行します。
    host &OH_HOME/perl/bin/perl -I
    
    &OH_HOME/rdbms/admin &OH_HOME/rdbms/admin/catcon.pl -b apxpatch -c '<PDB_name>'  apxpatch.sql

    説明:

    • &OH_HOMEは、Oracleホームのフルパスを表します
    • <PDB_nameは、パッチを適用しているPDBの名前です
  6. パッチ・セット・ノートの説明に従って、imagesディレクトリを更新します。
5.4.5.2.2 PDB内のAPEXのアップグレード

PDBでOracle APEXをアップグレードする方法を学習します。

PDB内のAPEXをアップグレードするには:

  1. 解凍してインストール・ファイルを抽出します。
  2. 作業ディレクトリを、インストール・ファイルを抽出したディレクトリに変更します。
  3. SQL*Plusを起動し、APEXがインストールされているデータベースに、SYSDBAロールが指定されているSYSとして接続します。たとえば:
    • Windowsの場合:

      SYSTEM_DRIVE:\ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
    • UNIXおよびLinuxの場合:

      $ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
  4. 次の例のようなcatcon.plを使用して、apexins_nocdb.sqlまたはapxrtins_nocdb.sqlを実行します。
    host &OH_HOME/perl/bin/perl -I
    
    &OH_HOME/rdbms/admin &OH_HOME/rdbms/admin/catcon.pl -b apexins -c '<PDB_name>'  apexins_nocdb.sql --pSYSAUX --pSYSAUX --pTEMP --p/i/ --p1,2,3

    説明:

    • &OH_HOMEは、Oracleホームのフルパスを表します
    • <PDB_nameは、パッチを適用しているPDBの名前です
  5. パッチ・セット・ノートの説明に従って、imagesディレクトリを更新します。