6 Oracle Access Manager環境のクローニング

このガイドに示すアウトオブプレース・アップグレード手順では、Oracle Access Manager 11gからOracle Access Manager 12cへのクローン・アップグレードを実行する方法について説明します。

この章の内容は次のとおりです。

データベースのクローニング

既存の環境のコピーを作成し、そのコピーをアップグレードできます。アップグレード中に問題が発生した場合は、既存の環境がフォールバックとして使用されます。

詳細は、クローン環境を介したアップグレードの実行に関する項を参照してください。

エクスポート/インポート方法を使用したデータベースのクローニング

11g環境で、データベースからエクスポート・ファイルにデータをエクスポートします。

データをアップグレードするには、次の手順を実行します:

  1. 使用するバージョンのOracleデータベースをインストールします。このデータベースは、単一インスタンス・データベース、Real Application Cluster (RAC)データベース、標準データベース、または別のプラガブル・データベース(PDB)にOAMを含むコンテナ・データベースのいずれかです。

  2. ソースおよび宛先OCIホストにディレクトリを作成します。

  3. ソース・データベースと宛先データベースのこの場所を指すデータベース・ディレクトリ・オブジェクトを作成します。

  4. ソース・データベースをエクスポートします。

    ノート:

    RACデータベースを使用している場合は、各ノードにディレクトリを作成しないかぎり、特定のインスタンス/PDBに強制されるTNS接続があることを確認します。IADUPGはRCU接頭辞の例です。
  5. 生成されたファイルを宛先データベース・ホストにコピーします。

  6. ソース・データベースからDDLを抽出します。インポートでは、ソース・データベースから抽出したデータのみがインポートされ、表領域またはユーザーは作成されません。それらが存在しない場合、インポートが失敗します。これは、これらのオブジェクトのDDLをデータベースから抽出することで解決できます。これを行うには:

    1. 任意のエディタを使用して、次の内容のextract_ddl.sqlというファイルを作成します:

      set pages 0
      set feedback off
      set heading off
      set long 5000
      set longchunksize 5000
      set lines 200
      set verify off 
      exec dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', true);
      exec dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'PRETTY', true);
      accept PREFIX char prompt 'Enter RCU Prefix:'
      accept PDBNAME char prompt 'Enter PDB:'
      spool ddl.sql
      select 'alter session set container=&&PDBNAME;'
      from dual
      /
      SELECT DBMS_METADATA.GET_DDL('TABLESPACE',Tablespace_name) 
      from  dba_tablespaces
      where tablespace_name like '&&PREFIX%'
      /
      set lines 600
      SELECT DBMS_METADATA.GET_DDL('USER',USERNAME)  
      from DBA_USERS
      where USERNAME like '&&PREFIX%'
      /
      set lines 200
      SELECT DBMS_METADATA.GET_GRANTED_DDL ('SYSTEM_GRANT',USERNAME) 
      
      from DBA_USERS
      where USERNAME like '&&PREFIX%'
      and USERNAME NOT LIKE '%_IAU_APPEND'
      and USERNAME NOT LIKE '%_IAU_VIEWER'
      /
      SELECT DBMS_METADATA.GET_GRANTED_DDL ('OBJECT_GRANT',USERNAME) 
      
      from DBA_USERS
      where USERNAME like '&&PREFIX%'
      and USERNAME NOT LIKE '%TLOGS'
      and USERNAME NOT LIKE '%JMS'
      /
      
      spool off
      set pages 0
      set feedback off
      set heading off
      set long 5000
      set longchunksize 5000
      set lines 200
      set verify off 
      exec dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', true);
      exec dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'PRETTY', true);
      accept PREFIX char prompt 'Enter RCU Prefix:'
      accept PDBNAME char prompt 'Enter PDB:'
      spool ddl.sql
      select 'alter session set container=&&PDBNAME;'
      from dual
      /
      SELECT DBMS_METADATA.GET_DDL('TABLESPACE',Tablespace_name) 
      from  dba_tablespaces
      where tablespace_name like '&&PREFIX%'
      /
      set lines 600
      SELECT DBMS_METADATA.GET_DDL('USER',USERNAME)  
      from DBA_USERS
      where USERNAME like '&&PREFIX%'
      /
      set lines 200
      SELECT DBMS_METADATA.GET_GRANTED_DDL ('SYSTEM_GRANT',USERNAME) 
      
      from DBA_USERS
      where USERNAME like '&&PREFIX%'
      and USERNAME NOT LIKE '%_IAU_APPEND'
      and USERNAME NOT LIKE '%_IAU_VIEWER'
      /
      SELECT DBMS_METADATA.GET_GRANTED_DDL ('OBJECT_GRANT',USERNAME) 
      
      from DBA_USERS
      where USERNAME like '&&PREFIX%'
      and USERNAME NOT LIKE '%TLOGS'
      and USERNAME NOT LIKE '%JMS'
      /
      
      spool off

      ノート:

      太字の行は、ターゲット・データベースがPDBの場合にのみ適用されます。このSQLでは、すべてのオブジェクトがRCU接頭辞を使用して作成されていることを前提としています。接頭辞なしでオブジェクトを作成した場合(JMSまたはTLogsの表領域/ユーザーなど)、これらを手動で追加する必要があります。

    2. SQL Plusでファイルを実行します:

      SQL> @extract_ddl

  7. 生成されたファイルを宛先データベース・ホストにコピーします。

  8. 必要に応じて、OCIでプラガブル・データベースのTNSエントリを作成します。

  9. ターゲット・データベースがOracle Access Managerのすべての基準を満たしていることを確認します。詳細は、『Oracle Identity and Access Managementのインストールおよび構成』Oracle Access Managementソフトウェアのインストールおよび構成に関する項を参照してください。

  10. 必要に応じて、トランザクションをロールバックするためのデータベース・リストア・ポイントを作成します。

  11. Oracle Access Managerの表領域/ユーザーを作成します。

    これを行うには、前述のステップ6で生成したスクリプト(ddl.sql)を実行します。

    SQL Plusでファイルを実行します:

    SQL> @ddl

    出力を慎重に確認し、エラーがあれば修正します。

  12. 宛先データベースにデータをインポートします。このデータベースは、ソースと同じデータベース・バージョンである必要はありません。

    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=${ORACLE_BASE}/product/12.2.0.1/dbhome_1
    export GRID_HOME=/u01/app/12.2.0.1/grid
    export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
    export DB_NAME=iamcdb_phx1g8
    export ORACLE_SID=iamcdb
    
    impdp \"SYS/Password@IADPDB AS SYSDBA\" DIRECTORY=orcl_full DUMPFILE=oam_system.dmp LOGFILE=oam_system_imp.log FULL=YES;
    impdp \"SYS/Password@IADPDB AS SYSDBA\" DIRECTORY=orcl_full DUMPFILE=full_oam.dmp LOGFILE=full_oam_imp.log FULL=YES;
    
  13. OCIでプライマリと同じ名前のデータベース・サービスを作成します。

    srvctl add service -db iamcdb_phx1g8 -service onpremservice -rlbgoal SERVICE_TIME -clbgoal SHORT -pdb iadpdb
    srvctl start service -db iamcdb_phx1g8 -service onpremservice 
    srvctl status service -db iamcdb_phx1g8 -service onpremservice

    スキーマをインポートした後、デプロイメントと一致する行が次の問合せによって返されることを確認することが重要です。この表は、前述のステップの一部としてインポートされている必要があります。失敗した場合は、ソース・システムの値を表に移入する必要があります。

    set linesize 100
    col comp_id for a10
    col comp_name for a50
    col version for a10
    select comp_id, comp_name, version, status, upgraded from system.schema_version_registry;
    

