oracle恢复
一、数据库关闭状态下恢复
如果系统表空间发生损坏此时只能在关闭状态下进行恢复
1.关闭数据库实例
shutdown immediate;
将数据库启动到mount状态
startup mount;
2.还原数据文件
此处直接拷贝了备份的数据文件
此处是从备份好的数据文件拷贝过来
cp /01/ubackup/cold/app1_01.dbf . ## 将备份好的数据文件拷贝到当前目录
可以查看试图v$recover_file;查看需要恢复的文件信息
select * from v$recover_file;
3.恢复数据文件
recover database;-- 直接全部恢复
recover datafile 1; -- 根据数据文件的编号恢复此处用1举例
然后
将数据库打开
alter database open;
二、数据库打开状态进行恢复
1.将数据文件置于offline状态
查看需要恢复的数据文件信息
select * from v$recover_file;
离线数据文件
alter database datafile 6 offline;
2.还原数据文件
此处是从备份好的数据文件拷贝过来
cp /01/ubackup/hot/app1_01.dbf . ## 将备份好的数据文件拷贝到当前目录
3.恢复数据文件
recover datafile 6;
恢复完之后将数据文件置于在线状态
alter database datafile 6 online;
三、没有备份数据集文件的恢复
适用情况:控制文件没有被重新创建,不能是系统表空间的。
创建数据文件来模拟情景
create tablespace app2 datafile '/u01/oradata/morewood/app02_01.dbf'/ size 10M;
然后把改文件删掉。接下来
输入命令查看文件编号发现是7
离线数据文件
alter database datafile 7 offline;
然后新建一个数据文件
alter database create datafile '/u01/oradata/morewood/app02_01.dbf';
恢复书数据文件
recover datafile 7
然后将数据文件修改成在线状态
alter database datafile 7 online;
四、控制文件恢复
1.部分丢失
直接修改参数文件将控制文件路径改成其他控制文件,或者复制一个别的控制文件。
2.完全丢失
NORESETLOGS case
要想完成必须要有控制文件的备份
此时已准备好
拷贝一份备份集命名为c1.sql
然后编辑c1.sql
vi c1.sql
将RESETLOGS case及以下的部分全部删掉
执行脚本
此时备份完成