バックアップ/復元アプライアンスで Backup and DR 用に Oracle データベースを準備する

始める前に、Backup and DR(Oracle 向け)を確認することをおすすめします。

Oracle データベースをバックアップする前に、Oracle サーバーをホストとして Backup and DR に追加する必要があります。この操作を行うには、Oracle データベースのバックアップの前提条件を参照し、次の準備手順に沿って操作してください。

Oracle データベースの準備手順
ステップ 準備手順
1 Linux 環境で Oracle データベースを準備するまたは
Windows 環境で Oracle データベースを準備する
2 ASM ディスク グループにデータファイルがある Oracle データベースのバックアップを準備する
3 Oracle データベース認証を準備する
データベース ブロック チェンジ トラッキングを有効にする(省略可)
Oracle Data Guard ノードから保護する
他のノードへの RMAN バックアップの RAC 透過的フェイルオーバーを構成する
Oracle アーカイブ ログの圧縮
複数のノード間のロード バランシング用に Oracle データベース サービスを構成する
Oracle 12c にパッチを適用する

Linux 環境で Oracle データベースを準備する

Oracle データベースを保護する前に、またはデータベース保護ジョブが失敗した場合は、Oracle データベース サーバーで次の設定が正しいことを確認してください。

  • 保護対象の Oracle データベースは、それぞれ稼働中である必要があります。次に例を示します。
database: actdb
ps -ef | grep pmon | grep -i actdb
oracle   27688     1  0  2015 ?        00:26:24 ora_pmon_actdb
  • データベースはアーカイブログ モードで実行されている必要があります。データベースがアーカイブ ログモードで実行されていることを確認するには、Oracle OS ユーザーとしてデータベース サーバーにログインし、データベース環境変数を設定します。
export ORACLE_HOME=<oracle home path>
# Get this from /etc/oratab
export ORACLE_SID=<database instance name>
export PATH=$ORACLE_HOME/bin:$PATH
 Login to sqlplus:
sqlplus / as sysdba
archive log list;
Database log mode   Archive Mode
Automatic archival        Enabled
Archive destination        +FRA
Oldest online log sequence     569
Next log sequence to archive   570
Current log sequence        570
 Note: If archive log mode is not enabled then get archive mode enabled
 before proceeding.
  • データベースは spfile を使用しているものとします。データベースが spfile で実行されていることを確認します。
sqlplus / as sysdba
show parameter spfile
NAME      TYPE   VALUE
------------------ ----------- ------------
spfile      string  +DATA/ctdb/spfilectdb.ora
 Note: If the value is `null_` then
 get the spfile set. Backup and DR supports backing up using pfile as well.
 pfile should be available in default location. For example, a
 Linux `pfile` should be located under `$ORACLE_HOME/dbs`.
  • Oracle RAC データベースの場合、スナップショット制御ファイルは共有ディスクに配置する必要があります。ASM で管理されている Oracle RAC データベースの場合、スナップショット制御ファイルは共有ディスクに配置する必要があります。

    これを確認するには、RMAN に接続して show all コマンドを実行します。必要に応じて構成します。

    rman target /
    

    RMAN で次の操作を行います。

    show all
    

    db_unique_name が CTDB のデータベースの RMAN 構成パラメータは次のとおりです。

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/mnt/ctdb/snapcf_ctdb.f';
 This example shows the configuration set to the local file system.

 In a RAC environment, this must be set to shared ASM Disk Group. To put it
 on the ASM Disk Group, use:

```bash
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+(disk group name)/snap_(database name).f';
```

ASM ディスク グループにデータファイルがある Oracle データベースのバックアップを準備する

ASM ディスク グループの Backup and DR ステージング ディスク

ASM diskstring パラメータが設定されており、null ではありません。ASM OS ユーザーとしてデータベース サーバーにログインし、ASM 環境変数を設定します。

export ORACLE_HOME=(oracle ASM home path)
# Get this from /etc/oratab
export ORACLE_SID=(ASM instance name)
export PATH=$ORACLE_HOME/bin:$PATH

sqlplus に接続します。