テストから本番へ(T2P)のプロセスを使用した11g環境のクローニング

インストールをソース環境からターゲット環境に移動するには、次のステップを実行します:

Oracleバイナリのクローニング

Oracleバイナリのクローニングには、次のオプションを使用できます:

この項には次のトピックが含まれます:

バックアップ/リストア・ツールを使用したアクセス・ドメインのクローニング

ノート:

ドメインおよびNodeManagersをオンラインまたはオフラインでバックアップできます。ただし、すべてのFMWプロセスを停止した状態でバックアップを実行することをお薦めします。

バックアップの作成:

次のステップに従って、ソース環境のバイナリとOracle Inventoryのバックアップを作成します:

  1. 任意のバックアップ・ツールを使用して、ソース・サイトの次の場所のバックアップを作成します:

    • oraInventory

    • MW_HOME

    たとえば、OAMHOST1のコマンドは次のようになります:

    tar cfzP /u01/oracle/backups/oamhost1_binaries.tar.gz /u01/oracle/oraInventory MW_HOME
  2. 別の製品バイナリ・ボリュームを使用して、追加ノードでコマンドを繰り返します。

    ノート:

    Oracle製品のMW_HOMEの場所に共有ファイルシステム・ボリュームを使用する場合は、ボリュームごとに1つのホストからバイナリ・バックアップのみを取得する必要があります。

    たとえば、OAMHOST2のコマンドは次のようになります:

    tar cfzP /u01/oracle/backups/oamhost2_binaries.tar.gz /u01/oracle/oraInventory MW_HOME
  3. 結果のバックアップ・ファイルを適切なターゲット環境ホストにコピーします。

バックアップのリストア

任意の抽出ツールを使用して、バックアップをターゲット環境ノードに抽出します。

ノート:

Oracle製品のMW_HOMEの場所に共有ファイルシステム・ボリュームを使用する場合、バイナリ・バックアップのみをボリュームごとに1つのホストにリストアする必要があります。

たとえば:

OAMHOST1で、次のコマンドを実行します:

tar xvfzP oamhost1.tar.gz

OAMHOST2で、次のコマンドを実行します:

tar xvfzP oamhost2.tar.gz

アクセス・ドメインのクローニング

アクセス・ドメインのクローニングには、次のオプションを使用できます:

このセクションには次のトピックが含まれます:

バックアップ/リストア・ツールを使用したアクセス・ドメインのクローニング

ノート:

