Email: [email protected] 7 x 24 online support!
Oracle バックアップのないデータ・ファイルのリカバリ方法について (アーカイブログモード)
ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:[email protected]
[概要]
バックアップを取得していないDatafileを誤って削除した場合の復旧方法。
(前提条件:アーカイブモード)
[詳細]
アーカイブモードで運用中に作成されたデータ・ファイルで、作成した時点か
ら現在までのすべてのオフライン REDO ログ (アーカイブファイル) 及び
オンライン REDO ログが存在する場合、バックアップがない場合も復旧するこ
とが可能です。
<手順>
1. 物理的に存在しないdatafileに対して空のdatafileを作成
SVRMGR> alter database create datafile 'データ・ファイル名';
2. メディア回復を実行
SVRMGR> recover datafile 'データ・ファイル名' ;
3. DatafileをONLINEにする
SVRMGR> alter database datafile 'データ・ファイル名' online;
<<実行例>> ※ 確認用に v$datafile_headerの出力も記載しています。
0. エラー発生
SQL> select * from test_tab;
select * from test_tab
*
エラー行: 1: エラーが発生しました。
ORA-00376: ファイル: 6を読み込むことはできません。
ORA-01110: データ・ファイル: 6 :
/home/app/oracle/product/8.0.5/dbs/test1.dbf
SQL> select name,status,error,recover from v$datafile_header
2> where file#=6;
NAME STATUS
------------------------------------------------------------ -------
ERROR REC
---------------------------------------------------------------- ---
OFFLINE
FILE NOT FOUND
1. 物理的に存在しないdatafileに対して空のdatafileを作成
SQL> alter database create datafile
2>'/home/app/oracle/product/8.0.5/dbs/test1.dbf';
データベースが変更されました。
SQL> select name,status,error,recover from v$datafile_header
2> where file#=6;
NAME STATUS
--------------------------------------------------------- -------
ERROR REC
------------------------------------------------------------- ---
/home/app/oracle/product/8.0.5/dbs/test1.dbf OFFLINE
YES
SVRMGR>!ls -l /home/app/oracle/product/8.0.5/dbs/test1.dbf
-rw-rw---- 1 ora805 dba 12288 3月 28日 13:49 /home
/app/oracle/product/8.0.5/dbs/test1.dbf
2. メディア回復を実行
SVRMGR> recover datafile
2>'/home/app/oracle/product/8.0.5/dbs/test1.dbf' ; --- 2
媒体回復が完了しました。
SVRMGR> select name,status,error,recover from v$datafile_header
2> where file#=6;
NAME
STATUS ERROR REC
-----------------------------------------------------------------
------- ------------------ ---
/home/app/oracle/product/8.0.5/dbs/test1.dbf
OFFLINE NO
1行選択されました。
3. DatafileをONLINEにする
SVRMGR> alter database datafile
2>'/home/app/oracle/product/8.0.5/dbs/test1.dbf' online;
文が処理されました。
SVRMGR> select name,status,error,recover from v$datafile_header
2> where file#=6;
NAME
STATUS ERROR REC
-----------------------------------------------------------------
------- ------------------ ---
/home/app/oracle/product/8.0.5/dbs/test1.dbf
ONLINE NO
1行選択されました。
SVRMGR>!ls -l /home/app/oracle/product/8.0.5/dbs/test1.dbf
-rw-rw---- 1 ora805 dba 104448 3月 28日 13:53 /ho
me/app/oracle/product/8.0.5/dbs/test1.dbf
[補足事項]
DB停止中にデータ・ファイルを削除した場合、起動時には以下のようなエラー
が発生します。
SVRMGR> startup
Oracleインスタンスが起動しました。
全システム・グローバル領域 4857944バイト
Fixed Size 49240バイト
Variable Size 4325376バイト
Database Buffers 409600バイト
Redo Buffers 73728バイト
データベースがマウントされました。
ORA-01157: ????????: 6???????????????????????????
ORA-01110: ????????: 6 : /home/app/oracle/product/8.0.5/dbs/test1.dbf
この場合にも同様の方法にてリカバリが可能です。
SVRMGR> alter database create datafile '/home/app/oracle/product/8.0
.5/dbs/test1.dbf';
文が処理されました。
SVRMGR> recover datafile '/home/app/oracle/product/8.0.5/dbs/test1.dbf';
媒体回復が完了しました。
SVRMGR> alter database open;
文が処理されました。