ORA-01110: data file 3: 'D:\\Oracle\\ORADATA\\TEST\\USER01.DBF'
6、 先打开数据库
SQL> alter database datafile 3 offline drop; Database altered.
SQL> alter database open; Database altered.
7、 恢复该表空间
恢复脚本可以是恢复单个数据文件 run{
allocate channel c1 type disk; restore datafile 3; recover datafile 3;
sql 'alter database datafile 3 online'; release channel c1; }
也可以是,恢复表空间 run{
allocate channel c1 type disk; restore tablespace users; recover tablespace users;
sql 'alter database datafile 3 online'; release channel c1;
}
过程如下: C:\\>rman
Recovery Manager: Release 8.1.6.0.0 - Production RMAN> connect rcvcat rman/rman@back
RMAN-06008: connected to recovery catalog database RMAN> connect target internal/virpure
RMAN-06005: connected to target database: TEST (DBID=1788174720)
RMAN> run{
2> allocate channel c1 type disk; 3> restore datafile 3; 4> recover datafile 3;
5> sql 'alter database datafile 3 online'; 6> release channel c1; 7> }
//输出内容冗长,省略--编者 RMAN>
8、 检查数据是否完整 SQL> alter database open; Database altered.
SQL> select * from test; A
--------------------------------------- 1 2 说明:
1、RMAN也可以实现单个表空间或数据文件的恢复,恢复过程可以在mount下或open方式下,如果在open方式下恢复,可以减少down机时间; 2、如果损坏的是一个数据文件,建议offline并在open方式下恢复; 3、这里可以看到,RMAN进行数据文件与表空间恢复的时候,代码都比较简单,而且能保证备份与恢复的可靠性,所以建议采用RMAN的备份与恢复.
4.3丢失多个数据文件,实现整个数据库的恢复.
4.3.1 OS备份方案
OS备份归档模式下损坏(丢失)多个数据文件,进行整个数据库的恢复 1、 连接数据库,创建测试表并插入记录 SQL> connect internal/password as sysdba; Connected.
SQL> create table test(a int); Table created
SQL> insert into test values(1); 1 row inserted
SQL> commit; Commit complete
2、 备份数据库,备份除临时数据文件后的所数据文件 SQL> @hotbak.sql 或在DOS下 svrmgrl @hotbak.sql
3、 继续在测试表中插入记录 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete
SQL> select * from test; A
--------------------------------------- 1 2 SQL> alter system switch logfile; System altered.
SQL> alter system switch logfile; System altered.
4、 关闭数据库,模拟丢失数据文件 SQL> shutdown immediate; Database closed.
Database dismounted. Oracle instance shut down
C:\\>del D:\\Oracle\\ORADATA\\TEST\\SYSTEM01.DBF C:\\>del D:\\Oracle\\ORADATA\\TEST\\INDX01.DBF C:\\>del D:\\Oracle\\ORADATA\\TEST\\TOOLS01.DBF C:\\>del D:\\Oracle\\ORADATA\\TEST\\RBS01.DBF 模拟媒体毁坏(这里删除多个数据文件)
5、 启动数据库,检查错误 SQL> STARTUP
Oracle instance started.
Total System Global Area 102020364 bytes Fixed Size 70924 bytes Variable Size 85487616 bytes Database Buffers 16384000 bytes Redo Buffers 77824 bytes Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: 'D:\\Oracle\\ORADATA\\TEST\\SYSTEM01.DBF'
详细信息可以查看报警文件
ORA-1157 signalled during: ALTER DATABASE OPEN... Thu May 08 09:39:36 2003