ARCHIVELOGモードでのユーザー管理の完全なリカバリ(3)——開いているデータベースをリカバリし、データベースは最初に開いています!



思い出すとuser 1ユーザーのtestテーブルには2つの記録があります
SQL> show user
USER   "USER1"
SQL> select * from test;

        ID VALUE
---------- --------------------
         1 a
         2 b

さらにtestテーブルに3番目のデータを挿入します.
SQL> insert into  test values(3,'c');

    1  。

SQL> commit;

    。

SQL> select  * from test;

        ID VALUE
---------- --------------------
         1 a
         2 b
         3 c

その後、ログを手動で切り替えます.ttb 1という表領域のデータファイルを削除し、リカバリテーブルにリカバリするレコードがないかを確認します.oracleはまだデータファイルが失われていることに気づいていないことを示しています.testテーブルをクエリーし続けるのが正常なときは、テーブルtestにデータを挿入してもいいです.データはメモリに置いてあるので、データファイルの上に書いていません.
SQL> conn /as sysdba
   。
SQL> alter system archive log current;

     。

SQL> ! rm -rf /u01/app/oracle/oradata/orcl/ttb1.dbf

SQL> select * from v$recover_file;

    
 
SQL> conn user1/user1
   。
SQL> insert into  test values(4,'d');

    1  。

SQL> commit;

    。

SQL> select * from test;

        ID VALUE
---------- --------------------
         1 a
         2 b
         3 c
         4 d

このとき手動でCKPTが発生します.alertログファイルにエラーメッセージが記録されていることがわかります.リカバリテーブルを表示すると、リカバリが必要なデータファイルが表示されます.v$recover_の場合fileにはリカバリするデータファイルが記録されていません.shutdown immediateをクリックすると、何番かのファイルがリカバリされる必要があります.リカバリ操作を開始することもできます.
SQL> conn /as sysdba
   。
SQL> alter system checkpoint;

     。

SQL> select * from v$recover_file;

    

SQL> shutdown immediate
ORA-01116:         14    
ORA-01110:      14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'
ORA-27041:       
Linux Error: 2: No such file or directory
Additional information: 3
SQL> select status from v$instance;

STATUS
------------
OPEN

リカバリ
SQL> ! cp /u01/app/oracle/backup/ttb1.dbf /u01/app/oracle/oradata/orcl/

SQL> recover datafile 14;
ORA-00283:           
ORA-01124:          14 -            
ORA-01110:      14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'

SQL> alter database datafile 14 offline;

      。

SQL> recover datafile 14;
ORA-00279:    1004104 (  10/08/2011 08:29:53   )      1     
ORA-00289:   : /u01/app/oracle/archivelog/1_70_761792499.dbf
ORA-00280:    1004104 (     1)     #70  


    : {<RET>=suggested | filename | AUTO | CANCEL}
auto
      。
      。
SQL> alter database datafile 14 online;

      。

SQL> shutdown immediate
       。
       。
ORACLE       。
SQL> startup
ORACLE       。

Total System Global Area  167772160 bytes
Fixed Size                  1266392 bytes
Variable Size             117443880 bytes
Database Buffers           46137344 bytes
Redo Buffers                2924544 bytes
       。
       。
SQL> conn user1/user1
   。
SQL> select * from test;

        ID VALUE
---------- --------------------
         1 a
         2 b
         3 c
         4 d