sqlplus / as sysasm
show parameter asm_diskstring
NAME      TYPE   VALUE
------------------- ----------- ------------------------------
asm_diskstring      string  ORCL:*, /dev/sdt1, /dev/sdu1

値の結果が null の場合は、Backup and DR 保護に進む前に、既存の ASM ディスクの正しい ASM ディスク文字列値を取得します。Backup and DR のバックアップは、バックアップ ステージング ディスクのディスク文字列パス(/dev/Backup and DR/asm/*)を ASM にマッピングするために追加します。

ファイル システム上の Backup and DR ステージング ディスク

Oracle ASM データベースをファイル システムに保護する場合は、[Application Details & Settings] で [Convert ASM to file system] を [Yes] に設定する必要があります。Oracle データベースのアプリケーションの詳細と設定をご覧ください。

Oracle データベース認証を準備する

次の追加の準備手順は、データベース認証を使用する場合にのみ必要です。Oracle データベース認証については、Backup and DR using database authentication をご覧ください。

  1. Linux 環境で Oracle データベースを準備するの手順に沿って操作します。

  2. 指定されていない場合は、Backup and DR バックアップ用のデータベース ユーザー アカウントを作成します。

create user act_rman_user identified by <password>;
  1. sqlplus にログインしてすべてのノードで次のコマンドを実行し、すべての RAC ノードに sysdba アクセス権を付与します。
grant create session, resource, sysdba to act_rman_user;

Oracle 12c の場合、このロールは of sysdba ではなく sysbackup になり、データベースのユーザー名は # で始まります。

  1. RAC 環境内のすべてのノードで sysdba ロールが付与されていることを確認します。
sqlplus / as sysasm
select * from gv$pwfile_users;
INST_ID USERNAME SYSDB SYSOP SYSAS
---------- --------------  ----- ----- -----
1 SYS TRUE TRUE FALSE
2 SYS TRUE TRUE FALSE
1 ACT_RMAN_USER TRUE TRUE FALSE
2 ACT_RMAN_USER TRUE TRUE FALSE
  1. 次の手順に沿って、環境タイプに基づいてサービス名をテストします。

非 RAC 環境で Oracle サービス名を作成して確認する

Oracle サービス名は、データベース認証にのみ使用されます。OS 認証には必要ありません。

例: データベース名: dbstd、インスタンス名: dbstd

  1. Oracle サービス名がリストにない場合は、$ORACLE_HOME/network/admin または $GRID_HOME/network/admin にある tnsnames.ora ファイルに次のエントリを追加して、サービス名エントリを作成します。
act_svc_dbstd =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = (IP of the database server))(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbstd)
) )

tnsnames.ora ファイルが標準以外の場所にある場合は、Oracle データベースのアプリケーションの詳細と設定で説明されているように、[Application Details & Settings] で絶対パスを指定します。

  1. データベースのサービス名エントリをテストして、構成されていることを確認します。

    Oracle OS ユーザーとしてログインし、Oracle 環境を設定します。

TNS_ADMIN=(tnsnames.ora file location)
tnsping act_svc_dbstd
  1. データベース ユーザー アカウントを確認して、Backup and DR バックアップが接続できることを確認します。
sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
  1. Oracle データベースのアプリケーションの詳細と設定で説明されているように、[Application Details & Settings] の [Oracle Service Name] 設定で、作成したサービス名(act_svc_dbstd)を指定します。

RAC 環境で Oracle サービス名を作成して確認する

Oracle サービス名は、データベース認証にのみ使用されます。OS 認証には必要ありません。

3 ノード RAC の例:

  • データベース名: dbrac

  • Instance1 の名前: dbrac1

  • Instance2 の名前: dbrac2

  • Instance3 の名前: Node3(インスタンス名 dbrac3)からデータベース保護が設定されている dbrac3:

  1. 次のエントリを追加して、$ORACLE_HOME/network/admin または $GRID_HOME/network/admin の tnsnames.ora ファイルに servicename エントリを作成します。
act_svc_dbrac3 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = (IP of the database server)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = dbrac3)
(SERVICE_NAME = dbrac)
) ) )
     Where:
     HOST = This can be SCAN IP in a RAC environment or VIP or IP of the node 3 database server.
    SERVICE_NAME = database name
    INSTANCE_NAME = database instance name on node3
  1. servicename をテストします。

    Oracle OS ユーザーとしてログインし、Oracle 環境を設定します。

TNS_ADMIN=(tnsnames.ora file location)
tnsping act_svc_dbrac3
  1. データベース ユーザー アカウントを確認して、Backup and DR バックアップが接続できることを確認します。
sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
  1. Oracle データベースのアプリケーションの詳細と設定で説明されているように、[Application Details & Settings] の [Oracle Service name] 設定で、作成したサービス名(act_svc_dbrac3)を指定します。

    tnsnames.ora ファイルが標準以外の場所にある場合は、Oracle データベースのアプリケーションの詳細と設定で説明されている [Application Details & Settings] の [Oracle TNS_Admin Path] 設定で、tnsnames.ora ファイルの絶対パスを指定します。

データベース ブロックの変更トラッキングを有効にする(省略可)

データベースの変更ブロックのトラッキングについては、Oracle データベース ブロック変更のトラッキング(BCT)をご覧ください。

データベース ブロックの変更トラッキングが有効になっているかどうかを確認するには:

sqlplus / as sysdba

sql プロンプトで、次のコマンドを入力します。

select * from v$block_change_tracking;

データベース ブロックの変更トラッキングが有効になっていない場合は、sqlplus でデータベース ブロックの変更トラッキングを有効にします。

ASM ディスク グループの使用

sqlplus / as sysdba

sql プロンプトで、次のコマンドを入力します。

alter database enable block change tracking using file '+<ASM Disk Group Name>/<database name>/<dbname>.bct';

ファイル システムの使用

sqlplus / as sysdba

sql プロンプトで、次のコマンドを入力します。

alter database enable block change tracking using file '$ORACLE_HOME/dbs/<dbname>.bct';

Oracle Data Guard ノードから保護する

Oracle データベースは、プライマリ データベース ノードまたは Oracle Data Guard スタンバイ ノードから保護できます。Oracle Data Guard ノードから保護を設定する場合は、アプライアンス管理コンソールの [Application Details & Settings] でプライマリ ノードの認証情報を設定してください。

データベース認証の場合(Linux のみ)

  • ユーザー名/パスワード: データベース ユーザー アカウントの認証情報。このユーザー アカウントを sysdba アクセス権を持つ Data Guard ノードで使用できるようにするには、プライマリ ノードで sysdba 権限を持つユーザーを作成する必要があります(sysdba アクセス権を持つバックアップ ユーザー アカウントの作成を参照)。次に、プライマリ ノードから取得したパスワード ファイル($ORACLE_HOME/dbs/ 内)を Data Guard ノードにコピーする必要があります。

OS 認証の場合

  • ユーザー名/パスワード: OS 認証では、sysdba 権限は必要ありません。このデータベース ユーザー アカウントには connect, alter system 権限が必要です。このユーザー アカウントを Data Guard ノードで使用できるようにするには、プライマリ ノードでこのユーザーを作成する必要があります。

ユーザーに sysdba ロールがない場合は、grant connect, alter system, select on dba_tablespaces が必要です。

これらの権限を付与するには、SQL プロンプトで次の操作を行います。

grant connect, alter system, select on dba_tablespaces to act_rman_user;
  • Oracle Data Guard プライマリ ノードのサービス名: これは、スタンバイ ノードからプライマリ ノードに接続するために Data Guard ノードで構成された tnsnames.ora ファイルのサービス名です。Data Guard スタンバイ ノードからバックアップが構成されている場合、OS 認証と DB 認証の両方に Oracle Data Guard プライマリ ノードのサービス名が必要です。

すべての詳細と設定について詳しくは、Oracle データベースのアプリケーションの詳細と設定をご覧ください。

データベース ノード OS 認証 データベース認証
プライマリ データベース認証情報は必要ありません。 データベース認証情報が必要です。ロールが選択されていない場合は、sysdba が使用されます。
スタンバイ OS 認証の場合でも、データベース認証情報が必要です(ログを切り替えるためにプライマリに接続するため)。データベース認証情報に sysdba/sysbackup ロールは必要ありません。sysdba/sysbackup アカウントを使用する場合は、[アプリケーションの詳細と設定] の [データベースのユーザーロール] でユーザーロールを設定します。 データベース認証情報が必要です。データベース認証情報は sysdba ロールまたは sysbackup ロールのいずれかである必要があり、[アプリケーションの詳細と設定] で [データベースのユーザーロール] を sysdba または sysbackup に設定する必要があります。データベース認証を設定するには、Oracle サーバーのデータベース認証を有効にするをご覧ください。

RMAN バックアップの他のノードへの RAC 透過的フェイルオーバーを構成する

バックアップ フェイルオーバー構成の一部にする予定のすべてのノードに、Backup and DR エージェントがインストールされ、実行されている必要があります。保護は 1 つのノードからのみ設定されます。

[Details & Settings] -> [Cluster Nodes] の順に開き、Oracle RAC 環境の Failover choice のノードを指定します。

<Failover choice>:<Node IP>:<Servicename>:<Role>

ここで

  • フェイルオーバーの選択: フェイルオーバーするノードの順序。

  • ノード IP: バックアップを行うノードの IP アドレス

  • Servicename: Backup and DR RMAN バックアップのために tnsnames.ora で作成され、指定されたサービスの名前。これは、Backup and DR バックアップのために新しく作成した専用サービスの場合や、該当するノード上のデータベースの SID 名(インスタンス名)の場合があります。

  • ロール: フェイルオーバー ノードを示す F

tnsnames.ora ファイル($ORACLE_HOME/network/admin/tnsnames.ora または $GRID_HOME/network/admin/tnsnames.ora)のフェイルオーバー ノードに新しいサービス名を作成するには

Oracle One Node 環境での例

RAC One Node は 2 つのノードで構成されます。

172.15.157.200
172.15.157.201

データベースは「OneN」という名前の 1 つだけで、常にいずれか 1 つのノードでのみ稼働中だとします。クラスタノードは 1:172.15.157.201:OneN:F と設定されており、OneN は 172.15.157.200 で保護されています。

OneN が 172.15.157.201 にフェイルオーバーした場合、Backup and DR バックアップはこれに準じ、次のバックアップを 172.15.157.200 ではなく~ 201 で行います。フェイルオーバーがバックアップ ジョブの途中で起こった場合はそのジョブは失敗します。また、その次のジョブは新しくバックアップを開始するためにフェイルオーバー ノードを使用します。

Oracle 環境(One Node ではない)の例:

  • 2 ノード RAC(dbrac1、dbrac2)

  • 保護は dbrac1 のデータベース名「dbrac」を使用して設定され、フェイルオーバーは dbrac2 に設定されます。

  • node2 のサービス名: act_svc_dbrac2

  • Node2 IP またはスキャン IP: 172.1.1.0

act_svc_node2 =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.1.0)(PORT = 1521))
      (CONNECT_DATA =
      (SERVER = DEDICATED)
      (INSTANCE_NAME = dbrac2)
      (SERVICE_NAME = dbrac)
      ) )

[アプリケーションの詳細と設定] で、クラスタノードのエントリは次のようになります。

1:172.1.1.1:act_svc_node2:F

クラスタノード エントリ F と M の動作

F: フェイルオーバー ノード。保護ノードがバックアップを実行しない場合にのみ参加します。

M: メンテナンス ノード。バックアップを実行できることが検証された場合、保護ノードを置き換えます。

Oracle アーカイブログの圧縮

Backup and DR アーカイブログ バックアップは、Oracle ログ バックアップ セットの圧縮をサポートしています。選択する圧縮のタイプは、これらの RMAN 構成設定によって異なります。ユースケースに基づいてオプションを選択します。

  • 圧縮率が低いほど、バックアップ スループットへの影響は小さくなります。これは、CPU リソースが制限要因となる環境に最適です。

  • ほとんどの環境では、中程度の圧縮をおすすめします。これらは、圧縮率と速度のバランスが優れています。

  • 圧縮率が高いほどリソースを大量に消費するため、ネットワーク速度が制限要因となる低速ネットワークでのバックアップに最適です。

デフォルトの設定は [ベーシック] です。Basic では Oracle Advanced Compression は必要ありません。

環境内に設定された圧縮の種類を確認するには、RMAN プロンプトから show all コマンドを実行します。

rman target /
show all

複数のノード間でロード バランシングを行うように Oracle データベース サービスを構成する

この手順は、Oracle ASM データベースにのみ適用されます。この例では、4 ノードの RAC 環境を想定しています。ノード 3 とノード 4 は、バックアップ用にロードバランスされます。

参照:

Oracle RAC ノード間のロード バランシングには、Oracle データベース認証が必要です。

複数のノードから並列 RMAN イメージコピーを構成する

RAC 環境では、複数のノードから並行して実行するようにバックアップを構成できます。

  1. すべてのノードに Backup and DR エージェントをインストールします。

  2. アプリケーションの詳細と設定を使用して、ASM ディスク グループをノード 3 とノード 4 にマッピングします。

  3. srvctl を使用してデータベース サービスを作成し、ノード 3 とノード 4 から実行します。

  4. このサービスを使用して、[アプリケーションの詳細と設定] で指定します。[詳細設定] で [チャンネル数] を選択します。RMAN は、ノード 3 とノード 4 の間でチャネルを分散します。

  5. Oracle サービス名と RAC メンバーノードを設定します。

複数のノード間でロード バランシングを行うように Oracle Database Services を構成する

  1. [Application Details & Settings] で、RAC メンバーノードを構成します。node3 の IP と node4 の IP を指定します。

  2. Backup and DR でバックアップに使用されるメンテナンス ノードのデータベース サービスを作成します。

srvctl add service -d <dbname> -s act_service_<dbname> -r <dbinstance3>,<dbinstance4>
srvctl start service -d <dbname> -s act_service_<dbname>
  1. バックアップ ノード(この例では dbinstance3 ノードと dbinstance4 ノード)で作成された Oracle サービス名の tns エントリを、tnsnames.ora ファイル($ORACLE_HOME/network/admin/tnsnames.ora または $GRID_HOME/network/admin/tnsnames.ora)に追加します。
act_service_<dbname> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <DATABASE NAME>)
) )
  1. 作成した servicename をテストします。
tnsping act_service_<dbname>
  1. servicename とユーザー認証情報をテストします。
sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
  1. このサービス名を [Application Details & Settings] の [Oracle service name] で指定します。

  2. バックアップに使用する専用のアーカイブ ログ バックアップ サービスを保護されたノード(ノード 3 など)に作成します。

srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3>
srvctl start service -d <dbname> -s act_arc_service_<dbname>
  1. tnsnames.ora ファイル($ORACLE_HOME/network/admin/tnsnames.ora または $GRID_HOME/network/admin/tnsnames.ora)に作成されたアーカイブ ログ バックアップ サービス名の tns エントリを追加します。
act_arc_service_<dbname> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = <node 3 instance>)
(SERVICE_NAME = act_arc_service_<dbname>)
) )
  1. サービス名をテストします。
tnsping act_arch_service_<dbname>
  1. このサービス名を [Application Details & Settings] のアーカイブ ログ バックアップ サービス名で指定します。

Oracle 12c にパッチを適用する

Oracle 12c のインストールにこのパッチが含まれていない場合、Backup and DR のアプリケーション認識マウントが失敗する可能性があります。このパッチは、Oracle サポート ポータルからダウンロードできます。

Oracle Database 12c バグ# 19404068(ORA-1610 ON RECOVER DATABASE FOR CREATED CONTROLFILE)

  • (パッチ 19404068)Oracle 12.1.0.2.0 用 Linux x86-64

パッチがインストールされているかどうかを確認するには、次のコマンドを実行します。

cd $ORACLE_HOME/OPatch
./opatch lsinventory -details
./opatch lsinventory -details | grep 19404068

次のステップ

Oracle ホストを追加する前に、次の手順に進みます。

  1. (省略可)Backup and DR で Oracle Direct NFS を使用する
  2. Oracle パッチと既知の問題

Oracle DBA ガイド