Oracle rman备份还原

  备份脚本:

 oracle备份fullbak.sh 脚本

. /u01/prod/db/12.1.0/PROD_erpdbp.env
LOGDATE="`date '+%Y%m%d'`"
#delete backup logfile
find /u01/backup/log -mtime +360 |xargs rm -f
rman target / cmdfile=/u01/backup/scripts/fullbak.rman log=/u01/backup/log/fullbak_$LOGDATE.log
 
rman备份脚本fullbak.rman:
run{
sql 'alter system archive log current';
      allocate channel ch1 type disk;
      allocate channel ch2 type disk;
      allocate channel ch3 type disk;
      backup as compressed backupset incremental level 0 database format '/u01/backup/data/db_%d_%T_%U.bak' plus archivelog format '/u01/backup/data/arch_%d_%T_%U.bak' delete all input; 
      CONFIGURE CONTROLFILE AUTOBACKUP on; 
      release channel ch1;
      release channel ch2;
      release channel ch3;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
delete expired archivelog all;
report obsolete;
delete noprompt obsolete;
}

RMAN 还原:

查看oracle的控制文件备份信息:
list backup of controlfile;
用rman恢复数据:
 1,startup nomount;
 2,set dbid= 365215955;
 3,restore controlfile from '/u01/bak/db_PROD_20190807_41u8j1iv_1_1.bak';
 4,startup mount;
5,catalog start with '/u01/bak/';
 6,restore database
 7,recover database;
 8,alter database open resetlogs;

这里的 set dbid= 365215955 要和主库的一致 ,查看主库sql: select dbid from v$database;

 
recover database until scn 5971330707288;
 
create undo tablespace undotb2 datafile '/u01/prod/db/data/undotb12.dbf' 
size 1024M autoextend on next 10M maxsize 12048M;
 
提示错误:
ORA-30012: undo tablespace 'UNDOTBS1' does not exist or of wrong type
 
强制打开数据库:
startup force;
重新创建undo表空间
create undo tablespace undotb2 datafile '/u01/prod/db/data/undotb12.dbf' size 1024M autoextend on next 10M maxsize 12048M
在设置spfile文件
alter system set undo_tablespace=undotb2 scope=spfile;
修改undo的管理模式
alter system set undo_management=auto scope=spfile;
创建undo的表空间文件
create undo tablespace undotb2 datafile '/u01/prod/db/data/undotb12.dbf' size 1024M autoextend on next 10M maxsize 12048M
posted @ 2019-08-19 15:36  zping  阅读(287)  评论(0编辑  收藏  举报