oracle實驗記錄 (恢復-恢復未備份的資料檔案)

fufuh2o發表於2009-09-30


需要有表空間建立以來 到 資料檔案損壞時所有日誌,archivelog

 


手動方式

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

 

SQL> col file_name format a40
SQL> col tablespace_name format a10
SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE FILE_NAME
---------- ----------------------------------------
XHTEST     D:\XHDATAFILE\XHTEST.DBF
RMAN_TS    D:\XHDATAFILE\RMANDF.DBF
EXAMPLE    D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\EXAM
           PLE01.DBF

USERS      D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\USER
           S01.DBF

SYSAUX     D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSA
           UX01.DBF


TABLESPACE FILE_NAME
---------- ----------------------------------------
UNDOTBS1   D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\UNDO
           TBS01.DBF

SYSTEM     D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYST
           EM01.DBF

XHTR       D:\XHDATAFILE\XHTR.DBF
OUTLINE_TS D:\XHDATAFILE\OUTLINE.DBF
SMALLTS    D:\XHDATAFILE\SMALLFILE.DBF

已選擇10行。

SQL>
已選擇10行。

SQL> create tablespace nobackup datafile 'd:\xhdatafile\nobackup.dbf' size 10m;

表空間已建立。

SQL> create table nt (a int) tablespace nobackup;

表已建立。

SQL> insert into nt values(1);

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from nt
  2  ;

         A
----------
         1

SQL> select tablespace_name from user_tables where table_name='NT';

TABLESPACE
----------
NOBACKUP

SQL> alter system switch logfile;

系統已更改。

SQL> alter system checkpoint;

系統已更改。
SQL> alter tablespace nobackup read only;

表空間已更改。

SQL> host del d:\xhdatafile\nobackup.dbf;
d:\xhdatafile\NOBACKUP.DBF
另一個程式正在使用此檔案,程式無法訪問。

SQL> alter database datafile 'd:\xhdatafile\nobackup.dbf' offline;

資料庫已更改。

SQL> host del d:\xhdatafile\nobackup.dbf;

 


SQL> alter database datafile 'd:\xhdatafile\nobackup.dbf' online;
alter database datafile 'd:\xhdatafile\nobackup.dbf' online
*
第 1 行出現錯誤:
ORA-01157: 無法標識/鎖定資料檔案 11 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 11: 'D:\XHDATAFILE\NOBACKUP.DBF'


SQL> alter database create datafile 'D:\XHDATAFILE\NOBACKUP.DBF';~~~~~~~~~~~~~~~~~~~~~

資料庫已更改。

SQL> recover datafile 11;
完成介質恢復。
SQL> alter database datafile 'd:\xhdatafile\nobackup.dbf' online;

資料庫已更改。

SQL> alter tablespace nobackup read write;

表空間已更改。

SQL> select * from nt;

         A
----------
         1


rman 方式

 

SQL> select * from nt;

         A
----------
         1

SQL> alter database datafile 'd:\xhdatafile\nobackup.dbf' offline;

資料庫已更改。

SQL> host del d:\xhdatafile\nobackup.dbf;

SQL> select * from nt;
select * from nt
              *
第 1 行出現錯誤:
ORA-00376: 此時無法讀取檔案 11
ORA-01110: 資料檔案 11: 'D:\XHDATAFILE\NOBACKUP.DBF'

 

C:\>rman target /

恢復管理器: Release 10.2.0.1.0 - Production on 星期三 9月 30 17:31:32 2009

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

連線到目標資料庫: XH (DBID=3093395309)

RMAN> list backup of datafile 11
2> ;
~~~~~~~~~~~~~~~~~~~~~~~~沒有備份

RMAN>
RMAN> run{restore datafile 11;
2> recover datafile 11;
3> sql 'alter database datafile 11 online';
4> }

啟動 restore 於 30-9月 -09
使用通道 ORA_DISK_1
~
建立資料檔案 fno = 11 名稱 = D:\XHDATAFILE\NOBACKUP.DBF~~~~~~~~~~~~rman會自動建立 未備份的資料檔案
沒有完成恢復; 所有檔案均為只讀或離線檔案或者已經恢復
完成 restore 於 30-9月 -09

啟動 recover 於 30-9月 -09
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:03

完成 recover 於 30-9月 -09

sql 語句: alter database datafile 11 online
SQL> select * from nt;

         A
----------
         1

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

相關文章