1.非归档模式下数据恢复(原磁盘损坏的情况下)
1、把归档模式变为非归档模式
在mount状态下,执行:SQL> alter database noarchivelog;
2、SQL> alter database open;
3、查看SQL> archive log list;
4、修改pfile
5、根据pfile创建spfile
SQL> create spfile from pfile='E:/oracle/product/10.2.0/admin/orcl/pfile/init.or
a.6182010122037';
7、查看文件
select file#,name from v$datafile;
FILE# NAME
--------- -------------------------------------------------------
1 E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF
2 E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF
3 E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF
4 E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF
5 E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF
6 E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TABS.DBF
8、修改文件路径
SQL> alter database rename file 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.
DBF' to 'E:/oracle/ubackup/SYSTEM01.DBF';
9、查看临时文件
select file#,name from v$temp
10、修正临时文件路径
11、查看redo.log文件路径
SQL> select group#,type,member from v$logfile;
12、修正redo.log文件路径
SQL> alter database rename file 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LO
G' to 'E:/oracle/ubackup/REDO01.LOG';
13、修改数据库为open状态
alter database open;
14、验证数据库
select * from emp;
2.未保留redo.log文件而创建此文件(非归档模式下数据恢复)
1、此数据库在mount状态下。
2、执行:SQL> recover database util cancel using backup controlfile;
3、输入cancel
4 、执行:SQL> alter database open resetlogs;
3.归档模式下的恢复
1、相关视图
v$recover_file,v$archived_log,v$recovery_log
3.归档模式下完全恢复
(准备)
1.冷备份所有文件(表T里一条记录),
2.热备份tab.dbf数据文件(表T里二条记录)
1、数据库在关闭状况下,恢复
1.删除所有数据文件(模拟数据文件损坏)
2.拷贝冷备份数据文件到原目录下
3.执行startup报错
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 293601280 bytes
Fixed Size 1248600 bytes
Variable Size 79692456 bytes
Database Buffers 205520896 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'E:/ORACLE/UBACKUP/SYSTEM01.DBF'
4.查看需要恢复的文件
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ------ ---------- --------------
1 ONLINE ONLINE 5956252 05-9月 -10
2 ONLINE ONLINE 5956252 05-9月 -10
3 ONLINE ONLINE 5956252 05-9月 -10
4 ONLINE ONLINE 5956252 05-9月 -10
5 ONLINE ONLINE 5956252 05-9月 -10
6 ONLINE ONLINE 5956252 05-9月 -10
已选择6行。
5.关闭自动恢复
SQL> set autorecovery off;
6.恢复数据文件
SQL> recover database;
或逐个恢复文件
SQL>recover datafile 1;
7.再次查看需要恢复的文件
SQL> select * from v$recover_file;
8.修正数据库为open状态
9.检验表T(多条记录)
2.据库在关闭状况下,恢复
准备:在表T中插入一条记录
破坏数据文件tabs.dbf
向表T中插入一条记录(报错)
1.查看要恢复的文件
SQL> select * from v$recover_file;
2.offline此损坏的数据文件
SQL> alter database datafile 6(文件标号) offline;
3.拷贝tabs.dbf从冷备或热备中拷贝过来
4.恢复数据文件
SQL> recover datafile 6;
5.再次查询要恢复的文件
6.查看各数据文件状态
SQL> select file#,ts#,status,name from v$datafile;
FILE# TS# STATUS NAME
---------- ---------- ------- ----------------------------------------
1 0 SYSTEM E:/ORACLE/UBACKUP/SYSTEM01.DBF
2 1 ONLINE E:/ORACLE/UBACKUP/UNDOTBS01.DBF
3 2 ONLINE E:/ORACLE/UBACKUP/SYSAUX01.DBF
4 4 ONLINE E:/ORACLE/UBACKUP/USERS01.DBF
5 6 ONLINE E:/ORACLE/UBACKUP/EXAMPLE01.DBF
6 7 OFFLINE E:/ORACLE/UBACKUP/TABS.DBF
7.恢复数据文件为可用状态
SQL> alter database datafile 6 online;
8.查看验证
SQL> select * from t;
本文详细介绍Oracle数据库在不同模式下的数据恢复流程,包括非归档模式和归档模式下的恢复步骤,以及冷备份和热备份的具体操作方法。
195

被折叠的 条评论
为什么被折叠?



