oracle12c 异机恢复,Oracle12c RAC RMAN异机恢复

########################################################

#编辑pfile文件initspdb.ora

vi /oracle/app/oracle/product/12.2.0/db_1/dbs/initspdb.ora

audit_file_dest=‘/oracle/app/oracle/admin/spdb/adump‘audit_trail=‘db‘compatible=‘12.2.0‘control_files=‘/oracle/app/oracle/oradata/spdb/control.ctl‘db_block_size=8192

db_name=‘spdb‘diagnostic_dest=‘/oracle/app/oracle‘dispatchers=‘(PROTOCOL=TCP) (SERVICE=spdbXDB)‘enable_pluggable_database=true

log_archive_dest_1=‘LOCATION=/orabak/archivelog‘open_cursors=300pga_aggregate_target=5120m

processes=400remote_login_passwordfile=‘exclusive‘sga_target=10240m

undo_tablespace=‘UNDOTBS1‘db_file_name_convert=‘DATADG/SPDB/DATAFILE‘,‘/oracle/app/oracle/oradata/spdb/‘,‘DATADG/SPDB/8E80F930196B6100E053E200A8C0AF9F/DATAFILE‘,‘/oracle/app/oracle/oradata/spdb/pdbseed/‘,‘DATADG/SPDB/8E81C7A967C43CB7E053E300A8C06223/DATAFILE‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/‘,‘DATADG/SPDB/93BFEF75138BC79EE053E300A8C08BA1/DATAFILE‘,‘/oracle/app/oracle/oradata/spdb/kdlxpdb

#创建目录

mkdir -p /oracle/app/oracle/admin/spdb/adump

mkdir -p /orabak/archivelog

########################################################

#创建spfile

SQL> create spfile from pfile=‘/oracle/app/oracle/product/12.2.0/db_1/dbs/initspdb.ora‘

#进到nomount状态

SQL> startup nomount

--#恢复spfile文件

--RMAN> restore spfile from ‘/orabak/spfile_ORCL_1026474723_1096_1‘;

SQL> shutdown abort

cd /oracle/app/oracle/product/12.2.0/db_1/dbs/

rm initspdb.ora

$strings spfilespdb.ora

SQL> startup nomount

########################################################

#恢复control文件

RMAN> restore controlfile from ‘/orabak/control_ORCL_1026474721_1095_1‘;

#进到mount状态

SQL> alter database mount;

#删除backup

RMAN> list backup;

RMAN> crosscheck backup;

RMAN> delete backup;

RMAN> list backup;

########################################################

#恢复dbfile全备文件

RMAN> catalog start with ‘/orabak/backup/‘;

RMAN> list backup;

rman target /

run{

allocate channel ch1 type disk;

allocate channel ch2 type disk;

set newname for datafile 1 to ‘/oracle/app/oracle/oradata/spdb/system.dbf‘;

set newname for datafile 3 to ‘/oracle/app/oracle/oradata/spdb/sysaux.dbf‘;

set newname for datafile 5 to ‘/oracle/app/oracle/oradata/spdb/undotbs1.dbf‘;

set newname for datafile 7 to ‘/oracle/app/oracle/oradata/spdb/undotbs2.dbf‘;

set newname for datafile 8 to ‘/oracle/app/oracle/oradata/spdb/users.dbf‘;

set newname for datafile 2 to ‘/oracle/app/oracle/oradata/spdb/pdbseed/system.dbf‘;

set newname for datafile 4 to ‘/oracle/app/oracle/oradata/spdb/pdbseed/sysaux.dbf‘;

set newname for datafile 6 to ‘/oracle/app/oracle/oradata/spdb/pdbseed/undotbs1.dbf‘;

set newname for datafile 9 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/system.dbf‘;

set newname for datafile 10 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/sysaux.dbf‘;

set newname for datafile 11 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/undotbs1.dbf‘;

set newname for datafile 12 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/undo_2.dbf‘;

set newname for datafile 13 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/users.dbf‘;

set newname for datafile 14 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/spdata1.dbf‘;

set newname for datafile 15 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/spdata2.dbf‘;

set newname for datafile 16 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/managedata1.dbf‘;

set newname for datafile 18 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/managedata2.dbf‘;

set newname for datafile 17 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/clouddata1.dbf‘;

set newname for datafile 19 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/clouddata2.dbf‘;

set newname for datafile 20 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/cloudtestdata1.dbf‘;

set newname for datafile 21 to ‘/oracle/app/oracle/oradata/spdb/spdb1pdb/cloudtestdata2.dbf‘;

set newname for datafile 28 to ‘/oracle/app/oracle/oradata/spdb/kdlxpdb/system.dbf‘;

set newname for datafile 29 to ‘/oracle/app/oracle/oradata/spdb/kdlxpdb/sysaux.dbf‘;

set newname for datafile 30 to ‘/oracle/app/oracle/oradata/spdb/kdlxpdb/undotbs1.dbf‘;

restore database;

switch datafile all;

switch tempfile all;

release channel ch1;

release channel ch2;

}

RMAN> recover database;

