文件
注意:在做了alter database open resetlogs;会把online redelog file清空,数据文件丢失.所以这个时候要做一个全备份。
resetlogs命令表示一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始,每次使用resetlogs命令的时候,SCN不会被重置,不过oracle会重置日志序列号,而且会重置
联机重做日志内容.这样做是为了防止不完全恢复后日志序列会发生冲突(因为现有日志和数据文件间有了时间差)。
Rman 归档文件丢失导致不能备份的,在备份前先执行以下两条命令 crosscheck archivelog all; delete expired archivelog all;
补充知识: RECOVER DATABASE UNTIL CANCEL 和 RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE 区别
RECOVER DATABASE UNTIL CANCEL ==> DATAFILE HEADER SCN一定会小于CONTROLFILE的DATAFILE SCN 如果你有进行RESTORE DATAFILE,则该RESTORE的DATAFILE HEADER SCN一定会小于目前CONTROLFILE的DATAFILE SCN,此时会无法开启数据库,必须进行media recovery。 重做archive log直到该datafile header的SCN=current scn
RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE; ==> DATAFILE HEADER SCN一定会大于CONTROLFILE的DATAFILE SCN 如果只是某TABLE被DROP掉,没有破坏数据库整体数据结构,还可以用NCOMPLETE RECOVERY解决 如果是某个TABLESPACE OR DATAFILE被DROP掉,因为档案结构已经破坏,目前的CONTROL FILE内已经没有 该DATAFILE的信息,就算你只RESTORE DATAFILE然后进行INCOMPLETE RECOVERY也无法救回被DROP的DATA FILE。 只好RESOTRE 之前备份的CONTROL FILE(里头被DROP DATAFILE Metadata此时还存在),不过RESTOREC CONTROL FILE后 此时Oracle会发现CONTROL FILE内的SYSTEM SCN会小于目前的DATAFILE HEADER SCN,也不等于目前储存于LOG FILE内的SCN, 此时就必须使用RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE到DROP DATAFILE OR DROP TABLESPACE之前的SCN。
************* Scrip of RMAN ********************* Full backup
run {
allocate channel oem_backup_disk1 type disk format 'G:\\Full\\%U';
backup incremental level 0 cumulative as BACKUPSET tag '%TAG' database include current controlfile;
backup as BACKUPSET tag '%TAG' archivelog all not backed up; release channel oem_backup_disk1; }
Partial for Data file backup run {
allocate channel oem_backup_disk1 type disk format 'G:\\partial\\%U'; backup incremental level 0 cumulative as BACKUPSET tag '%TAG' datafile 'I:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\MSLTSD\\SYSTEM01.DBF', 'I:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\MSLTSD\\UNDOTBS01.DBF', 'I:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\MSLTSD\\SYSAUX01.DBF',
'I:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\MSLTSD\\USERS01.DBF' include current controlfile;
backup as BACKUPSET tag '%TAG' archivelog all not backed up; release channel oem_backup_disk1; }
allocate channel for maintenance type disk; delete noprompt obsolete device type disk; release channel;
Archive log file backup
run {
allocate channel oem_backup_disk1 type disk format 'E:\\OracleBackup\\MSLTSD\\ARCHIVELOG\\%U';
backup as BACKUPSET tag '%TAG' archivelog all not backed up 2 times;
delete noprompt archivelog until time 'sysdate - 2' backed up 2 times to device type disk;
release channel oem_backup_disk1; }