甘いもん好きおやじのブログ

日常の面白いことを描きます。

【ORACLE】アーカイブログモード運用したDBのリカバリ

■データベースの構成
C:\oraclexe\app\oracle>tree /f oradata
フォルダー パスの一覧:  ボリューム TI31362600C
ボリューム シリアル番号は A8D4-8EB4 です
C:\ORACLEXE\APP\ORACLE\ORADATA
└─XE
        CONTROL.DBF
        SYSAUX.DBF
        SYSTEM.DBF
        TEMP.DBF
        UNDOTBS1.DBF
        USERS.DBF

C:\oraclexe\app\oracle>tree /f fast_recovery_area
フォルダー パスの一覧:  ボリューム TI31362600C
ボリューム シリアル番号は A8D4-8EB4 です
C:\ORACLEXE\APP\ORACLE\FAST_RECOVERY_AREA
└─XE
    ├─ARCH
    │      ARC0000000002_0982780026.0001
    │
    └─ONLINELOG
            O1_MF_1_FOV23BGO_.LOG
            O1_MF_2_FOV23D5N_.LOG

データベースを落とした状態で上記↑の構成をバックアップ。

C:\oraclexe\app\oracle>sqlplus / as sysdba

SQL> create table test(a number) tablespace users;

表が作成されました。

SQL> select file_name from dba_data_files where tablespace_name='USERS';

FILE_NAME
--------------------------------------------------------------------------------
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF

SQL> alter system switch logfile;

システムが変更されました。

SQL> exit

Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> exit
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。

C:\oraclexe\app\oracle>echo "aaa" > C:\oraclexe\app\oracle\oradata\XE\USERS.DBF ★ファイルを壊す。

C:\oraclexe\app\oracle>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on 日 7月 29 21:06:03 2018

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

アイドル・インスタンスに接続しました。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1068937216 bytes
Fixed Size                  2260048 bytes
Variable Size             616563632 bytes
Database Buffers          444596224 bytes
Redo Buffers                5517312 bytes
データベースがマウントされました。
ORA-01157: データファイル4を識別/ロックできません -
DBWRトレース・ファイルを参照してください
ORA-01110: データファイル4: 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF'

SQL> shutdown immediate
ORA-01109: データベースがオープンされていません。


データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> exit

バックアップして置いた以下のファイルを、C:\ORACLEXE\APP\ORACLE\ORADATA\XEの配下にコピー。
        SYSAUX.DBF
        SYSTEM.DBF
        TEMP.DBF
        UNDOTBS1.DBF
        USERS.DBF


Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。

C:\oraclexe\app\oracle>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on 日 7月 29 21:08:22 2018

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

アイドル・インスタンスに接続しました。

SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area 1068937216 bytes
Fixed Size                  2260048 bytes
Variable Size             616563632 bytes
Database Buffers          444596224 bytes
Redo Buffers                5517312 bytes
データベースがマウントされました。
SQL> recover database;
ORA-00279: 変更380079(07/29/2018 20:42:08で生成)にはスレッド1が必要です
ORA-00289:
検討すべきログ・ファイル:C:\ORACLEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\ARCH\ARC00
00000002_0982780026.0001
ORA-00280: 変更380079(スレッド1)は順序番号2に存在します。


ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ログが適用されました。
メディア・リカバリが完了しました。
SQL> shutdown immediate
ORA-01109: データベースがオープンされていません。


データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1068937216 bytes
Fixed Size                  2260048 bytes
Variable Size             616563632 bytes
Database Buffers          444596224 bytes
Redo Buffers                5517312 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> desc test
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 A                                                  NUMBER