ドメインおよびノード・マネージャをオンラインまたはオフラインでバックアップできます。ただし、すべてのFMWプロセスを停止した状態でバックアップを実行することをお薦めします。

バックアップの作成:

ソース環境のバイナリおよびOracle Inventoryのバックアップを作成するには、次のステップを実行します:

  1. 任意のバックアップ・ツールを使用して、ソース・サイトの次の場所のバックアップを作成します:

    • ASERVER_HOME

    • MSERVER_HOME

    • Keystores

    • Nodemanager

    ノート:

    エンタープライズ・デプロイメント・ガイドで説明されているように、分離されたものではなく結合されたDOMAIN_HOMEがある場合は、ASERVER_HOMEおよびMSERVER_HOMEではなくDOMAIN_HOMEを含めます。

    たとえば、OAMHOST1のコマンドは次のようになります:

    tar cfvzP /u01/oracle/config/backups/oamhost1_accessdomain.tar.gz \
       ASERVER_HOME \
       MSERVER_HOME \
       /u01/oracle/config/keystores \
       /u01/oracle/config/nodemanager/OAMHOST1 \
       /u01/oracle/config/nodemanager/OAMHOST2 \
       /u01/oracle/config/nodemanager/IADADMINVHN \
       /u01/oracle/runtime/domains/IAMAccessDomain
  2. 追加ノードでコマンドを繰り返します。たとえば、OAMHOST2のコマンドは次のようになります:

    tar cfzP /u01/oracle/backups/oamhost2_accessdomain.tar.gz /u02/private/oracle/config/domains/IAMAccessDomain
  3. 結果のバックアップ・ファイルを適切なターゲット環境ホストにコピーします。

  4. ソース環境からレプリケートされたドメイン内のロック・ファイルおよびログ・ファイルを削除します。

    • 次のコマンドを実行して、適切なクローン環境ホスト上のすべてのNodeManagerフォルダのロック・ファイルを削除します:

      find /u01/oracle/config/nodemanager -type f -name "*.lck" -exec rm -f {} \;

    • 次のコマンドを実行して、適切なクローン環境ホストのASERVER_HOMEおよびMSERVER_HOMEフォルダからロック・ファイルを削除します:

      ノート:

      エンタープライズ・デプロイメント・ガイドで説明されているように、分離されたものではなく結合されたDOMAIN_HOMEがある場合は、ASERVER_HOMEおよびMSERVER_HOMEではなくDOMAIN_HOMEを含めます。

      たとえば、OAMHOST1で次のコマンドを実行します:

      find  ASERVER_HOME \
          -type f \( -name "*.lck" -or -name "*.lok" \) -print -exec rm -f {} \;
      find  MSERVER_HOME \
          -type f \( -name "*.lck" -or -name "*.lok" \) -print -exec rm -f {} \;
      

      たとえば、OAMHOST2で次のコマンドを実行します:

      find  MSERVER_HOME \
          -type f \( -name "*.lck" -or -name "*.lok" \) -print -exec rm -f {} \;
      
    • オプションで、クローン・ドメインのNodeManagerおよび管理対象サーバーのフォルダから古いログ・ファイルを削除します:

      たとえば、OAMHOST1で次のコマンドを実行します:

      find /u01/oracle/config/nodemanager/OIMHOST1 \
          -type f \( -name '*.log' -or -name '*.out' \) -print -exec rm -f {} \;
      find /u01/oracle/config/nodemanager/OIMHOST2 \
          -type f \( -name '*.log' -or -name '*.out' \) -print -exec rm -f {} \;
      
      find /u01/oracle/config/nodemanager/IGDADMINVHN \
          -type f \( -name '*.log' -or -name '*.out' \) -print -exec rm -f {} \;
       
      find ASERVER_HOME/servers/AdminServer/logs \
          -type f ! -size 0c -print -exec rm -f {} \+
       
      find MSERVER_HOME/servers/*/logs \
          -type f ! -size 0c -print -exec rm -f {} \+
      

      たとえば、OAMHOST2で次のコマンドを実行します:

      find MSERVER_HOME/servers/*/logs \ -type f ! -size 0c -print -exec rm -f {} \+

クローン環境でのアクセス・ドメインのリストア

任意の抽出ツールを使用して、バックアップをターゲット環境ノードに抽出します。

たとえば:

OAMHOST1で、次のコマンドを実行します:

tar xvfzP oamhost1_accessdomain.tar.gz

OAMHOST2で、次のコマンドを実行します:

tar xvfzP oamhost2_accessdomain.tar.gz

OAMドメインの起動

バックアップをターゲット環境インスタンスに正常にリストアした後、次のことを実行してドメインを起動します:

  • ASERVER_HOMEのノード・マネージャを起動します。

  • MSERVER_HOMEのノード・マネージャを起動します。

  • 管理サーバーの起動。

  • OAM管理対象サーバーを起動します。

  • ポリシー・マネージャ管理対象サーバーを起動します。

テストから本番へ(T2P)のプロセスを使用したクローニング

T2Pプロセスを使用してクローニングを実行します。「テストから本番へ(T2P)のプロセスを使用した11g環境のクローニング」を参照してください。