b89a2d972f203f2cb956026a1f98ff6f.png

#recover报错,需要指定SCN

RMAN> recover database until scn 233086903;      #全量备份的SCN

921ee29baec5edcc1d6e599833a60697.png

#将归档日志及增量备份数据文件拷贝至/orabak/backup/目录并追加

RMAN> catalog start with ‘/orabak/backup/‘;

RMAN> list backup;

#找到对应增量备份节点的SCN进行恢复,建议根据备份策略依次恢复(优先读取增量文件其次归档日志)。

RMAN> recover database until scn 234809384;      #归档日志恢复第一天增量

bacdfde5ce83c4cf50590600cdb9e14e.png

RMAN> recover database until scn 237672420;    #增量文件及归档日志恢复第二天增量

c541d64516ae2b6b8646a64069c140af.png

71018f748f053eb65f6cb88e884bc293.png

#第二天增量恢复完成,接着恢复第三天增量报错。备份期间生成过数据文件,可通过恢复单独数据文件恢复,因隔天忘记恢复第三天增量数据。

RMAN> recover database until scn 241710899;      #第三天增量恢复

80f8e8c62738545ffaf89f00d1087fd2.png

RMAN> restore datafile 31;

########################################################

#数据库open

SQL> alter database open;

fcbe9da6889f7babfe879411b4c070fe.png

SQL> alter database open resetlogs;

36d99b31e1f3a938da39ce084e495638.png

#ASM磁盘和集群报错,需要调整控制文件

SQL> alter database backup controlfile to trace as ‘/home/oracle/ctl.control‘;

SQL> shutdown abort;

vi /home/oracle/ctl.control

STARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE"SPDB" RESETLOGS ARCHIVELOG

MAXLOGFILES192MAXLOGMEMBERS3MAXDATAFILES1024MAXINSTANCES32MAXLOGHISTORY584LOGFILEGROUP 1 ‘/oracle/app/oracle/oradata/spdb/redo1.log‘ SIZE 200M BLOCKSIZE 512,GROUP 2 ‘/oracle/app/oracle/oradata/spdb/redo2.log‘ SIZE 200M BLOCKSIZE 512

--STANDBY LOGFILE

DATAFILE‘/oracle/app/oracle/oradata/spdb/system.dbf‘,‘/oracle/app/oracle/oradata/spdb/pdbseed/system.dbf‘,‘/oracle/app/oracle/oradata/spdb/sysaux.dbf‘,‘/oracle/app/oracle/oradata/spdb/pdbseed/sysaux.dbf‘,‘/oracle/app/oracle/oradata/spdb/undotbs1.dbf‘,‘/oracle/app/oracle/oradata/spdb/pdbseed/undotbs1.dbf‘,‘/oracle/app/oracle/oradata/spdb/undotbs2.dbf‘,‘/oracle/app/oracle/oradata/spdb/users.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/system.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/sysaux.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/undotbs1.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/undo_2.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/users.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/spdata1.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/spdata2.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/managedata1.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/clouddata1.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/managedata2.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/clouddata2.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/cloudtestdata1.dbf‘,‘/oracle/app/oracle/oradata/spdb/spdb1pdb/cloudtestdata2.dbf‘,‘/oracle/app/oracle/oradata/spdb/kdlxpdb/system.dbf‘,‘/oracle/app/oracle/oradata/spdb/kdlxpdb/sysaux.dbf‘,‘/oracle/app/oracle/oradata/spdb/kdlxpdb/undotbs1.dbf‘

CHARACTER SETAL32UTF8

;--RECOVER DATABASE

--All logs need archiving and a log switch is needed.--ALTER SYSTEM ARCHIVE LOG ALL;

-- Database can now be opened normally. --ALTER DATABASE OPEN; -- Open all the PDBs. --ALTER PLUGGABLE DATABASE ALL OPEN;

#编辑控制文件,重新生成控制文件

SQL> @/home/oracle/ctl.control

55fb5c047816f90e41a448af8d589658.png

SQL> alter database open RESETLOGS;

78f9ba151678310739a55ea4ecddd664.png

#生成thread 2 redo日志文件

SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 3 ‘/oracle/app/oracle/oradata/spdb/redo03.log‘ SIZE 50M,GROUP 4 ‘/oracle/app/oracle/oradata/spdb/redo04.log‘ SIZE 50M;

SQL> alter database open RESETLOGS;

77f78219b5f3157fb78754679ab7c52c.png

SQL> alter database open;

SQL> alter pluggable database all open;

36eb7bcbe2029f41f65b091e6b47ba75.png

至此RAC的RMAN异机恢复就完成了。恢复过程中遇到问题就针对解决吧,Good Luck!!!

########################################################

注常用命令:

RMAN> list backup;

RMAN> crosscheck backupset;

RMAN> delete backupset;

RMAN> delete backup;

RMAN> restore database;

RMAN> restore datafile 31;

RMAN> recover database until SCN XXX;

RMAN> list archivelog all;

RMAN> list copy;

RMAN> catalog start with ‘/orabak/backup‘;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值