手工备份恢复oracle数据库
Posted 750657961
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手工备份恢复oracle数据库相关的知识,希望对你有一定的参考价值。
手工备份恢复oracle数据库:
虽然已经有了rman工具
但是手工恢复oracle能够让你对oracle数据库有更加深入的了解
数据库一致性开机条件:
数据文件 scn,控制文件 scn,redo scn一致
控制文件记录:
数据文件应该到达的scn
当前redo
数据的物理结构信息
归档信息
前提条件:
归档日志开启
数据文件有备份
控制文件有备份
备份数据:
数据文件备份:
数据文件进入备份模式:
select \'alter tablespace \'|| tablespace_name||\' begin backup;\' from dba_tablespaces where tablespace_name not like \'%TEMP%\';
确认进入备份状态:
再操作系统执行物理拷贝命令:
cp *.dbf /home/oracle/sg_backup_dbf/
拷贝完成,退出备份模式:
数据文件备份完成!!!
备份完成切换几次归档(多切换几次)
alter system switch logfile;
控制文件备份:
备份成二进制的形式:
SQL>alter database backup controlfile to \'/home/oracle/backup_ctl/PROD4_CTL_20170703\';
备份成逻辑文件:
SQL> alter database backup controlfile to trace as \'/home/oracle/backup_ctl/prod4.ctl\';
一、表空间数据文件删除恢复:
重启数据报错:
根据提示查看数据文件已经不存在(被删除)
通过拷贝先前备份数据文件进行恢复:
cp /home/oracle/sg_backup_dbf/* .
查看scn号:(不一致状态)
通过执行recover database进行数据恢复()
启动数据库:
SQL> alter database open;
#恢复完成!
二、控制文件被删除:
重启数据库:
通过老版本数据文件恢复:
cp /home/oracle/backup_ctl/PROD4_CTL_20170703 ./control01.ctl
cp /home/oracle/backup_ctl/PROD4_CTL_20170703 ./control02.ctl
再次重启:
执行恢复:
SQL> recover database using backup controlfile until cancel;
#auto 模式
报错:
(旧的控制文件并不知道redo的情况)
再次执行恢复:
SQL> recover database using backup controlfile until cancel;
#Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
#/u01/app/oracle/oradata/PROD4/PROD4/redo01.log #使用指定的redo文件恢复(手动输入这行)
开机:
SQL> altr database open resetlogs;
恢复完成!
控制文件损坏进行恢复后需要进行一次全备
使用altr database open resetlogs; 开机时,重新初始化了redolog,
archive log,以前的数据文件的备份全部失效
删除无用archive log
三、当前redo损坏
重启数据库无法开机
恢复:
删除数据文件
使用旧备份恢复数据文件
恢复和前面提到的类似:
恢复命令:
recover database using backup controlfile until cancel;
#auto
recover database using backup controlfile until cancel;
#cancel
删除控制文件
关闭数据库
使用备份的逻辑控制文件恢复控制文件(找出类似如下部分,直接执行)
(恢复控制文件时需要数据文件,但是使用现在的数据文件是不行的,这就是前面先删除数据文件再恢复的原因)
执行开机:
alter database open resetlogs;
全备
删除无用archive log
总结:
一致性开机的原理
scn号
开机的步骤
开机的所需文件
以上是关于手工备份恢复oracle数据库的主要内容,如果未能解决你的问题,请参考以下文章