需要有表空间建立以来 到 数据文件损坏时所有日志,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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12020513/viewspace-615918/