- ユーザーズ・ガイド
- Oracle Exadata Storageスナップショットの設定
- Exadataスナップショットの管理
- フル・データベースの1つのコピーからのスパース・テスト・マスターの作成
- タスク1: スタンバイ・データベースをスパース・テスト・マスターとして使用するための準備
9.7.7.1 タスク1: スタンバイ・データベースをスパース・テスト・マスターとして使用するための準備
スタンバイ・データベースの既存のファイルは、スナップショットのサポートに使用されます。スタンバイの既存のファイルを指す一連のスパース・ファイルを作成します。プライマリ・データベースから受信したREDOが、これらのファイルに適用されます。これらのスパース・ファイルにより、スタンバイ・データベースをスパース・テスト・マスターとして使用できるようになり、また、プライマリ・データベースを最新に保つことができます。
- スタンバイでREDO適用を停止します。
サポート・ファイルを作成してスナップショットを作成するためにデータベースの構造を静止状態にするには、スタンバイ・データベースでREDO適用をオフにする必要があります。
DGMGRL> edit database tm_standby set state='APPLY-OFF';
- 現在のスタンバイ・データベースをテスト・マスターとして使用する準備をします。システムは次のように構成する必要があります。
- データベース・ファイルが含まれているディスク・グループは、
access_control.enabled
属性をTRUE
に設定する必要があります。SYSASMとして、SQL*Plusを使用してOracle ASMにログインし、ディスク・グループを構成します。
次に例を示します:
SQL> alter diskgroup DATA set attribute 'ACCESS_CONTROL.ENABLED'='TRUE';
- データベース所有者のオペレーティング・システム(OS)ユーザーは、データベース・ファイルが含まれているディスク・グループの明示的なユーザーとして追加する必要があります。
次に例を示します:
SQL> alter diskgroup DATA add user 'scott';
- 使用するデータベース・ファイルは、データベース所有者のOSユーザーに明示的な権限が付与されている必要があります。
このステップは、これらのファイルを使用してスナップショットを作成するすべてのOSユーザーと、スナップショットで参照されるすべてのファイルに対して実行する必要があります。
次のスクリプトを使用すると、所有権の設定を構成するためのSQL文を作成できます。SQL*Plusを使用して、スタンバイ・データベースに接続中にこのスクリプトを実行します。スタンバイがコンテナ・データベース(CDB)の場合は、
cdb$root
コンテナに接続する必要があります。set newpage 0 set linesize 999 set pagesize 0 set feedback offset heading off set echo off set space 0 set tab off set trimspool on spool set_owner.sql select 'ALTER DISKGROUP DATA set ownership owner='||''''||'scott'||''''||' for file '||''''||name||''''||';' from v$datafile; exit
前述のスクリプトの実行後、SYSASMユーザーとしてSQL*Plusを使用してOracle ASMにログインし、
set_owner.sql
のコマンドを実行します。SQL> @set_owner
- データベース・ファイルが含まれているディスク・グループは、
- 制御ファイルのバックアップを作成します。
すべてのスナップショットは、スタンバイ・データベースの現在の状態を使用して作成されるため、スタンバイを構成するすべてのファイルを把握する必要があります。制御ファイルのバイナリ・バックアップを作成し、追加のスナップショットに必要なCREATE CONTROLFILEスクリプトを今後作成できるようにします。
SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/home/oracle/snap_tm/control_tm.ctl';
rename_files.sql
スクリプトを作成し、スナップショットのスパース・データ・ファイルを作成します。このスクリプトは、スナップショットで使用するスパース・データ・ファイルを作成するための一連のRENAME文を作成し、プライマリから受信したREDOを適用します。次のようなSQL文を使用します。この文は元のファイルと同じディレクトリ構造を使用しますが、ファイルはSPARSEディスク・グループに作成されることに注意してください。新しいファイル名は、'.' (ピリオド)を'_' (アンダースコア)に置換することで作成されます。
set newpage 0 set linesize 999 set pagesize 0 set feedback off set heading off set echo offset space 0 set tab off set trimspool on spool rename_files.sql select 'EXECUTE dbms_dnfs.clonedb_renamefile ('||''''||name||''''|| ','||''''||replace(replace(name,'.','_'),'DATA/','SPARSE/')||''''|| ');' from v$datafile; exit
このスクリプトでは、次のような出力が生成されます。
EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/DATAFILE/system.515.9304 75939','+SPARSE/TM_STANDBY/DATAFILE/system_515_930475939'); EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/429CE0836E0166ACE05382C8 E50A1154/DATAFILE/system.567.930475945','+SPARSE/TM_STANDBY/429CE0836E0166ACE053 82C8E50A1154/DATAFILE/system_567_930475945'); EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/DATAFILE/sysaux.571.9304 75939','+SPARSE/TM_STANDBY/DATAFILE/sysaux_571_930475939'); EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/429CE0836E0166ACE05382C8 E50A1154/DATAFILE/sysaux.516.930475945','+SPARSE/TM_STANDBY/429CE0836E0166ACE053 82C8E50A1154/DATAFILE/sysaux_516_930475945'); EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/DATAFILE/undotbs1.497.93 0475939','+SPARSE/TM_STANDBY/DATAFILE/undotbs1_497_930475939'); EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/429CE0836E0166ACE05382C8 E50A1154/DATAFILE/undotbs1.564.930475945','+SPARSE/TM_STANDBY/429CE0836E0166ACE0 5382C8E50A1154/DATAFILE/undotbs1_564_930475945');
- ASMCMDを使用して、スクリプト
rename_files.sql
で識別されたすべてのディレクトリに対してディレクトリを作成します。dbms_dnfs.clonedb_renamefile
ファンクションを実行する場合は、ファイルに使用されるすべてのディレクトリ構造がすでにASMに存在している必要があります。前のステップの出力を使用して必要な構造を特定し、必要に応じてこれを作成します。次の例のように、ASMCMDを使用してディレクトリを作成できます。
cd ASMCMD [+] > cd sparse ASMCMD [+sparse] > ls ASMCMD [+sparse] > mkdir tm_standby ASMCMD [+sparse] > cd tm_standby ASMCMD [+sparse/tm_standby] > mkdir datafile ASMCMD [+sparse/tm_standby] > mkdir 429DC0E1BCBD1B90E05382C8E50A8E80 ASMCMD [+sparse/tm_standby] > mkdir 429CE0836E0166ACE05382C8E50A1154 ASMCMD [+sparse/tm_standby] > cd 429DC0E1BCBD1B90E05382C8E50A8E80 ASMCMD [+sparse/tm_standby/429DC0E1BCBD1B90E05382C8E50A8E80] > mkdir datafile ASMCMD [+sparse/tm_standby/429DC0E1BCBD1B90E05382C8E50A8E80] > cd ../429CE0836E0166ACE05382C8E50A1154 ASMCMD [+sparse/tm_standby/429CE0836E0166ACE05382C8E50A1154] > mkdir datafile