バックアップ/復元アプライアンスで 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 データベースのアプリケーションの詳細と設定に示すように、[アプリケーションの詳細と設定] の [Oracle サービス名] 設定で、作成したサービス名(act_svc_dbstd)を指定します。

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

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

3 ノード RAC の例:

  • データベース名: dbrac

  • Instance1 の名前: dbrac1

  • Instance2 の名前: dbrac2

  • インスタンス 3 の名前: dbrac3。データベース保護はノード 3(インスタンス名 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 データベースのアプリケーションの詳細と設定で説明されている [アプリケーションの詳細と設定] の [Oracle サービス名] の設定で、作成したサービス名(act_svc_dbrac3)を指定します。

    tnsnames.ora ファイルが標準以外の場所にある場合は、Oracle データベースのアプリケーションの詳細と設定で説明されている [Application Details & Settings] の Oracle TNS_Admin パス設定で、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 Auth でもデータベース認証情報が必要です(プライマリに接続してログを切り替えるため)。データベースの認証情報に 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 ではなく 172.15.157.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. [アプリケーションの詳細と設定] を使用して、ノード 3 とノード 4 への ASM ディスク グループのマッピングを設定します。

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

  4. このサービスは、[Application Details & Settings] で指定します。[詳細設定] で [チャンネル数] を選択します。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. サービス名とユーザー認証情報をテストします。
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)

  • (パッチ 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 ガイド