Oracle备份与恢复:冷备份恢复
模拟数据库数据文件丢失的情况下,通过丢失之前的数据文件物理备份做恢复;
说明:数据文件丢失前一刻的所有归档日志都存在。
环境:oracle10g +rhel5
1.关闭数据库,copy system01.dbf、user01.dbf 到同目录的bak目录下备份
注意:这一步要注意一个细节
cp -p system01.dbf bak
------一定要带-p参数,这样文件的属性就一同拷贝过去了。否则该文件的owner 是root,你后面恢复时,因为owner 原因,oracle不认。
2.为了能观察整个备份恢复的效果,创建一个表
startup
create table t(id int ,scn number)tablespace users;
插入数据
insert into t values(1,dbms_flashback.get_system_change_number);
insert into t values(2,dbms_flashback.get_system_change_number);
insert into t values(3,dbms_flashback.get_system_change_number);
commit;
alter system switch logfile;
insert into t values(4,dbms_flashback.get_system_change_number);
insert into t values(5,dbms_flashback.get_system_change_number);
commit;
alter system switch logfile;
3.关闭数据库 ,删除 system01.dbf、user01.dbf文件。
4.启动数据库
如图提示system01.dbf 不能打开,因为已经删除。
5. 从bak中恢复system01.dbf,再次open数据库
这次系统会提示你要media recovery,即从归档日志中恢复数据; enter即可。
如果从scn角度来看,你未恢复dbf之前,你可以通过
select file#,checkpoint_change# from v$datafile_header来查看数据文件scn的变化情况。
即此时,checkpoint_change#=0的。你recover后,,checkpoint_change#会恢复到最近的scn。
数据库正常启动的前提是:系统scn、数据文件头scn、控制文件scn 都必须一致。
6.再次open数据库
会提示user01.dbf 不存在,如上操作,从归档日志中恢复insert的数据。再次open数据库,正常启动了。
查看一下表数据是否丢失,恩,都恢复回来了。
这时你再次查看scn,就都一样的了。
至此,冷备份恢复完成。
最新文章
- ajax的简单介绍
- Educational Codeforces Round 6 E dfs序+线段树
- VC环境配置办法
- Openxml入门---Openxm读取Excel数据
- BeanFactory 和ApplicationContext(Bean工厂和应用上下文)
- 实战3--应用EL表达式判断用户登录信息
- IOS开发之——友盟社会化分享UMSocial_SDK的使用
- 【Android】ListView监听上下滑动(判断是否显示返回顶部按钮
- CodeForces Round #279 (Div.2)
- linux使用man命令后退出
- doc-remote-debugging.html
- 苹果笔记本安装windows正版操作系统
- .Net圈子里的一些看法
- spring boot + vue + element-ui全栈开发入门——主页面开发
- PMP:3.项目经理角色
- 排序算法<;No.6>;【插入排序】
- Spring Boot 2 实践记录之 条件装配
- linux shell 删除指定文件夹下面 名称不包含指定字符的文件
- 在Linux上使用C语言编程获取IPv4地址及子网掩码
- .NET Core是什么