rman没有控制文件和参数文件,如何恢复? 我的备份脚本是: [root@localhost ~]# vim /oracle/backup/scripts/rman_full_backup.sh
#!/bin/sh export DATE=`date +%F` export BACK_DIR='/data/oracle/backup/data' su - oracle -c " mkdir -p $BACK_DIR/$DATE rman log=$BACK_DIR/$DATE/rman_backup.log target / <<EOF run{ backup as compressed backupset database format '$BACK_DIR/$DATE/full_%d_%T_%s.bak' plus archivelog format '$BACK_DIR/$DATE/arch_%d_%T_%s.bak' delete input; sql 'alter system archive log current'; } crosscheck backup; crosscheck archivelog all; delete noprompt expired backup; delete noprompt expired archivelog all; delete noprompt obsolete; exit EOF " su - oracle -c " chmod 775 $BACK_DIR/$DATE/* " cd /home/pdbcakup/ echo "begin to copy the backup to pd servers." >> /tmp/oracle_fullback.log cp -r $BACK_DIR/$DATE /home/pdbcakup echo "end to copy the backup to pd server." >> /tmp/oracle_fullback.log
rman备份信息: RMAN> show all;
using target database control file instead of recovery catalog RMAN configuration parameters for database with db_unique_name PDUNQ are: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS; CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/data/oracle/backup/data/ctl_auto/%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_stuorcl.f'; # default
RMAN>
现在要恢复1月23日的数据,备份集合如下: [oracle@powerlong4 2015-01-23]$ ll total 9049204 -rwxr-xr-x. 1 oracle oinstall 238567936 Feb 3 11:44 arch_stuorcl_20150123_3050.bak -rwxr-xr-x. 1 oracle oinstall 1614336 Feb 3 11:44 arch_stuorcl_20150123_3052.bak -rwxr-xr-x. 1 oracle oinstall 9026142208 Feb 3 18:00 full_stuorcl_20150123_3051.bak -rwxr-xr-x. 1 oracle oinstall 46776 Feb 3 18:01 rman_backup.log [oracle@powerlong4 2015-01-23]$
CREATE CONTROLFILE REUSE set DATABASE"HGQ" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 454
DATAFILE
'E:\oracle\oradata\HGQ\SYSTEM01.DBF',
'E:\oracle\oradata\HGQ\UNDOTBS01.DBF',
'E:\oracle\oradata\HGQ\SYSAUX01.DBF',
'E:\oracle\oradata\HGQ\USERS01.DBF',
'E:\oracle\oradata\HGQ\TEST01.DBF',
'E:\oracle\oradata\HGQ\EXAMPLE01.DBF',
'E:\oracle\oradata\HGQ\FJBB01.DBF',
'E:\oracle\oradata\HGQ\HGQ.DBF',
'E:\oracle\oradata\HGQ\HWFX1.DBF',
'E:\oracle\oradata\HGQ\KFYY01.DBF'
LOGFILE
GROUP 1 ('E:\oracle\oradata\HGQ\REDO01.LOG') SIZE 10M,
GROUP 2 ('E:\oracle\oradata\HGQ\REDO02.LOG') SIZE 10M,
GROUP 3 ('E:\oracle\oradata\HGQ\REDO03.LOG') SIZE 10M
CHARACTER SET ZHS16GBK; ------解决思路---------------------- 你用的我的代码了?要改的。 上面有个参数,noresetlogs或者resetlogs,如果你日志文件 没有问题,那么就用noresetlogs,这时候是完全恢复; 如果你的日志文件有问题,那么就用resetlogs,oracle认定 是日志文件已经丢失,这时候回复是不完全恢复。 最后要执行recover database; alter database open/alter database open resetlogs;
------解决思路----------------------
如果是noresetlogs, 后面执行recover dtabase; alter database open; 如果是Resetlogs, 后面执行recover database using backup controlfile until cancel, 如果在线日志没有随坏,直接写入指定的在线日志,或者直接利用 归档,但是最后一个归档是不存在的,输入cancel取消回复, 然后强制打开数据库alter databaes open resetlogs;
------解决思路----------------------
你用的我的代码了?要改的。 上面有个参数,noresetlogs或者resetlogs,如果你日志文件 没有问题,那么就用noresetlogs,这时候是完全恢复; 如果你的日志文件有问题,那么就用resetlogs,oracle认定 是日志文件已经丢失,这时候回复是不完全恢复。 最后要执行recover database; alter database open/alter database open resetlogs;
SQL> CREATE CONTROLFILE REUSE set DATABASE "powerdes" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 454 DATAFILE '/home/oradata/powerdes/system01.dbf', '/home/oradata/powerdes/sysaux01.dbf', 2 3 4 5 6 7 8 9 10 '/home/oradata/powerdes/undotbs01.dbf', '/home/oradata/powerdes/users01.dbf', '/home/oradata/powerdes/powerdesk01.dbf', '/home/oradata/powerdes/plas01.dbf', '/home/oradata/powerdes/pl01.dbf', '/home/oradata/powerdes/help01.dbf', '/home/oradata/powerd 11 12 13 14 15 16 es/adobelc01.dbf', '/home/oradata/powerdes/sms01.dbf' LOGFILE GROUP 1 ('/home/oradata/powerdes/redo03.log') SIZE 10M, GROUP 2 ('/home/oradata/powerdes/redo02.log') SIZE 10M, GROUP 3 ('/home/oradata/powerdes/redo01.log') SIZE 10M, GROUP 4 ('/home/or 17 18 19 20 21 22 adata/powerdes/redo_dg_01.log') SIZE 10M, GROUP 5 ('/home/oradata/powerdes/redo_dg_02.log') SIZE 10M, GROUP 6 ('/home/oradata/powerdes/redo_dg_03.log') SIZE 10M CHARACTER SET ZHS16GBK NORESETLOGS; 23 24 25 26 NORESETLOGS * ERROR at line 26: ORA-01968: Only specify RESETLOGS or NORESETLOGS once
备份集里面没有控制文件的,恢复不到控制文件。 RMAN> restore controlfile to '/oracle/data_ora/stuorcl/control01.ctl' from '/oracle/app/oracle/flash_recovery_area/POWERDES/backupset/2015-01-23/arch_POWERDES_20150123_3050.bak';
Starting restore at 04-FEB-15 using channel ORA_DISK_1
channel ORA_DISK_1: restoring control file RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of restore command at 02/04/2015 15:20:13 ORA-19870: error while restoring backup piece /oracle/app/oracle/flash_recovery_area/POWERDES/backupset/2015-01-23/arch_POWERDES_20150123_3050.bak ORA-19626: backup set type is archived log - can not be processed by this conversation
RMAN>
我刚才说的重建控制文件。 你不是说了自动备份的控制文件丢失了吗?/data/oracle/backup/data/ctl_auto/%F'这个目录丢掉了? 如果控制文件丢了和控制文件备份丢了,那肯定不能使用你的备份进行恢复了。 你试了restore spfile from autobackup;不行嘛? 你试试这样行吗?restore controlfile from 'E:\oracle1\product\11.2.0\dbhome_1\database\SNCFQIN.ORA‘; 你找一下这个文件SNCFQIN.ORA ,那个qin换成你自己的oraclesid
------解决思路---------------------- restore controlfile from 'E:\oracle1\product\11.2.0\dbhome_1\database\SNCFQIN.ORA‘; 如果这个没丢怎么不可以,我看了你的conrolfile autobackup on自动备份是启动的,oracle 每次备份或者重要操作时候都会自动备份控制文件,这个文件就是oracle隐藏的备份。如果 你没有修改位置,就默认这个位置。