天天看点

oracle实验记录 (恢复-恢复未备份的数据文件)

需要有表空间建立以来 到 数据文件损坏时所有日志,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/