無檔案備份、擁有所有歸檔的恢復

liuya1985liuya發表於2007-12-27

演示幾種情況,不做過多說明.

歸檔模式

擁有所有歸檔檔案,後增加檔案無備份,丟失這個檔案,擁有控制檔案及所有其他檔案,以下是一種恢復情況.

1.啟用歸檔模式,備份

E:\sqlplus "sys/oracle as sysdba"

SQL> startup mount;
ORACLE 例程已經啟動。

Total System Global Area   47259136 bytes
Fixed Size                   454144 bytes
Variable Size              29360128 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
資料庫裝載完畢。
SQL> alter database archivelog;

資料庫已更改。

SQL> shutdown immediate;
ORA-01109: 資料庫未開啟


已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host

Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.

E:\Oracle\oradata\eygle>dir
 驅動器 E 中的卷是 PRIVATE
 卷的序列號是 ACC3-4340

 E:\Oracle\oradata\eygle 的目錄

...
2004-10-13  22:15         1,613,824 CONTROL01.CTL
2004-10-13  22:15         1,613,824 CONTROL02.CTL
2004-10-13  22:15         1,613,824 CONTROL03.CTL
2004-10-13  22:14        10,493,952 EYGLE01.DBF
2004-10-13  22:14        10,486,272 REDO01.LOG
2004-10-13  22:14        10,486,272 REDO02.LOG
2004-10-13  22:14        10,486,272 REDO03.LOG
2004-10-13  22:10               811 sqlnet.log
2004-10-13  22:14       262,152,192 SYSTEM01.DBF
2004-07-03  16:50        41,951,232 TEMP01.DBF
2004-10-13  22:14       209,723,392 UNDOTBS01.DBF
              11 個檔案    560,621,867 位元組
               2 個目錄  1,286,344,704 可用位元組

E:\Oracle\oradata\eygle>mkdir bak

E:\Oracle\oradata\eygle>cp *.* bak

E:\Oracle\oradata\eygle>exit
       
                      

2.建立檔案、建表

 

 

SQL> startup;
ORACLE 例程已經啟動。

Total System Global Area   47259136 bytes
Fixed Size                   454144 bytes
Variable Size              29360128 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> archive log start;
已處理的語句
SQL> archive log list;
資料庫日誌模式            存檔模式
自動存檔             啟用
存檔終點            e:\oracle\ora92\RDBMS
最早的概要日誌序列     30
下一個存檔日誌序列   32
當前日誌序列           32
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\ORADATA\EYGLE\SYSTEM01.DBF
E:\ORACLE\ORADATA\EYGLE\UNDOTBS01.DBF
E:\ORACLE\ORADATA\EYGLE\EYGLE01.DBF

SQL> create tablespace test datafile 'e:\oracle\oradata\eygle\test01.dbf'
  2  size 5m;

表空間已建立。


SQL> alter system switch logfile;

系統已更改。

SQL> create table t tablespace test as select * from dba_users;

表已建立。

SQL> alter system switch logfile;

系統已更改。

SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL> exit
從Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.5.0 - Production中斷開

E:\Oracle\oradata\eygle>mv TEST01.DBF bak    
   

 

3.恢復

 

 
E:\Oracle\oradata\eygle>sqlplus "sys/oracle as sysdba"

SQL*Plus: Release 9.2.0.5.0 - Production on 星期三 10月 13 22:41:48 2004

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

已連線到空閒例程。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area   47259136 bytes
Fixed Size                   454144 bytes
Variable Size              29360128 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 4 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 4: 'E:\ORACLE\ORADATA\EYGLE\TEST01.DBF'


SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\ORADATA\EYGLE\SYSTEM01.DBF
E:\ORACLE\ORADATA\EYGLE\UNDOTBS01.DBF
E:\ORACLE\ORADATA\EYGLE\EYGLE01.DBF
E:\ORACLE\ORADATA\EYGLE\TEST01.DBF

SQL> alter database create datafile 'E:\ORACLE\ORADATA\EYGLE\TEST01.DBF';

資料庫已更改。

SQL> recover datafile 'E:\ORACLE\ORADATA\EYGLE\TEST01.DBF';
完成介質恢復。
SQL> alter database open;

資料庫已更改。

SQL> host
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.

E:\Oracle\oradata\eygle>ls -l
total 1105221
-rwxrwxrwa   1 Administrators  SYSTEM          1613824 Oct 13 23:42 CONTROL01.CTL
-rwxrwxrwa   1 Administrators  SYSTEM          1613824 Oct 13 23:42 CONTROL02.CTL
-rwxrwxrwa   1 Administrators  SYSTEM          1613824 Oct 13 23:42 CONTROL03.CTL
-rwxrwxrwa   1 Administrators  SYSTEM          10493952 Oct 13 23:44 EYGLE01.DBF
-rwxrwxrwa   1 Administrators  SYSTEM          10486272 Oct 13 23:44 REDO01.LOG
-rwxrwxrwa   1 Administrators  SYSTEM          10486272 Oct 13 23:44 REDO02.LOG
-rwxrwxrwa   1 Administrators  SYSTEM          10486272 Oct 13 23:44 REDO03.LOG
-rwxrwxrwa   1 Administrators  SYSTEM          262152192 Oct 13 23:44 SYSTEM01.DBF
-rwxrwxrwa   1 Administrators  SYSTEM          41951232 Jul  3 17:50 TEMP01.DBF
-rwxrwxrwa   1 Administrators  SYSTEM          5251072 Oct 13 23:44 TEST01.DBF
-rwxrwxrwa   1 Administrators  SYSTEM          209723392 Oct 13 23:44 UNDOTBS01.DBF
drwxrwxrwx   1 gqgai           None                  0 Oct 13 23:41 bak
-rwxrwxrwa   1 gqgai           None                811 Oct 13 23:10 sqlnet.log

E:\Oracle\oradata\eygle>ls -l TEST01.DBF
-rwxrwxrwa   1 Administrators  SYSTEM          5251072 Oct 13 23:44 TEST01.DBF

E:\Oracle\oradata\eygle>   
   

總結:

此案例擁有當前控制檔案,控制檔案中包含了丟失檔案資訊,所以可以通過create datafile方式重新建立檔案,通過控制檔案中記錄的檔案
資訊、SCN、檢查點等資訊,應用歸檔日誌進行恢復,可以完成完全恢復.

原文地址:http://www.eygle.com/archives/2004/10/recover_without_datafile_backup.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8750110/viewspace-6861/,如需轉載,請註明出處,否則將追究法律責任。

相關文章