使用rman备份将rac环境恢复到单实例

rac环境

[oracle@rac02 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.11.*.61 rac01
1.1.1.13 rac01-priv
10.11.*.200 rac01-vip
10.11.*.62 rac02
1.1.1.14 rac02-priv
10.11.*.201 rac02-vip
10.11.*.202 scanvip-ip

rac集群信息查看

# crsstat
ora.bol.db ora....se.type 0/2 0/1 ONLINE ONLINE rac01
[oracle@rac02 ~]$ sqlplus / as sysdba
SQL> show parameter cluster NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean TRUE
cluster_database_instances integer 2
cluster_interconnects string
SQL> show parameter name NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name string
db_file_name_convert string
db_name string bol
db_unique_name string bol
global_names boolean FALSE
instance_name string bol2
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string bol
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +FRA/bol/arch
Oldest online log sequence 343
Next log sequence to archive 344
Current log sequence 344
SQL> set line 9999 pagesize 9999
SQL> col FILE_NAME format a60
SQL> select 'datafile' file_type, file#,name FILE_NAME,status,enabled from v$datafile
union all
select 'tempfile',file#,name FILE_NAME,status,enabled from v$tempfile
union all
select 'logfile',group# file#,member FILE_NAME,status,'' from v$logfile
union all
select 'controlfile', to_number('') ,name FILE_NAME,status,'' from v$controlfile
;
FILE_TYPE FILE# FILE_NAME STATUS ENABLED
----------- ---------- ------------------------------------------------------------ ------- ----------
datafile 1 +DATA/bol/datafile/system.259.1015241807 SYSTEM READ WRITE
datafile 2 +DATA/bol/datafile/sysaux.260.1015241811 ONLINE READ WRITE
datafile 3 +DATA/bol/datafile/undotbs1.261.1015241811 ONLINE READ WRITE
datafile 4 +DATA/bol/datafile/undotbs2.263.1015241815 ONLINE READ WRITE
datafile 5 +DATA/bol/datafile/users.264.1015241815 ONLINE READ WRITE
datafile 6 +DATA/bol/datafile/cad01.dbf ONLINE READ WRITE
datafile 7 +DATA/bol/datafile/scm01.dbf ONLINE READ WRITE
datafile 8 +DATA/bol/datafile/zabbix01.dbf ONLINE READ WRITE
tempfile 1 +DATA/bol/tempfile/temp.262.1015241813 ONLINE READ WRITE
logfile 1 +DATA/bol/onlinelog/group_1.257.1015241807
logfile 1 +FRA/bol/onlinelog/group_1.257.1015241807
logfile 2 +DATA/bol/onlinelog/group_2.258.1015241807
logfile 2 +FRA/bol/onlinelog/group_2.258.1015241807
logfile 3 +DATA/bol/onlinelog/group_3.265.1015242985
logfile 3 +FRA/bol/onlinelog/group_3.259.1015242985
logfile 4 +DATA/bol/onlinelog/group_4.266.1015242985
logfile 4 +FRA/bol/onlinelog/group_4.260.1015242985
controlfile +DATA/bol/controlfile/current.256.1015241807
controlfile +FRA/bol/controlfile/current.256.1015241807
SQL> show parameter instance_n NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string bol2
instance_number integer 2
SQL> show parameter spfile NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/bol/spfilebol.ora

查看rac02节点的rman备份

#ll -art /home/oracle/backup
-rw-r----- 1 oracle asmadmin 85729280 Dec 3 22:35 bol_fullbakepuihggn_1_1_20191203
-rw-r----- 1 oracle asmadmin 2966593536 Dec 3 22:35 bol_fullbakequihggo_1_1_20191203
-rw-r----- 1 oracle asmadmin 144319488 Dec 3 22:35 arch_esuihghs_1_1_20191203
-rw-r----- 1 oracle asmadmin 72366080 Dec 3 22:35 arch_etuihght_1_1_20191203
-rw-r----- 1 oracle asmadmin 18644992 Dec 3 22:35 20191203_BOL_478_1_4237955019.ctl
-rw-r----- 1 oracle asmadmin 98304 Dec 3 22:35 bol_spfile_evuihgi1_1_1_20191203

将rman备份文件cp到单实例环境(这里的单实例环境-只安装了数据库软件)

[oracle@rac02 backup]$ scp bol_fullbakepuihggn_1_1_20191203 bol_fullbakequihggo_1_1_20191203 arch_esuihghs_1_1_20191203 arch_etuihght_1_1_20191203 20191203_BOL_478_1_4237955019.ctl bol_spfile_evuihgi1_1_1_20191203 oracle@10.11.*.80:/home/oracle/backup/.
[oracle@oracle backup]$ cp bol_spfile_evuihgi1_1_1_20191203 initbol.ora

---修改参数文件

[oracle@oracle backup]$ more initbol.ora
*.audit_file_dest='/u01/app/oracle/admin/bol/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/bol/control01.ctl','/u01/app/oracle/fast_recovery_area/bol/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='bol'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=6005194752
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=bolXDB)'
*.log_archive_dest_1='location=/u01/app/oracle/archive'
*.log_archive_format='%t_%s_%r.arch'
*.memory_target=2147483648
*.open_cursors=300
*.processes=350
*.remote_login_passwordfile='exclusive'
*.standby_file_management='auto'
*.undo_tablespace='UNDOTBS1'

