始める前に、Oracle 用 Backup and DR サービスを確認することをおすすめします。
Oracle データベースをバックアップする前に、Oracle サーバーをホストとして Backup and DR サービスに追加する必要があります。これを機能させるには、Oracle データベースのバックアップの前提条件を参照し、次の準備手順に沿って操作してください。
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> (you can get this through ps -ef | grep pmon) export PATH=$ORACLE_HOME/bin:$PATH
sqlplus にログインします。
#sqlplus / as sysdba #SQL> 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 #SQL>
データベースは
spfile
を使用しているものとします。データベースがspfile
で実行されていることを確認します。#sqlplus / as sysdba SQL> show parameter spfile NAME TYPE VALUE ------------------ ----------- ------------ spfile string +DATA/ctdb/spfilectdb.ora
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';
この例は、ローカル ファイル システムに設定された構成を示しています。
RAC 環境では、これを共有 ASM ディスク グループに設定する必要があります。ASM ディスク グループに配置するには、次のコマンドを使用します。
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+<DG name>/snap_<DB 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) (you
can get this through ps ?ef | grep pmon)
#export PATH=$ORACLE_HOME/bin:$PATH
sqlplus
に接続します。
#sqlplus / as sysasm
#sql> 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 データベース認証については、データベース認証を使用したバックアップと DR をご覧ください。
Linux 環境で Oracle データベースを準備するの手順に沿って操作します。
Backup and DR バックアップ用のデータベース ユーザー アカウントが指定されていない場合は、作成します。
create user act_rman_user identified by <password>;
sqlplus
にすべてのノードにログインし、次のコマンドを実行して、すべての RAC ノードにsysdba
アクセス権を付与します。grant create session, resource, sysdba to act_rman_user;
Oracle 12c の場合、このロールは
of sysdba
ではなくsysbackup
になり、データベースのユーザー名は # で始まります。RAC 環境内のすべてのノードで
sysdba
ロールが付与されていることを確認します。#sqlplus / as sysasm # sql> 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
次の手順に沿って、環境タイプに基づいてサービス名をテストします。
非 RAC 環境で Oracle サービス名を作成して確認する
Oracle サービス名は、データベース認証にのみ使用されます。OS 認証には必要ありません。
例:
データベース名: dbstd
、インスタンス名: dbstd
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 データベースのアプリケーションの詳細と設定を参照)。データベースのサービス名エントリをテストして、構成されていることを確認します。
Oracle OS ユーザーとしてログインし、Oracle 環境を設定します。
TNS_ADMIN=(tnsnames.ora file location) tnsping act_svc_dbstd
データベース ユーザー アカウントを確認して、バックアップと DR バックアップが接続できることを確認します。
sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
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
:
$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
servicename をテストします。
Oracle OS ユーザーとしてログインし、Oracle 環境を設定します。
TNS_ADMIN=(tnsnames.ora file location) tnsping act_svc_dbrac3
データベース ユーザー アカウントを確認して、バックアップと DR バックアップが接続できることを確認します。
sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
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 アカウントを使用する場合は、[Application Details & Settings] の [User Role in the Database] でユーザーロールを設定します。 | データベース認証情報が必要です。データベース認証情報は sysdba ロールまたは sysbackup ロールのいずれかである必要があり、[アプリケーションの詳細と設定] で [データベースのユーザーロール] を sysdba または sysbackup に設定する必要があります。データベース認証を設定するには、Oracle サーバーのデータベース認証を有効にするをご覧ください。 |
RMAN バックアップの他のノードへの RAC 透過的フェイルオーバーを構成する
バックアップ フェイルオーバー構成の一部にする予定のすべてのノードに、バックアップと DR エージェントがインストールされ、実行されている必要があります。保護は 1 つのノードからのみ設定されます。
[Details & Settings] の [Cluster Nodes] で、Oracle RAC 環境のフェイルオーバー ノードの選択を指定します。
<Failover choice>:<Node IP>:<Servicename>:<Role>
ここで
Failover Choice: フェイルオーバーするノードの順番。
ノード IP: バックアップを行うノードの IP アドレス
Servicename: バックアップと DR RMAN バックアップのために tnsnames.ora で作成され、指定されたサービスの名称。バックアップと 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 にフェイルオーバーした場合、バックアップと 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)
) )
[アプリケーションの詳細と設定] で、クラスタノードのエントリは次のようになります。
Failoverchoice:NodeIP:Servicename:Role
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 環境では、複数のノードから並行して実行するようにバックアップを構成できます。
すべてのノードに Backup and DR エージェントをインストールします。
アプリケーションの詳細と設定を使用して、ノード 3 とノード 4 への ASM ディスク グループ マッピングを設定します。
srvctl を使用してデータベース サービスを作成し、ノード 3 とノード 4 から実行します。
このサービスを使用して、[Application Details & Settings] で指定します。[詳細設定] で [チャンネル数](チャンネル数)を選択します。RMAN は、ノード 3 とノード 4 の間でチャネルを分散します。
Oracle サービス名と RAC メンバーノードを設定します。
複数のノード間でロード バランシングを行うように Oracle Database サービスを構成する
[Application Details & Settings] で構成します。RAC メンバーノード: node3 の IP と node4 の IP。
バックアップと DR でバックアップに使用されるメンテナンス ノードのデータベース サービスを作成します。
srvctl add service -d <dbname> -s act_service_<dbname> -r <dbinstance3>,<dbinstance4> srvctl start service -d <dbname> -s act_service_<dbname>
バックアップ ノード(この例では
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>) ) )
作成した servicename をテストします。
tnsping actservice
servicename とユーザー認証情報をテストします。
sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
このサービス名を [Application Details & Settings] の [Oracle service name] で指定します。
バックアップに使用する専用のアーカイブ ログ バックアップ サービスを保護されたノード(ノード 3 など)に作成します。
srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3> srvctl start service -d <dbname> -s act_arc_service_<dbname>
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>) ) )
サービス名をテストします。
tnsping act_archservice
このサービス名を [Application Details & Settings] のアーカイブ ログ バックアップ サービス名で指定します。
Oracle 12c にパッチを適用する
Oracle 12c のインストールにこのパッチが含まれていない場合、バックアップと 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 ホストを追加する前に、次の手順に進みます。
Oracle DBA ガイド
- Oracle データベースの Backup and DR
- Oracle データベースを保護するための前提条件
- Oracle パッチと既知の問題
- 保護用に Oracle データベースを準備する
- Oracle データベースを検出して保護する
- Oracle データベースの詳細と設定
- バックアップと DR で dNFS を使用する
- 検出された Oracle データベースを保護する
- Oracle データベースを標準マウントとしてマウントする
- Oracle データベースのインスタント仮想コピーを作成する
- Oracle データベースを復元して復旧する
- マウントと移行を使用した Oracle データベースの瞬時復元
- バックアップと DR のワークフローを使用して環境をプロビジョニングする