一、源端环境和目的环境
1、源端环境:SRQ测试机
2、目的环境:SRQ测试机克隆机
二、前提条件:
1、测试机数据库环境必须处于归档模式:archive log list;
查看list backupset,截图看有没有备份
2、恢复步骤
(1)RMAN自动恢复和还原backups and copies这个过程,例如,运行以下命令within RMAN去还原和恢复数据库到当前状态
(2)SHUTDOWN IMMEDIATE; # shuts down database
(3)STARTUP MOUNT; # starts and mounts database
(4)RESTORE DATABASE; # restores all datafiles——————还原的完整备份或者是增量备份中的0级备份,如:/oracle/SRQ/sapdata2/sr3_3/sr3.data3
(5)RECOVER DATABASE; # recovers database using all available redo——恢复的是增量备份中的1级增量备份,备份的归档日志写入到归档目录中: /oracle/SRQ/oraarch/,并进行归档日志的恢复;或者可以把源端的arch文件直接拷贝到目的端的/oracle/SRQ/oraarch/,进行recover恢复。
(5)recover database
(6)ALTER DATABASE OPEN; # reopens the database——如果上述recover恢复,无法恢复到最新时刻数据库,可以在open后面加参数resetlogs;
三、 在spfile删除情况下
1、进入rman
SRMQAS 121/dbs% rman target / Recovery Manager: Release 12.1.0.2.0 - Production on Fri Oct 18 15:06:09 2019 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database (not started)
2、关闭目标数据库(rman和sqlplus都可以关闭和打开)
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down.
3、创建原始参数文件(注意与数据库安装路径相对应, 可以参照当前数据库的"ORACLE_HOME\admin\orcl\pfile\init.ora.xxxx"和备份的SPFILE进行编写)
(1)查看源端的spfile文件:SRMQAS:/databackup/rmanbak # strings Spfile_SRQ_1736226733_20191021_155_1_1.bak
(2)并将有效字符拷贝,考入到/oracle/SRQ/121/dbs/init.ora中,vim写入如下参数,保存,授权(只拷贝蓝色内容,红色内容不能拷贝)
SRMQAS:/databackup/rmanbak # strings Spfile_SRQ_1736226733_20191021_155_1_1.bak
}|{z
|gSRQ
TAG20191021T020346
SRQ.__oracle_base='/oracle/SRQ'#ORACLE_BASE set from environment
*._B_TREE_BITMAP_PLANS=FALSE
*._IN_MEMORY_UNDO=FALSE
*._INDEX_JOIN_ENABLED=FALSE
*._OPTIM_PEEK_USER_BINDS=FALSE
*._OPTIMIZER_MJC_ENABLED=FALSE
*._SORT_ELIMINATION_COST_RATIO=10
*._TABLE_LOOKUP_PREFETCH_SIZE=0
*.audit_file_dest='/oracle/SRQ/saptrace/audit'
*.compatible='12.1.0.2.0'
*.control_file_record_keep_time=30
*.control_files='/oracle/SRQ/origlogA/cntrl/cntrlSRQ.dbf','/oracle/SRQ/origlogB/cntrl/cntrlSRQ.dbf','/oracle/SRQ/sapdata1/cntrl/cntrlSRQ.dbf'
*.db_block_size=8192
*.db_cache_size=4554479370
*.db_name='SRQ'
*.db_recovery_file_dest='/oracle/SRQ/oraflash'
*.db_recovery_file_dest_size=30000M
*.diagnostic_dest='/oracle/SRQ/saptrace'
*.FILESYSTEMIO_OPTIONS='setall'
*.log_archive_dest_1='LOCATION=/oracle/SRQ/oraarch/SRQarch'
*.log_archive_format='%t_%s_%r.dbf'
*.log_checkpoints_to_alert=true
*.max_dump_file_size='20000'
*.open_cursors=2000
*.parallel_execution_message_size=16384
*.parallel_threads_per_cpu=1
*.pga_aggregate_target=6072639160
*.processes=190
*.query_rewrite_enabled='false'
*.recyclebin='off'
*.remote_login_passwordfile='exclusive'
*.replication_dependency_tracking=false
*.sessions=380
*.shared_pool_size=4554479370
*.star_transformation_enabled='true'
*.undo_tablespace='PSAPUNDO'
/oracle/SRQ/121/dbs/spfileSRQ.ora
将上述蓝色字体内容拷贝到“/oracle/SRQ/121/dbs/initSRQ.ora",注意权限oracle:oinstall中
4、加载参数文件,这个pfile路径就是上面的参数文件路径
SRMQAS:/oracle/SRQ/121/dbs # su - orasrq
RMAN> startup nomount pfile="/oracle/SRQ/121/dbs/initSRQ.ora"
5、加载控制文件(可以加载最新控制文件)
RMAN> restore controlfile from "/databackup/rmanbak/control_SRQ_1736226733_20191020_143.bak";
对三个控制文件都进行了还原
6、挂载数据库
RMAN> alter database mount;
7、将备份集信息重新导入到当前控制文件中
RMAN> catalog start with "/databackup/rmanbak";
8、检查备份
RMAN> crosscheck backup;
9、删除过期的备份
rman>delete noprompt expired backup;
再次查看已经删除
RMAN>crosscheck backup;
10、还原(转储)文件(restore):
RMAN> restore database;
restore 还原操作:还原完整备份或者是增量备份中的0级备份
11、恢复文件(recover):
recover恢复增量备份中的1级增量文件、同时还原archilog备份文件到/oracle/SRQ/oraarch/
sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
recover database until time '2019-10-22 09:00:00';
此处需要加时间
(1)首先恢复1级增量
(2)再次恢复archivelog 备份文件到恢复区/oracle/SRQ/oraarch中,从oraaarch中进行恢复到要求的时间点
(3)因时间点在170号文件之后,所以需要继续恢复更新的archivelog文件。又因为恢复更新的archivelog,需要读取控制文件,此时数据库为mount状态,无法加载控制文件,所以即使把archivelog的bak文件考入到/databackup/rman中,也无法识别
所以,也可以把源端文件中的archivelog/oracle/SRQ/oraarch中的3043序列文件加入即可。
(4)如果重新recover database,可以看到已经找到指定恢复时间,所需要的最新序列3043
此句可以不开:
12--先只读打开确认数据是否符合要求(测试)
SQL> alter database open read only;
12.创建spfile文件,并以resetlogs方式打开
RMAN> create spfile from pfile='/oracle/SRQ/121/dbs/initSRQ.ora';
注意:此处的pfile文件,需要从spfile备份中strings 获取。
RMAN> alter database open resetlogs;
至此,数据rman恢复正常。
四、spfile存在情况下
(1)RMAN自动恢复和还原backups and copies这个过程,例如,运行以下命令within RMAN去还原和恢复数据库到当前状态
(2)SHUTDOWN IMMEDIATE; # shuts down database
(3)STARTUP NOMOUNT;
(4)RMAN> restore controlfile from "/databackup/rmanbak/control_SRQ_1736226733_20191021_154.bak";
(5)RMAN> alter database mount;
(6)RMAN> catalog start with '/databackup/rmanbak';
(7)RMAN> restore database;
(5)RMAN> reover database; # recovers database using all available redo,还原归档日志和在线日志时报错,说scn不一致,如下图
(6)ALTER DATABASE OPEN; # reopens the database
五、遇到的问题
1、RMAN>restore database;
2、恢复数据库:
> sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
> recover database until time'2019-10-12 12:00:00';
出现报错:RMAN-06094:datafile 1 must be restored
13、查看对象:report schema,RB segs是***,说明为识别到,
14、查看正常的数据文件:report schema;
15、尝试alter database open,提示错误,有个错误显示“RMAN-06067: RECOVER DATABASE required with a backup or created control file”
说明控制文件不是最新的;或者需要重新导入控制文件
注:我做的增量备份,也就是0级备份+1级备份
0级备份的数据文件是2019.10.14,控制文件是2019.10.14;
1级备份的数据文件是2019.10.17,控制文件是2019.10.17;
我用的是2019.10.14的备份+2019.10.17的控制文件,所以提示错误:如下:
(1)RMAN-06094: datafile 1 must be restored
(2)RMAN-06067: RECOVER DATABASE required with a backup or created control file
使用旧的控制文件即可,使用就得控制文件,进行recover,出现如下错误:
文章评论