---select 6744440832/1024/1024/1024,3*1024*1024*1024;

单实例库创建目录

mkdir -p /u01/app/oracle/fast_recovery_area/bol
mkdir -p /u01/app/oracle/oradata/bol/data
mkdir -p /u01/app/oracle/oradata/bol/tempfile
mkdir -p /u01/app/oracle/admin/bol/adump
mkdir -p /u01/app/oracle/admin/bol/data
mkdir -p /u01/app/oracle/admin/bol/redo
mkdir -p /u01/app/oracle/admin/bol/tempfile
mkdir -p /u01/app/oracle/archive

单实例创建spfile文件

[oracle@oracle ~]$ vim .bash_profile
[oracle@oracle ~]$ source .bash_profile
[oracle@oracle ~]$ sqlplus -v SQL*Plus: Release 11.2.0.4.0 Production
[oracle@oracle dbs]$ ORACLE_SID=bol
[oracle@oracle dbs]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 4 11:30:49 2019 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> create spfile from pfile='/home/oracle/backup/initbol.ora'; File created.

启动单实例到nomount状态

[oracle@oracle ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Wed Dec 4 11:35:07 2019

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database (not started)

RMAN> startup nomount;

Oracle instance started

Total System Global Area    2137886720 bytes

Fixed Size                     2254952 bytes
Variable Size 1342179224 bytes
Database Buffers 788529152 bytes
Redo Buffers 4923392 bytes

从备份中恢复控制文件

==restore controlfile from '/home/oracle/backup/20191203_BOL_478_1_4237955019.ctl';
RMAN> restore controlfile from '/home/oracle/backup/20191203_BOL_478_1_4237955019.ctl'; Starting restore at 04-DEC-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=284 device type=DISK channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/bol/control01.ctl
output file name=/u01/app/oracle/fast_recovery_area/bol/control02.ctl
Finished restore at 04-DEC-19

==控制文件已经还原,注意此处控制文件的还原路径是spfile中指定的路径,接下来还原数据文件及恢复数据库
==启动到mount状态并还原和恢复整个数据库

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1 RMAN> list backupset summary;
RMAN> list backupset of archivelog all;
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
477 69.01M DISK 00:00:01 03-DEC-19
BP Key: 477 Status: AVAILABLE Compressed: NO Tag: TAG20191203T223540
Piece Name: /home/oracle/backup/arch_etuihght_1_1_20191203 List of Archived Logs in backup set 477
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 433 10580072 03-DEC-19 10598676 04-DEC-19
1 434 10598676 04-DEC-19 10598684 04-DEC-19
2 341 10594034 04-DEC-19 10597753 04-DEC-19
2 342 10597753 04-DEC-19 10598672 04-DEC-19
2 343 10598672 04-DEC-19 10598689 04-DEC-19

==数据文件的转换

SQL> set pagesize  200 linesize 200
SQL> select 'set newname for datafile ' || a.FILE# || ' to "' || a.NAME || '";'
from v$datafile a
union all
select 'set newname for tempfile ' || a.FILE# || ' to "' || a.NAME || '";'
from v$tempfile a
union all
SELECT 'SQL "ALTER DATABASE RENAME FILE ''''' || a.MEMBER || ''''' to ''''' ||
a.MEMBER || ''''' ";'
FROM v$logfile a;
'SETNEWNAMEFORDATAFILE'||A.FILE#||'TO"'||A.NAME||'";'
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set newname for datafile 1 to "+DATA/bol/datafile/system.259.1015241807";
set newname for datafile 2 to "+DATA/bol/datafile/sysaux.260.1015241811";
set newname for datafile 3 to "+DATA/bol/datafile/undotbs1.261.1015241811";
set newname for datafile 4 to "+DATA/bol/datafile/undotbs2.263.1015241815";
set newname for datafile 5 to "+DATA/bol/datafile/users.264.1015241815";
set newname for datafile 6 to "+DATA/bol/datafile/cad01.dbf";
set newname for datafile 7 to "+DATA/bol/datafile/scm01.dbf";
set newname for datafile 8 to "+DATA/bol/datafile/zabbix01.dbf";
set newname for tempfile 1 to "+DATA/bol/tempfile/temp.262.1015241813";
SQL "ALTER DATABASE RENAME FILE ''+DATA/bol/onlinelog/group_1.257.1015241807'' to ''+DATA/bol/onlinelog/group_1.257.1015241807'' ";
SQL "ALTER DATABASE RENAME FILE ''+FRA/bol/onlinelog/group_1.257.1015241807'' to ''+FRA/bol/onlinelog/group_1.257.1015241807'' ";
SQL "ALTER DATABASE RENAME FILE ''+DATA/bol/onlinelog/group_2.258.1015241807'' to ''+DATA/bol/onlinelog/group_2.258.1015241807'' ";
SQL "ALTER DATABASE RENAME FILE ''+FRA/bol/onlinelog/group_2.258.1015241807'' to ''+FRA/bol/onlinelog/group_2.258.1015241807'' ";
SQL "ALTER DATABASE RENAME FILE ''+DATA/bol/onlinelog/group_3.265.1015242985'' to ''+DATA/bol/onlinelog/group_3.265.1015242985'' ";
SQL "ALTER DATABASE RENAME FILE ''+FRA/bol/onlinelog/group_3.259.1015242985'' to ''+FRA/bol/onlinelog/group_3.259.1015242985'' ";
SQL "ALTER DATABASE RENAME FILE ''+DATA/bol/onlinelog/group_4.266.1015242985'' to ''+DATA/bol/onlinelog/group_4.266.1015242985'' ";
SQL "ALTER DATABASE RENAME FILE ''+FRA/bol/onlinelog/group_4.260.1015242985'' to ''+FRA/bol/onlinelog/group_4.260.1015242985'' "; 17 rows selected. RMAN> RUN{
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
set newname for datafile 1 to "/u01/app/oracle/oradata/bol/data/system01.dbf";
set newname for datafile 2 to "/u01/app/oracle/oradata/bol/data/sysaux02.dbf";
set newname for datafile 3 to "/u01/app/oracle/oradata/bol/data/undotbs101.dbf";
set newname for datafile 4 to "/u01/app/oracle/oradata/bol/data/undotbs202.dbf";
set newname for datafile 5 to "/u01/app/oracle/oradata/bol/data/users01.dbf";
set newname for datafile 6 to "/u01/app/oracle/oradata/bol/data/cad01.dbf";
set newname for datafile 7 to "/u01/app/oracle/oradata/bol/data/scm01.dbf";
set newname for datafile 8 to "/u01/app/oracle/oradata/bol/data/zabbix01.dbf";
set newname for tempfile 1 to "/u01/app/oracle/oradata/bol/tempfile/temp01.dbf";
SQL "ALTER DATABASE RENAME FILE ''+DATA/bol/onlinelog/group_1.257.1015241807'' to ''/u01/app/oracle/admin/bol/redo/redo01_1.log'' ";
SQL "ALTER DATABASE RENAME FILE ''+FRA/bol/onlinelog/group_1.257.1015241807'' to ''/u01/app/oracle/admin/bol/redo/redo01_2.log'' ";
SQL "ALTER DATABASE RENAME FILE ''+DATA/bol/onlinelog/group_2.258.1015241807'' to ''/u01/app/oracle/admin/bol/redo/redo02_1.log'' ";
SQL "ALTER DATABASE RENAME FILE ''+FRA/bol/onlinelog/group_2.258.1015241807'' to ''/u01/app/oracle/admin/bol/redo/redo02_2.log'' ";
SQL "ALTER DATABASE RENAME FILE ''+DATA/bol/onlinelog/group_3.265.1015242985'' to ''/u01/app/oracle/admin/bol/redo/redo03_1.log'' ";
SQL "ALTER DATABASE RENAME FILE ''+FRA/bol/onlinelog/group_3.259.1015242985'' to ''/u01/app/oracle/admin/bol/redo/redo03_2.log'' ";
SQL "ALTER DATABASE RENAME FILE ''+DATA/bol/onlinelog/group_4.266.1015242985'' to ''/u01/app/oracle/admin/bol/redo/redo04_1.log'' ";
SQL "ALTER DATABASE RENAME FILE ''+FRA/bol/onlinelog/group_4.260.1015242985'' to ''/u01/app/oracle/admin/bol/redo/redo04_2.log'' ";
RESTORE DATABASE;
SWITCH DATAFILE ALL;
SWITCH TEMPFILE ALL;
}

==告警日志
==查看数据文件是否已经还原

[oracle@oracle ~]$ ll -h /u01/app/oracle/oradata/bol/data/
total 6.9G
-rw-r-----. 1 oracle oinstall 1.1G Dec 4 11:58 cad01.dbf
-rw-r-----. 1 oracle oinstall 1.1G Dec 4 11:58 scm01.dbf
-rw-r-----. 1 oracle oinstall 2.4G Dec 4 11:59 sysaux02.dbf
-rw-r-----. 1 oracle oinstall 761M Dec 4 11:59 system01.dbf
-rw-r-----. 1 oracle oinstall 1.2G Dec 4 11:58 undotbs101.dbf
-rw-r-----. 1 oracle oinstall 201M Dec 4 11:58 undotbs202.dbf
-rw-r-----. 1 oracle oinstall 5.1M Dec 4 11:58 users01.dbf
-rw-r-----. 1 oracle oinstall 501M Dec 4 11:58 zabbix01.dbf

==由前边的备份集中可以看出,备份集中的thread 1的最大日志号为434,thread 2的最大日志号为343,所以不完全恢复

RMAN> run{
2> set until sequence 434 thread 1;
3> set until sequence 343 thread 2;
4> recover database;
5> } executing command: SET until clause executing command: SET until clause Starting recover at 04-DEC-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=284 device type=DISK starting media recovery channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=433
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=342
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/arch_etuihght_1_1_20191203
channel ORA_DISK_1: piece handle=/home/oracle/backup/arch_etuihght_1_1_20191203 tag=TAG20191203T223540
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/oracle/archive/2_342_1015241803.arch thread=2 sequence=342
archived log file name=/u01/app/oracle/archive/1_433_1015241803.arch thread=1 sequence=433
media recovery complete, elapsed time: 00:00:00
Finished recover at 04-DEC-19

使用resetlogs打开数据库

RMAN> alter database open resetlogs;

database opened

查看redo日志

[oracle@oracle backup]$ ll -h /u01/app/oracle/admin/bol/redo/
total 401M
-rw-r-----. 1 oracle oinstall 51M Dec 4 12:18 redo01_1.log
-rw-r-----. 1 oracle oinstall 51M Dec 4 12:18 redo01_2.log
-rw-r-----. 1 oracle oinstall 51M Dec 4 12:18 redo02_1.log
-rw-r-----. 1 oracle oinstall 51M Dec 4 12:18 redo02_2.log
-rw-r-----. 1 oracle oinstall 51M Dec 4 12:18 redo03_1.log
-rw-r-----. 1 oracle oinstall 51M Dec 4 12:18 redo03_2.log
-rw-r-----. 1 oracle oinstall 51M Dec 4 12:18 redo04_1.log
-rw-r-----. 1 oracle oinstall 51M Dec 4 12:18 redo04_2.log

查看相关文件

[oracle@oracle backup]$ sqlplus / as sysdba
SQL> show parameter name
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/archive
Oldest online log sequence 1
Next log sequence to archive 1
Current log sequence 1
SQL> set line 9999 pagesize 9999
SQL> col FILE_NAME format a60
SQL> select 'datafile' file_type, file#,name FILE_NAME,status,enabled from v$datafile
union all
select 'tempfile',file#,name FILE_NAME,status,enabled from v$tempfile
union all
select 'logfile',group# file#,member FILE_NAME,status,'' from v$logfile
union all
select 'controlfile', to_number('') ,name FILE_NAME,status,'' from v$controlfile
;

==清除未使用的redo

SQL> col instance format a8
SQL> select thread#,instance,status,enabled from v$thread; THREAD# INSTANCE STATUS ENABLED
---------- -------- ------ --------
1 bol OPEN PUBLIC
2 bol2 CLOSED PUBLIC SQL> select group#,thread#,archived,status from v$log; GROUP# THREAD# ARC STATUS
---------- ---------- --- ----------------
1 1 NO CURRENT
2 1 YES UNUSED
3 2 YES INACTIVE
4 2 YES UNUSED SQL> alter database disable thread 2; Database altered. SQL> select thread#,instance,status,enabled from v$thread; THREAD# INSTANCE STATUS ENABLED
---------- -------- ------ --------
1 bol OPEN PUBLIC
2 bol2 CLOSED DISABLED

==清除多余的 undo 文件

SQL> select name from v$tablespace where name like 'UNDO%';

NAME
------------------------------
UNDOTBS1
UNDOTBS2 SQL> show parameter undo_tablespace; NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
SQL> drop tablespace undotbs2 including contents and datafiles; Tablespace dropped.

到此,恢复以及完成。迁移还可以使用在线 RMAN Duplicate

参考:
https://www.cnblogs.com/lhrbest/p/4546661.html

最新文章

  1. [LeetCode] Paint House 粉刷房子
  2. 结合stack数据结构,实现不同进制转换的算法
  3. VS2013无法加载JSON格式
  4. FFMpeg ver 20160219-git-98a0053 滤镜中英文对照 2016.02.21 by 1CM
  5. Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建
  6. boa服务器make错误
  7. 学习练习 java20160507作业
  8. dojo新建widget步骤----主要针对widget路径
  9. 使用Azure portal Create Virtual Machine
  10. CentOS 6,7最小化安装后再安装图形界面
  11. tableView Crash
  12. El表达式取map值
  13. [php] php操作xml
  14. [poj2406]Power Strings_hash
  15. 详解EBS接口开发之WIP模块接口
  16. Dubbo学习笔记8:Dubbo的线程模型与线程池策略
  17. JVM 垃圾回收机制
  18. js加入购物车抛物线动画
  19. 解题:洛谷4178 Tree
  20. axios通过django的csrf验证

热门文章

  1. java.io.WinNTFileSystem
  2. [Mysql]过大sql文件导入过慢问题解决
  3. 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 及一些问题
  4. Python excel文件操作,编程练习题实例七十五
  5. codeforces gym #101873B. Buildings(Polya定理)
  6. sublime 配置sftp代码自动上传(原)
  7. C++入门经典-例6.22-字符串与数组,string类型的数组
  8. TCP主动打开 之 第一次握手-发送SYN
  9. JS基础_使用工厂方法创建对象
  10. State Threads之网络架构库