物理バックアップの失敗を根絶するノウハウ:Oracleバックアップ/リカバリ講座(7)(3/4 ページ)
バックアップを取得しても、取得したファイルが破損していてリカバリに使用できなければ意味がありません。OracleのRecovery Manager(以下、RMAN)を使用してデータファイルのバックアップを取得する場合には、RMANがデータブロックの破損チェックを行いますのでブロック障害を検出することができますが、OSコマンドによるバックアップではそれを行うことができません。そのため、バックアップ実行時にdbverifyユーティリティ(以下、dbv)を使用して、データファイルやバックアップしたデータファイルの破損チェックを実行することで、より確実なバックアップとなります(ただし、制御ファイルやREDOログファイルに使用することはできません)。
では、まずデータファイルの破損チェックを行うdbvコマンドの実行例から見ていきます。
(1)データファイルのブロックサイズを確認
次のSQLで対象となるデータファイルのブロックサイズを確認します。
SQL> select df.tablespace_name, df.file_name,dt.block_size
2 from dba_data_files df, dba_tablespaces dt
3 where df.tablespace_name = dt.tablespace_name;
TABLESPACE_NAME FILE_NAME
BLOCK_SIZE
-------------------- ---------------------------------------------
----------
SYSTEM /opt/app/oracle/oradata/system01.dbf
8192
UNDOTBS1 /opt/app/oracle/oradata/undotbs01.dbf
8192
SYSAUX /opt/app/oracle/oradata/sysaux01.dbf
8192
USERS /opt/app/oracle/oradata/users01.dbf
8192 |
リスト6 データファイルのブロックサイズの確認 |
(2)データファイルの破損チェックを実行
dbvコマンドにて、データファイルの破損チェックを実行します。下記の例では、USERS表領域を構成するデータファイルのフルパスと、ブロックサイズを指定して破損チェックを行っています。
oracle@single> dbv file=/opt/app/oracle/oradata/users01.dbf blocksize
=8192
DBVERIFY: Release 10.2.0.1.0 - Production on 木 6月 29 02:35:49 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
DBVERIFY - 検証を開始します: FILE = /opt/app/oracle/oradata/users01.dbf
DBVERIFY - 検証が完了しました
検査済ページ合計 : 640
処理済ページ合計 (データ) : 5
エラーのページ合計 (データ) : 0
処理済ページ合計 (索引) : 0
エラーのページ合計 (索引) : 0
処理済ページ合計 (その他) : 11
処理済ページ合計 (セグメント): 0
エラーのページ合計 (セグメント): 0
空白のページ合計 : 624
破損とマークされたページ合計 : 0
インフラックス・ページ合計 : 0
最大ブロックSCN : 650337(0.650337) |
リスト7 データファイルの破損チェック |
破損チェックの結果から「破損とマークされたページ合計:0」と出力されていますので、データファイルに破損がなかったことが分かります。
次に、セグメント単位で破損チェックを行うdbvコマンドの実行例を見ていきます。まず、以下のSQLを実行し、破損チェックを実行するセグメント情報(表領域番号、セグメント・ヘッダ・ブロックのファイル番号とブロック番号)を取得します。下記の例では、表(“AGEHA_TEST”)のセグメント情報を取得しています。
SQL> select vt.ts#, ds.header_file, ds.header_block
2 from v$tablespace vt, dba_segments ds
3 where vt.name = ds.tablespace_name
4 and ds.segment_name = 'AGEHA_TEST';
TS# HEADER_FILE HEADER_BLOCK
---------- ----------- ----------
4 4 19 |
リスト8 セグメント情報の取得 |
(1)セグメントの破損チェック
先ほど取得したセグメント情報を基に、指定されたセグメントの高水位標(High Water Mark)までの破損チェックを実行します。
oracle@single> dbv userid=scott/tiger segment_id=4.4.19
DBVERIFY: Release 10.2.0.1.0 - Production on 日 7月 2 19:58:30 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
DBVERIFY - 検証開始 : SEGMENT_ID = 4.4.19
DBVERIFY - 検証が完了しました
検査済ページ合計 : 8
処理済ページ合計 (データ) : 5
エラーのページ合計 (データ) : 0
処理済ページ合計 (索引) : 0
エラーのページ合計 (索引) : 0
処理済ページ合計 (その他) : 2
処理済ページ合計 (セグメント): 1
エラーのページ合計 (セグメント): 0
空白のページ合計 : 0
破損とマークされたページ合計 : 0
インフラックス・ページ合計 : 0
最大ブロックSCN : 652922(0.652922) |
リスト9 セグメントの破損チェック |
破損チェックの結果から「破損とマークされたページ合計:0」となっていますので、指定したセグメントに破損がなかったことが分かります。
Copyright © ITmedia, Inc. All Rights Reserved.