打开数据库,必须满足以下条件:
1、所有控制文件都必须存在且已同步
2、所有联机数据文件都必须存在且已同步
3、每个重做日志组必须至少有一个成员存在
打开数据库后,如果丢失以下项时数据库就会失败:
1、任何控制文件
2、属于系统或还原表空间的数据文件
3、整个重做日志组
(只要组中至少有一个成员可用,实例就会保持在打开状态)
1、数据文件丢失如何恢复
i.在NOARCHIVELOG模式下丢失了数据文件
Ii.在ARCHIVELOG模式下
丢失了非关键数据文件
丢失了系统关键数据文件
2、数据故障如何解决
如上的一些常规的数据故障,只要数据恢复向导在MOUT或者OPEN阶段即可采用数据恢复向导解决:
1、控制文件的丢失:
i.部分丢失
a.关闭数据库
b.复制存在的给丢失的
cp/u01/oracle/oradata/wyzc10g/control01.ctl/u01/oracle/flash_recovery_area/WYZC10G/control02.ctl
c.启动数据库
实例启动阶段:
复制给丢失的
Alterdatabase mount;
Alterdatabase open;
Ii.全部丢失
a.利用备份恢复(RMAN)
b.利用脚本重建控制文件
操作步骤:
1、备份当前的控制文件
[oracle@wyzc ~]$rman target /.
RMAN> backupcurrent controlfile;
2、删除控制文件
[oracle@wyzc wyzc10g]$ rm/u01/oracle/oradata/wyzc10g/control0*
[oracle@wyzcflash_recovery_area]$ rm /u01/oracle/flash_recovery_area/WYZC10G/control02.ctl
3、重启数据库->abort关闭,nomout打开,而后恢复控制文件
[oracle@wyzc2016_09_08]$ ls /u01/oracle/flash_recovery_area/WYZC10G/backupset/2016_09_08/
o1_mf_ncnnf_TAG20160908T000419_cx0gn3v7_.bkp(ncnn*表示控制文件)
如上,找到之前的备份文件,而后做恢复
RMAN> restorecontrolfile from '/u01/oracle/flash_recovery_area/WYZC10G/backupset/2016_09_08/
2>o1_mf_ncnnf_TAG20160908T000419_cx0gn3v7_.bkp';
Starting restore at08-SEP-16
using targetdatabase control file instead of recovery catalog
allocated channel:ORA_DISK_1
channel ORA_DISK_1:sid=211 devtype=DISK
channel ORA_DISK_1:restoring control file
channel ORA_DISK_1:restore complete, elapsed time: 00:00:03
outputfilename=/u01/oracle/oradata/wyzc10g/control01.ctl
outputfilename=/u01/oracle/flash_recovery_area/WYZC10G/control02.ctl
Finished restore at08-SEP-16
执行完毕之后,可以看到control_files中的控制文件已恢复
4、将数据库恢复为OPEN状态
RMAN> alterdatabase mount;
database mounted
RMAN> recoverdatabase;
XXXXXXXXX
RMAN> alterdatabase open;
RMAN-00571:===========================================================
RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571:===========================================================
RMAN-03002: failureof alter db command at 09/08/2016 00:23:20
ORA-01589: must useRESETLOGS or NORESETLOGS option for database open
直接OPEN是打不开的,需要用以下指令
RMAN> alterdatabase open;
RMAN-00571:===========================================================
RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571:===========================================================
RMAN-03002: failureof alter db command at 09/08/2016 00:23:20
ORA-01589: must useRESETLOGS or NORESETLOGS option for database open
RMAN> alterdatabase open resetlogs;
database opened