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

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

この項では、ターゲット・データベースでルート・コンテナCDB$ROOTOracle APEXがインストールされているシナリオ(デフォルトのインストール・オプション)について説明します。接続するデータベースの元の場所、および元のデータベースでOracle APEXが構成されていた方法に関連する複数のシナリオがあることに注意してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

このシナリオでは、前提として、APEXリリース22.1がインストールされ、接続するPDB内のAPEX_220100スキーマには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 
    
    

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

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

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

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

5.4.5 互換性のないOracle APEXバージョンでの作業

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

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

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

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

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

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

  1. My Oracle Supportから適切なパッチをダウンロードします。
  2. 解凍してインストール・ファイルを抽出します。
  3. 作業ディレクトリを、インストール・ファイルを抽出したディレクトリに変更します。
  4. SQL*Plusを起動し、Oracle 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のOracle APEXのパッチ適用またはアップグレード

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

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

5.4.5.2.1 PDBのOracle APEXのパッチ適用

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

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

  1. My Oracle Supportから適切なパッチをダウンロードします。
  2. 解凍してインストール・ファイルを抽出します。
  3. 作業ディレクトリを、インストール・ファイルを抽出したディレクトリに変更します。
  4. SQL*Plusを起動し、Oracle 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のOracle APEXのアップグレード

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

PDBでOracle APEXをアップグレードするには:

  1. 解凍してインストール・ファイルを抽出します。
  2. 作業ディレクトリを、インストール・ファイルを抽出したディレクトリに変更します。
  3. SQL*Plusを起動し、Oracle 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ディレクトリを更新します。