7 Oracle ACFSの高度なトピックの理解

Oracle ACFSの高度なトピックには、さらに複雑な管理の問題に関する説明が含まれています。

この付録では、Oracle Advanced Cluster File System (Oracle ACFS)の制限事項、高度な管理、トラブルシューティングおよびパッチ適用などの高度なトピックについて説明します。

関連項目:

Oracle ACFSおよびOracle ADVMの詳細は、My Oracle Support(https://support.oracle.com)の記事を参照してください。

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

Oracle ACFSの概要は、「Oracle ACFSおよびOracle ADVMの概要」を参照してください。

Oracle ACFSの制限事項

この項では、Oracle ACFSの制限事項について説明します。

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

ノート:

Oracle ACFSでは、ディレクトリのハード・リンクをサポートしません。

Oracle ACFSディスク領域使用量

Oracle ACFSは、32ビットシステム上の64個、および64ビットシステム上の256個のそれぞれマウントされたファイル・システムをサポートします。十分なメモリーがある場合はそれ以上のファイル・システムをマウントできます。

Oracle ACFSは、ファイル・システム内の2^40 (1兆)ファイルをサポートします。40億以上のファイルがテストされました。ファイル・システム内のディレクトリ数に絶対的な制限はありません。制限はハードウェア・リソースに基づきます。

Oracle ACFSでは、データを書き込む際、パフォーマンスを高めるために大規模なユーザー・ファイルを事前に割り当てます。この記憶域は、ファイルが閉じられても戻されませんが、ファイルを削除すると戻されます。ノードでファイル・システムが初めてマウントされるときには、Oracle ACFSによりローカル・メタデータ・ファイルも割り当てられます。その結果、領域不足エラーが原因でマウントが失敗する可能性があり、この記憶域の大部分は隣接している必要があります。この記憶域は、1ノード当たり約64から128MBです。

空き領域を探すときに、グローバル記憶域ビットマップ上での競合を減らすために、Oracle ACFSはローカル・ビットマップも使用できるようにしておきます。このディスク領域は、一部の領域が実際にまだ割り当てられていない場合でも、Linux dfコマンドなどのツールによってin useとしてレポートされます。このローカルの記憶域プールは、ノードごとに128 MBと同じ大きさにでき、dfなどのようなコマンドでもスペース割当てを可能にし、割り当てられているよりも少ない領域でレポートできます。

Oracle ACFSファイル・システムに割り当てることができる最大サイズを表7-1に示します。Oracle ACFSおよびOracle ASMに対するストレージ制限は、ディスク・グループ互換性属性によって決まります。

表7-1 Oracle ACFSファイル・システムまたはOracle ADVMボリュームの最大ファイル・サイズ

冗長性 COMPATIBLE.ASM < 12.2.0.1のディスク・グループ COMPATIBLE.ASM >= 12.2.0.1のディスク・グループ

外部

128 TB

128 TB

標準

64 TB

128 TB

42.6 TB

128 TB

関連項目:

Oracle ACFSのエラー処理

Oracle ACFSまたは別のファイル・システムがOracle ADVMボリュームを使用しているときにOracle ASMインスタンスに障害が発生したり強制終了となると、I/O障害が発生します。そのボリュームに再びアクセスするには、ボリュームを閉じてから、開きなおす必要があります。これには、ローカルOracle ASMインスタンスの障害発生時にマウントされていたすべてのファイル・システムをディスマウントします。インスタンスの再起動後に、対応するディスク・グループを有効なボリュームでマウントしてから、ファイル・システムを再マウントすることも必要です。ボリュームおよびOracle ACFSファイル・システムの登録解除、ディスマウント、無効化を参照してください。

ファイル・システムがOracle ADVMボリューム・ファイルに現在マウントされている場合は、それらのファイル・システムを先にディスマウントせずにOracle ASMインスタンスを終了するのに、SHUTDOWN ABORTコマンドを使用しないでください。使用すると、アプリケーションでI/Oエラーが発生し、Oracle ASMストレージの隔離前に、終了時点で書き込まれるOracle ACFSのユーザー・データおよびメタデータがストレージにフラッシュされない可能性があります。ファイル・システムをディスマウントする時間がない場合は、SHUTDOWN ABORT操作を発行する前に、2つのsync (1)コマンドを実行してキャッシュ済のファイル・システム・データおよびメタデータを永続ストレージにフラッシュする必要があります。

メタデータの書込みが失敗した場合、その原因がOracle ASMインスタンスの障害であろうと記憶域の障害であろうと、Oracle ACFSはオペレーティング・システム環境を中断しません。かわりに、Oracle ACFSはエラーを特定のファイル・システムにまで隔離し、ファイル・システムをオフライン・エラー状態にします。それ以降、そのファイル・システムのそのノードで成功する唯一の操作は、ディスマウント操作です。もう1つのノードでは(記憶域にメタデータを書き込めると仮定して)、未処理のメタデータ・トランザクションがリカバリされます。I/Oの異常が解決したら、オフラインにしたノードにファイル・システムを再びマウントできます。

ファイル・システムのディレクトリがプロセスの現在の作業ディレクトリであるなど、ファイル・システムを参照するプロセスが存在する場合、管理者がオフライン・エラー状態にあるファイル・システムをディスマウントすることはできません。この場合、ファイル・システムをディスマウントするには、ファイル・システムのファイルおよびディレクトリを参照するそのノード上のすべてのプロセスを識別して、それらを終了させる必要があります。Linuxのfuserコマンドまたはlsofコマンドは、プロセスおよびオープン・ファイルに関する情報を一覧表示します。

Oracle ACFSは、チェックサムまたは想定されるタイプの比較に基づいて、読取り操作から戻されたファイル・メタデータで不整合を検出すると、適切な処理を実行して、影響を受けるファイル・システム・コンポーネントを隔離し、fsckをできるだけ早く実行する必要があることを示す通知を生成します。fsckが実行されるまで、ファイル・システムがマウントされるたびに、システム・イベント・ログ出力メッセージを含む通知が生成されます。

Oracle ACFSとNFS

Linux上のNFSを介してファイル・システムをエクスポートするときには、-fsid=numエクスポート・オプションを使用します。このオプションは、NFSクライアントとの通信に使用されるファイル・ハンドルのファイル・システム識別子の部分を、ファイル・システムがマウントされているブロック・デバイスのメジャー番号およびマイナー番号から導出された数値のかわりに、強制的に指定した値にします。numには32ビットの番号であれば使用できますが、エクスポートされたすべてのファイル・システムの間で一意であることが必要です。また、numは、クラスタのメンバー間で一意であり、特定のファイル・システムのクラスタの各メンバーで同じnumであることが必要です。これが必要なのは、Oracle ASM DVMブロック・デバイスのメジャー番号が、同じノードのすべての再起動で、またはクラスタ内の様々なノードで、同じであると保証されないためです。

Gridホーム・クラスタ用の高可用性NFS (HANFS)を使用している場合、HANFSでは、前の段落で記述されている状況を自動的に処理します。HANFSの詳細は、Oracle Grid Infrastructure用の高可用性Network File Storageを参照してください。

Oracle ADVMの制限事項

このトピックでは、Oracle ADVMの制限事項について説明します。

Oracle ADVMボリュームのデフォルトの構成は、8列、ストライプ幅が1MBです。デフォルトのボリューム・エクステント・サイズは64MBです。

Oracle ADVM動的ボリュームで列数を1に設定すると、Oracle ADVMボリュームのストライプ化は事実上終了します。データベース・データ・ファイルおよびその他のファイルを使用して最適なパフォーマンスを実現するには、列を8(デフォルト)に設定することをお薦めします。

Linuxプラットフォームでは、Oracle ASM動的ボリューム・マネージャ(Oracle ADVM)ボリューム・デバイスは、Oracle ASMディスク・グループ内の基礎となるストレージの構成に関係なく、ブロック・デバイスとして作成されます。Oracle ADVMボリューム・ブロック・デバイスのRAWボリューム・デバイスへのマップにRAW (8)を使用しないでください。

Oracle ADVMボリュームを管理するASMCMDコマンドの詳細は、ASMCMDによるOracle ADVMの管理を参照してください。

ACFSスナップショットを使用した全データベース(非CDBまたはCDB)のクローニング方法

ACFSスナップショットは、ファイル・システムのスパースなPoint-in-Timeコピーであり、これを使用すると、DBがACFS上にある場合に、PDBスナップショット・クローニングを使用してPDBのクローンと同様にフルDBクローンも作成できます(PDBクローニングのユーザー・インタフェース)。ACFSスナップショットをテスト環境および開発環境で使用して、テスト・マスターの高速で領域効率の高いクローンを作成できます。この項では、ACFSスナップを使用してフルDBクローンを作成するために必要なステップを例とともに説明します。

テスト設定: クローニングされるSOURCEという単一のテスト・マスターCDBがあります。このCDBにはsourcepdb[1-10]という名前で10個のPDBがあり、それぞれOLTPスキーマとともにロードされます。これはReal Application Clusterデータベース(RAC)で、インスタンスは両方のノードで実行されています。データファイル、REDOログおよび制御ファイルは、"/mnt/dbvol"にマウントされたACFSに格納されます。このファイル・システムは、DATAディスク・グループに作成されます。リカバリ・ログおよびアーカイブ・ログは、RECOディスク・グループの最上位に作成される、"/mnt/rvol"にマウントされたファイル・システムに格納されます。ACFSスナップはファイル・システム内に格納され、同じマウントポイントを介してアクセスできます。

問題が発生した場合にリカバリ方法を提供するために、テスト・マスター・データベースのバックアップを定期的に作成することをお薦めします。

ExadataでのACFSスナップショットの構成の詳細は、Oracle Exadataストレージ・スナップショットの設定を参照してください

様々なACFSスナップショットのユースケースの詳細は、My Oracle Support (MOS)のノート「Oracle ACFS Snapshot Use Cases on Exadata」(文書ID 2761360.1)を参照してください。

クローンを作成および使用するステップ

  1. データベースがアーカイブ・ログ・モードであることを確認します。
    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /mnt/rvol/archive
    Oldest online log sequence     488
    Next log sequence to archive   489
    Current log sequence           489
    SQL>
  2. テスト・マスター・データベースの制御ファイルのSQLトレース・バックアップを取得します。生成されたスクリプトは、このテスト・マスターのスナップショットごとに制御ファイルを作成するための基礎として使用されます。このバックアップは、AS句で指定された場所に作成されます。RESETLOGS引数を指定すると、create controlfile文のRESETLOGSバージョンのみがトレース・ファイルに生成されます。
    SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/tmp/source1_ctlfile_bkup.sql' RESETLOGS;
    Database altered.
    
    [oracle@machine ~]$ ls -lrt /tmp/source1_ctlfile_bkup.sql
    -rw-r----- 1 oracle oinstall 32874 Jun 16 04:01 /tmp/source1_ctlfile_bkup.sql
  3. DBインスタンスがspfileを現在使用している場合は、spfileからpfileを作成します。
    SQL> CREATE PFILE=’/tmp/clone_pfile.ora’ FROM SPFILE;
     
    File created.
     
    SQL>

    pfileは、PFILE=句で指定された場所に保存されます。

  4. テスト・マスター・データベースを停止し、データファイル・ファイルシステムのRWスナップを作成します。
    [oracle@machine ~]$ srvctl stop database -db source
    [oracle@machine ~]$ /sbin/acfsutil  snap create -w clone /mnt/dbvol/
    acfsutil snap create: Snapshot operation is complete.
    [oracle@machine ~]$ /sbin/acfsutil snap info clone /mnt/dbvol/
    snapshot name:               clone
    snapshot location:           /mnt/dbvol/.ACFS/snaps/clone
    RO snapshot or RW snapshot:  RW
    parent name:                 /mnt/dbvol/
    snapshot creation time:      Tue Jun 16 04:09:10 2020
    file entry table allocation: 17170432   (  16.38 MB )
    storage added to snapshot:   17170432   (  16.38 MB )
    $
  5. ステップ2で生成したトレース・ファイルを変更します。

    バックアップされたトレース・ファイル内の次のブロックは、

    STARTUP NOMOUNT
    CREATE CONTROLFILE REUSE DATABASE "SOURCE" RESETLOGS  ARCHIVELOG
        MAXLOGFILES 192
        MAXLOGMEMBERS 3
        MAXDATAFILES 1024
        MAXINSTANCES 32
        MAXLOGHISTORY 2254
    LOGFILE
      GROUP 5 (
        '/mnt/dbvol/oradata/SOURCE/onlinelog/o1_mf_5_hfh27gq1_.log',
        '/mnt/rvol/fast_recovery_area/SOURCE/onlinelog/o1_mf_5_hfh27jgv_.log'
      ) SIZE 2048M BLOCKSIZE 512,
      GROUP 6 (
        '/mnt/dbvol/oradata/SOURCE/onlinelog/o1_mf_6_hfh27ymp_.log',
        '/mnt/rvol/fast_recovery_area/SOURCE/onlinelog/o1_mf_6_hfh280cb_.log'
      ) SIZE 2048M BLOCKSIZE 512

    次のように変更する必要があります。

    CREATE CONTROLFILE  DATABASE "SOURCE" RESETLOGS ARCHIVELOG
        MAXLOGFILES 192
        MAXLOGMEMBERS 3
        MAXDATAFILES 1024
        MAXINSTANCES 32
        MAXLOGHISTORY 2254
    LOGFILE
      GROUP 5  SIZE 2048M BLOCKSIZE 512,
      GROUP 6  SIZE 2048M BLOCKSIZE 512

    新しいREDOログ・ファイルを作成するので、ターゲット・ファイルを作成するためにDBインスタンスによってdb_create_online_log_dest_1パラメータが選択されることに注意してください。前述の文で指定して、OracleでOracle Managed Files (OMF)を使用して名前を付ける必要はありません。

    CREATE CONTROLFILE文で指定されているDATABASE名は、テスト・マスターのデータベース名と一致する必要があります。DB_UNIQUE_NAMEパラメータは、これをテスト・マスターとは異なるデータベースにするために使用されます。

    DATAFILEブロックのファイル名では、スナップショットで作成されたファイルを指すようにディレクトリ構造を変更する必要があります。

    ノート: これらのファイル名の変更に失敗すると、スナップショットが、その親ファイルを破損して直接使用するようになる可能性があります。スナップショットの場所を指すようにすべてのデータファイル名が変更されていることを確認してください。

    次の名前のファイル

    /mnt/dbvol/oradata/source/datafile/o1_mf_system_hkp8q4l0_.dbf

    は、次のように名前を変更する必要があります

    /mnt/dbvol/.ACFS/snaps/clone/oradata/source/datafile/o1_mf_system_hkp8q4l0_.dbf

    制御ファイルの作成を試行する前に、すべてのスナップショット・データファイルが存在することを確認してください。

    TEMPファイルはすべて新規作成されるため、対応する文を変更する必要があります。

    • 古いTEMPファイルの句:
      ALTER TABLESPACE TEMP ADD TEMPFILE '/mnt/dbvol/oradata/SOURCE/datafile/o1_mf_temp_hf9ck61d_.tmp'
           SIZE 1377M REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
      ALTER SESSION SET CONTAINER = "PDB$SEED";
      ALTER TABLESPACE TEMP ADD TEMPFILE '/mnt/dbvol/oradata/SOURCE/datafile/temp012020-06-01_03-40-57-522-AM.dbf'
           SIZE 37748736  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
      ALTER SESSION SET CONTAINER = "SOURCEPDB1";
      ALTER TABLESPACE TEMP ADD TEMPFILE '/mnt/dbvol/oradata/SOURCE/A70228A28B4EB481E053DFB2980A90DF/datafile/o1_mf_temp_hf9f8yxz_.dbf'
           SIZE 37748736  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
      ALTER SESSION SET CONTAINER = "SOURCEPDB2";
      ALTER TABLESPACE TEMP ADD TEMPFILE '/mnt/dbvol/oradata/SOURCE/A70229825B448EF3E053E0B2980AA4D4/datafile/o1_mf_temp_hf9f9goq_.dbf'
           SIZE 37748736  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
      ...........................................
      ...........................................
      ...........................................
    • 新しいTEMPファイルの句:
      ALTER TABLESPACE TEMP ADD TEMPFILE SIZE 1377M AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
      ALTER SESSION SET CONTAINER = "PDB$SEED";
      ALTER TABLESPACE TEMP ADD TEMPFILE SIZE 37748736   AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
      ALTER SESSION SET CONTAINER = "SOURCEPDB1";
      ALTER TABLESPACE TEMP ADD TEMPFILE SIZE 37748736   AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
      ALTER SESSION SET CONTAINER = "SOURCEPDB2";
      ALTER TABLESPACE TEMP ADD TEMPFILE SIZE 37748736   AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
      ...........................................
      ...........................................
      ...........................................

    ノート:

    OMFは一時ファイルの命名に使用されており、ファイル名を指定する必要はありません。
    • その他の変更点:
      • 全体でREUSE文を削除します。
      • RECOVER DATABASEコマンドを削除します。
      • ブロック変更トラッキングを有効にするコマンドを削除します。

    次に、完全なcreate controlfile文の例を示します。

    STARTUP NOMOUNT
    CREATE CONTROLFILE  DATABASE "SOURCE" RESETLOGS  ARCHIVELOG
        MAXLOGFILES 1024
        MAXLOGMEMBERS 5
        MAXDATAFILES 32767
        MAXINSTANCES 32
        MAXLOGHISTORY 33012
    LOGFILE
    GROUP 1 SIZE 4096M BLOCKSIZE 512, 
    GROUP 2 SIZE 4096M BLOCKSIZE 512, 
    GROUP 5 SIZE 4096M BLOCKSIZE 512, 
    GROUP 6 SIZE 4096M BLOCKSIZE 512 
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/datafile/o1_mf_system_hkpjm4lh_.dbf',
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFDB0C85C03151AE053FE5E1F0AA61D/datafile/o1_mf_system_hkpjm4rf_.dbf',
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/datafile/o1_mf_sysaux_hkpjm56t_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFDB0C85C03151AE053FE5E1F0AA61D/datafile/o1_mf_sysaux_hkpjm6x4_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/datafile/o1_mf_undotbs1_hkpjm6x0_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFDB0C85C03151AE053FE5E1F0AA61D/datafile/o1_mf_undotbs1_hkpjm6w5_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/datafile/o1_mf_undotbs2_hkpjm6tx_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/datafile/o1_mf_users_hkpjm722_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFE1E09C8245CC2E053FE5E1F0A5632/datafile/o1_mf_system_hkpjmqds_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFE1E09C8245CC2E053FE5E1F0A5632/datafile/o1_mf_sysaux_hkpjmqoc_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFE1E09C8245CC2E053FE5E1F0A5632/datafile/o1_mf_undotbs1_hkpjmtl7_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFE1E09C8245CC2E053FE5E1F0A5632/datafile/o1_mf_undo_2_hkpjn03d_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFE1E09C8245CC2E053FE5E1F0A5632/datafile/o1_mf_users_hkpjn16b_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AAFE1E09C8245CC2E053FE5E1F0A5632/datafile/o1_mf_soe_hkpjn1ft_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB1122BDE19EF370E053FE5E1F0A4E77/datafile/o1_mf_system_hkpjn8h4_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB1122BDE19EF370E053FE5E1F0A4E77/datafile/o1_mf_sysaux_hkpjn8nt_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB1122BDE19EF370E053FE5E1F0A4E77/datafile/o1_mf_undotbs1_hkpjn8qq_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB1122BDE19EF370E053FE5E1F0A4E77/datafile/o1_mf_undo_2_hkpjnf2p_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB1122BDE19EF370E053FE5E1F0A4E77/datafile/o1_mf_users_hkpjnglw_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB1122BDE19EF370E053FE5E1F0A4E77/datafile/o1_mf_soe_hkpjnkm6_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB112685643A0B77E053FE5E1F0A7BDD/datafile/o1_mf_system_hkpjnl8v_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB112685643A0B77E053FE5E1F0A7BDD/datafile/o1_mf_sysaux_hkpjnmfm_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB112685643A0B77E053FE5E1F0A7BDD/datafile/o1_mf_undotbs1_hkpjnqjz_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB112685643A0B77E053FE5E1F0A7BDD/datafile/o1_mf_undo_2_hkpjnqk7_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB112685643A0B77E053FE5E1F0A7BDD/datafile/o1_mf_users_hkpjnygh_.dbf',  
    '/mnt/dbvol/.ACFS/snaps/clone/oradata/AB112685643A0B77E053FE5E1F0A7BDD/datafile/o1_mf_soe_hkpjnyv6_.dbf'
    CHARACTER SET AL32UTF8;
    
    -- 
    -- 
    -- Create log files for threads other than thread one.
    ALTER DATABASE ADD LOGFILE THREAD 2
    GROUP 3 SIZE 4096M BLOCKSIZE 512 ,
    GROUP 4 SIZE 4096M BLOCKSIZE 512 ,
    GROUP 7 SIZE 4096M BLOCKSIZE 512 ,
    GROUP 8 SIZE 4096M BLOCKSIZE 512 ;
    -- Database can now be opened zeroing the online logs.
    ALTER DATABASE OPEN RESETLOGS;
    -- Open all the PDBs.
    ALTER PLUGGABLE DATABASE ALL OPEN;
    -- Commands to add tempfiles to temporary tablespaces.
    -- Online tempfiles have complete space information.
    -- Other tempfiles may require adjustment.
    ALTER TABLESPACE TEMP ADD TEMPFILE
         SIZE 32768M  AUTOEXTEND ON NEXT 16384M MAXSIZE 524288M;
    ALTER SESSION SET CONTAINER = PDB$SEED;
    ALTER TABLESPACE TEMP ADD TEMPFILE
         SIZE 32767M  AUTOEXTEND OFF;
    ALTER SESSION SET CONTAINER = PDB201;
    ALTER TABLESPACE TEMP ADD TEMPFILE
         SIZE 32768M  AUTOEXTEND ON NEXT 16384M MAXSIZE 524288M;
    ALTER SESSION SET CONTAINER = PDB202;
    ALTER TABLESPACE TEMP ADD TEMPFILE
         SIZE 32768M  AUTOEXTEND ON NEXT 16384M MAXSIZE 524288M;
    ALTER SESSION SET CONTAINER = PDB203;
    ALTER TABLESPACE TEMP ADD TEMPFILE
         SIZE 32768M  AUTOEXTEND ON NEXT 16384M MAXSIZE 524288M;
    ALTER SESSION SET CONTAINER = CDB$ROOT;
    -- End of tempfile additions.
    shutdown immediate
    exit
    
  6. 前述のステップ3でバックアップしたPFILEを編集します。データベース・クローンについてもdb_nameは同じままですが、db_unique_nameは異なる必要があることに注意してください。RACインスタンスもdb_unique_nameから名前を導出する必要があります。ファイル・パスがスナップ内の対応する場所を指していることを確認します。必要な変更を次にまとめます。
    • 追加される新しいパラメータ。
      *.db_unique_name='clone'
    • 既存のインスタンス名を新しいインスタンス名に変更します。
      • 変更前:
            source1.instance_number=1
            source2.instance_number=2
            source1.thread=1
            source2.thread=2
            source1.undo_tablespace='UNDOTBS1'
            source2.undo_tablespace='UNDOTBS2'
      • 変更後:
            clone1.instance_number=1
            clone2.instance_number=2
            clone1.thread=1
            clone2.thread=2
            clone1.undo_tablespace='UNDOTBS1'
            clone2.undo_tablespace='UNDOTBS2'

    インスタンス名の出現箇所すべてに同様の変更を加えます。

    RACデータベースの場合、クローン・インスタンスはまず排他モードで起動し、次にクローンの作成後にクラスタ・モードで再起動する必要があることに注意してください。このような場合は、PFILEのCLUSTER_DATABASEパラメータをコメント・アウトします。
    *.cluster_database=true
    pfile内のパラメータを変更して、スナップショット内の新しいデータファイル、アーカイブ・ログおよび制御ファイルの場所を反映します。
    • 変更前:
          *.db_create_file_dest='/mnt/dbvol/oradata'
          *.log_archive_dest_1='LOCATION=/mnt/rvol/archive1'
          *.control_files='/mnt/dbvol/oradata/SOURCE/controlfile/o1_mf_hf9cjtv0_.ctl','/mnt/rvol/fast_recovery_area/SOURCE/controlfile/o1_mf_hf9cjtxr_.ctl'
    • 変更後:
          *.db_create_file_dest='/mnt/dbvol/.ACFS/snaps/clone/oradata'
          *.log_archive_dest_1='LOCATION=/mnt/rvol/archive1'
          *.control_files='/mnt/dbvol/.ACFS/snaps/clone/oradata1/ctrl_1_.ctl'
       
    クローンの監査トレース・ファイルの新しい場所を指定します。
        *.audit_file_dest='/u01/app/oracle/admin/clone/adump'

    前述のディレクトリが存在しない場合は作成します。

    $ mkdir –p /u01/app/oracle/admin/clone/adump
  7. 変更されたPFILEを$ORACLE_HOME/dbsディレクトリからコピーし、ローカル・クローン・データベース・インスタンス名と一致するように名前をinit.oraファイルとして変更します。たとえば: $ cp /tmp/clone_pfile.ora $ORACLE_HOME/dbs/initclone1.ora
  8. ソース・データベースからクローンの新しいファイル名にパスワード・ファイルをコピーします。
    $ cp <Directory where password file is stored>/orapwsource /mnt/dbvol/.ACFS/snaps/clone/orapwclone
  9. 新しいSIDを指すようにORACLE_SIDを設定し、ステップ5で生成したSQLスクリプトを実行します。
    [oracle@machine dbclone]$ export ORACLE_SID=clone1
    [oracle@machine dbclone]$ sqlplus / as sysdba
     
    SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 16 04:50:21 2020
    Version 19.7.0.0.0
     
    Copyright (c) 1982, 2020, Oracle.  All rights reserved.
     
    Connected to an idle instance.
     
    SQL> spool startup.log
    SQL> @ctlfile
    ORACLE instance started.
     
    Total System Global Area 8.1068E+10 bytes
    Fixed Size                 30383424 bytes
    Variable Size            1.1006E+10 bytes
    Database Buffers         6.9793E+10 bytes
    Redo Buffers              238051328 bytes
     
    Control file created.
    System altered.
    Database altered.
    Pluggable database altered.
    Tablespace altered.
    Session altered.
    Tablespace altered.
    Session altered.
    Tablespace altered.
    Session altered.
    Tablespace altered.
    .........................
    .........................
    .........................
    .........................
  10. これで、DBは最初のノードに排他モードでマウントされます。テスト・マスター・データベースがRACデータベースで、スナップショットでRACを有効にする場合は、データベースを停止し、pfileで"cluster_database=true"パラメータを設定してインスタンスを再起動します。spfileを作成し、ACFSデータベース・ファイル・システムに格納します。これが完了したら、両方のRACインスタンスを起動し、すべてのノードでDBを稼働させます。
    SQL> create spfile=’/mnt/dbvol/.ACFS/snaps/clone/oradata/spfileclone.ora’ from pfile=”<ORACLE_HOME>/dbs/initclone1.ora’

    データベースとそのプロパティをCluster Ready Services (CRS)に追加します

    $ srvctl add database -db clone -oraclehome $ORACLE_HOME -dbtype RAC -spfile /mnt/dbvol/.ACFS/snaps/clone/oradata/spfileclone.ora -pwfile /mnt/dbvol/.ACFS/snaps/clone/orapwclone -dbname source -acfspath "/mnt/dbvol,/mnt/rvol" -policy AUTOMATIC -role PRIMARY

    クラスタのノード/インスタンスごとにインスタンスを追加します。

    $ srvctl add instance -db clone -instance clone -node <node hostname>
  11. アーカイブ・ログが新しい宛先を使用していることを確認します。
    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /mnt/rvol/archive1
    Oldest online log sequence     489
    Next log sequence to archive   490
    Current log sequence           490
    SQL>

    クラスタ・データベース・モードが使用されているかどうかを確認します。

    SQL> SHOW PARAMETER cluster_database
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    cluster_database                     boolean     TRUE
    cluster_database_instances           integer     2
    SQL>

    RAC環境では、データベースが正しく構成されるように、必要に応じてsrvctl start databaseおよびstop databaseコマンドを使用してください。

  12. クローン内のすべてのPDBをオープンして使用できることを確認します。
    SQL> SELECT open_mode FROM v$pdbs;
     
    OPEN_MODE
    ----------
    READ ONLY
    READ WRITE
    READ WRITE
    READ WRITE
    READ WRITE
    READ WRITE
    READ WRITE
    READ WRITE
    READ WRITE
    READ WRITE
    READ WRITE
     
    11 rows selected.
     
     
    SQL> ALTER SESSION SET CONTAINER=SOURCEPDB1;
     
    Session altered.
     
    SQL> SELECT name FROM v$tablespace;
     
    NAME
    ------------------------------
    SYSTEM
    SYSAUX
    UNDOTBS1
    UNDO_2
    USERS
    USER_TBS
    LOB_TBS
    FLASHBACK_TBS
    TEMP
    USER_TEMP
     
    10 rows selected.
     
    SQL>
これでDBクローンの準備が完了し、テストの実行に使用できます。クローンが稼働している間は、そのクローンまたはテスト・マスターから追加のクローンを作成できます。これにより、ACFSスナップショット・テクノロジを使用して任意の数のDBクローンを簡単に作成できます。
また、これらの新しいDBクローンのサービスを、親に使用されるものと同様に(またはアプリケーションでの必要に応じて)追加することもお薦めします。

ACFS fshareを使用してPDBのRMAN疎バックアップおよびリストアを実行するステップ

  1. SOURCEとCLONEの2つのPDBがあるとします。CLONEはSOURCEのスナップショット・コピーです。スナップショット・コピーは、ACFS fshareを使用するシン・クローンです。
    SQL> create pluggable database SOURCE admin user foo identified by bar;
    
    Pluggable database created.
    
    SQL> select d.con_id, p.name pdb_name, p.open_mode, d.file#, d.name file_name from v$dbfile d, v$pdbs p where d.con_id=p.con_id order by d.con_id,p.name,d.file#,d.name;
    
        CON_ID PDB_NAME             OPEN_MODE       FILE# FILE_NAME
    ---------- -------------------- ---------- ---------- --------------------------------------------------------------------------------
             3 SOURCE               MOUNTED            23 /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_system_k8qtdbnj_.dbf
             3 SOURCE               MOUNTED            24 /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysaux_k8qtdbny_.dbf
             3 SOURCE               MOUNTED            25 /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysext_k8qtdbo3_.dbf
             3 SOURCE               MOUNTED            26 /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_cdb1_pdb_k8qtdbo7_.dbf
    
    SQL> alter session set container = SOURCE;
    
    Session altered.
    
    SQL> alter pluggable database open;
    
    Pluggable database altered.
    
    SQL> create table tab1 (x number, y number, z number);
    
    Table created.
    
    SQL> insert into tab1 values (1, 2, 3);
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> alter session set container = cdb$root;
    
    Session altered.
    
    SQL> alter pluggable database SOURCE close;
    
    Pluggable database altered.
    
    SQL> alter pluggable database SOURCE open read only;
    
    Pluggable database altered.
    
    SQL> create pluggable database CLONE from SOURCE snapshot copy;
    
    Pluggable database created.
    
    SQL> select d.con_id, p.name pdb_name, p.open_mode, d.file#, d.name file_name from v$dbfile d, v$pdbs p where d.con_id=p.con_id order by d.con_id,p.name,d.file#,d.name;
    
        CON_ID PDB_NAME             OPEN_MODE       FILE# FILE_NAME
    ---------- -------------------- ---------- ---------- -----------------------------------------------------------------------------------
             3 SOURCE               READ ONLY          23 /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_system_k8qtdbnj_.dbf
             3 SOURCE               READ ONLY          24 /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysaux_k8qtdbny_.dbf
             3 SOURCE               READ ONLY          25 /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysext_k8qtdbo3_.dbf
             3 SOURCE               READ ONLY          26 /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_cdb1_pdb_k8qtdbo7_.dbf
             4 CLONE                MOUNTED            35 /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
             4 CLONE                MOUNTED            36 /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8stg6c5_.dbf
             4 CLONE                MOUNTED            37 /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8stg6cc_.dbf
             4 CLONE                MOUNTED            38 /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8stg6cj_.dbf
    
    $ ls -l /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
    -rw-rw---- 1 oracle dba 259M May 24 10:22 /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
    
    $ /sbin/acfsutil info file -f /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
    ...
        fshare:       Yes
        fshare parent identifier:       49
        fshare parent _genum:       1
    ...
             extent count: 79
             owned extent count: 41
             shared extent count: 38
    
    $ /sbin/acfsutil info file -f /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8stg6c5_.dbf
    ...
        fshare:       Yes
        fshare parent identifier:       48
        fshare parent _genum:       1
    ...
             extent count: 17
             owned extent count: 12
             shared extent count: 5
    
    $ /sbin/acfsutil info file -f /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8stg6cc_.dbf
    ...
        fshare:       Yes
        fshare parent identifier:       45
        fshare parent _genum:       0
    ...
             extent count: 3
             owned extent count: 1
             shared extent count: 2
    
    
    $ /sbin/acfsutil info file -f /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8stg6cj_.dbf
    /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8stg6cj_.dbf
        fshare:       Yes
        fshare parent identifier:       47
        fshare parent _genum:       1
    ...
             extent count: 7
             owned extent count: 7
             shared extent count: 0
    
    SQL> alter pluggable database CLONE open;
    
    Pluggable database altered.
    
    SQL> alter session set container = CLONE;
    
    Session altered.
    
    SQL> select x,y,z from tab1;
    
             X          Y          Z
    ---------- ---------- ----------
             1          2          3
    
    SQL> update tab1 set x = 2*x, y = 10 * y, z = 100 * z;
    
    1 row updated.
    
    SQL> insert into tab1 values (97, 98, 99);
    
    1 row created.
    
    SQL> select x,y,z from tab1;
    
             X          Y          Z
    ---------- ---------- ----------
             2         20        300
            97         98         99
    
    SQL> commit;
    
    Commit complete.
    
    SQL> alter pluggable database CLONE close;
    
    Pluggable database altered.
    
    SQL>
  2. RMANを使用して、SOURCEの完全バックアップおよびCLONEの疎バックアップを実行します。
    RMAN> backup as copy pluggable database 'SOURCE'to destination '/backup';
    
    Starting backup at 24-MAY-22 
    using channel ORA_DISK_1 
    channel ORA_DISK_1: starting datafile copy 
    input datafile file number=00023 name=/acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_system_k8qtdbnj_.dbf
    output file name=/backup/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_system_k8sv37z7_.dbf
    tag=TAG20220524T103207 RECID=5 STAMP=1105525929 
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    channel ORA_DISK_1: starting datafile copy 
    input datafile file number=00024 name=/acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysaux_k8qtdbny_.dbf
    output file name=/backup/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysaux_k8sv3c49_.dbf
    tag=TAG20220524T103207 RECID=6 STAMP=1105525931 
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy 
    input datafile file number=00026 name=/acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_cdb1_pdb_k8qtdbo7_.dbf
    output file name=/backup/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_cdb1_pdb_k8sv3d8y_.dbf
    tag=TAG20220524T103207 RECID=7 STAMP=1105525932 
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy 
    input datafile file number=00025 name=/acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysext_k8qtdbo3_.dbf
    output file name=/backup/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysext_k8sv3ff4_.dbf
    tag=TAG20220524T103207 RECID=8 STAMP=1105525933 c
    hannel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    
    Finished backup at 24-MAY-22 
    Starting Control File Autobackup at 24-MAY-22 
    piece handle=/ade/b/1779015158/oracle/dbs/c-2109129204-20220524-02
    comment=NONE 
    Finished Control File Autobackup at 24-MAY-22 
    
    RMAN> backup as sparse copy pluggable database 'CLONE' to destination '/backup';
     
    Starting backup at 24-MAY-22 using channel ORA_DISK_1 
    channel ORA_DISK_1: starting datafile copy input datafile file number=00035
    name=/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
    output file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8sv578m_.dbf
    tag=TAG20220524T103310 RECID=9 STAMP=1105525991 
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy 
    input datafile file number=00036 name=/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8stg6c5_.dbf
    output file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8sv58dm_.dbf
    tag=TAG20220524T103310 RECID=10 STAMP=1105525992 
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy 
    input datafile file number=00038 name=/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8stg6cj_.dbf
    output file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8sv59jc_.dbf
    tag=TAG20220524T103310 RECID=11 STAMP=1105525993 
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy 
    input datafile file number=00037 name=/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8stg6cc_.dbf
    output file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8sv5bnf_.dbf
    tag=TAG20220524T103310 RECID=12 STAMP=1105525994 
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    
    Finished backup at 24-MAY-22 
    Starting Control File Autobackup at 24-MAY-22 
    piece handle=/ade/b/1779015158/oracle/dbs/c-2109129204-20220524-03
    comment=NONE 
    Finished Control File Autobackup at 24-MAY-22 
  3. 「du」を使用して疎バックアップがスパースであることを確認します。バックアップの割当て済サイズは、プラガブル・データベースのファイルの割当て済サイズより小さいことに注意してください。
    $ ls -l /backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/
    total 191M
    -rw-rw---- 1 oracle dba  96M May 24 10:33 o1_mf_cdb1_pdb_k8sv59jc_.dbf
    -rw-rw---- 1 oracle dba 211M May 24 10:33 o1_mf_sysaux_k8sv58dm_.dbf
    -rw-rw---- 1 oracle dba  40M May 24 10:33 o1_mf_sysext_k8sv5bnf_.dbf
    -rw-rw---- 1 oracle dba 259M May 24 10:33 o1_mf_system_k8sv578m_.dbf
    
    $ du -sch /backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/*
    96M  /backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8sv59jc_.dbf
    88M  /backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8sv58dm_.dbf
    1.0M  /backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8sv5bnf_.dbf
    7.3M  /backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8sv578m_.dbf
    191M    total
    
    $ du -sch /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/*
    96M  /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8stg6cj_.dbf
    213M  /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8stg6c5_.dbf
    40M  /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8stg6cc_.dbf
    264M  /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
    41M  /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_temp_k8stg6c9_.dbf
    651M    total
     
    SQL>
  4. CLONEプラガブル・データベースのファイルを削除し、メディア障害をシミュレートします。
    $ rm -rf /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/*
    
    $
  5. fshareを再作成しないと、リストアは失敗します。
    RMAN> restore from sparse pluggable database 'CLONE';
    
    Starting restore at 24-MAY-22
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=204 device type=DISK
    
    channel ORA_DISK_1: restoring datafile 00035
    input datafile copy RECID=9 STAMP=1105525991 file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8sv578m_.dbf
    destination for restore of datafile 00035: /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of restore command at 05/24/2022 10:39:23
    ORA-19566: exceeded limit of 0 corrupt blocks for file /backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8sv578m_.dbf
    ORA-19600: input file is datafile-copy 9 (/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8sv578m_.dbf)
    ORA-19601: output file is datafile 35 (/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_%u_.dbf)
    
  6. CLONEプラガブル・データベース内のファイルのfshareを再作成します。ノート: このステップは、これらのファイルが存在しない場合にのみ必要です。CLONE PDBをリストアする理由によっては、fshareを再作成する必要がない場合があります。
    $ /sbin/acfsutil fshare create /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_system_k8qtdbnj_.dbf /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
    acfsutil fshare create: File share operation is complete.
    
    $ /sbin/acfsutil fshare create /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysaux_k8qtdbny_.dbf /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8stg6c5_.dbf
    acfsutil fshare create: File share operation is complete.
    
    $ /sbin/acfsutil fshare create /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_sysext_k8qtdbo3_.dbf /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8stg6cc_.dbf
    acfsutil fshare create: File share operation is complete.
    
    $ /sbin/acfsutil fshare create /acfs/DB/DFB3F96AEBAD910AE0538E5246642001/datafile/o1_mf_cdb1_pdb_k8qtdbo7_.dbf /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8stg6cj_.dbf
    acfsutil fshare create: File share operation is complete.
    
  7. CLONEプラガブル・データベースを疎バックアップからリストアします。
    RMAN> restore from sparse pluggable database 'CLONE';
    
    Starting restore at 24-MAY-22
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=57 device type=DISK
    
    channel ORA_DISK_1: restoring datafile 00035
    input datafile copy RECID=9 STAMP=1105525991 file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8sv578m_.dbf
    destination for restore of datafile 00035: /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf
    channel ORA_DISK_1: copied datafile copy of datafile 00035, elapsed time: 00:00:03
    output file name=/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_system_k8stg6b9_.dbf RECID=0 STAMP=0
    channel ORA_DISK_1: restoring datafile 00036
    input datafile copy RECID=10 STAMP=1105525992 file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8sv58dm_.dbf
    destination for restore of datafile 00036: /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8stg6c5_.dbf
    channel ORA_DISK_1: copied datafile copy of datafile 00036, elapsed time: 00:00:03
    output file name=/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysaux_k8stg6c5_.dbf RECID=0 STAMP=0
    channel ORA_DISK_1: restoring datafile 00037
    input datafile copy RECID=12 STAMP=1105525994 file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8sv5bnf_.dbf
    destination for restore of datafile 00037: /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8stg6cc_.dbf
    channel ORA_DISK_1: copied datafile copy of datafile 00037, elapsed time: 00:00:01
    output file name=/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_sysext_k8stg6cc_.dbf RECID=0 STAMP=0
    channel ORA_DISK_1: restoring datafile 00038
    input datafile copy RECID=11 STAMP=1105525993 file name=/backup/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8sv59jc_.dbf
    destination for restore of datafile 00038: /acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8stg6cj_.dbf
    channel ORA_DISK_1: copied datafile copy of datafile 00038, elapsed time: 00:00:03
    output file name=/acfs/DB/DFC3A937C9E449D9E0538E52466425A4/datafile/o1_mf_cdb1_pdb_k8stg6cj_.dbf RECID=0 STAMP=0
    Finished restore at 24-MAY-22
    
  8. CLONEプラガブル・データベースをリカバリします。
    RMAN> recover pluggable database 'CLONE';
    
    Starting recover at 24-MAY-22
    using channel ORA_DISK_1
    
    starting media recovery
    media recovery complete, elapsed time: 00:00:01
    
    Finished recover at 24-MAY-22
    
  9. CLONEプラガブル・データベースが使用可能であることを確認します。表には、リカバリ後に予想される内容が含まれていることに注意してください。
    SQL> alter pluggable database CLONE open;
    
    Pluggable database altered.
    
    SQL> alter session set container = CLONE;
    
    Session altered.
    
    SQL> select x,y,z from tab1;
    
         X        Y           Z
    ---------- ---------- ----------
         2       20         300
        97       98          99
    SQL>

ACFSスナップショットを使用してPDBのRMANの疎バックアップおよびリストアを実行するステップ

  1. SOURCEとCLONEの2つのPDBがあるとします。CLONEはSOURCEのスナップショット・コピーです。ACFSの互換性は19.0.0.0であるため、スナップショット・コピーはACFSスナップショットを使用するシン・クローンです。CLONE PDB内のファイルは、ACFSスナップショットを参照するsymlinkであることに注意してください。
    $ /sbin/acfsutil info fs
        on-disk version:       49.0
        ACFS compatibility:    19.0.0.0.0
    
    SQL> create pluggable database SOURCE admin user foo identified by bar;
    
    Pluggable database created.
    
    SQL> select d.con_id, p.name pdb_name, p.open_mode, d.file#, d.name file_name from v$dbfile d, v$pdbs p where d.con_id=p.con_id order by d.con_id,p.name,d.file#,d.name;
    
        CON_ID PDB_NAME             OPEN_MODE       FILE# FILE_NAME
    ---------- -------------------- ---------- ---------- ------------------------------------------------------------------------------------
             3 SOURCE               MOUNTED            39 /acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_system_k8swj6ms_.dbf
             3 SOURCE               MOUNTED            40 /acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swj6my_.dbf
             3 SOURCE               MOUNTED            41 /acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysext_k8swj6n4_.dbf
             3 SOURCE               MOUNTED            42 /acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swj6n7_.dbf
    
    SQL> alter session set container = SOURCE;
    
    Session altered.
    
    SQL> alter pluggable database open;
    
    Pluggable database altered.
    
    SQL> create table tab1 (x number, y number, z number);
    
    Table created.
    
    SQL> insert into tab1 values (1, 2, 3);
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> alter session set container = cdb$root;
    
    Session altered.
    
    SQL> alter pluggable database SOURCE close;
    
    Pluggable database altered.
    
    SQL> alter pluggable database SOURCE open read only;
    
    Pluggable database altered.
    
    SQL> create pluggable database CLONE from SOURCE snapshot copy;
    
    Pluggable database created.
    
        CON_ID PDB_NAME             OPEN_MODE       FILE# FILE_NAME
    ---------- -------------------- ---------- ---------- ------------------------------------------------------------------------------------
             3 SOURCE               READ ONLY          39 /acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_system_k8swj6ms_.dbf
             3 SOURCE               READ ONLY          40 /acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swj6my_.dbf
             3 SOURCE               READ ONLY          41 /acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysext_k8swj6n4_.dbf
             3 SOURCE               READ ONLY          42 /acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swj6n7_.dbf
             4 CLONE                MOUNTED            43 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8swptmp_.dbf
             4 CLONE                MOUNTED            44 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swptmz_.dbf
             4 CLONE                MOUNTED            45 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8swptn5_.dbf
             4 CLONE                MOUNTED            46 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swptn8_.dbf
    
    $ ls -l /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/*
    lrwxrwxrwx 1 oracle dba 124 May 24 10:59 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swptn8_.dbf -> /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swj6n7_.dbf
    lrwxrwxrwx 1 oracle dba 122 May 24 10:59 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swptmz_.dbf -> /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swj6my_.dbf
    lrwxrwxrwx 1 oracle dba 122 May 24 10:59 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8swptn5_.dbf -> /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysext_k8swj6n4_.dbf
    lrwxrwxrwx 1 oracle dba 122 May 24 10:59 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8swptmp_.dbf -> /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_system_k8swj6ms_.dbf
    -rw-rw---- 1 oracle dba 41M May 24 10:59 /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_temp_k8swptn2_.dbf
    
    $ /sbin/acfsutil info file -f /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swptn8_.dbf
        fshare:       No
    
    $ /sbin/acfsutil snap info /acfs
    snapshot name:               DFC427F513EA6F24E0538E5246647E42
    snapshot location:           /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42
    RO snapshot or RW snapshot:  RW
    storage interest tracking:   Disabled
    parent name:                 /acfs
    snapshot creation time:      Tue May 24 10:59:38 2022
    file entry table allocation: 262144   ( 256.00 KB ) ( 64 entries )
    storage added to snapshot:   38981632   (  37.18 MB )
    
    
        number of snapshots:  1
        kilosnap state:       Enabled
        storage interest tracking: Disabled
        snapshot space usage: 39034880  (  37.23 MB )
    
    
    SQL> alter pluggable database CLONE open;
    
    Pluggable database altered.
    
    SQL> alter session set container = CLONE;
    
    Session altered.
    
    SQL> select x,y,z from tab1;
    
             X          Y          Z
    ---------- ---------- ----------
             1          2          3
    
    SQL> update tab1 set x = 2*x, y = 10 * y, z = 100 * z;
    
    1 row updated.
    
    SQL> insert into tab1 values (97, 98, 99);
    
    1 row created.
    
    SQL> select x,y,z from tab1;
    
             X          Y          Z
    ---------- ---------- ----------
             2         20        300
            97         98         99
    
    SQL> commit;
    
    Commit complete.
    
    SQL> alter pluggable database CLONE close;
    
    Pluggable database altered.
    SQL>
  2. RMANを使用して、SOURCEの完全バックアップおよびCLONEの疎バックアップを実行します。
    RMAN> backup as copy pluggable database 'SOURCE' to destination '/backup';
    
    Starting backup at 24-MAY-22
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=51 device type=DISK
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00039 name=/acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_system_k8swj6ms_.dbf
    output file name=/backup/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_system_k8sxgx4x_.dbf tag=TAG20220524T111228 RECID=13 STAMP=1105528350
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00040 name=/acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swj6my_.dbf
    output file name=/backup/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysaux_k8sxh06x_.dbf tag=TAG20220524T111228 RECID=14 STAMP=1105528352
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00042 name=/acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swj6n7_.dbf
    output file name=/backup/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8sxh1c9_.dbf tag=TAG20220524T111228 RECID=15 STAMP=1105528353
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00041 name=/acfs/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysext_k8swj6n4_.dbf
    output file name=/backup/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysext_k8sxh2j0_.dbf tag=TAG20220524T111228 RECID=16 STAMP=1105528354
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    Finished backup at 24-MAY-22
    
    Starting Control File Autobackup at 24-MAY-22
    piece handle=/ade/b/1779015158/oracle/dbs/c-2109129204-20220524-05 comment=NONE
    Finished Control File Autobackup at 24-MAY-22
    
    RMAN> backup as sparse copy pluggable database 'CLONE' to destination '/backup';
    
    Starting backup at 24-MAY-22
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00043 name=/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8swptmp_.dbf
    output file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8sxj9x5_.dbf tag=TAG20220524T111313 RECID=17 STAMP=1105528394
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00044 name=/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swptmz_.dbf
    output file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8sxjc2h_.dbf tag=TAG20220524T111313 RECID=18 STAMP=1105528395
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00046 name=/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swptn8_.dbf
    output file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8sxjd70_.dbf tag=TAG20220524T111313 RECID=19 STAMP=1105528396
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00045 name=/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8swptn5_.dbf
    output file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8sxjfcp_.dbf tag=TAG20220524T111313 RECID=20 STAMP=1105528397
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    Finished backup at 24-MAY-22
    
    Starting Control File Autobackup at 24-MAY-22
    piece handle=/ade/b/1779015158/oracle/dbs/c-2109129204-20220524-06 comment=NONE
    Finished Control File Autobackup at 24-MAY-22
    
  3. 「du」を使用して疎バックアップがスパースであることを確認します。バックアップの割当て済サイズは、プラガブル・データベースのファイルの割当て済サイズより小さいことに注意してください。
    $ ls -l /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/*
    -rw-rw---- 1 oracle dba  96M May 24 11:13 /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8sxjd70_.dbf
    -rw-rw---- 1 oracle dba 211M May 24 11:13 /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8sxjc2h_.dbf
    -rw-rw---- 1 oracle dba  40M May 24 11:13 /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8sxjfcp_.dbf
    -rw-rw---- 1 oracle dba 259M May 24 11:13 /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8sxj9x5_.dbf
    
    $ du -sch /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/*
    4.3M    /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8sxjd70_.dbf
    19M    /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8sxjc2h_.dbf
    1.0M    /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8sxjfcp_.dbf
    8.3M    /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8sxj9x5_.dbf
    32M    total
    
    $ du -schH /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/*
    96M    /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swptn8_.dbf
    213M    /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swptmz_.dbf
    40M    /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8swptn5_.dbf
    264M    /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8swptmp_.dbf
    41M    /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_temp_k8swptn2_.dbf
    651M    total
     
    SQL>

    pfileは、$ORACLE_HOME/dbsディレクトリのデフォルトの場所に保存されます。

  4. CLONEプラガブル・データベースのファイルおよびACFSスナップショットを削除し、メディア障害をシミュレートします。
    $ rm -rf /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/*
    
    $ /sbin/acfsutil snap delete DFC427F513EA6F24E0538E5246647E42 /acfs
    acfsutil snap delete: Snapshot operation is complete.
    $
  5. スナップショットを再作成しないと、リストアは失敗します。
    RMAN> restore from sparse pluggable database 'CLONE';
    
    Starting restore at 24-MAY-22
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=51 device type=DISK
    
    channel ORA_DISK_1: restoring datafile 00043
    input datafile copy RECID=17 STAMP=1105528394 file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8sxj9x5_.dbf
    destination for restore of datafile 00043: /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8swptmp_.dbf
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of restore command at 05/24/2022 11:19:05
    ORA-19566: exceeded limit of 0 corrupt blocks for file /backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8sxj9x5_.dbf
    ORA-19600: input file is datafile-copy 17 (/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8sxj9x5_.dbf)
    ORA-19601: output file is datafile 43 (/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_%u_.dbf)
    
  6. CLONEプラガブル・データベースのACFSスナップショットを再作成します。スナップショットを指すsymlinkを再作成します。ノート: このステップは、これらのスナップショットまたはファイル(あるいはその両方)が存在しない場合にのみ必要です。CLONE PDBをリストアする理由によっては、スナップショットまたはsymlink (あるいはその両方)を再作成する必要がない場合があります。
    $ /sbin/acfsutil snap create -w DFC427F513EA6F24E0538E5246647E42 /acfs
    acfsutil snap create: Snapshot operation is complete.
    
    $ ln -s /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swj6n7_.dbf /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swptn8_.dbf
    
    $ ln -s /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swj6my_.dbf /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swptmz_.dbf
    
    $ ln -s /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_sysext_k8swj6n4_.dbf /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8swptn5_.dbf
    
    $ ln -s /acfs/.ACFS/snaps/DFC427F513EA6F24E0538E5246647E42/DB/DFC427F513E56F24E0538E5246647E42/datafile/o1_mf_system_k8swj6ms_.dbf /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8swptmp_.dbf
    
  7. CLONEプラガブル・データベースを疎バックアップからリストアします。
    RMAN> restore from sparse pluggable database 'CLONE';
    
    Starting restore at 24-MAY-22
    using channel ORA_DISK_1
    
    channel ORA_DISK_1: restoring datafile 00043
    input datafile copy RECID=17 STAMP=1105528394 file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8sxj9x5_.dbf
    destination for restore of datafile 00043: /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8swptmp_.dbf
    channel ORA_DISK_1: copied datafile copy of datafile 00043, elapsed time: 00:00:01
    output file name=/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_system_k8swptmp_.dbf RECID=0 STAMP=0
    channel ORA_DISK_1: restoring datafile 00044
    input datafile copy RECID=18 STAMP=1105528395 file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8sxjc2h_.dbf
    destination for restore of datafile 00044: /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swptmz_.dbf
    channel ORA_DISK_1: copied datafile copy of datafile 00044, elapsed time: 00:00:01
    output file name=/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysaux_k8swptmz_.dbf RECID=0 STAMP=0
    channel ORA_DISK_1: restoring datafile 00045
    input datafile copy RECID=20 STAMP=1105528397 file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8sxjfcp_.dbf
    destination for restore of datafile 00045: /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8swptn5_.dbf
    channel ORA_DISK_1: copied datafile copy of datafile 00045, elapsed time: 00:00:01
    output file name=/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_sysext_k8swptn5_.dbf RECID=0 STAMP=0
    channel ORA_DISK_1: restoring datafile 00046
    input datafile copy RECID=19 STAMP=1105528396 file name=/backup/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8sxjd70_.dbf
    destination for restore of datafile 00046: /acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swptn8_.dbf
    channel ORA_DISK_1: copied datafile copy of datafile 00046, elapsed time: 00:00:01
    output file name=/acfs/DB/DFC427F513EA6F24E0538E5246647E42/datafile/o1_mf_cdb1_pdb_k8swptn8_.dbf RECID=0 STAMP=0
    Finished restore at 24-MAY-22
    
  8. CLONEプラガブル・データベースをリカバリします。
    RMAN> recover pluggable database 'CLONE';
    
    Starting recover at 24-MAY-22
    using channel ORA_DISK_1
    
    starting media recovery
    media recovery complete, elapsed time: 00:00:01
    
    Finished recover at 24-MAY-22
    
  9. CLONEプラガブル・データベースが使用可能であることを確認します。表には、リカバリ後に予想される内容が含まれていることに注意してください。
    SQL> alter pluggable database CLONE open;
    
    Pluggable database altered.
    
    SQL> alter session set container = CLONE;
    
    Session altered.
    
    SQL> select x,y,z from tab1;
    
         X        Y           Z
    ---------- ---------- ----------
         2       20         300
        97       98          99
    SQL>

Oracle ACFSループバックのサポート

Oracle ACFSでは、Linuxオペレーティング・システムでループバック機能がサポートされているため、Oracle ACFSファイルにデバイスとしてアクセスできます。

Oracle ACFSループバック・デバイスは、Oracle ACFSファイルにブロック・デバイスとしてアクセスできる、オペレーティング・システムの疑似デバイスです。この機能は、Oracle ACFSファイル・システムで作成され、Oracle ACFSループバック・デバイスによって提供されるOVMのイメージ、テンプレートおよび仮想ディスク(vdisk)をサポートするOracle Virtual Machines (OVM)とともに使用できます。

Oracle ACFSループバック機能により、NFS経由のパフォーマンスが向上します。ファイルは、疎ファイルでも非疎ファイルでもかまいません。

一般的なループバック・サポートに加えて、Oracle ACFSでは、疎イメージに対するループバック直接I/O (DIO)もサポートされています。

Oracle ACFSドライバ・リソース管理

Oracle ACFS、Oracle ADVMおよびOKSドライバは、Oracle Restart構成を除いて、Oracle Grid Infrastructureスタックの起動時にロードされます。システムが再起動されるまでドライバはロードされたままですが、その時点で、Oracle Grid Infrastructureスタックを再起動すると、ドライバは再びロードされます。

Oracle ACFS、Oracle ADVMおよびOKSドライバを管理するコマンドの詳細は、Oracle ACFSドライバのコマンドを参照してください。

Oracle ACFSレジストリ・リソース管理

Oracle ACFSレジストリ・リソースは、Oracle Grid Infrastructureクラスタ構成でのみサポートされます。Oracle Restart構成ではサポートされません。Oracle ACFSとOracle Restartを参照してください。

Oracle ASM 12cリリース1 (12.1)の場合、Oracle ACFSレジストリでは、SRVCTLファイル・システム・インタフェースを介して使用可能な、標準的で単一のファイル・システム・リソースを使用します。詳細は、Oracle ACFSファイル・システム・リソース管理を参照してください。SRVCTLを使用すると、アプリケーションを、登録済のファイルシステムに依存するようにできます(srvctl filesystemを使用して、登録済のファイルシステムを管理するなど)。デフォルトでは、acfsutil registryは、AUTO_START属性がalwaysに設定され、常にマウントするように設定されたファイル・システムのみを表示します。

Oracle ACFSレジストリは、ファイル・システムを登録および削除するroot権限が必要ですが、userオプションを使用すると、他のユーザーに、ファイル・システムを起動および停止(マウントおよびアンマウント)する権限が付与されます。

Oracle ACFSファイル・システム・リソース管理

Oracle ACFSファイル・システム・リソースは、Oracle Grid Infrastructureクラスタ構成でのみサポートされます。Oracle Restart構成ではサポートされません。Oracle ACFSとOracle Restartを参照してください。

Oracle ASMコンフィギュレーション・アシスタント(ASMCA)により、Oracle ACFSファイル・システム・リソース(ora.diskgroup.volume.acfs)の作成が容易になります。Database Configuration Assistant(DBCA)を使用したデータベースの作成中に、Oracle ACFSファイル・システム・リソースは、関連付けられたディスク・グループの依存性リストに加えられるため、ディスク・グループを停止すると、依存するOracle ACFSファイル・システムも停止されるようになります。

Oracle ACFSファイル・システム・リソースは通常、アプリケーション・リソースの依存性リストで使用するために作成されます。たとえば、Oracle Databaseホームとして使用するためにOracle ACFSファイル・システムが構成されている場合、ファイル・システム用に作成されたリソースは、Oracle Databaseアプリケーションのリソース依存性リストに含まれます。この依存性により、データベース・アプリケーションの起動アクションの結果、ファイル・システムとスタックは自動的にマウントされます。

Oracle ACFSファイル・システム・リソースの起動アクションは、ファイル・システムのマウントです。このOracle ACFSファイル・システム・リソース・アクションには、関連付けられたファイル・システム・ストレージ・スタックがアクティブであることの確認とディスク・グループのマウント、ボリューム・ファイルの有効化、マウント操作の完了に必要な場合のマウント・ポイントの作成が含まれます。ファイル・システムのマウントに成功した場合、リソースの状態はonlineに、失敗した場合はofflineに設定されます。

Oracle ACFSファイル・システム・リソースのチェック・アクションでは、ファイル・システムがマウントされていることを検証します。マウントされていれば、リソースの状態をonlineステータスに設定し、マウントされていなければ、offlineに設定します。

Oracle ACFSファイル・システム・リソースの停止アクションでは、ファイル・システムのディスマウントが試みられます。使用中の参照のためにファイル・システムをディスマウントできない場合、停止アクションは、参照を持つプロセスのプロセスIDを表示して記録します。

Oracle ACFSファイル・システム・リソースを管理するためにsrvctl startおよびstopアクションを使用すると、それらの正しいリソースの状態が維持されます。

Oracle ACFSとOracle Restart

このリリースでは、Oracle RestartはrootベースのOracle ACFSリソースをサポートしません。その結果、次の操作は自動的に実行されません。

  • Oracle ACFSドライバのロード

    Linuxでは、システム起動時とシステム停止時に、ドライバが自動的にロードおよびアンロードされます。システムが実行中、またはシステムが他のオペレーティング・システム(OS)バージョンで実行中にアクションが必要な場合は、acfsloadコマンドを使用して、ドライバを手動でロードまたはアンロードできます。ただし、ドライバを手動でロードする場合は、Oracle Restartスタックを起動する前にOracle ACFSドライバをロードする必要があります。

    詳細は、「acfsload」を参照してください。

  • Oracle ACFSマウント・レジストリにリストされたOracle ACFSファイル・システムのマウント

    Oracle ACFSマウント・レジストリは、Oracle Restartでサポートされていません。ただし、有効なOracle ASMデバイスの/etc/fstabファイル内のLinuxのエントリでは、関連付けられたボリュームが有効になっており、これらのエントリはシステム起動時に自動的にマウントされ、システム停止時にアンマウントされます。ファイル・システムがマウントされた後は高可用性(HA)リカバリが適用されないことに注意してください。この機能は1回のみのアクションです。

    有効なfstabエントリの形式は次のとおりです。

    device mount_point acfs noauto 0 0
    

    たとえば:

    /dev/asm/dev1-123 /mntpoint acfs noauto 0 0

    前述の例の最後の3つのフィールドは、Linuxがデバイスを自動的にマウントしようとすること、およびデバイス上で他のシステム・ツールを実行しようとすることを防止ます。このアクションは、システム起動時にOracle ASMインスタンスが使用できない場合のエラーを防止します。ファイル・システム・マウントのための追加の標準fstab構文オプションを追加できます。

    他のOSバージョンで、またはシステムの起動後にマウントまたはアンマウント操作が必要な場合は、mountコマンドを使用して、Oracle ACFSファイル・システムを手動でマウントできます。詳細は、「コマンドライン・ツールによるOracle ACFSの管理」を参照してください。

  • リソースベースのOracle ACFSデータベース・ホーム・ファイル・システムのマウント

    Oracle Restart構成の場合、これらのアクションに関連するOracle ACFSリソースは作成されません。Oracle Grid Infrastructure構成では、Oracle ACFSリソース管理が完全サポートされる一方、Oracle Restart構成では、Oracle ACFSリソースベースの管理アクションを代替操作(場合によっては手動)に置き換える必要があります。Oracle Restart構成にrootベースのリソースを登録する、srvctlなどのコマンドを使用しようとすると、適切なエラーが表示されます。

Oracle ACFSドライバのコマンド

この項では、Oracle ACFS、Oracle ADVMおよびOracle Kernel Services Driver (OKS)ドライバを管理するためにインストール時に使用されるOracle ACFSドライバのコマンドについて説明します。これらのコマンドは、Oracle Grid Infrastructureホームの/binディレクトリにあります。

acfsload

目的

acfsloadは、Oracle ACFS、Oracle ADVMおよびOracle Kernel Services Driver (OKS)ドライバをロードまたはアンロードします。

構文

acfsload { start | stop  } [ -s ]

acfsload —hはヘルプ・テキストを表示して終了します。

表7-2に、acfsloadコマンドで使用可能なオプションを示します。

表7-2 acfsloadコマンドのオプション

オプション 説明

start

Oracle ACFS、Oracle ADVMおよびOKSドライバをロードします。

stop

Oracle ACFS、Oracle ADVMおよびOKSドライバをアンロードします。

-s

サイレント・モードで動作します。

説明

acfsloadを使用して、Oracle ACFS、Oracle ADVMおよびOKSドライバを手動でロードまたはアンロードできます。

stopオプションでドライバをアンロードする前に、Oracle ACFSファイル・システムをディスマウントし、Oracle ASMを停止する必要があります。Oracle ACFSファイル・システムのディスマウントの詳細は、「ボリュームおよびOracle ACFSファイル・システムの登録解除、ディスマウント、無効化」を参照してください。

acfsloadを実行するには、rootまたは管理者権限が必要です。

次に、すべてのドライバを停止(アンロード)するacfsloadコマンドの使用例を示します。

# acfsload stop

acfsdriverstate

目的

acfsdriverstateは、Oracle ACFS、Oracle ADVMおよびOracle Kernel Services Driver (OKS)ドライバの現在の状態に関する情報を提供します。

構文

acfsdriverstate [-orahome ORACLE_HOME ] 
    { installed | loaded | version [-v] | 
    supported [-v] [-k <kernel_rpm_file_path> | <installed_kernel_rpm_package>} [-s]
    

acfsdriverstate —hはヘルプ・テキストを表示して終了します。

表7-3に、acfsdriverstateコマンドで使用可能なオプションを示します。

表7-3 acfsdriverstateコマンドのオプション

オプション 説明

-orahome ORACLE_HOME

acfsdriverstateコマンド実行権限がそのユーザーに与えられているOracle Grid Infrastructureホームを指定します。

installed

Oracle ACFSがシステムにインストールされているかどうかを決定します。

loaded

Oracle ADVM、Oracle ACFSおよびOKSドライバがメモリーにロードされているかどうかを決定します。

version

現在インストールされているOracle ACFSシステム・ソフトウェアのバージョンをレポートします。

supported

システムがOracle ACFSでサポートされているカーネルであるかどうかをレポートします。

supported -k

このコマンド・オプションでは、任意のカーネルrpm (ファイル、またはシステムにすでにインストールされているもの)を指定でき、指定したカーネルで現在のACFSインストールがサポートされているかどうかが判別されます。

インストール済のカーネルrpmパッケージを指定するには、ファイル"/boot/vmlinuz-<kernel_version>"に読取り権限があることを確認します。適切なシンボルを提供するインストール済rpmを収集するには、rpm -qf /boot/vmlinuz-<kernel_version>を使用してrpmパッケージ名を収集します。

カーネルrpmファイルを指定するには、そのファイルに読取り権限があり、そのrpmでkernel(symbolfoo) = 0xvaluefooという形式で適切なシンボルが提供されていることを確認します。それらのシンボルは、rpm -qip --provides <path_to_rpm_file>を使用して検証できます。

-v

詳細は、冗長モードを指定してください。

説明

acfsdriverstateを使用して、Oracle ACFS、Oracle ADVMおよびOKSドライバの現在の状態に関する詳細情報を表示できます。

次に、acfsdriverstateコマンドの使用例を示します。

$ acfsdriverstate version
ACFS-9325:     Driver OS kernel version = 3.8.13-13.el6uek.x86_64.
ACFS-9326:     Driver build number = 171126.
ACFS-9212:     Driver build version = 18.1.0.0 ()..
ACFS-9547:     Driver available build number = 171126.
ACFS-9548:     Driver available build version = 18.1.0.0 ()..

Oracle ACFSプラグインの汎用アプリケーション・プログラミング・インタフェース

Oracle ACFSプラグイン操作は、共通で、オペレーティング・システム(OS)に依存しないファイル・プラグイン(Cライブラリ)のアプリケーション・プログラミング・インタフェース(API)によってサポートされます。

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

Oracle ACFSプラグインの詳細は、Oracle ACFSプラグインを参照してください。

Oracle ACFSの事前定義済のメトリック・タイプ

Oracle ACFSでは、事前定義済メトリック・タイプのACFSMETRIC1_TおよびACFSMETRIC2_Tが用意されています。

ACFSMETRIC1_Tメトリック・セットは、ストレージ仮想化モデル用に定義されます。メトリックは、選択したタグ付けファイルのセットまたはファイル・システム内のすべてのファイルのいずれかのサマリー・レコードとして維持されます。Oracle ACFSファイル・メトリックには、読取り数、書込み数、平均読取りサイズ、平均書込みサイズ、最小および最大読取りサイズ、最小および最大書込みサイズ、読取りキャッシュ(VMページ・キャッシュ)のヒットおよびミスがあります。

例:

typedef struct _ACFS_METRIC1 {
    ub2      acfs_version;
    ub2      acfs_type;
    ub4      acfs_seqno;
    ub8      acfs_nreads;
    ub8      acfs_nwrites;
    ub8      acfs_rcachehits;
    ub4      acfs_avgrsize;
    ub4      acfs_avgwsize;
    ub4      acfs_minrsize;
    ub4      acfs_maxrsize;
    ub4      acfs_minwsize;
    ub4      acfs_maxwsize;
    ub4      acfs_rbytes_per_sec;
    ub4      acfs_wbytes_per_sec;
    ub8      acfs_timestamp;
    ub8      acfs_elapsed_secs;
} ACFS_METRIC1;

ACFSMETRIC2_Tは、fileID、開始オフセット、サイズおよび各書込みの順序番号が含まれるOracle ACFS書込み説明レコードのリストです。順序番号により、プラグイン・ドライバによって保持されたとおりにOracle ACFS書込みレコード順は維持されます。順序番号は、アプリケーションでAPIから戻された複数のメッセージ・バッファを順序付ける手段となります。アプリケーションでメッセージ・バッファをAPIを通じて十分な速度で空にできないために削除された書込みレコードを検出することもできます。

書込みレコードは、複数のインメモリー配列に格納されます。レコードの各配列は、バッファ・サイズが現在1 Mに設定されているAPIを使用してフェッチできます。フェッチされたioctlバッファの先頭には、格納されているレコードの番号など、配列を表すstructがあります。カーネル・バッファでは、バッファが十分な速度で読み込まれていないためにバッファが満杯である場合、最も古い書込みレコードが削除されます。

例:

typedef struct _ACFS_METRIC2 {
  ub2              acfs_version;
  ub2              acfs_type;
  ub4              acfs_num_recs;
  ub8              acfs_timestamp;
  ACFS_METRIC2_REC acfs_recs[1];
} ACFS_METRIC2;

typedef struct _ACFS_FILE_ID {
  ub8              acfs_fenum;
  ub4              acfs_genum;
  ub4              acfs_reserved1;
}

typedef struct _ACFS_METRIC2_REC {
  ACFS_FILE_ID     acfs_file_id;
  ub8              acfs_start_offset;
  ub8              acfs_size;
  ub8              acfs_seq_num;
} ACFS_METRIC2_rec;

Oracle ACFSプラグインAPI

目的

Oracle ACFSプラグイン・アプリケーション・プログラミング・インタフェース(API)は、アプリケーション・プラグイン・モジュールのローカル・プラグイン対応のOracle ACFSドライバに対してメッセージを送受信します。

構文

sb8 acfsplugin_metrics(ub4 metric_type,
  ub1 *metrics,
  ub4 metric_buf_len,
  oratext *mountp );
sb8 acfsfileid_lookup(ACFS_FILEID file_id,
  oratext *full_path,
  oratext *mountp );

説明

acfsplugin_metrics APIは、Oracle ACFSドライバからメトリックを受信するために、Oracle ACFSアプリケーション・プラグイン・モジュールによって使用されます。acfsutil plugin enableコマンドを使用して、プラグイン通信のためにまずOracle ACFSドライバを有効にする必要があります。選択したアプリケーション・プラグイン・メトリック・タイプ・モデルは、Oracle ACFSのプラグイン有効化コマンドで定義されたプラグイン構成と一致する必要があります。acfsutil plugin enableコマンドの詳細は、「acfsutil plugin enable」を参照してください。アプリケーションには、Oracle ACFSの事前定義済のメトリック・タイプで説明しているメトリック構造を格納するのに十分なバッファのサイズが提供される必要があります。

指定されたバッファがNULLで、metric_buf_len = 0の場合、戻り値は、現在収集されたすべてのメトリックを保持するために必要なサイズになります。アプリケーションは、まずOracle ACFSに問い合せて、必要なバッファの大きさを参照してから、Oracle ACFSに戻すのに必要なサイズのバッファを割り当てることができます。

参照するプラグインが有効なOracle ACFSファイル・システムを特定するには、マウント・パスをAPIに指定する必要があります。

成功すると、負ではない値が戻されます。収集するメトリックがない状態で成功した場合は0、使用可能なメトリックがあることを示す場合は1、間隔の間に収集された新しいメトリックがないことを示す場合は2が戻されます。エラーの場合は、負の値が戻され、Linux環境ではerrnoが設定されます。

メトリック・タイプ#2を使用すると、戻されたメトリックには、fenumとgenumのペアが含まれるACFS_FILE_IDがあります。fenumとgenumのペアからファイル・パスに変換するために、アプリケーションでacfsfileid_lookupを使用できます。アプリケーションでは、パスを保持するために長さがACFS_FILEID_MAX_PATH_LENのバッファを指定する必要があります。1つのファイルに対して複数のハード・リンクがある場合、戻されるパスは最初のパスです。これは、acfsutil info idの使用時と同じ動作です。

プラグインが有効なOracle ACFSファイル・システム・ドライバに対してメッセージを送受信するには、システム管理者またはOracle ASM管理者の権限が必要です。

アプリケーションの書込み

プラグインAPIを使用するには、APIファンクションおよび構造を定義するCヘッダー・ファイルacfslib.hをアプリケーションに含める必要があります。

#include <acfslib.h>

アプリケーションの実行可能ファイルを作成する場合、アプリケーションは、acfs12ライブラリにリンクされている必要があります。定義する必要がある環境変数の詳細は、プラットフォーム固有のドキュメントを参照してください。たとえば:

export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:$
{LD_LIBRARY_PATH}

リンクを行う場合、-lacfs12フラグを追加します。

例7-1では、コマンドは、プラグイン・サービス用に/humanresourcesにマウントされたOracle ACFSファイル・システムを有効にします。

例7-1 ストレージの可視性のためのアプリケーション・プラグイン: ポーリング・モデル

$ /sbin/acfsutil plugin enable -m acfsmetric1 -t HRDATA /humanresources

このコマンドの場合、アプリケーション・プラグインは、HRDATAでタグ付けされたファイルに関連付けられたサマリー・メトリックの、Oracle ACFSプラグインが有効なドライバをポーリングします。アプリケーション・コードは次のようになります。

#include <acfslib.h>
...
/* allocate message buffers */
ACFS_METRIC1 *metrics = malloc (sizeof(ACFS_METRIC1));
/* poll for metric1 data */
while (condition) {
  /* read next summary message from ACFS driver */
   if ((rc = acfsplugin_metrics(ACFS_METRIC_TYPE1,(ub1*)metrics,sizeof(*metrics),
        mountp)) < 0) {
        perror("….Receive failure … ");
        break;
   }
   /* print message data */
   printf ("reads %8llu ", metrics->acfs_nreads);
   printf("writes %8llu ", metrics->acfs_nwrites);
   printf("avg read size %8u ", metrics->acfs_avgrsize);
   printf("avg write size %8u ", metrics->acfs_avgwsize);
   printf("min read size %8u ", metrics->acfs_minrsize);
   printf("max read size %8u ", metrics->acfs_maxrsize);
   ...
   sleep (timebeforenextpoll);
}

例7-2では、コマンドは、プラグイン・サービス用に/humanresourcesにマウントされたOracle ACFSファイル・システムを有効にします。

例7-2 ファイル・コンテンツのためのアプリケーション・プラグイン: ポスト・モデル

$ /sbin/acfsutil plugin enable -m acfsmetric1 -t HRDATA -i 5m /humanresources

このコマンドの場合、5分ごとに、Oracle ACFSプラグインが有効なドライバは、HRDATAでタグ付けされたファイルに関連付けられたファイル・コンテンツ・メトリックをポストします。アプリケーション・コードでは、メトリックがポストされるまで、acfsplugin_metrics()へのコールはブロックされます。アプリケーション・コードは次のようになります。

#include <acfslib.h>
...
 ACFS_METRIC1 *metrics = malloc (sizeof(ACFS_METRIC1));
 
 /* Wait for metric Data */
  while (condition) {
    /* Wait for next file content posting from ACFS driver */
    rc = ACFS_PLUGIN_MORE_AVAIL;
    /* A return code of 1 indicates that more metrics are available
    * in the current set of metrics.
    */
    while( rc == ACFS_PLUGIN_MORE_AVAIL) {
      /* This call blocks until metrics are available. */
      rc = acfsplugin_metrics(ACFS_METRIC_TYPE1,(ub1*)metrics,sizeof(*metrics),
           mountp);
      if (rc < 0) {
        perror("….Receive failure … ");
        break;
      } else if (rc == ACFS_PLUGIN_NO_NEW_METRICS) {
        printf("No new metrics available.");
        break;
     }
     if (last_seqno != metrics->acfs_seqno-1 ) {
       printf("Warning: Unable to keep up with metrics collection.");
       printf("Missed %d sets of posted metrics.",
              (metrics->acfs_seqno-1)-last_seqno);
     }

      /* print message data */ 
      printf ("reads %8llu ", metrics->acfs_nreads);
      printf("writes %8llu ", metrics->acfs_nwrites);
      printf("avg read size %8u ", metrics->acfs_avgrsize);
      printf("avg write size %8u ", metrics->acfs_avgwsize);
      printf("min read size %8u ", metrics->acfs_minrsize);
      printf("max read size %8u ", metrics->acfs_maxrsize);
      ...
 
      last_seqno = metrics->acfs_seqno;
    }
  }
 
  free(metrics);

例7-3 FenumとGenumのペアからファイル・パスを解決するためのアプリケーション

Oracle ACFSタグ付けの汎用アプリケーション・プログラミング・インタフェース

Oracle ACFSタグ付け操作は、共通で、オペレーティング・システム(OS)に依存しないファイル・タグ(Cライブラリ)のアプリケーション・プログラミング・インタフェース(API)によってサポートされます。

Oracle ACFSタグ付けのAPIデモンストレーション・ユーティリティが提供されます。デモでは、サポートされたプラットフォームごとに、makefileを使用してユーティリティを作成する手順が示されます。

Solarisでは、Oracle ACFSタグ付けのAPIは、シンボリック・リンク・ファイルでタグ名を設定できますが、バックアップおよびリストア・ユーティリティは、シンボリック・リンク・ファイルで明示的に設定されるタグ名を保存しません。また、シンボリック・リンク・ファイルは、移動、コピー、tarの使用またはpaxの使用が行われると、明示的に設定されたタグ名が失われます。

次のファイルがあります。

  • $ORACLE_HOME/usm/public/acfslib.h

  • $ORACLE_HOME/usm/demo/acfstagsdemo.c

  • $ORACLE_HOME/usm/demo/Makefile

    デモ・ユーティリティを作成するためのLinux、SolarisまたはAIXのmakefile。

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

Oracle ACFSタグ名の指定

Oracle ACFSタグ名は、1文字から32文字までの長さで、次の一連の文字の組合せのみで構成されます。

  • 大文字と小文字のアルファベット文字(A-Z、a-z)

  • 数字(0-9)

  • ハイフン(-)

  • アンダースコア(_)

  • 空白(スペース)

Oracle ACFSタグ付けのエラー値

次に、失敗した場合のLinux、SolarisまたはAIXのerrnoの値を示します。

  • EINVAL - タグ名の構文が無効であるか、長すぎます。

  • ENODATA - このファイルまたはディレクトリに対するタグ名が存在しません。

  • ERANGE - 値のバッファは、戻り値を保持するには小さすぎます。

  • EACCES - パスのパス接頭辞のディレクトリに対する検索権限が拒否されました。または、ファイル上でタグ名を読み取る権限がユーザーにありません。

  • ENAMETOOLONG - ファイル名が長すぎます。

  • ENOENT - パスのコンポーネントが存在しません。

acfsgettag

目的

Oracle ACFSファイルのタグ名に関連付けられた値を取得します。

構文

sb8 acfsgettag(const oratext *path, const oratext *tagname, oratext *value, 
               size_t size, ub4 flags);

表7-4に、acfsgettagコマンドで使用可能なオプションを示します。

表7-4 acfsgettagコマンドのオプション

オプション 説明

path

ファイルまたはディレクトリのパス名へのポインタを指定します。

tagname

通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。

value

Oracle ACFSタグ値を取得するためのメモリー・バッファを指定します。

size

戻されたOracle ACFSタグ値を保持するメモリー・バッファのバイト・サイズを指定します。

flags

将来の使用のために予約されています。0に設定する必要があります。

説明

acfsgettagライブラリ・コールは、Oracle ACFSタグ名の値文字列を取得します。戻り値は、ゼロ以外のバイトの長さの出力で、成功した場合はvalue文字列、失敗した場合はACFS_TAG_FAILです。ACFS_TAG_FAILが戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、Oracle ACFSタグ付けのエラー値を参照してください。

Oracle ACFSタグ名には、固定値文字列の0 (長さが1バイトの数字ゼロの文字)が現在使用されているため、valueは、Oracle ACFSタグ名のすべてのエントリで同じです。valueをNULL、size0に設定してacfsgettagをコールすることによって、valueバッファのサイズを決定できます。ライブラリ・コールは、タグ名の値文字列を保持するのに必要なバイト・サイズを戻します。タグ名がファイルで設定されていない場合、acfsgettagは、ENODATAエラーを戻します。

例7-4に、acfsgettagファンクション・コールの使用例を示します。

例7-4 ファイルのタグ値の取得

sb8 rc;
size_t size;
oratext value[2];
const oratext *path = "/mnt/dir1/dir2/file2";
const oratext *tagname = "patch_set_11_1";
size = 1; (byte)
memset((void *)value, 0, 2*sizeof(oratext));
rc = acfsgettag (path, tagname, value, size, 0);
If (rc == ACFS_TAG_FAIL)
  /* check errno or GetLastError() to process error returns /*

acfslisttags

目的

Oracle ACFSファイルに割り当てられたタグ名をリストします。詳細は、acfsutil tag infoを参照してください。

構文

sb8 acfslisttags(const oratext *path, oratext *list, size_t size, ub4 flags);

表7-4に、acfslisttagsコマンドで使用可能なオプションを示します。

表7-5 acfslisttagsコマンドのオプション

オプション 説明

path

ファイルまたはディレクトリのパス名へのポインタを指定します。

list

Oracle ACFSタグ名のリストを含むメモリー・バッファへのポインタを指定します。

size

戻されたOracle ACFSタグ名リストを保持するメモリー・バッファのサイズ(バイト)を指定します。

flags

将来の使用のために予約されています。0に設定する必要があります。

説明

acfslisttagsライブラリ・コールは、Oracle ACFSファイルに割り当てられたすべてのタグ名を取得します。acfslisttagsは、listメモリー・バッファにタグ名のリストを戻します。リスト内の各タグ名は、NULLで終了します。ファイルにタグ名がない場合、リフトは空になります。メモリー・バッファは、Oracle ACFSファイルに割り当てられたすべてのタグ名を保持するのに十分な大きさにする必要があります。

アプリケーションは、バッファを割り当て、Oracle ACFSファイルに割り当てられたすべてのタグ名を保持するのに十分なリスト・サイズの大きさを指定する必要があります。acfslisttagsを、バッファ・サイズをゼロ値、リスト・バッファをNULLで最初にコールすることによって、アプリケーションは、必要なリスト・バッファ・サイズを必要に応じて取得できます。アプリケーションは、ゼロ以外の正のリスト・サイズの戻り値をチェックして、リスト・バッファを割り当て、acfslisttagsをコールして、実際のタグ名リストを取得します。

成功すると、戻り値は、タグ名リストの正のバイト・サイズとなり、ファイルにタグ名がない場合は0になります。失敗した場合、戻り値はACFS_TAG_FAILです。ACFS_TAG_FAILが戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、Oracle ACFSタグ付けのエラー値を参照してください。

例7-5に、acfslisttagsファンクション・コールの使用例を示します。

例7-5 ファイルのタグのリスト

sb8 listsize;
sb8 listsize2;
const oratext *path = "/mnt/dir1/dir2/file2";
oratext *list;
/* Determine size of buffer to store list */
listsize = acfslisttags (path, NULL, 0, 0);
if (listsize == ACFS_TAG_FAIL)
/* retrieve the error code and return */

if (listsize)
{
    list = malloc(listsize)
    /* Retrieve list of tag names */
    listsize2 = acfslisttags (path, list, listsize, 0);
    if (listsize2 == ACFS_TAG_FAIL)
        /* check errno or GetLastError() to process error returns */
    if (listsize2 > 0)
        /* file has a list of tag names to process */
    else
        /* file has no tag names. */
}
else
/* file has no tag names. */

acfsremovetag

目的

Oracle ACFSファイルのタグ名を削除します。

構文

sb8 acfsremovetag(const oratext *path, const oratext *tagname, ub4 flags);

表7-6に、acfsremovetagコマンドで使用可能なオプションを示します。

表7-6 acfsremovetagコマンドのオプション

オプション 説明

path

ファイルまたはディレクトリのパス名へのポインタを指定します。

tagname

通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。

flags

将来の使用のために予約されています。0に設定する必要があります。

説明

acfsremovetagライブラリ・コールは、Oracle ACFSファイルのタグ名を削除します。戻り値は、ACFS_TAG_SUCCESSまたはACFS_TAG_FAILです。ACFS_TAG_FAILが戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、Oracle ACFSタグ付けのエラー値を参照してください。

例7-6に、acfsremovetagファンクション・コールの使用例を示します。

例7-6 ファイルのタグの削除

sb8 rc;
const oratext *path= "/mnt/dir1/dir2/file2";
const oratext *tagname = "patch_set_11_1";
rc = acfsremovetag (path, tagname, 0);
If (rc == ACFS_TAG_FAIL)
  /* check errno or GetLastError() to process error returns */

acfssettag

目的

Oracle ACFSファイルのタグ名を設定します。詳細は、acfsutil tag setを参照してください。

構文

sb8 acfssettag(const oratext *path, const oratext *tagname, oratext *value, 
               size_t size, ub4 flags);

表7-7に、acfssettagコマンドで使用可能なオプションを示します。

表7-7 acfssettagコマンドのオプション

オプション 説明

path

ファイルまたはディレクトリのパス名へのポインタを指定します。

tagname

通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。

value

Oracle ACFSタグ値を設定するためのメモリー・バッファを指定します。

size

Oracle ACFSタグ値のバイト・サイズを指定します。

flags

将来の使用のために予約されています。0に設定する必要があります。

説明

acfssettagライブラリ・コールは、Oracle ACFSファイルのタグ名を設定します。戻り値は、ACFS_TAG_SUCCESSまたはACFS_TAG_FAILです。ACFS_TAG_FAILが戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、Oracle ACFSタグ付けのエラー値を参照してください。

Oracle ACFSタグ名には、固定値文字列の0 (長さが1バイトの数字ゼロの文字)が現在使用されているため、valueは、Oracle ACFSタグ名のすべてのエントリで同じです。

例7-7に、acfssettagファンクション・コールの使用例を示します。

例7-7 ファイルのタグの設定

sb8 rc;
size_t size;
const oratext *value ;
const oratext *path= "/mnt/dir1/dir2/file2";
const oratext *tagname = "patch_set_11_1";
value = "0"; /* zero */
size = 1; (byte)
rc = acfssettag (path, tagname, (oratext *)value, size, 0);
If (rc == ACFS_TAG_FAIL)
  /* check errno and GetLastError() to process error returns */

Oracle ACFS診断コマンド

このトピックでは、診断に使用するOracle ACFSコマンドライン・ユーティリティの概要を示します。

Oracle ACFSでは、診断に使用する様々なacfsutilコマンドライン・ユーティリティを提供します。

ノート:

診断コマンドは、Oracleサポートが分析のために診断データを要求した場合にのみ実行します。

次の表に、Oracle ACFSユーティリティと簡単な説明を示します。

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

表7-8 Oracle ACFS診断コマンドの概要

コマンド 説明

acfsdbg

Oracle ACFSファイル・システムをデバッグします。

acfsutil blog

ブログ・ファイルにテキストを書込みます。

acfsutil dumpstate

Oracle ACFSの内部状態情報を収集します。

acfsutil info ftrace

オープン・ファイルのトレース・エントリを表示します。

acfsutil lockstats

ロック競合統計を表示します。

acfsutil log

メモリー診断ログ・ファイルおよびメッセージ・デバッグ設定を取得します。

acfsutil meta

Oracle ACFSファイル・システムから別の出力ファイルにメタデータをコピーします。

acfsutil plogconfig

Oracle ACFSの永続ロギング構成設定を管理します。

acfsutil tune

Oracle ACFSの調整可能パラメータを変更または表示します。

advmutil tune

Oracle ADVMパラメータを変更または表示します。

acfsdbg

目的

Oracle ACFSファイル・システムをデバッグします。

構文および説明

acfsdbg [-r] [-l] [-x] volume_device
acfsdbg -h

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsdbgコマンドで使用可能なオプションを示します。

表7-9 acfsdbgコマンドのオプション

オプション 説明

-h

使用方法のメッセージを出力して終了します。メッセージには、acfsdbgコマンドの起動時に使用できる各種オプションが表示されます。

-r

読取り専用モードで動作します。ファイル・システム上のデータは変更されません。また、すべての書込みコマンドを無効にします。デバイスがどこかにマウントされている場合、データはファイル・システム・マウントによってキャッシュされているものもあるため、acfsdbgで最新データが表示されない場合があります。

-l

カーネル・ログ・ファイルを処理します。デフォルトでは、ログ・ファイルを処理しません。

—x file_name

acfsutil metaで収集されたアクセラレータ・データに対して指定します。このタイプのデータに対してのみ使用します。

volume_device

ボリュームのデバイス名を指定します。

acfsdbgを実行するには、管理者またはOracle ASM管理者グループのメンバーであることが必要です。

サブコマンド

表7-10に、acfsdbgのサブコマンドを示します。

表7-10 acfsdbgのサブコマンド

オプション 説明 構文

calculate

単純な演算式を計算します。

有効な演算子: +、-、*、/、%、&、|、^、~、<<、>>

新しい式は、空白で始めます。

0-1は、マイナス1を表します。

calculate [-v] expr […]

  • -v: verboseモード
  • expr: 単純な2+2式

cksum

ヘッダーでチェックサムを生成して置換します。

ヘッダー・オフセットは、calculateサブコマンドで使用されるような式でもかまいません。

新しいヘッダー・オフセットは、空白で始めます。

このコマンドは、読取り専用モードでは無効です。

cksum [-C | -CE] header_offset […]

  • -C: 通常の構造チェックサム用として再生成します。
  • -CE: エクステント構造チェックサム用として再生成します。
  • header_offset: ディスク構造ヘッダーのオフセット。この値は、calculateサブコマンドで使用されるような式でもかまいません。

close

デバイスへのオープン・ハンドルを閉じます。

close

echo

コマンドラインのテキストをstdoutにエコーします。

echo

fenum

指定されたファイル・エントリ表(FETA)エントリを表示します。

fenum [-f | -e | -d] FETA_entry_number

  • -f: この構造に関連するディスク構造上のすべてを表示します。
  • -e: この構造に関連するディスク・エクステント情報のすべてを表示します。
  • -d: 構造をディレクトリとしてキャストし、そのコンテンツを表示します。
  • FETA_entry_number: ファイル・システム上のファイルを識別するために使用されるファイル・エントリ表の番号。

help

ヘルプ・メッセージを表示します。

help

offset

ディスク・オフセットでの構造を表示します。

offset [-c cast] [-f | -d] disk_offset

  • -f: この構造に関連するディスク構造上のすべてを表示します。
  • -d: 構造をディレクトリとしてキャストし、そのコンテンツを表示します。
  • disk_offset: 表示するディスク・オフセット。この値は、calculateサブコマンドで使用されるような式でもかまいません。

open

デバイスへのハンドルを開きます。デフォルトは、コマンドラインに入力されたボリューム・デバイス名です。

open [volume_device]

primary

コマンドのコンテキストにプライマリ・ファイル・システムを設定します。

primary

prompt

プロンプトに指定された文字列を設定します。

prompt "prompt_string"

quit

acfsdbgデバッガ・コマンドを終了します。

quit

read

オフセットから値を読み取ります。

読取りのデフォルト・サイズは、8バイトです。

読取りのデフォルト件数は、1です。

read [-1 | -2 | -4 | -8 | -s] [count] offset

  • -1: バイト値を読み取ります
  • -2: 2バイト(short)値を読み取ります。
  • -4: 4バイト(int)値を読み取ります。
  • -8: 8バイト(long)値を読み取ります。
  • -s nullで終了した文字列を読み取ります。
  • count: 読み取る値の数。指定しない場合、デフォルト値は1です。
  • offset: 読み取るディスク・オフセット。この値は、calculateサブコマンドで使用されるような式でもかまいません。

snapshot

コマンドのコンテキストに指定されたスナップショットを設定します。

snapshot snapshot_name

write

16進数、8進数または10進数の値をディスク・オフセットに書き込みます。値のサイズまたは前ゼロ付きの16進数値の桁数に基づいて書込みバイト数を見積ります。

ディスク・オフセットは、calculateサブコマンドで使用されるような式でもかまいません。

数値は、calculateサブコマンドで使用されるような式でもかまいません。

このコマンドは、読取り専用モードでは無効です。

write [-1 | -2 | -4 | -8 | -c | -s] [-C | -CE] offset value

  • -1: バイト値を書き込みます
  • -2: 2バイト(short)値を書き込みます。
  • -4: 4バイト(int)値を書き込みます。
  • -8: 8バイト(long)値を書き込みます。
  • -c テキスト(null終了なし)を書き込みます。文字列を一重引用符(')で囲みます。
  • -s : nullで終了した文字列を書き込みます。文字列を引用符(")で囲みます。
  • -C: 通常の構造チェックサムを再生成します。
  • -CE: エクステント構造チェックサムを再生成します。
  • offset: 書き込むディスク・オフセット。この値は、calculateサブコマンドで使用されるような式でもかまいません。
  • value: 書き込む値。数値の場合、この値は、calculateサブコマンドで使用されるような式でもかまいません。

例7-8に、acfsdbgサブコマンドの使用を示します。

例7-8 acfsdbgコマンドの使用方法

$ /sbin/acfsdbg /dev/asm/voume1-123
acfsdbg: version                   = 11.2.0.3.0
Oracle ASM Cluster File System (ACFS) On-Disk Structure Version: 39.0
The ACFS volume was created at  Mon Mar  2 14:57:45 2011
acfsdbg> 

acfsbdg> calculate 60*1024
    61,440
    61440
    61440
    0xf000
    0170000
    1111:0000:0000:0000

acfsdbg> prompt "acfsdbg test>"
acfsdbg test>

echo "offset 64*1024" | acfsdbg /dev/asm/volume1-123

acfsutil blog

目的

ブログ・ファイルにテキストを書込みます。

構文および説明

acfsutil [-h] blog

acfsutil blog {-t text | -u} mount_point

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsutil blogコマンドで使用可能なオプションを示します。

表7-11 acfsutil blogコマンドのオプション

オプション 説明

-t text

指定されたマウント・ポイントでブログ・ファイルにテキストを書込みます。

-u

dbgファイルからブログ・デバッグ・レベルを更新します。

mount_point

マウント・ポイントを指定します。

acfsutil blogコマンドを使用すると、ブログ・ファイルにテキストを書き込むことができます。

.

次の例では、acfsutil blogコマンドの実行方法を示します。—hオプションを指定してacfsutil blogを実行すると、ヘルプが表示されます。

例7-9 acfsutil blogの使用方法

$ /sbin/acfsutil -h

$ /sbin/acfsutil -t "this is a blog test" blog my_mount_point

$ /sbin/acfsutil -u blog my_mount_point

acfsutil dumpstate

目的

Oracleサポートによる診断のためにOracle ACFSの内部状態情報を収集します。

構文および説明

acfsutil [-h] dumpstate 
acfsutil dumpstate {acfs_path | [-d [-p {file_name | -}]] [-z] [acfs_path]}

acfsutil -h dumpstateは、ヘルプ・テキストを表示して終了します。

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsutil dumpstateコマンドで使用可能なオプションを示します。

表7-12 acfsutil dumpstateコマンドのオプション

オプション 説明

acfs_path

Oracle ACFSファイル・システムへのディレクトリ・パスを指定します。

-d

現在のディレクトリのacfs.dumpstatsまたは-pオプションで指定された出力に統計をダンプします。

-p { file_name | - }

acfs.dumpstatsではなくファイル名を指定するように-dオプションを変更します。ファイル名のかわりに-を指定して、ファイルに書き込むかわりに出力を表示することもできます。

-z

現在のすべての統計をクリアします。

acfsutil dumpstateコマンドは、指定されたファイル・システムについてOracle ACFSの内部状態情報を収集します。状態情報は、ロギング・ディレクトリのバイナリ・インシデント・ファイルに書き込まれます。バイナリ・ログ・インシデント・ファイルは、指定したパスでマウントされたファイル・システムに固有です。acfs.dumpstats統計ファイル、または指定された代替出力には、Oracle ACFSカーネル・モジュール全体の統計が含まれています。

ノート:

acfsutil dumpstateコマンドは、Oracleサポートが分析のために診断データおよびデバッグ・データを要求した場合にのみ実行します。

次に、acfsutil dumpstateコマンドの使用例を示します。

例7-10 acfsutil dumpstateコマンドの使用方法

次のコマンド実行は、指定したファイル・システムのバイナリ・インシデント・ファイルを作成します。

$ /sbin/acfsutil dumpstate /acfsmounts/acfs1/

次のコマンド実行は、ファイル・システム統計をacfs.dumpstatsにダンプし、指定したファイル・システムのバイナリ・インシデント・ファイルを作成します。

$ /sbin/acfsutil dumpstate -d /acfsmounts/acfs1/

次のコマンド実行は、すべてのファイル・システムの統計をクリアします。

$ /sbin/acfsutil dumpstate -z

次のコマンド実行は、ファイル・システム統計をacfs.dumpstatsにダンプし、バイナリ・インシデント・ファイルを作成し、指定したファイル・システムのすべてのファイル・システム統計をクリアします。

$ /sbin/acfsutil dumpstate -d -z /acfsmounts/acfs1/

acfsutil info ftrace

目的

マウント・ポイントで指定されたOracle ACFSファイル・システムに関連付けられているオープン・ファイルのトレース・エントリを表示します。

構文および説明

acfsutil info ftrace -h
acfsutil info ftrace [-s] mount_point

acfsutil info ftrace —hは、ヘルプ・テキストを表示して終了します。

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsutil info ftraceコマンドで使用可能なオプションを示します。

表7-13 acfsutil info ftraceコマンドのオプション

オプション 説明

—s

オープン・ファイルのファイルIDのみを表示します。

mount_point

このファイル・システムがマウントされるディレクトリを指定します。

acfsutil info ftraceコマンドは、マウントされているOracle ACFSファイル・システムのオープン・ファイルのリストを表示します。

Oracle ACFSカーネル・ドライバは、メモリーにロードされるファイルを追跡します。これらのファイルにはアクティブなオープンがなく、キャッシュされるだけの場合があります。オープン・ファイル・トレースでは、キャッシュされたどのファイル・コントロール・ブロック(FCB)にアクティブなオープンまたは参照があるかを判断できます。このコマンドの目的は、ファイル・システムのアンマウントを阻止する、まだ参照されているファイルがあるかどうかを確認することです。

acfsutil info ftraceコマンドは、初回実行時、参照されなくなったキャッシュ済ファイルをパージしようとします。この操作では、各ファイルの変更済メタデータとユーザー・データをディスクにフラッシュする必要があるため、完了までに時間がかかる場合があります。

次に、acfsutil info ftraceコマンドの出力について説明します。ファイルは、通常のファイルまたはディレクトリを参照できます。

出力の基本的な形式は次のとおりです。

Fileid: %ID%, Pathname: %PATH%
          [%OP%] Pid:  %PID% Ppid:   %PPID% Elapsed time: %TIME% Cmd: %CMD%
          ...

フィールドについては、次の一覧で説明します。

  • %ID%: 数値ファイル識別子。これは、acfsutil info idで使用されるものと同じ番号です。この値は、Linuxではinode番号とも呼ばれます。

  • %PATH%: %ID%に基づく、生成されたファイルのパス名。使用できない場合、N/Aと表示される場合があります。

  • %OP%: ファイルにアクセスした操作のタイプ。値は次のとおりです。

    • LOOKUP: 指定したプロセスが、パス名を介してこのファイルをルックアップしました。

    • CREATE: 指定したプロセスがファイルを作成しました。

    • NFS: NFSプロセスが、クライアントにかわってファイルにアクセスしました。

    • OPEN: 指定したプロセスがファイルを開きました。

    • MAP: 指定したプロセスが、ファイルをメモリーにマップしました。

  • %PID%: プロセスID。%PPID%: 親プロセスID。この出力アイテムは使用できません。

  • %TIME%: 操作が発生した時点からの経過時間。形式: d(日), h(時間), m(分), s(秒)

  • %CMD%: 操作を実行したプロセスの名前。

リストされる各ファイルには、システムのワークロードに応じて複数の操作がリストされます。メモリーを節約するため、表示される操作の数は制限されます。Oracle ACFSドライバは、各操作のローテーション・ログを保持し、操作エントリはラップされる場合があります。そのため、最も古い操作が最初に表示されるとはかぎりません。

次の例は、/mntマウント・ポイントで実行されるacfsutil info ftraceコマンドを示しています。

例7-11 acfsutil info ftraceコマンドの使用方法

$ acfsutil info ftrace /mnt
Fileid: 42, Pathname: /mnt/yum.conf
        [LOOKUP] Pid:  27009 Ppid:  14999 Elapsed time: 0d 00h 00m 03s Cmd: tail
        [OPEN  ] Pid:  27009 Ppid:  14999 Elapsed time: 0d 00h 00m 03s Cmd: tail

Fileid: 155, Pathname: /mnt/bash
        [LOOKUP] Pid:   9731 Ppid:  19588 Elapsed time: 0d 00h 00m 08s Cmd: cp
        [OPEN  ] Pid:   9731 Ppid:  19588 Elapsed time: 0d 00h 00m 08s Cmd: cp
        [OPEN  ] Pid:   9735 Ppid:  19588 Elapsed time: 0d 00h 00m 05s Cmd: bash
        [MAP   ] Pid:   9735 Ppid:  19588 Elapsed time: 0d 00h 00m 05s Cmd: bash
        [MAP   ] Pid:   9735 Ppid:  19588 Elapsed time: 0d 00h 00m 05s Cmd: bash
        [MAP   ] Pid:   9735 Ppid:  19588 Elapsed time: 0d 00h 00m 05s Cmd: bash

Fileid: 43, Pathname: /mnt/dir1
        [LOOKUP] Pid:  14485 Ppid:   7829 Elapsed time: 0d 12h 20m 13s Cmd: mkdir
        [LOOKUP] Pid:   7829 Ppid:   7828 Elapsed time: 0d 12h 20m 06s Cmd: bash
        [LOOKUP] Pid:   7829 Ppid:   7828 Elapsed time: 0d 12h 20m 06s Cmd: bash

acfsutil lockstats

目的

ロック競合統計を表示します。

構文および説明

acfsutil lockstats lh -h
acfsutil lockstats lh [-b] [-e] [-z] [-t top_n] [-s sort_column]

acfsutil lockstats lh —hは、ヘルプ・テキストを表示して終了します。

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsutil lockstatsコマンドで使用可能なオプションを示します。

表7-14 acfsutil lockstatsコマンドのオプション

オプション 説明

-b

ロック統計の収集を開始(有効化)します。

—e

ロック統計の収集を停止(無効化)します。

—z

収集された現在のロック統計をゼロアウト(クリア)します。

—t top_n

上位n個のロック統計を表示します。

—s sort_column

指定したソート列のロック統計をソートします。

有効なソート列の値は、acquirestotalwaitmaxwaitです。

デフォルトでは、統計は待機合計でソートされます。

コマンドの出力は、4列の表形式で表示されます。
  • 最初の列は、ロック階層グループ名です。

  • 2番目の列は、その特定のグループで取得されたロックの数です。

  • 3番目の列は、取得したすべてのロックの最大待機時間です。

  • 4番目の列は、取得したすべてのロックの累積待機時間です。

次の例では、acfsutil lockstatsコマンドの複数の使用方法を示します。

例7-12 acfsutil lockstatsコマンドの使用方法

# Enable lock statistics collection in the kernel. No data is displayed.
$ acfsutil lockstats lh -b

# Zero out any and all the lock statistics collected. No data is displayed.
$ acfsutil lockstats lh -z

# Disable lock statistics collection in the kernel. No data is displayed.
$ acfsutil lockstats lh -e

# Displays all of the lock statistics, sorted on the total wait column.
$ acfutil lockstats lh

+-------------------------------------+--------------+------------+------------+
|              Lock Type              |   Acquires   |  Max Wait  | Total Wait |
+-------------------------------------+--------------+------------+------------+
| LH_MetabufLock                      |       608763 |          1 |        176 |
| LH_FcbMCBLock                       |       605578 |          1 |         83 |
| LH_IgnoreCompletely                 |      7002105 |          1 |         41 |
| LH_SnapDIOCowLock                   |          295 |          6 |          6 |
| LH_DLM_hash_chain_lock              |       312581 |          1 |          5 |
| LH_OFSBUFHashChain                  |       610118 |          1 |          5 |
| LH_SnapMapLockDLMLock               |          297 |          1 |          1 |
| LH_RemapTableDLMLock                |            3 |          1 |          1 |
| LH_TrackOnly                        |       348954 |          0 |          0 |
| LH_KS_feature_lock                  |           12 |          0 |          0 |
| LH_DLM_rbld_stall_lock              |          199 |          0 |          0 |
| LH_DLM_rsb_incarn_lock              |           68 |          0 |          0 |
| LH_DLM_rsb_lock                     |           81 |          0 |          0 |
| LH_DLM_lkb_lock                     |           83 |          0 |          0 |
| LH_DLM_lkid_lock                    |          194 |          0 |          0 |
| LH_KCSS_comm_lock                   |           11 |          0 |          0 |
| LH_KSS_asm_exit_lock                |           10 |          0 |          0 |
| LH_KCSS_rac_mode_lock               |           21 |          0 |          0 |
| LH_ADVM_hd_lock                     |            1 |          0 |          0 |
| LH_ADVM_rootSpin                    |           90 |          0 |          0 |
| LH_ADVM_root_stateLock              |            1 |          0 |          0 |
.
.
.
| LH_GlobalMntResource                |            4 |          0 |          0 |
| LH_KS_PlogConfigLock                |          587 |          0 |          0 |
+-------------------------------------+--------------+------------+------------+

# Displays only the top 10 lock statistics.
$ acfsutil lockstats lh -t 10

+-------------------------------------+--------------+------------+------------+
|              Lock Type              |   Acquires   |  Max Wait  | Total Wait |
+-------------------------------------+--------------+------------+------------+
| LH_MetabufLock                      |       802244 |          1 |        230 |
| LH_FcbMCBLock                       |       798135 |          1 |        113 |
| LH_IgnoreCompletely                 |      9214061 |          1 |         54 |
| LH_OFSBUFHashChain                  |       803599 |          1 |          7 |
| LH_SnapDIOCowLock                   |          389 |          6 |          6 |
+-------------------------------------+--------------+------------+------------+

# Displays all of the lock statistics, sorted on the ‘Acquires’ column.
$ acfsutil lockstats -s acquires

+-------------------------------------+--------------+------------+------------+
|              Lock Type              |   Acquires   |  Max Wait  | Total Wait |
+-------------------------------------+--------------+------------+------------+
| LH_IgnoreCompletely                 |      9263483 |          1 |         54 |
| LH_OFSBUFHashChain                  |       807734 |          1 |          7 |
| LH_MetabufLock                      |       806379 |          1 |        231 |
| LH_FcbMCBLock                       |       802234 |          1 |        114 |
| LH_TrackOnly                        |       461656 |          0 |          0 |
| LH_DLM_hash_chain_lock              |       312581 |          1 |          5 |
| LH_DLMSpinLock                      |        15982 |          0 |          0 |
| LH_AutoResizeLock                   |         3880 |          0 |          0 |
| LH_SnapMapMetaDataLock              |         2725 |          0 |          0 |
| LH_RecoverySpinLock                 |         2722 |          0 |          0 |
| LH_clean_ofsBufl_lock               |         2580 |          0 |          0 |
| LH_ResizeVOPsLock                   |         2333 |          0 |          0 |
| LH_SBMetaDataLock                   |         2145 |          0 |          0 |
| LH_SBDLMLock                        |         2145 |          0 |          0 |
| LH_FcbListLock                      |         1980 |          0 |          0 |
| LH_VcbDIOSpinLock                   |         1940 |          0 |          0 |
| LH_McbLock                          |         1863 |          0 |          0 |
| LH_UnmountFCBRefLock                |         1552 |          0 |          0 |
| LH_AuditThreadResource              |          783 |          0 |          0 |
| LH_KS_PlogConfigLock                |          779 |          0 |          0 |
.
.
.
| LH_ShrinkAccelLock1                 |            1 |          0 |          0 |
| LH_ShrinkLock1                      |            1 |          0 |          0 |
| LH_VolResizeLock                    |            1 |          0 |          0 |
+-------------------------------------+--------------+------------+------------+

# Displays all of the lock statistics, sorted on the ‘Max Wait’ column.
$ acfsutil lockstats -s maxwait

+-------------------------------------+--------------+------------+------------+
|              Lock Type              |   Acquires   |  Max Wait  | Total Wait |
+-------------------------------------+--------------+------------+------------+
| LH_SnapDIOCowLock                   |          397 |          6 |          6 |
| LH_IgnoreCompletely                 |      9405112 |          1 |         55 |
| LH_DLM_hash_chain_lock              |       312581 |          1 |          5 |
| LH_OFSBUFHashChain                  |       820083 |          1 |          7 |
| LH_FcbMCBLock                       |       814524 |          1 |        116 |
| LH_MetabufLock                      |       818728 |          1 |        234 |
| LH_SnapMapLockDLMLock               |          399 |          1 |          1 |
| LH_RemapTableDLMLock                |            3 |          1 |          1 |
| LH_TrackOnly                        |       468690 |          0 |          0 |
| LH_KS_feature_lock                  |           12 |          0 |          0 |
| LH_DLM_rbld_stall_lock              |          199 |          0 |          0 |
| LH_DLM_rsb_incarn_lock              |           68 |          0 |          0 |
| LH_DLM_rsb_lock                     |           81 |          0 |          0 |
| LH_DLM_lkb_lock                     |           83 |          0 |          0 |
| LH_DLM_lkid_lock                    |          194 |          0 |          0 |
| LH_KCSS_comm_lock                   |           11 |          0 |          0 |
.
.
.
| LH_GlobalMntResource                |            4 |          0 |          0 |
| LH_KS_PlogConfigLock                |          790 |          0 |          0 |
+-------------------------------------+--------------+------------+------------+

# Displays all of the lock statistics, sorted on the ’Total Wait’ column.
$ acfsutil lockstats -s total wait

+-------------------------------------+--------------+------------+------------+
|              Lock Type              |   Acquires   |  Max Wait  | Total Wait |
+-------------------------------------+--------------+------------+------------+
| LH_MetabufLock                      |       608763 |          1 |        176 |
| LH_FcbMCBLock                       |       605578 |          1 |         83 |
| LH_IgnoreCompletely                 |      7002105 |          1 |         41 |
| LH_SnapDIOCowLock                   |          295 |          6 |          6 |
| LH_DLM_hash_chain_lock              |       312581 |          1 |          5 |
| LH_OFSBUFHashChain                  |       610118 |          1 |          5 |
| LH_SnapMapLockDLMLock               |          297 |          1 |          1 |
| LH_RemapTableDLMLock                |            3 |          1 |          1 |
| LH_TrackOnly                        |       348954 |          0 |          0 |
| LH_KS_feature_lock                  |           12 |          0 |          0 |
| LH_DLM_rbld_stall_lock              |          199 |          0 |          0 |
| LH_DLM_rsb_incarn_lock              |           68 |          0 |          0 |
| LH_DLM_rsb_lock                     |           81 |          0 |          0 |
| LH_DLM_lkb_lock                     |           83 |          0 |          0 |
| LH_DLM_lkid_lock                    |          194 |          0 |          0 |
| LH_KCSS_comm_lock                   |           11 |          0 |          0 |
| LH_KSS_asm_exit_lock                |           10 |          0 |          0 |
| LH_KCSS_rac_mode_lock               |           21 |          0 |          0 |
| LH_ADVM_hd_lock                     |            1 |          0 |          0 |
| LH_ADVM_rootSpin                    |           90 |          0 |          0 |
| LH_ADVM_root_stateLock              |            1 |          0 |          0 |
  .  
  .
  .
| LH_GlobalMntResource                |            4 |          0 |          0 |
| LH_KS_PlogConfigLock                |          587 |          0 |          0 |
+-------------------------------------+--------------+------------+------------+

# Displays the top 10 lock statistics, sorted on the ’Acquires’ column.
$ acfsutil lockstats lh -s acquires -t 10

+-------------------------------------+--------------+------------+------------+
|              Lock Type              |   Acquires   |  Max Wait  | Total Wait |
+-------------------------------------+--------------+------------+------------+
| LH_IgnoreCompletely                 |      9874904 |          1 |         58 |
| LH_OFSBUFHashChain                  |       861237 |          1 |          8 |
| LH_MetabufLock                      |       859882 |          1 |        248 |
| LH_FcbMCBLock                       |       855493 |          1 |        127 |
| LH_TrackOnly                        |       491920 |          0 |          0 |
| LH_DLM_hash_chain_lock              |       312581 |          1 |          5 |
| LH_DLMSpinLock                      |        16870 |          0 |          0 |
| LH_AutoResizeLock                   |         4122 |          0 |          0 |
| LH_SnapMapMetaDataLock              |         2898 |          0 |          0 |
| LH_RecoverySpinLock                 |         2884 |          0 |          0 |
+-------------------------------------+--------------+------------+------------+

acfsutil log

目的

メモリー診断ログ・ファイルおよびメッセージ・デバッグ設定を取得します。

構文および説明

acfsutil [-h] log

acfsutil log [-f filename] [-s] [-r n{K|M|G|T|P}] [-p {avd|ofs|oks}] [-l debuglevel] 
         [-n consolelevel] [-o wait_time] [-q] [-c debugcontext] [-T file_type] 
         [-m mount_point] [-a] [-C] [-t]

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsutil logコマンドで使用可能なオプションを示します。

表7-15 acfsutil logコマンドのオプション

オプション 説明

-f filename

指定されたファイルにインメモリー・ログを書き込みます。デフォルト・ファイルは、現行ディレクトリのoks.logです。

-s

インメモリー・ログ・ファイルのサイズを表示します。

-r n{K|M|G|T|P}

インメモリー・ログ・ファイルのサイズを設定します。

-p {avd|ofs|oks}

レベルまたは問合せの設定を設定する製品を指定します。デフォルトはすべての製品、つまりOracle ADVM (avd)、Oracle ACFS (ofs)およびOracle Kernel Services (oks)です。

-l debuglevel

インメモリー・デバッグ・レベルを設定します。デフォルトのデバッグ・レベルは2です。有効値は、0-6です。

-n consolelevel

永続ロギングのデバッグ・レベルを設定します。その他の永続ログ構成設定は、acfsutil plogconfigコマンドで管理されます。

-o wait_time

ログ・サイズ、デバッグ・レベルおよび製品値をすべてのノードに設定し、wait_timeで指定された秒数の間待機し、すべてのノードのメモリー・ログにダンプを出力した後、デバッグ・レベルおよびログ・サイズをリセットします。

-q

指定された製品のデバッグ設定を問い合せます。

たとえば: acfsutil log —p avd —q

-c debugcontext

デバッグ・コンテキストを設定します(内部のみ)。

-T file_type

デバッグ・ファイル・タイプを設定します(内部のみ)。

—m mount_point

指定されたマウント・ポイントでファイル・システムのみをデバッグすることを指定します。

-a

すべてのファイル・システムについてログに記録するように、デバッグ・ロギングをリセットします。

-C

すべてのクラスタ・ノードでメモリー・ログをダンプします。また、-tオプションに追加することもできます。

-t

すべてのハング・マネージャ・スレッド情報をインメモリー・ログおよび永続ログにダンプします。

acfsutil logコマンドを使用すると、メモリー診断ログ・ファイルを管理できます。オプションをなにも指定しないと、acfsutil logコマンドは、デフォルトで./oks.logメモリー・ログに対して取得および書込みを実行します。

-oオプションは、次を実行します。

  1. すべてのノードのインメモリー・ログに対してログ・サイズを500M、ログ・レベルを5、製品をofs (acfs)にそれぞれ設定します。

  2. 「180秒間ブロック中で、現在問題が再現しています」などの情報メッセージを表示します。

  3. 指定された秒数の間待機した後、「すべてのノードでログをダンプしています」と表示します。

  4. クラスタ規模のログのダンプを開始します。

  5. ログ・レベルを2にリセットし、ログ・サイズをデフォルトにリセットします。

-oオプションは、デフォルトの製品、デバッグ・レベルまたはログ・サイズの設定を変更する必要がある場合、-p-lおよび-rの各オプションと組み合せることができます。

このコマンドを実行するには、rootユーザーまたはOracle ASM管理者ユーザーである必要があります。

次の例は、acfsutil logコマンドを実行する様々な方法を示しています。

例7-13 acfsutil logの使用方法

#increase internal log size to 100Mb
$ acfsutil log -r 100M

#increase log level for acfs to 5
$ acfsutil log -l 5 -p ofs

#increase log level for oks to 5
$ acfsutil log -l 5 -p oks

#collect in memory log and place it into /tmp/logfile
$ acfsutil log -f /tmp/logfile

#put trace level back to default, level 2
$ acfsutil log -l 2 -p ofs
$ acfsutil log -l 2 -p oks

# increase log level to 5, wait 3 seconds, and then automatically dump a log on all nodes, 
# log will be in a dated file in directory specified by acfsutil plog -q
$ acfsutil log -l 5 -o 3
Blocking for 3 seconds, reproduce problem now
Dumping log on all nodes

# dump out the stacks of all acfs threads running on the system on all nodes into log files 
# in the directory specified by acfsutil plog -q
$ acfsutil log -t
$ acfsutil log -C

acfsutil meta

目的

Oracle ACFSファイル・システムから別の出力ファイルにメタデータをコピーします。

構文および説明

acfsutil meta -h
acfsutil meta  [-v] 
               [-g] 
               [-g -O -C -S]
               [-O]
               [-C COW_filepath]
               [-S COW_size]
               [-q nn[K|M|G|T]]  
               [-l log_file_path] 
               [-o acfs_extent_offsets]      
               {-f record_oriented_metadata_output_file} [-a accel_device] volume_device

acfsutil meta  {-e record_oriented_metadata_input_file [-i]}
               {-f output_filesystem_meta_file_prefix_name}

acfsutil meta -hは、ヘルプ・テキストを表示して終了します。

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsutil metaコマンドで使用可能なオプションを示します。オプションはLinux形式(およびAIX形式とSolaris形式)で表示されます。

表7-16 acfsutil metaコマンドのオプション

オプション 説明

—f record_oriented_metadata_output_file

メタデータのコピー先となる出力ファイルのパス名を指定します。

—g

ブロック・スキャンは、ボリューム全体で失われたメタデータを検索するためには実行しないでください。かわりに、既知のメタデータ・ブロックのみを読み取ってください。このオプションが推奨されるのは、良好な状態のファイル・システムのみです。

—g -O -C -S

Oracle ACFSオンライン・チェッカ(Linuxではfsck)も実行する点以外は、-gオプションと同じです。

-O

Oracle ACFSオンライン・チェッカ(Linuxではfsck)を実行することを指定します。

-C COW_filepath

Oracle ACFSオンライン・チェッカのCopy-On-Write(COW)ファイルへのパスを指定します。パスは別のOracle ACFSファイル・システム上にある必要があります。

-S COW_size

Oracle ACFSオンライン・チェッカのCopy-On-Write(COW)ファイルのサイズを指定します。サイズは、ファイル・システムの変更時に元のブロックを維持できる規模の十分な大きさが必要です。

volume_device

コピーされるファイル・システムのボリューム・デバイス名を指定します。

—v

verboseモードを指定して追加の診断メッセージを生成します。

—q nn[K|M|G|T]

クイック・スキャン・モードでメタデータ・コレクタを起動します。ボリュームのスキャンは、指定されたサイズで停止します。指定する数字は正の整数でなければならず、値は、少なくとも200Mでなければなりません。

単位は、K (KB)、M (MB)、G (GB)、またはT (TB)です。単位インジケータを指定する場合は、整数の後に付ける必要があります。省略した場合、デフォルトの単位はバイトです。

-l log_file_path

ログ・ファイルのパスを指定します。指定しない場合、ログ・ファイルは現行ディレクトリにデフォルト名のacfs.meta.logで生成されます。

—o acfs_extent_offsets

メタ・コレクタがデータを追加でコピーする元となるカンマ区切りのファイル・オフセットのリストを指定します。

—a accel_device

ファイル・システムがアンマウントできない場合に使用される、関連付けられたアクセラレータ・デバイスの場所を指定します。

—e record_oriented_metadata_input_file

指定されたレコード指向メタデータ・ファイルを、fsckまたはacfschkdskで使用できるファイルに展開します。

—i

-iオプションを-eオプションとともに使用すると、各レコード指向メタデータ・ファイルのメタデータ・レコード・ヘッダー(フラグ、ボリューム、オフセット、サイズ)がリストされます。

—f output_filesystem_meta_file_prefix_name

—eオプション操作の出力ファイルのパス名を指定します。

acfsutil metaコマンドは、メタデータ・コレクタとして動作し、Oracle ACFSファイル・システムを別の指定されたレコード指向出力ファイルに部分的にコピーします。メタデータ・コレクタは、Oracle ACFSファイル・システムのボリュームデバイス名で指定されたファイル・システムのコンテンツを読み取ります。この入力ファイル・システムでOracle ACFSメタデータが検索され、見つかったメタデータはすべて指定のレコード指向出力ファイルに書き込まれます。生成されたレコード指向出力ファイルは、容易に別のシステムに転送できます。そこで、顧客サイトにある元のファイル・システムに影響を与えることなく、診断および分析のために展開できます。

-gオプションは、既知の良好なメタデータのみを収集します。破損したファイル・システムを指定して-gオプションは使用しないでください。-gオプションは、失われたメタデータを検索しないためです。失われたメタデータは、ファイル・システムの破損の診断に重要な場合があります。ファイル・システムが良好な状態の場合、-gオプションは、物理ボリューム全体をスキャンして失われたメタデータ・ブロックを検索する必要がないため、より高速にメタデータを収集できます。

Linuxでacfsutil meta -gコマンドを実行すると、Oracle ACFSオンライン・チェッカ(fsck)が自動的に実行されます。acfsutil meta -gのかわりに実行されるOracle ACFSオンライン・チェッカは、メタデータ・オンディスク・ポインタを使用してOracle ACFSファイル・システム・メタデータをトラバースし、acfsutil meta-gメタデータ・コレクション・ファイルに読み込まれたメタデータを書き込みます。Linuxでのオンラインfsckコマンドの詳細は、Linux環境用のOracle ACFSコマンドライン・ツールを参照してください。

acfsutil metaでファイル・システムの最適なコピーを取得するには、ファイル・システムをディスマウントしてからacfsutil metaを実行します。ファイル・システムをディスマウントできない場合は、acfsutil metaを実行している間にコンテンツ変更やボリュームのサイズ変更操作を実行しないようにします。

元のファイル・システムが非常に大規模な場合、出力ファイルも非常に大きくなる可能性があります。ストレージ領域および転送時間を削減できる場合は、出力ファイルを圧縮します。

ファイル・システムにアクセラレータ・デバイスが関連付けられている場合、acfsutil metaは、アクセラレータ・デバイス・データもレコード指向出力ファイルにコピーします。この動作は自動的に発生します。

ほとんどの状況で、acfsutil metaは、アクセラレータ・デバイスをレコード指向出力ファイルに自動的にコピーします。しかし、メタ・コレクタが自力でアクセラレータ・デバイスを検出できないと考えられる場合、コマンドラインに-aオプションを使用して名前を指定できます。たとえば、ファイル・システムが破損した場合にこのような状況が発生します。-aオプションを使用すると、メタ・コレクタの自動的な動作がオーバーライドされるため、-aは慎重に使用する必要があります。

メタデータ・コマンドが出力ファイルも処理する可能性があるため、出力ファイルは入力デバイスとして指定されるOracle ACFSデバイスには配置しないでください。出力ファイルは、Oracle ACFS入力ボリューム・デバイスのサイズである出力ファイルをサポートできるファイル・システムに配置する必要があります。ファイル・システムがいっぱいで、すべてのメタデータを含み、ユーザー・データをほとんど含んでいない場合(このような状態が起こる可能性は低いですが、あり得ないことではありません)を除き、出力ファイルにはそれほどのストレージは必要ないはずです。

-qフラグは慎重に使用する必要があります。-qを指定すると、メタ・コレクタは入力ファイル・システム全体のスキャンおよびコピーを実行しません。そのかわりに、事前決定されたバイト数および重要と見なされる特定のデータ構造のみをスキャンしてコピーします。-qフラグは主に、メタデータ・コレクタのフルバージョンを実行する十分な時間がない状況で使用します。-qフラグは、問題を調査しているサポート担当者が推奨しないかぎり使用しないでください。

レコード指向出力ファイルの展開は、診断および分析を実行するシステムで行う必要があります。たとえば、次のコマンドは、十分なストレージ領域がある別のファイル・システム上でレコード指向メタデータ・ファイルを展開します。

acfsutil meta -e record_oriented_metadata_input_file -f output_filesystem_meta_file_prefix_name

コマンドの出力は、fsckまたはacfschkdskでの使用に適したスパース・ファイルを提供します。レコード指向メタデータ入力ファイルにアクセラレータ・ボリュームが含まれている場合は、.acc接尾辞が付加された同じ出力ファイル名接頭辞を使用して、2番目のスパース出力ファイルが作成されます。展開されたファイルに使用されるファイル・システムは、スパース・ファイルをサポートしている必要があります。そうでない場合、結果として展開されたファイルは、無用のゼロを含む非常に大きなサイズになる可能性があります。これは、スパースのホールによって領域を節約できる部分です。

ほとんどの場合、acfsutil metaで展開された出力ファイルは、fsckコマンドで読み取ることができます。ただし、一部のOSプラットフォームでOracle ACFS固有のfsckコマンドを使用すると、出力ファイルに正しくアクセスできないか、指定したフラグで機能しないことがあります。このような場合、fsckコマンドの書式を少し変更して使用します。たとえば:

  • Linuxでは、—xフラグを使用している場合、次の書式でコマンドを実行します。

    /sbin/fsck.acfs -x filesystem_meta_file.acc filesystem_meta_file
  • Solarisでは、—o xフラグを使用している場合、次の書式でコマンドを実行します。

    /usr/lib/fs/acfs/fsck -o x=filesystem_meta_file.acc filesystem_meta_file
  • AIXでは、次の書式でコマンドを実行します。

    /sbin/helpers/acfs/fsck filesystem_meta_file

例7-14は、メタデータをコピーして出力ファイルへと展開するためのacfsutil metaコマンドの使用方法を示しています。

例7-14 acfsutil metaコマンドの使用方法

$ /sbin/acfsutil meta -f /acfsmounts/critical_apps/record_oriented_metadata_file /dev/asm/volume1-123

次に、診断および分析が実行されるシステムで出力ファイルを展開できます。

$ /sbin/acfsutil meta -e record_oriented_metadata_file -f filesystem_meta_file

acfsutil plogconfig

目的

Oracle ACFSの永続ロギング構成設定を管理します。

構文および説明

acfsutil plogconfig [-h] [-d persistent_log_directory] [-t] [-q ] [-i seconds] 
                    [-s buffer_size] [-l low_water_percent] [-u high_water_percent] 
                    [-m max_logfile_size] [-n max_logfile_number] [-w]

acfsutil -h plogconfigは、ヘルプを表示して終了します。

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsutil plogconfigコマンドで使用可能なオプションを示します。

表7-17 acfsutil plogconfigコマンドのオプション

オプション 説明

-d persistent_log_directory

代替ロギング・ディレクトリを指定します。指定しない場合、デフォルト・ディレクトリは$ORACLE_BASE/crsdata/hostname/acfsです。

-t

ロギングを終了します。

-q

永続ロギング構成設定を問い合せて、表示します。

-i seconds

間隔タイマーの秒数を指定します。

-s buffer_size

ログ・バッファ・サイズ(KB)を設定します。

-l low_water_pecent

ファイル書込みトリガーをパーセンテージで設定します。

-u high_water_pecent

ファイル書込みスロットルをパーセンテージで設定します。

-m max_logfile_size

ログ・ファイルの最大サイズ(MB)を設定します。

-n max_logfile_number

ログ・ファイルの最大数を設定します。

-w

ACFS永続ログがラップされているかどうかをレポートします。

acfsutil plogconfigコマンドは、永続ロギングの構成設定を管理するための診断ツールとなります。

コマンド引数はすべてオプションですが、少なくとも1つ指定する必要があります。

ノート:

acfsutil plogconfigコマンドは、Oracleサポートが永続ロギング設定の構成を要求した場合にのみ実行します。

このコマンドを実行するには、rootユーザーまたはOracle ASM管理者ユーザーである必要があります。

次に、現在の構成設定を表示するacfsutil plogconfigコマンドの使用例を示します。

例7-15 Oracle ACFS acfsutil plogconfigコマンドの使用方法

# /sbin/acfsutil plogconfig -q

Log Directory Name : /oracle/crsdata/my_host/acfs 
Buffer Size (KB) : 64
Low Water Level (percent) : 50
High Water Level (percent) : 75
Timer Interval (Seconds) : 5
Maximum Number of Log Files : 10
Maximum Log File Size (MB) : 100

acfsutil tune

目的

acfsutil tuneコマンドは、Oracle ACFSの調整可能パラメータの値を表示または設定します。

構文および説明

acfsutil tune -h
acfsutil tune [tunable_name]
acfsutil tune tunable_name=value

acfsutil tune -hは、ヘルプ・テキストを表示して終了します。

次の表に、acfsutil tuneコマンドで使用可能なオプションを示します。

表7-18 acfsutil tuneコマンドのオプション

オプション 説明

tunable_name

調整可能パラメータの名前を指定します。

value

調整可能パラメータの値を指定します。

調整可能パラメータと値が指定されている場合、acfsutil tuneコマンドは、特定のノードに永続的な方法で調整可能パラメータの値を設定します。

調整可能パラメータが値なしで指定されている場合、acfsutil tuneコマンドは、指定された調整可能パラメータに現在割り当てられている値を表示します。

オプションが指定されていない場合、acfsutil tuneコマンドは、現在割り当てられている調整可能パラメータの値を表示します。

Oracle ACFS調整可能パラメータAcfsMaxOpenFilesを使用すると、AIX上で開いておくことができるOracle ACFSファイルの数を制限できます。通常、この調整可能パラメータの値を変更する必要はありませんが、Oracle ACFSファイル・システムで大きな作業ファイルを扱う場合、値を増やすことがあります。

Oracle ACFS調整可能パラメータAcfsMaxCachedFilesを使用すると、AIX上のメモリーにキャッシュしておけるクローズ済ファイルの最大数を設定できます。通常、この調整可能パラメータの値を変更する必要はありませんが、パフォーマンスの向上のために値を変更することがあります。

調整可能パラメータを変更すると、ただちに有効になり、再起動されても効力は持続します。

調整可能パラメータの値を変更するには、rootユーザーである必要があります。

最初のコマンドは、Oracle ACFSの調整可能パラメータとその値を表示します。2つ目のコマンドでは、AcfsHMTimeOutIntervalSecsパラメータの値を変更します。

例7-16 acfsutil tuneコマンドの使用方法

$ /sbin/acfsutil tune
AcfsHMTimeOutIntervalSecs   = 60 (0x3c)
AcfsHMSilenceIntervalMins   = 240 (0xf0)

# /sbin/acfsutil tune AcfsHMTimeOutIntervalSecs=120

advmutil tune

目的

advmutil tuneは、Oracle ADVMのパラメータの値を表示または設定します。

構文および説明

advmutil -h
advmutil tune [parameter]
advmutil tune parameter=value

advmutil -hはヘルプ・テキストを表示して終了します。

次の表に、advmutil tuneコマンドで使用可能なオプションを示します。

表7-19 advmutil tuneコマンドのオプション

オプション 説明

parameter

値を設定または表示するパラメータを指定します。

value

指定したパラメータの値を指定します。

オプションが指定されていない場合、advmutil tuneコマンドは、現在割り当てられている値を表示します。

パラメータに値が指定されていない場合、advmutil tuneコマンドは指定されたパラメータに現在割り当てられている値を表示します。

パラメータを設定するには、権限を持つユーザーである必要があります。

ノート:

パラメータの設定は注意して行う必要があり、通常はOracleサポート・サービスのみが行います。

advmutil tuneで指定できるパラメータは、デッドロック・タイマー(deadlock_timer)の最大時間(分)です。この例の1つ目のコマンドは、deadlock_timerパラメータの最大時間(分)を変更します。2番目のコマンドは、Oracle ADVMパラメータの現在の設定を表示します。

例7-17 advmutil tuneの使用方法

$ /sbin/advmutil tune deadlock_timer=20

$ /sbin/advmutil tune
deadlock_timer        = 20 (0x14)
resilver_power        = 8 (0x8)
resilver_regio        = 32 (0x20)

Oracle ACFS I/O障害コンソール・メッセージの理解

Oracle ACFSでは、オペレーティング・システム固有のシステム・イベント・ログにI/O障害の情報を記録します。

コンソール・メッセージの書式は次のとおりです。

[Oracle ACFS]: I/O failure (error_code) with device device_name during a operation_name op_type.
file_entry_num Starting offset: offset. Length of data transfer: io_length bytes.
Impact: acfs_type   Object: object_type   Oper.Context: operation_context 
Snapshot?: yes_or_no AcfsObjectID: acfs_object_id . Internal ACFS Location: code_location.

コンソール・メッセージ構文のイタリック体の変数は、次のものに対応しています。

  • I/O障害

    Oracle ACFSによって見つかったI/O障害に対するオペレーティング・システム固有のエラー・コード(16進法)。これはハードウェアの問題を示す場合もあれば、他のなんらかの理由によるI/O開始の失敗を示す場合もあります。

  • デバイス

    関連するデバイス(通常はADVMデバイス・ファイル)。しかし、場合によっては、デバイスのマイナー番号を示す文字列である可能性もあります。

  • 操作名

    関連する操作の種類。

    user datametadataまたはpaging

  • 操作タイプ

    関連する操作のタイプ。

    synch readsynch writeasynch readまたはasynch write

  • ファイル・エントリ番号

    関連するファイル・システム・オブジェクトのOracle ACFSファイル・エントリ番号(10進数)。acfsutil info fileidツールにより対応するファイル名を見つけます。

  • オフセット

    I/Oのディスク・オフセット(10進数)。

  • I/Oの長さ

    I/Oの長さ(バイト単位、10進数)。

  • 影響を受けるファイル・システム・オブジェクト

    関連するファイル・システム・オブジェクトがノードローカルか、クラスタ全体でアクセスされるリソースのいずれであるかの表示。たとえば:

    Node or Cluster

  • 影響を受けるオブジェクトのタイプ

    関連するファイル・システム・オブジェクトの種類を示す文字列(可能な場合)。たとえば:

    UnknownUser Dir.User SymlinkUser FileSys.DirSys.FileまたはMetaData

    • Sys.Dir.

      表示可能なネームスペース内でOracle ACFSによって管理されるディレクトリ

    • sys.File

      表示可能なネームスペース内でOracle ACFSによって管理されるファイル

    • MetaData

      表示可能なネームスペース外でOracle ACFSに管理されるリソース

  • 操作のコンテキスト

    I/Oを発行しているコード・コンテキストを示すよりレベルの高いビュー。これはOracleサポート・サービスで使用されます。たとえば:

    UnknownReadWriteGrowShrinkCommitまたはRecovery

  • スナップショット

    判断できる場合は、関連するデータがスナップショットのものであったかどうかの表示。たとえば:

    YesNoまたは?

  • ファイル・システムのオブジェクト・タイプ

    ファイル・システム・オブジェクトのタイプの内部識別子。Oracleサポート・サービスで使用。

  • コードの場所

    このメッセージを発行している場所のコードの内部識別子。Oracleサポート・サービスで使用。

次に、Linux環境での/var/log/messagesの例を示します。

[Oracle ACFS]: I/O failure (0xc0000001) with device /dev/sdb during a metadata synch write .
Fenum Unknown. Starting offset: 67113984. Length of data transfer: 2560 bytes.
Impact: Node   Object: MetaData   Oper.Context: Write
Snapshot?: ?  AcfsObjectID: 8  . Internal ACFS Location: 5 . 

Oracle ACFSスナップショットベースのレプリケーションの構成

Oracle ACFSスナップショットベースのレプリケーションの要件については、この項で説明しています。

この項では、リリース12.2以上で使用可能なOracle ACFSスナップショットベースのレプリケーションを構成する方法について説明します。リリース12.2より前のOracle ACFSレプリケーションのインストールと同様に、スナップショットベースのレプリケーションの全体的な機能上の目標は、プライマリ・クラスタの更新がスタンバイ・クラスタにレプリケートされるようにすることです。ただし、スナップショットベースのレプリケーション・テクノロジは、プライマリ・ストレージ・ロケーションのスナップショットを使用し、連続するスナップショットの差分を、標準のsshコマンドを使用してスタンバイ・ストレージ・ロケーションに転送します。リリース12.2より前のOracle ACFSレプリケーション機能では、プライマリ・クラスタとスタンバイ・クラスタ間の接続性を確保するために、Network Foundation Technologies (NFT)を中心としてOracleネットワーキング・テクノロジを基に、絶えず変更をレプリケートしました。

Oracle ACFSレプリケーションの設計および実装におけるこの変更により、レプリケーションの構成および使用方法に若干の相違が発生しています。たとえば、sshを使用するには、レプリケーションを実行するプライマリ・ノードとスタンバイ・ノードでホスト・キーおよびユーザー・キーを適切に設定する必要があります。

Oracle ACFSレプリケーションには、ロール・リバーサルおよびフェイルオーバー機能が用意されています。この機能は、プライマリ・クラスタとスタンバイ・クラスタの両方が必要に応じて相互に通信できるようにすることで構成できます。ロール・リバーサルでは、スタンバイがプライマリのロールを引き受け、プライマリがスタンバイになります。フェイルオーバーには、ロール・リバーサルまたは新しいプライマリが使用する新しいスタンバイの確立が含まれる場合があります。

この項では、次の項目について説明します。

関連項目:

Oracle ACFSレプリケーション・ユーザーの選択

レプリケーションの実行元のユーザーID (repluser)は、慎重に管理する必要があります。これは、レプリケートするファイルを探すためにプライマリをスキャンするユーザーであり、レプリケートされたファイルをスタンバイ上で作成、更新または削除するユーザーとなります。sshを使用している場合、sshは、レプリケーションに関与するスタンバイ・ノードでこのユーザーとしてログインします。

repluserとして選択したユーザーには、Oracle ASM管理権限が必要です。Oracleソフトウェアの初回インストール時にOracleインストーラに指定したユーザーは、通常は、必要なグループに属しているため、このユーザーをレプリケーション・ユーザーとして選択すると便利です。ここでの説明では、レプリケーション・ユーザーをrepluserとして識別しますが、選択した実際のユーザー名でrepluserを置き換えます。Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

ノート:

プライマリ・クラスタとスタンバイ・クラスタの両方で、repluserに同じユーザーとグループのアイデンティティを指定する必要があります。また、ユーザー名と数値のuids、およびグループ名と数値のgidsとの間のマッピングは、プライマリ・クラスタとスタンバイ・クラスタの両方で同一である必要があります。 レプリケーションでの数値の転送はプライマリからスタンバイに対してのみ行われるため、両方のクラスタで数値が同じように使用されるようにするためにはこれが必須です。

Oracle ACFSレプリケーションでの転送方式の選択

Oracle Grid Infrastructureソフトウェアのバージョン23c以降では、プライマリ・レプリケーション・サイトとスタンバイ・レプリケーション・サイトの間の通信用に新しい転送方式が導入されています。新しい転送方式は、セキュア・シェル(ssh)ではなくSecure Sockets Layer (SSL)に基づいています。

OL8/X64プラットフォームでは、ユーザーが、SSLベースのレプリケーションを使用するか、引き続きsshベースのレプリケーションを使用するかを選択できるようになりました。sshの使用は、引き続き十分にサポートされています。OL8/X64以外のプラットフォームでは、提供される転送方式はsshのみです。

使用する転送方式は、通常は、レプリケーションの開始時に選択します。ただし、既存のレプリケーション関係をsshベースからSSLベースに更新するためのサポートが提供されています。

SSLベースのレプリケーション

SSLベースのレプリケーションでは、新しい認証メカニズムおよびセキュアな転送メカニズムが提供されます。sshを使用したネットワークは、Posixソケットに置き換わります。sshのホスト・キーおよびユーザー・キーを使用した認証は、OpenSSLおよびOracleウォレットに置き換わります。暗号化およびメッセージ認証(HMAC)コードは、Intel IPPS暗号化プリミティブに置き換わります(それらを使用可能なプラットフォームの場合)。

ユーザーの観点から述べると、SSLベースのレプリケーションを使用する最大の利点は、簡略化された構成です。SSLベースのレプリケーションは、レプリケーションに使用するマシンごとにホスト・キーとユーザー・キーを設定し配布する必要はなく、かわりに、プライマリ・サイトとスタンバイ・サイトの間で共有される単一の資格証明セットを確立することによって実現されます。これは、コマンドライン・オプションを使用して簡単に実行でき、必要な場合は、手動でサイト資格証明をやり取りすることでも実現できます。

SSLベースのレプリケーションは、ほとんどのコンテキストにおいて、sshベースのレプリケーションよりもパフォーマンスが高くなります。

SSHベースのレプリケーション

23cでのssh転送は、以前のすべてのリリースのスナップショットベース・レプリケーションで提供されていたのと同じ転送方式です。23cでの機能拡張としてはキー設定アシスタントacfsreplsshがあり、これは、レプリケーションに使用するマシンのホスト・キーおよびユーザー・キーの構成を容易にするために使用できます。acfsreplsshの使用をお薦めしますが、必須ではありません。

SSLベースのOracle ACFSレプリケーションの構成

SSLベースのOracle ACFSレプリケーションの構成

このトピックでは、リリース23c以上で、OL8/X64プラットフォーム上でSSLベースのレプリケーションを構成する方法を説明します。必要な構成手順は、次に説明するように、2つのレプリケーション・サイトで1つの資格証明のセットが共有されるようにすることのみです。

レプリケーションの開始

SSLベースのレプリケーションの使用を指定するには、両方のacfsutil repl initコマンドにオプション-T sslを付けます。付随するオプション-T sshにより、sshベースのレプリケーションの使用を指定します。sshの使用はデフォルトであるため、この後者のオプションは通常は必要ありません。

資格証明の定義および配布

SSLベースのレプリケーションを使用するには、ユーザーが、プライマリ・レプリケーション・サイトとスタンバイ・レプリケーション・サイトの間で共有される資格証明を配布する必要があります。これは、sshベースのレプリケーションを構成する際にホスト・キーとユーザー・キーを設定することに似ています(ただし、はるかに簡単です)。

それらの資格証明は、X.509証明書と公開/秘密キー・ペアからなります。資格証明は、2つのレプリケーション・サイトうちの一方かで確立された後、もう一方のサイトにセキュアにコピーされます。したがって、SSLベースのレプリケーションでは認証に共有シークレット・モデルが使用され、レプリケーション関係の両側(つまり、プライマリ・サイトとスタンバイ・サイト)で、同じ資格証明が使用されます。資格証明はサイト全体が対象になるため、特定のサイト上のアクティブなすべてのレプリケーション・インスタンスで、同じ資格証明が使用されます。資格証明は、ローカル・サイトに資格証明がすでに存在する場合を除き、次のいずれかのコマンドで作成します:

  • acfsutil repl update -o sslCreateCredentialsを使用した明示的な作成
  • acfsutil repl init standby -T sslによる暗黙的な作成
  • cfsutil repl init primary -T sslによる暗黙的な作成
  • acfsutil repl update -T sslの使用による、sshベースのレプリケーションをSSLベースに更新する一環での暗黙的作成
資格証明の作成は、次のacfsutil repl init standbyコマンドの例で示すように、スタンバイ・サイトで行うことをお薦めします:
$ acfsutil repl init standby -T ssl -u repluser /standbyFS
このコマンドでは、資格証明がスタンバイ・サイトに存在しない場合は資格証明が確立され、すでに存在する場合はその資格証明が再使用されます。資格証明が存在する場合にそれらをプライマリ・サイトに配布する方法としては次の3つがあります:
  • 最大限にセキュア - サイトAでエクスポートし、サイトBにセキュアにコピーし、サイトBでインポートする
  • 非常にセキュア - コマンドラインで手動で資格証明の同期を開始する
  • 非常にセキュア - 認証失敗時に自動で資格証明を同期する

エクスポート/インポートは、資格証明を配布するための最もセキュアな方法です。これがデフォルトです。管理者が資格証明をローカル・サイト上のエクスポート・ファイルにエクスポートし、選択したセキュアな方法("スニーカ・ネット"、scpなど)でそのファイルをリモート・サイトにコピーしてから、リモート・サイトでその資格証明をインポート(インストール)します。

手動での資格証明の同期は非常にセキュアです。資格証明の転送はOpenSSLによって暗号化されますが、認証はされません。管理者が両方のレプリケーション・サイトで次のコマンドを使用して、両サイトで資格証明の同期を有効にします:
$ acfsutil repl update -o sslPermitCredentialSync
その後、プライマリ・サイトで次のコマンドを使用します:
$ acfsutil repl update -o sslSyncCredentials -s standby_address
これにより、スタンバイ・サイトからそれらの資格証明をフェッチし、プライマリ・サイトでそれらをインポートします。

なお、前述のように資格証明の同期が有効になっている場合は、レプリケーションにおいてレプリケーション操作中に認証エラーが発生すると、自動資格証明同期が発生する可能性があります。これは、基本的には手動資格証明同期と同じですが、自動的かつシームレスに実行されます。

デフォルトでは、資格証明の同期は無効になっており、管理者が両方のサイトでそれを明示的に有効にした場合のみ発生します。資格証明の同期が許可されており、資格証明の同期が発生した場合は、同期が正常に完了すると資格証明の同期が自動的に無効になります。これは、"出入り自由"になり意図しない同期が起こる可能性を防ぐためです。

例: インポート/エクスポートの使用による最初の資格証明の配布

この例では、管理者が資格証明の転送に最大限にセキュアな方法(この場合は"スニーカ・ネット")を選び、リモート・サイトでそれらを手動でインストールします。boston-cluがスタンバイ・クラスタ、nashua-cluがプライマリ・クラスタであると仮定します。

クラスタboston-cluで、管理者が、次のコマンドを使用してレプリケーションを開始します:
$ acfsutil repl init standby -T ssl -u repluser /standbyFS 
$ acfsutil repl update -o sslExportCredentials=/mySecureThumbDrive/mycredentials
その後、管理者が自分の手で、セキュアなサム・ドライブをBostonからNashuaに移動します。クラスタnashua-cluで、管理者が、次のようなコマンドを使用してレプリケーションを開始します:
$ acfsutil repl update -o sslImportCredentials=/mySecureThumbDrive/mycredentials 
$ acfsutil repl init primary -T ssl -i 10m -s repluser@boston-clu -m /standbyFS /primaryFS
例: 手動による最初の資格証明の配布

この例では、手動で明示的に要求することで、レプリケーション初期化時にスタンバイ・サイト上の資格証明をプライマリ・サイトにコピーしインストールします。資格証明の転送が正常に完了すると、資格証明の同期が自動的に無効になり、後続のすべてのやり取りが、インストールした資格証明を使用して認証されるようになります。

クラスタboston-cluで、管理者が、次のようなコマンドを使用して資格証明の配布を許可します:
$ acfsutil repl update -o sslPermitCredentialSync
クラスタnashua-cluで、管理者が、次のようなコマンドを使用して資格証明を同期させます:
$ acfsutil repl update -o sslPermitCredentialSync 
$ acfsutil repl update -o sslSyncCredentials -s boston-clu
このシナリオでは、nashua-cluでの2番目のacfsutil repl updateコマンドにより、boston-cluから資格証明が同期されます。資格証明が同期されると、資格証明の同期が自動的に無効になります。これ以降のすべてのacfsutil repl initコマンドでは、各サイトにインストールされた、それらの資格証明が使用されます。
したがって、-T sslの追加により転送方式を指定して、通常どおりにレプリケーションを初期化できます。それは、まずスタンバイ上で初期化されます:
$ acfsutil repl init standby -T ssl -u repluser /standbyFS
次にプライマリ上で行われます:
$ acfsutil repl init primary -T ssl -i 10m -s repluser@boston-clu -m /standbyFS /primaryFS
例: 自動での最初の資格証明の配布

この例では、acfsutil repl initコマンドによって暗黙的に、レプリケーション初期化時にスタンバイ・サイト上の資格証明をプライマリ・サイトにコピーしインストールします。資格証明の転送が正常に完了すると、資格証明の同期が自動的に無効になり、後続のすべてのやり取りが、インストールした資格証明を使用して認証されるようになります。

クラスタboston-cluで、管理者が、次のようなコマンドを使用してレプリケーションを開始します:
 $ acfsutil repl init standby -T ssl -o sslPermitCredentialSync -u repluser /standbyFS
クラスタnashua-cluで、管理者が、次のようなコマンドを使用してレプリケーションを開始します:
$ acfsutil repl init primary -T ssl -o sslPermitCredentialSync -i 10m -s repluser@boston-clu -m /standbyFS /primaryFS
このシナリオでは、acfsutil repl init primaryコマンドにより、認証エラーが内部で検出され、ユーザーによる操作を必要とせずに自動的に資格証明がboston-cluサイトと同期されます。資格証明が同期されると、資格証明の同期が自動的に無効になります。

なお、この例では、必要な場合はacfsutil repl initコマンドラインに-o sslPermitCredentialSyncオプションを指定できることも示しています。これは、別個のacfsutil repl updateコマンドを使用してそのオプションを指定するのと同じです。

資格証明の更新

レプリケーションで使用されている資格証明が更新された場合は、前述のどの方法でも、更新された資格証明をリモート・サイトに配布できます。

例: インポート/エクスポートの使用による資格証明の更新
更新された資格証明は、次のように、資格証明をエクスポートしてからインポートすることで配布できます。更新された資格証明があるレプリケーション・サイトで、管理者が次のようなコマンドを発行します:
$ acfsutil repl update -o sslExportCredentials=/mySecureThumbDrive/mycredentials
これにより、ファイル内の資格証明を取得します。その後、リモート・サイトで、次のようなコマンドでそのファイルを使用します。
$ acfsutil repl update -o sslImportCredentials=/mySecureThumbDrive/mycredentials
これにより、その資格証明をインポートします。
例: 手動による資格証明の更新
資格証明の更新は、次のように、手動で実行できます。両方のレプリケーション・サイトで、管理者が次のコマンドを発行します:
$ acfsutil repl update -o sslPermitCredentialSync
その後、ローカル・サイトで次のコマンドを使用します:
$ acfsutil repl update -o sslSyncCredentials -s remote-address
これにより、リモート・サイトからそれらの資格証明をフェッチし、ローカル・サイトでそれらをインポートします。この操作が完了すると、資格証明の同期が自動的に無効になります。
例: 自動での資格証明の更新
資格証明の更新は、次のように、自動で実行できます。両方のレプリケーション・サイトで、管理者が次のコマンドを発行します:
$ acfsutil repl update -o sslPermitCredentialSync
その後は、ローカル・サイトで、レプリケーションで更新が検出される(つまり、認証エラーの受信)まで待つだけです。検出された時点で、資格証明が同期されます。この操作が完了すると、それ以降の同期は無効になります。
SSHベースのレプリケーションからの更新

レプリケーションの既存のsshベース・インスタンスを、その転送方式としてSSLを使用するように更新できます。SSLを使用するように更新した後は、レプリケーションのそのインスタンスを、sshを使用するように戻すことができません。この更新は、acfsutil repl updateコマンドを使用して、プライマリ・クラスタとスタンバイ・クラスタの両方で実行します。

まずスタンバイ・クラスタ、次にプライマリ・クラスタを更新する必要があります。SSLベースのレプリケーションを指定しacfsutil repl initを使用してレプリケーションを初期化するときと同じように、インポート/エクスポートを使用して、手動または自動で資格証明を作成し配布できます。

どの場合でも、資格証明が同期されると、かわりにSSLがそのレプリケーション・インスタンスの転送方式となります。その時点までは、転送方式としてsshが使用されたままです。

例: 資格証明のインポート/エクスポートの使用によるSSLへの更新
まず、スタンバイ・クラスタboston-cluで、ユーザーが次のコマンドを使用して、資格証明を作成し、SSLベースのレプリケーションに更新してから、先ほど作成した資格証明をエクスポートします:
$ acfsutil repl update -T ssl /standbyFS 
$ acfsutil repl update -o sslExportCredentials=/mySecureThumbDrive/mycredentials
次に、プライマリ・クラスタnashua-cluで、ユーザーがそれらの資格証明をインポートし、SSLベースのレプリケーションに更新します:
$ acfsutil repl update -o sslImportCredentials=/mySecureThumbDrive/mycredentials 
$ acfsutil repl update -T ssl /primaryFS
例: 手動資格証明同期の使用によるSSLへの更新
ここでは、手動での配布の例を示します。これは、プライマリ・サイトとスタンバイ・サイトの両方で資格証明の同期を許可することによって実現されます。まず、スタンバイ・クラスタboston-cluで、ユーザーが次のコマンドを使用して、資格証明を作成し、SSLベースのレプリケーションに更新します:
$ acfsutil repl update -o sslPermitCredentialSync 
$ acfsutil repl update -T ssl /standbyFS
次に、プライマリ・クラスタnashua-cluで、ユーザーがそれらの資格証明の同期を有効にし、SSLベースのレプリケーションに更新し、最後に、資格証明の同期を実行します:
$ acfsutil repl update -o sslPermitCredentialSync 
$ acfsutil repl update -o sslSyncCredentials -s boston-clu 
$ acfsutil repl update -T ssl /primaryFS
例: 自動資格証明同期の使用によるSSLへの更新
まず、スタンバイ・クラスタboston-cluで、ユーザーが次のコマンドを使用して、資格証明を作成し、SSLベースのレプリケーションに更新します:
$ acfsutil repl update -o sslPermitCredentialSync 
$ acfsutil repl update -T ssl /standbyFS
次に、プライマリ・クラスタnashua-cluで、ユーザーがそれらの資格証明の同期を有効にし、SSLベースのレプリケーションに更新します:
$ acfsutil repl update -o sslPermitCredentialSync 
$ acfsutil repl update -T ssl /primaryFS
この場合は、レプリケーションで、資格証明を同期する必要性が検出され、自動的にその操作が実行されます。

Oracle ACFSレプリケーションで使用するためのsshの構成

このトピックでは、リリース12.2以上で使用可能なOracle ACFSスナップショットベースのレプリケーションを使用するためにsshを構成する方法について説明します。構成は、次の2つの方法のどちらかで実行できます:

  • キー設定アシスタントacfsreplsshを使用すると、必要なユーザー・キーおよびホスト・キーを簡単に設定できます
  • または、必要なキーを手動で構成することもできます
転送方式としてsshを使用する場合にレプリケーションの全機能をサポートするには、クラスタ間のどちらの方向(プライマリ・クラスタからスタンバイ・クラスタ、およびスタンバイからプライマリ)でもsshを使用可能である必要があります。これは、sshのパスワード不要操作を両方向で有効にする必要があるということです。つまり、sshで手動操作なしでローカルからリモート・クラスタに接続できるように、ホスト・キーとユーザー・キーを定義する必要があります。レプリケーションを使用する前に構成する必要があるsshキーを次に示します:
  • ローカル・クラスタの各ノード(プライマリとスタンバイの両方)で定義されている、repluser用公開キーが、リモート・クラスタ(スタンバイとプライマリの両方)の各ノード上のrepluserauthorized_keys2ファイル内に存在する必要があります。
  • 厳密なホスト・キー・チェックを無効にしてレプリケーションが構成されている場合を除き、リモート・クラスタの各ノードのホスト・キーが、ローカル・クラスタの各ノード上のknown_hostsファイル内に存在する必要があります。

キー設定アシスタントの使用によるsshの構成

sshキー設定アシスタントacfsreplsshを使用すると、Oracle ACFSスナップショットベース・レプリケーションの転送方式としてsshを使用する場合に必要な、ホスト・キーとユーザー・キーを構成、検証または削除できます。このトピックでは、acfsreplsshを使用して一方向(プライマリからスタンバイ)のレプリケーション用にsshを構成する方法について説明します。sshの構成を完成させるには、これらの手順を、2回目はプライマリとスタンバイのロールを逆にして実行する必要があります。

簡潔に示すために、ローカル・クラスタとリモート・クラスタの観点から説明します。このコマンドを、1回目はプライマリをローカル・クラスタとして使用して実行し、2回目はスタンバイをローカル・クラスタとして使用して実行します。

コマンドの概要

acfsreplsshのコマンドライン・インタフェースは次のようになります:
acfsreplssh{ configure | verify | remove } 
    [-v] [-m] 
    [-p remote_password] 
    [-V remote_vip] 
    [-o sshStrictKey=ynvalue] 
    { -c remote_cluster | remote_host1 [remote_hostn...] }
ここでのコマンドライン・オプションには次の意味があります:

-c remote_cluster

ネットワーク・エンドポイントの名前としてremote_clusterを使用してリモート・クラスタに接続し、次に、リモート・クラスタでacfsutil cluster infoコマンドを実行してクラスタ・メンバーを特定します。メンバーとして示された各ホスト名が、その後、コマンドラインで直接remote_hostとして指定されたかのように処理されます。

-m

"モックアップ・モード"で実行します。通常動作の場合にそのコマンドで実行される操作が表示されます。ただし、どの操作も実行はされません。-vとともに使用すると、発生する内容をより詳しく確認できます。

-o sshStrictKey=ynvalue ホスト・キーがすでに存在している必要があるかどうかを指定します。ynvalueは、"y"で始まる場合は"yes"を表し、"n"で始まる値は"no"を表します。configureコマンドの場合、"yes"はホスト・キーがすでに存在している(このコマンドではそれらを構成しない)ことを意味し、"no"は、リモート・ノードによって提示されたホスト・キーをこのコマンドで受け入れる(および構成する)ことを意味します。verifyコマンドの場合は、このオプションは無効であり、すべてのリモート・ノードにホスト・キーがすでに存在している必要があります。(verifyコマンドではキーの追加や変更は実行されません。)このオプションのデフォルト値は"no"です(つまり、configureコマンドでは、提示されたすべてのホスト・キーが構成されます)。ホスト・キー・チェックの詳細は、acfsutil repl initコマンドおよびacfsutil repl updateコマンドの-o sshStrictKeyオプションを参照してください。

-p remote_password

リモート・クラスタでrepluserとしてログインする際に使用するパスワードとして、remote_passwordを指定します。なお、この方法によるコマンドラインでのパスワード指定は、セキュアではないため、セキュリティに関する影響がない場合のみ実行するようにしてください。-pを指定しなかった場合は、acfsreplsshによってリモート・パスワードの入力が求められます(呼び出しごとに1回のみ)。

-v

"冗長モード"で実行します。このコマンドの実行の詳細が表示されます。

-V remote_vip

コマンドラインで指定されたremote_hostsのセットからなる、リモート・クラスタの既存のVIPとして、remote_vipを指定します。これは、remote_vipが、コマンドラインで指定されたremote_hostごとに、ローカルのknown_hostsファイル内の行に追加されるということです。

ノート:

下のすべての例では、-pが指定されていません。つまり、それらでは、コマンドが実行されるたびに、acfsreplsshによってリモート・クラスタのパスワードの入力が求められることになります。

アシスタントは、単一リモート・クラスタのホスト・キーおよびユーザー・キーに対して機能するには、ローカル・クラスタの各ノードで実行する必要があります。これはrepluserとして起動する必要があります。アシスタントにより、確認のために起動元ユーザーのIDが出力され、次に、そのユーザー用のキーが設定されて、アシスタントが実行されているノードと、指定されたリモート・クラスタとの間のレプリケーションが可能になります。

リモート・クラスタ内のホストを特定するには、次のどちらかを実行します:
  • -c remote_clusterを指定してリモート・クラスタ内のネットワーク・エンドポイントを指定します。これは、クラスタ・メンバーを取得するために問い合せられることになります。または、
  • コマンドラインでremote_hostとしてリモート・クラスタ内の各ホストを指定します。

各ローカル・ホストでのsshの構成

acfsreplssh configureコマンドは、レプリケーションに必要になるsshキーを構成するために使用します。このコマンドは、レプリケーションを初めて設定する際に呼び出すか、後のどこかの時点で呼び出すことができます。このコマンドにより、レプリケーションに必要になるすべてのキーが、関係するクラスタに現在も存在するようにします。acfsreplssh configureの各実行では(複数の連続した実行の場合も同様)、必要な場合のみユーザー・キーまたはホスト・キーが追加され、既存のキーは保持されます。

各ホストで、acfsreplsshにより、repluserの現在のキー関連データが、変更される前に保存されます(すでにこれが完了している場合を除く)。つまり、ディレクトリ~repluser/.sshの既存のコピーは、接尾辞.acfsreplssh.backupが付いた名前に変更されます(この接尾辞が付いたバックアップ・ディレクトリがすでに存在する場合を除く)。作成されたディレクトリは、権限0400 (所有者のみが読取り可能)を付与され、repluserが所有します。

次に例を示します。たとえば、n1からn4までの4つのノードがあるプライマリ・クラスタbosc26があるとします。また、n1n2という2つのノードがあるスタンバイ・クラスタchic26があります。クラスタごとにbosc26vipおよびchic26vipというSCAN VIPを定義してあり、各クラスタのSCAN VIPをレプリケーションのネットワーク・エンドポイントとして使用する予定です。コマンドで各リモート・ホスト名を指定する必要がなくなるように、-cを使用し、その値としてそれらのVIP名を指定します。

各クラスタで定義されているVIPを使用して、レプリケーションに必要になる一連のすべてのキーを構成するには、次のようにacfsreplsshを実行します。

まず、bosc26の各ノードで次のコマンドを実行します:
$ acfsreplssh configure -V chic26vip -c chic26vip
次に、chic26の各ノードで次のコマンドを実行します:
$ acfsreplssh configure -V bosc26vip -c bosc26vip
前述の最初のコマンドでは、このコマンドが実行されるbosc26内のホストで現行ユーザー(repluserであると仮定)の公開キーが構成され(キーがまだ存在しない場合)、chic26内の各ホスト上の現行ユーザーのauthorized_keys2ファイルにそのキーが追加されます。その後、bosc26ホスト上の現行ユーザーのknown_hostsファイルに各chic26ホストのホスト・キーが追加されます(-o sshStrictKey=yesを指定した場合を除く)。このオプションを指定する場合は、必要なすべてのホスト・キーがbosc26ホストにすでに存在している必要があります。

これらのコマンドでは、それぞれchic26vipまたはbosc26vipを使用してacfsutil cluster infoが実行されて、リモート・クラスタのメンバーが決定されます。

2番目のコマンドでは、同じ操作が逆方向で実行されます。つまり、このコマンドでは、このコマンドが実行されるchic26内のホストで現行ユーザーの公開キーが構成され(キーがまだ存在しない場合)、bosc26内の各ホスト上の現行ユーザーのauthorized_keys2ファイルにそのキーが追加されます。その後、chic26ホスト上の現行ユーザーのknown_hostsファイルに各bosc26ホストのホスト・キーが追加されます(-o sshStrictKey=yesを指定した場合を除く)。このオプションを指定する場合は、必要なすべてのホスト・キーがchic26ホストにすでに存在している必要があります。

別の例として、前の例と同一の2つのクラスタを使用するが、レプリケーションに使用するVIPが定義されていない場合の対応方法を示します。ここでは、-cを使用し、その値としてリモート・ノード名の1つを指定します。まず、bosc26の各ノードで次のコマンドを実行します:
# acfsreplssh configure -c chic26n1
次に、chic26の各ノードで次のコマンドを実行します:
# acfsreplssh configure -c bosc26n1
これらのコマンドでは、それぞれchic26n1またはbosc26n1acfsutil cluster infoが実行されて、リモート・クラスタのメンバーが決定されます。

各ローカル・ホストでのssh構成の検証

acfsreplssh verifyコマンドを使用すると、既存の一連のキーを検証できます。このコマンドは、キーの追加や変更は実行せず、既存のキーの使用を試みるだけです。レプリケーションの特定のインスタンスをサポートするために存在しているキーを検証するには、これらのキーを構成する際に使用したのと同じ形式のコマンドラインを使用し、それにverifyキーワードを指定します。

各クラスタで定義されているVIPを使用して、レプリケーションに必要になる一連のすべてのキーを検証するには、次のようにacfsreplsshを実行します。

まず、プライマリ・クラスタからスタンバイ・クラスタへのレプリケーションに必要なキーを検証するには、bosc26の各ノードで次のコマンドを実行します:
# acfsreplssh verify -V chic26vip -c chic26vip
次に、将来実行される可能性がある現行のスタンバイから現行のプライマリへのレプリケーションに必要なキーを検証するには、chic26の各ノードで次のコマンドを実行します:
# acfsreplssh verify -V bosc26vip -c bosc26vip
または、VIPを使用せずに、レプリケーションに必要な一連のすべてのキーを検証するには、次のようにacfsreplsshを実行します。まず、プライマリ・クラスタからスタンバイ・クラスタへのレプリケーションに必要なキーを検証するには、bosc26の各ノードで次のコマンドを実行します:
# acfsreplssh verify -c chic26n1
次に、将来実行される可能性がある現行のスタンバイから現行のプライマリへのレプリケーションに必要なキーを検証するには、chic26の各ノードで次のコマンドを実行します:
# acfsreplssh verify -c bosc26n1

各ローカル・ホストでのssh構成情報の削除

たとえばユーザーがacfsutil repl updateコマンドでrepluserの値を更新した場合には、acfsreplssh removeコマンドを使用すると既存の一連のキーを削除できます。acfsreplssh removeコマンドは、キーを削除する各ローカル・ホストで実行する必要があります。このコマンドでは、指定したリモート・クラスタに関連付けられているキーも削除されます。以前のrepluserをサポートするために存在している、特定のローカル・ホスト上のキーを削除するには、そのホスト上のそれらのキーを構成する際に使用したのと同じ形式のコマンドラインを使用し、それに、configureのかわりにremoveキーワードを指定します。

たとえば、前述の、VIPの使用を伴うレプリケーションの例に戻る場合は、次のようにacfsreplsshを実行することで、各クラスタで定義されているVIPを使用して、以前に構成した一連のキーを削除します。

まず、bosc26の各ノードで次のコマンドを実行します:
$ acfsreplssh remove -V chic26vip -c chic26vip
次に、chic26の各ノードで次のコマンドを実行します:
$ acfsreplssh remove -V bosc26vip -c bosc26vip

sshの手動構成

このトピック内の手順では、一方向(プライマリからスタンバイ)のレプリケーション用にsshを構成するために必要な、手動での手順を説明します。sshを完全に構成するには、2回目にプライマリとスタンバイのロールを逆転して手順を実行する必要があります。1回目にステップを実行するときは、プライマリ・クラスタとスタンバイ・クラスタ用に記述されているステップを実行します。2回目には、プライマリ・ロールとスタンバイ・ロールを入れ替えます。プライマリ・クラスタで必要と示されているステップをスタンバイ・クラスタで実行し、スタンバイ・クラスタで必要と示されているステップをプライマリ・クラスタで実行します。2回実行する必要がある手順は、以下で説明しています。

必要なすべての手順を完了したら、「ssh関連のキー構成の検証」の手順を使用して、両方向でsshが正しく構成されていることを確認できます。

Oracle ACFSレプリケーション用のキーの配布

Oracle ACFSレプリケーション用のキーの配布プロセスには、プライマリ・クラスタからの公開キーの取得、スタンバイ・クラスタ用のホスト・キーの取得、ssh関連ファイル用に権限が正しく構成されていることの確認、必要に応じてsshdの構成、そして最後にssh構成の検証が含まれます。

ノート:

ホスト・キーを作成するときは、必ず完全修飾ドメインホスト名とローカル・ホスト名の両方のキーを作成してください。

プライマリ・クラスタからのrepluser用の公開キーの取得

プライマリ・クラスタの各ノードに定義されているrepluser用の公開キーを、スタンバイ・クラスタの各ノードのrepluserが認識している必要があります。

このキーを認識させるには、各スタンバイ・ノードに~repluser/.sshディレクトリが存在する必要があります。このディレクトリが存在しない場合は、repluser専用のアクセス権で作成します。.sshディレクトリに対するlsコマンドの出力が次のようになっていることを確認します。

repluser@standby $ ls -ld ~/.ssh
drwx------ 2 repluser dba 4096 Jan 27 17:01 .ssh

repluserの公開キー・ファイルが特定のプライマリ・ノードに存在する場合は、レプリケーションが実行されるスタンバイの各ノードにrepluserとしてログインすることを認可された一連のキーに、その内容を追加します。各スタンバイ・ノードで、必要に応じて~repluser/.ssh/authorized_keys2ファイルを作成し、その最後にキーを追加します。

公開キー・ファイルが存在しない場合は、repluserとして次のコマンドを実行してプライマリで公開キーと秘密キーのペアを生成します。

$ ssh-keygen -t rsa

コマンドから発行される各プロンプトに応えて、[Enter]キーを押します。結果として生成された.pubファイルを各スタンバイ・ノードにコピーします。

repluser用の同じ公開/秘密キー・ペアをプライマリ・クラスタ内のすべてのノードで共有することも、プライマリ・ノードごとに異なるキー・ペアを設定することもできます。プライマリ・クラスタ内のすべてのノードで同じ公開キーがrepluserに対して有効な場合、スタンバイ・クラスタの各ノードで、~repluser/.ssh/authorized_keys2ファイルにそのキーのみを追加する必要があります。各プライマリ・ノードに独自のrepluser用の公開キーがある場合は、すべての公開キーをそのファイルに追加する必要があります。いずれの場合も、スタンバイの特定のノードで更新したauthorized_keys2ファイルをクラスタの他のノードにコピーすることで、作業を最小化できます。

スタンバイ・クラスタ用のホスト・キーの取得

レプリケーションが実行される各スタンバイ・ノード用のホスト・キーを、レプリケーションが実行される各プライマリ・ノードで認識させる必要があります。適切なキーを生成する方法の1つとして、各プライマリ・ノードから各スタンバイ・ノードに対してrepluserとして手動でsshを実行します。適切なホスト・キーがまだ認識されていない場合は警告が表示され、sshを有効にしてキーを追加できます。

次に、ホスト・キーを取得する例を示します。

[repluser@primary data]$ ssh repluser@standby date
The authenticity of host 'standby (10.137.13.85)' can't be established.
RSA key fingerprint is 1b:a9:c6:68:47:b4:ec:7c:df:3a:f0:2a:6f:cf:a7:0a.
Are you sure you want to continue connecting (yes/no)?

yesと応答すると、sshの設定が完了します。ホスト・スタンバイ用のホスト・キーが、ホスト・プライマリrepluserユーザー用のknown_hostsファイル(~repluser/.ssh/known_hosts)に格納されます。

スタンバイ・ノードに対するホスト・キーの設定が特定のプライマリ・ノードで完了したら、仮想IPアドレス(VIP)を使用してスタンバイ・クラスタと通信する場合は、追加のステップを実行する必要があります。VIP名またはアドレスを、スタンバイ・クラスタ内のホストを参照するknown_hostsファイルの各行の先頭に追加する必要があります。たとえば、名前がstandby12_vipのVIPを使用し、スタンバイを参照する次の2行がknown_hostsファイルに含まれる場合、

standby1,10.242.20.22 ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQC3pM2YTd4UUiEWEoCKDGgaTgsmPkQToDrdtU+JtVIq/96muivU
BaJUK83aqzeNIQkh+hUULsUdgKoKT5bxrWYqhY6AlTEqNgBHjBrJt9C73BbQd9y48jsc2G+WQWyuI/
+s1Q+hIJdBNMxvMBQAfisPWWUcaIx9Y/JzlPgF6lRP2cbfqAzixDot9fqRrAKL3G6A75A/6TbwmEW07d1zqOv
l7ZGyeDYf5zQ72F/V0P9UgMEt/5DmcYTn3kTVGjOTbnRBe4A4lY4rVw5c+nZBDFre66XtORfQgwQB5ztW/Pi
08GYbcIszKoZx2HST9AZxYIAgcrnNYG2Ae0K6QLxxxScP
standby2,10.242.20.23 ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDIszcjzNtKN03SY8Kl846skFTVP1HF/ykswbmkctEjL6KTWTW+NR
U4MGbvkBqqdXxuPCR7aoGO2U3PEOg1UVf3DWUoux8IRvqKU+dJcdTibMFkDAIhTnzb14gZ/lRTjn+GYsuP5
Qz2vgL/U0ki887mZCRjWVL1b5FNH8sXBUV2QcD7bjF98VXF6n4gd5UiIC3jv6l2nVTKDwtNHpUTS1dQAi+1D
tr0AieZTsuxXMaDdUZHgKDotjciMB3mCkKm/u3IFoioDqdZE4+vITX9G7DBN4CVPXawp+b5Kg8X9P+08Eehu
tMlBJ5lafy1bxoVlXUDLVIIFBJNKrsqBvxxxpS7

VIPを使用できるようにするには、次のようにこの2行を変更します。

standby12_vip,standby1,10.242.20.22 ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQC3pM2YTd4UUiEWEoCKDGgaTgsmPkQToDrdtU+JtVIq/96muivU
BaJUK83aqzeNIQkh+hUULsUdgKoKT5bxrWYqhY6AlTEqNgBHjBrJt9C73BbQd9y48jsc2G+WQWyuI/
+s1Q+hIJdBNMxvMBQAfisPWWUcaIx9Y/JzlPgF6lRP2cbfqAzixDot9fqRrAKL3G6A75A/6TbwmEW07d1zqOv
l7ZGyeDYf5zQ72F/V0P9UgMEt/5DmcYTn3kTVGjOTbnRBe4A4lY4rVw5c+nZBDFre66XtORfQgwQB5ztW/Pi
08GYbcIszKoZx2HST9AZxYIAgcrnNYG2Ae0K6QLxxxScP
standby12_vip,standby2,10.242.20.23 ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDIszcjzNtKN03SY8Kl846skFTVP1HF/ykswbmkctEjL6KTWTW+NR
U4MGbvkBqqdXxuPCR7aoGO2U3PEOg1UVf3DWUoux8IRvqKU+dJcdTibMFkDAIhTnzb14gZ/lRTjn+GYsuP5
Qz2vgL/U0ki887mZCRjWVL1b5FNH8sXBUV2QcD7bjF98VXF6n4gd5UiIC3jv6l2nVTKDwtNHpUTS1dQAi+1D
tr0AieZTsuxXMaDdUZHgKDotjciMB3mCkKm/u3IFoioDqdZE4+vITX9G7DBN4CVPXawp+b5Kg8X9P+08Eehu
tMlBJ5lafy1bxoVlXUDLVIIFBJNKrsqBvxxxpS7

最終的に、プライマリ・クラスタのこの1つ目のノードで実行されたホスト・キーの構成は、プライマリ・クラスタ内のすべてのノードで実行する必要があります。前述の手順の結果またはそれに相当するものが各プライマリ・ノードに存在する必要があります。この構成を実現するのに必要な手作業を最小化する方法の1つとして、プライマリ・クラスタのノードの1つでknown_hostsファイルを更新した後、更新後のファイルをクラスタの他のノードにコピーします。

ノート:

デフォルトでは、レプリケーションにより、sshによる厳密なホスト・キー・チェックが有効になり、sshの実行時にプライマリ・ノードが目的のスタンバイ・ノードまたはクラスタに必ず接続されます。しかし、プライマリ・クラスタとスタンバイ・クラスタがプライベート・ネットワークで通信する場合など、このチェックが確実に不要である場合は、sshによる厳密なホスト・キー・チェックの使用を無効にできます。厳密なホスト・キー・チェックの無効化の詳細は、acfsutil repl init primaryコマンドの-o sshStrictKey=noオプションを参照してください。厳密なホスト・キー・チェックが無効になっている場合、ホスト・キーの設定は不要です。acfsutil repl initコマンドの詳細は、「acfsutil repl init」を参照してください。

ssh関連ファイルに対する権限に関するノート

設定したキーでsshが機能するには、repluser.sshディレクトリおよびそのディレクトリ内にある一部のファイルについて、各ノードで権限が適切に設定されていることを確認する必要があります。

.sshディレクトリとそのディレクトリ内のキー・ファイルに付与する必要がある権限の詳細は、ssh(1)マニュアル・ページのFILESに関する項など、ssh実装のドキュメントを参照してください。

sshdの構成に関するノート

レプリケーションの使用を開始すると、sshがレプリケーション操作を実行するために頻繁に起動されます。一部のプラットフォームでは、ssh接続が確立されるたびにsyslogまたは同様の機能を使用してメッセージを記録するように、ssh daemon sshdを構成することもできます。これを回避するには、サーバー構成ファイル/etc/ssh/sshd_configを変更してロギングの頻度を低く指定することができます。ロギングを制御するパラメータは、LogLevelです。接続メッセージは、INFOレベルで発行されます。ERRORなど、頻度がより低いLogLevel設定にすると、それらのメッセージは抑制されます。たとえば、次の行をファイルに追加することで、ログ・メッセージを抑制できます。

LogLevel ERROR

ssh関連のキー構成の検証

プライマリ・クラスタとスタンバイ・クラスタの両方でssh用のホスト・キーおよびユーザー・キーを設定したら、acfsutil repl info -c -uコマンドを使用してキーを検証できます。このコマンドは、それぞれのクラスタの各ノードでrepluserとして実行します。ローカル・クラスタが今後のレプリケーションの実行に使用する可能性があるリモート・クラスタのすべてのホスト名またはアドレスを引数として取ります。

VIPを使用せずにリモート・クラスタに接続している場合は、特定のレプリケーション関係について、リモート・ホスト名またはリモート・アドレスを1つのみacfsutil repl init primaryに指定します。ただし、関係に他のリモート・ホスト・アドレスが今後かかわる可能性がある場合は、acfsutil repl info -c -uコマンドの実行時に、全リモート・アドレスを指定します。

VIPを使用してリモート・クラスタに接続している場合は、VIPがアクティブな全リモート・ホストの名前またはホスト固有のアドレスを指定する必要があります。VIP名、またはVIPに関連付けられているアドレスを指定しないでください。レプリケーションでsshを使用してVIPに接続する場合、戻されるホスト・キーは、VIPが現在アクティブなホストに関連付けられているキーです。この場合のsshでは、個々のリモート・ノードのホスト名またはアドレスのみが使用されます。

プライマリ・クラスタの各ノードで実行する検証コマンドの形式は次のとおりです。

$ acfsutil repl info -c -u repluser standby1 [standby2 ...] [snap_shot@]primary-mountpoint

このコマンドで、standbynにはスタンバイ・クラスタのホスト名またはアドレスを指定します。検証コマンドは、ユーザーreplusersshを使用して、レプリケーションの初期化と同じ方法で、指定された各スタンバイのホスト名またはアドレスに接続できることを確認します。standby12_vipなどのVIPを使用してクラスタに接続している場合は、同じコマンド形式を使用します。VIPの名前を指定しないでください。

厳密なホスト・キー・チェックを無効にする予定の場合は、-o sshStrictKey=noオプションをコマンドラインに追加して、このチェックをスキップできます。

プライマリ・クラスタの各ノードがスタンバイ・クラスタのすべてのノードに接続できることを確認したら、検証コマンドを再実行してください。今度は、スタンバイ・クラスタの各ノードでコマンドを実行します。次の形式を使用して、プライマリ・クラスタのすべてのノードのホスト名またはIPアドレスを指定します。

$ acfsutil repl info -c -u repluser primary1 [primary2 ...] [snap_shot@]standby-mountpoint

このコマンドで、primarynにはプライマリ・クラスタのホスト名またはアドレスを指定します。

Oracleパッチ適用とOracle ACFS

この項では、グリッド・インフラストラクチャ環境でのOracle ACFSを使用したパッチ適用について説明します。

Oracle ACFSパッチ適用の概要

Oracle ACFSは、Oracle Grid Infrastructureの一部としてインストールされます。ただし、Oracle ACFSは、Linux上の/lib/modules/sbinなどの様々なシステムの場所から実行されます。

Oracle ACFSは、Oracle Grid Infrastructureの配信およびパッチ・メカニズム(OUIおよびOPatch)と統合されます。配信メカニズム(Oracleリリース、Oracleパッチセット、Oracleリリース更新またはOracle個別パッチ)に関係なく、Oracle ACFSコンテンツはパッチで配信されます。

Oracleゼロ・ダウンタイムのグリッド・インフラストラクチャ・パッチ適用を使用せずにOracle Grid Infrastructureを更新すると、Oracle ACFSもシステムの場所で更新され、Oracle Gridソフトウェアのシームレスな操作が保証されます。更新時(リリース、リリース更新、パッチセットまたは個別パッチに関係なく)、Oracle Clusterwareスタックはローカル・ノードで停止され、サービスは他のノードに移行されます。その後、Oracle Gridソフトウェアにパッチが適用され、サービスがローカル・ノードで再起動されます。

Oracleゼロ・ダウンタイムのOracle Grid Infrastructureパッチ適用を使用しないパッチ適用

パッチ操作中、まずOracle ACFSソフトウェアはOPatchまたはOUIファイル配置操作によってGridホームで更新され、その後Oracle Clusterwareの停止中に適切なシステムの場所に移動されてメモリーにロードされます。Oracle Clusterwareの再起動には、オペレーティング・システム(OS)カーネルでOracle ACFSを更新できるように、OSカーネル参照を解放するという副作用があります。

ゼロ・ダウンタイムのOracle Grid Infrastructureを使用したパッチ適用

ゼロ・ダウンタイムのOracle Grid Infrastructureパッチ適用を使用すると、Oracle Gridホーム内のOracle Grid Infrastructureユーザー領域バイナリのみにパッチが適用されます。Oracle Gridホームから実行されるコマンドは、すぐに最新バージョンを使用します。ACFS、AFD、OLFS、OKA OSシステム・ソフトウェア(OSカーネル・モジュールおよびシステム・ツール)など、Oracle Gridホーム外にインストールされるOracle Grid Infrastructureコンポーネントは、Gridホームで更新されますが、システムの場所にはインストールされません。パッチ・バージョンより前のバージョンが引き続き実行されます。パッチが適用されると、OPatchインベントリにOPatchインベントリの新しいパッチ番号が表示されます。ただし、実行中のソフトウェアにはこれらの変更は含まれず、Gridホームで使用可能なソフトウェアのみが含まれます。新しく使用可能になったソフトウェアがメモリーにロードされ、付属するユーザー・ツールがシステムの場所にコピーされるまで、Oracle Grid Infrastructureホームにある使用可能な修正は利用されません。

実行およびインストールされているOracle ACFSシステム・ソフトウェアを確認するには、次のコマンドを使用できます。

  • crsctl query driver activeversion -all

    このコマンドは、クラスタのすべてのノード上のOracle ACFSのアクティブ・バージョンを表示します。アクティブ・バージョンは、システムに現在ロードされて実行されているOracle ACFSドライバのバージョンです。これは、ACFSシステム・ツールのバージョンも暗黙的に示します。18c以降で使用可能なcrsctl queryコマンドは、クラスタのすべてのノードのデータを表示します。

    次の例では、19.4がOracleホームで使用可能ですが、19.2が現在実行中のバージョンです。OPatch lsinventoryにより、19.4がパッチ適用済バージョンとしてレポートされます。Oracle Grid Infrastructure OSドライバは19.2のみを実行しています。

    crsctl query driver activeversion -all
    Node Name : node1
    Driver Name : ACFS
    BuildNumber : 200114
    BuildVersion : 19.0.0.0.0 (19.2.0.0.0)
    
  • crsctl query driver softwareversion -all

    このコマンドは、Oracle Gridホームに現在インストールされているOracle Grid Infrastructureソフトウェアの使用可能なソフトウェア・バージョン(および拡張機能別にOracle ACFSソフトウェアの使用可能なソフトウェア・バージョン)を表示します。18c以降で使用可能なcrsctl queryコマンドは、クラスタのすべてのノードのデータを表示します。

    crsctl query driver softwareversion -all
    Node Name : node1
    Driver Name : ACFS
    BuildNumber : 200628
    BuildVersion : 19.0.0.0.0 (19.4.0.0.0)
    
  • acfsdriverstate version -v

    このコマンドは、ローカル・ノードで実行中のOracle ACFSモジュールに関する全情報を表示します。ACFS-9548およびACFS-9547メッセージには、Oracle Grid Infrastructureホームで使用可能なOracle ACFSソフトウェアのバージョンが表示されます。acfsdriverstateは、ローカル・ノードについてのみをレポートします。バグ番号は、個別パッチの実行時にのみ使用可能です。

    acfsdriverstate version -v
    ACFS-9325: Driver OS kernel version = 4.1.12-112.16.4.el7uek.x86_64.
    ACFS-9326: Driver build number = 200114.
    ACFS-9212: Driver build version = 19.0.0.0.0 (19.2.0.0.0).
    ACFS-9547: Driver available build number = 200628.
    ACFS-9548: Driver available build version = 19.0.0.0.0 (19.2.0.0.0)
    ACFS-9549: Kernel and command versions.
    Kernel:
     Build version: 19.0.0.0.0
     Build full version: 19.2.0.0.0
     Build hash: 9256567290
     Bug numbers: NoTransactionInformation
    Commands:
     Build version: 19.0.0.0.0
     Build full version: 19.2.0.0.0
     Build hash: 9256567290
     Bug numbers: NoTransactionInformation
    

Oracle Grid Infrastructureファイルの更新

Oracle Clusterwareスタックが停止し、Oracle ACFSドライバ・モジュールが更新されるまで、Oracle ACFSの修正はメモリーにロードされません。Oracle ACFSの修正をシステム・メモリーにロードするプロセスにより、Oracle ACFS操作に必要なツールもシステムの場所にインストールされます。

次の手順のいずれかを実行できます。

  1. Oracle ACFSの修正をメモリーおよびシステムの場所にロードするには、ノードごとに次のコマンドを発行する必要があります。

    • crsctl stop crs -f

      ローカル・ノード上のCRSスタックおよびすべてのアプリケーションを停止します

    • root.sh -updateosfiles

      システム上のOracle ACFSおよびその他のOracle Grid Infrastructureカーネル・モジュールを最新バージョンに更新します

    • crsctl start crs -wait

      ノードでCRSを再起動します

  2. あるいは、カーネル・バージョンを変更してノードを再起動すると、新しいドライバが自動的にロードされ、新しいシステム・ツールがシステム・ディレクトリにインストールされます。クラスタ内のすべてのノードがカーネル・バージョンを同時に変更するものとします。

これらのイベントのいずれかが発生すると、crsctl query activeversionおよびcrsctl query softwareversionコマンドによって同じ情報がレポートされます。ロード済で実行中のオペレーティング・システム(OS)ソフトウェアは、Oracle Grid Infrastructureホームで使用可能な最新のものと同じです。Oracle ACFSパッチ適用の検証の説明に従って、他のOracle ACFSバージョンのコマンドを実行できます。

Oracle ACFSパッチ適用の検証

標準のOPatchパッチを使用してOracleリリース更新およびOracleパッチを適用する場合、インベントリにはGrid Infrastructureホームおよびシステムにインストールされている内容が正確に反映されます。たとえば:

[grid@racnode1]$ opatch lsinventory
...
..
Oracle Grid Infrastructure 19c                                       19.0.0.0.0
There are 1 products installed in this Oracle Home.

Interim patches (5) :

Patch  30501910: applied on Sat Mar 07 15:42:08 AEDT 2020
Unique Patch ID:  23299902
Patch description:  "Grid Infrastructure Jan 2020 Release Update : 19.4.0.0.200628 (30501910)"
   Created on 28 Dec 2019, 10:44:46 hrs PST8PDT
   Bugs fixed:

lsinventoryの出力例では、OPatch RUおよび適用されるその他のパッチと、バグ番号およびその他の情報をリストしています。これらのパッチはGrid Infrastructureホームに適用されます。通常のパッチ適用操作では、オペレーティング・システム(OS)の場所にも適用され、メモリーにロードされるため、Oracle Grid InfrastructureのOSシステム・ソフトウェアの修正がGrid Infrastructureホームと同期されます。ただし、ゼロ・ダウンタイムのグリッド・インフラストラクチャ・パッチ適用を使用する場合、システムにインストールされているOracle Grid Infrastructureシステム・ソフトウェアの内容(Oracle ACFSなど)は同時に更新されません。

crsctl query driverおよびacfsdriverstateコマンドを使用して、インストールされているOracle Grid Infrastructureシステム・ソフトウェア・レベルがGrid Infrastructureホームのソフトウェア・レベルと同じかどうかを検証できます。Oracle ACFSパッチ適用の概要のゼロ・ダウンタイムのOracle Grid Infrastructureパッチ適用に関する説明を参照してください。

ゼロ・ダウンタイムのOracle Grid Infrastructureパッチ適用を使用せずに適用されたパッチ適用および更新操作の場合、アクティブ・バージョンとソフトウェア・バージョンは常に同じである必要があります。

更新されたOracle Grid Infrastructure OSシステム・ソフトウェアのインストールが必要な場合は、Oracle Grid Infrastructureファイルの更新の手順を参照してください。

すべてのOracle Grid Infrastructure OSシステム・ソフトウェアが更新された後のバージョンは、Grid Infrastructureホームへのパッチまたは更新について表示されるOpatch lsinventoryの出力と同じ(この場合は19.4.0.0.0)である必要があります。また、使用可能でアクティブなOracle Grid Infrastructure OSシステム・ソフトウェアには、同じバージョン番号が表示されている必要があります。たとえば:

Output from the lsinventory command:   
Patch description:  "Grid Infrastructure Jan 2020 Release Update : 19.4.0.0.0.200628 (30501910)"

crsctl query driver activeversion -all
Node Name : node1
Driver Name : ACFS
BuildNumber : 200628
BuildVersion : 19.0.0.0.0 (19.4.0.0.0)

crsctl query driver softwareversion -all
Node Name : node1
Driver Name : ACFS
BuildNumber : 200628
BuildVersion : 19.0.0.0.0 (19.4.0.0.0)

acfsdriverstate versionコマンドを実行すると、コマンドやユーティリティに関する情報など、ローカル・ノード上のOracle ACFSの追加情報を取得できます。たとえば:

acfsdriverstate version 
 ACFS-9325: Driver OS kernel version = 4.1.12-112.16.4.el7uek.x86_64.
 ACFS-9326: Driver build number = 200628.
 ACFS-9212: Driver build version = 19.0.0.0.0 (19.4.0.0.0)
 ACFS-9547: Driver available build number = 200628.
 ACFS-9548: Driver available build version = 19.0.0.0.0 (19.4.0.0.0).