设为首页 加入收藏

TOP

Oracle备份恢复详(二)
2015-11-21 02:09:51 来源: 作者: 【 】 浏览:2
Tags:Oracle 备份 恢复
件的完全丢失在实际意义上都是完全丢失

当备份成二进制文件时
> alter database backup controlfile to '/u01/control.bak'; (首先先备份控制文件)
物理上删除控制文件
> shutdown abort; (这个时候理论上正常关机是关闭不了的)
物理上拷贝控制文件
$ cp control.bak /u01/app/oracle/oradata/dodo/control01.ctl
$ cp control.bak /u01/app/oracle/oradata/dodo/control02.ctl
$ cp control.bak /u01/app/oracle/oradata/dodo/control03.ctl
$ sqlplus / as sysdba
> startup mount
> recover database using backup controlfile; (告诉数据库现在的的控制文件是旧的)
如果归档之前配置过,则可以选择AUTO就行
/u01/app/oracle/oradata/dodo/redo02.log
Log applied.
Media recovery complete.
可能会报错:则可能是损坏后时间太短,还没有来得及切换日志组;也有可能是控制文件旧的,找不到目前的组
这个时候就需要选择filename 一个一个的去试用redo01.log redo02.log redo03.log
> alter database open resetlogs;


当备份成脚本时
> alter database backup controlfile to trace as '/u01/control.sql'; (备份控制文件)
把脚本里面的内容拷贝过来
$ rm -rf *.ctl
> shutdown abort
> startup nomount
> @createctl
这个时候创建的控制文件是最新的,并且数据库会自动切换到mount状态
但是这个时候临时文件是不可用的,需要把脚本里面和临时文件有关的也要拷贝上或者运行一次
> desc V$database;
> select open_mode from v$database;
> recover database;
> alter database open;

控制文件和在线文件都丢失,resetlogs
这个时候所有的文件都不一致了,原来是靠在线日志文件把控制文件拉到最新
冷备份,来保证控制文件和在线日志文件保持一次
在物理上将控制文件和在线日志文件全部删除
$ rm -rf *ctl
$ rm -rf *log
> shutdown abort
> startup nomount
$ rm -rf *dbf
把数据文件删除,然后再把冷备份的数据文件拷贝进去(因为在冷备份里面是一致性的)
$ cp *dbf /u01/app/oracle/oradata/dodo/
> @createctl (运行脚本将控制文件恢复)
> recover database using backup controlfile until cancel;
然后接下来选择 auto 然后在运行一次 cancel
> alter database open resetlogs;
这个只能恢复到归档的最新状态

场景:在数据库结构变化后,没有备份控制文件,这个时候控制文件丢失了,在老的控制文件里面是没有新的表空间,但事实中确实存在新的表空间,使用旧的控制文件来恢复

新建一个表空间

在物理上删除控制文件
> shutdown abort
然后在物理上把三个都拷贝进去
> startup mount
> recover database using backup controlfile
先auto 找不到再找redo
> desc v$datafile;
> select name from v$datafile; 会发现一个不正常的文件
> alter database rename file '/home/oracle......' to '/home/xinming';
> recover database using backup controlfile;
然后就会显示complete
> alter database open resetlogs;


不完全恢复
基于时间,基于用户干涉,基于SCN
基于时间的:会丢数据,在迫不得已的情况下才进行
比如删除了某个用户之类的,alter是有一个表格,可以在里面进行查找时间
$ cd admin/xinming/bdump/
> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual;
冷备和热备份不能跨多个生命周期,如果有resetlogs等操作需要重新备份
> drop user qq cascade;
> shutdown immediate;
在物理上将现在的数据文件全部删除
从冷备中将数据文件拷贝回来
> recover database until time '2015-03-04 11:46:00';
这个是不完全恢复
> alter database open resetlogs;
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇玩转oracle学习第四天 下一篇32bit的windows2008,Oracle实例..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: