Email: service@parnassusdata.com 7 x 24 online support!
Oracle バックアップのないデータ・ファイルのリカバリ方法について (アーカイブログモード)
ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com
[概要] バックアップを取得していない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; 文が処理されました。