12c RAC 用Rman 恢复到异机单实例
准备工作
原服务器软件部署:Redhat 6.6 + Oracle 12.2.0.1 rac
1、创建恢复服务器,设置大于原库数据大小的磁盘容量。设置相同的服务器主机名参照原服务器系统及软件版本和位数配置恢复的服务器,避免恢复过程中版本差异导致的问题;
2、将rman数据文件备份、归档日志备份复制到恢复服务器中( rman备份最好制定备份位置为NFS等共享存储上,还原时可以省去传递备份的时间);
3、创建相关的目录
例如,目标服务器安装ORACLE实例时,选择了“只安装实例”选项,那么在RMAN还原之前,我们必须创建下面一些目录(这些不是必须的,有些环境甚至完全不必要。具体根据实际情况判断):
- 创建$ORACLE_BASE/admin/$ORACLE_SID/下的六个目录;
- $ORACLE_BASE/oradata下创建$ORACLE_SID目录;
- RMAN备份路径目录(这个地方最好与源数据库一致,创建好后,把源数据库备份的数据文件复制到这个目录里);--非必须。
- 归档日志目录(同样,创建好后,把需要的归档日志文件复制到此目录) --非必须。
#mkdir -p /u01/app/oracle/admin/gnnt2/{adump,bdump,cdump,dpdump,pfile,udump}
#mkdir -p /u01/app/oracle/oradata/$ORACLE_SID
注意:这些工作是前期准备工作,不能到RMAN还原恢复的时候才做。
服务器A备份数据库
rman备份脚本
原库数据较大,为了节约备份空间,采用增量备份。有关增量备份的概念转至我的博文https://www.cnblogs.com/-abm/p/9963917.html
计划任务
[oracle@swnode2 /]$ crontab -l
10 0 * * 0 /bin/sh /home/oracle/rmanbackup0.sh
10 0 * * 1 /bin/sh /home/oracle/rmanbackup1.sh
10 0 * * 2 /bin/sh /home/oracle/rmanbackup1.sh
10 0 * * 3 /bin/sh /home/oracle/rmanbackup2.sh
10 0 * * 4 /bin/sh /home/oracle/rmanbackup1.sh
10 0 * * 5 /bin/sh /home/oracle/rmanbackup1.sh
10 0 * * 6 /bin/sh /home/oracle/rmanbackup1.sh
说明: 每周日凌晨执行0级全量备份,
每周三凌晨执行一次累计增量备份,其他时间都为差异增量备份
0级备份
[oracle@swnode2 ~]$ cat rmanbackup0.sh
#!/bin/bash
#Creation: --
#Version: 1.0.
export ORACLE_SID=gnnt2
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2./db_1
export PATH=$ORACLE_HOME/bin:$PATH DATE=`date +%Y-%m-%d`
LOG=/home/oracle/logs/log_rman_0_$DATA echo "================================================================================="
>>$LOG
echo "Begin backup at : `date`" >> $LOG
rman target / <<EOF >> $LOG run
{
allocate channel c1 device type disk;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/DBback/%d.%F.conf';
backup as compressed backupset incremental level database format '/DBback/0_%d_pdb_shwjs_%T_%s_%p.DBFILE';
crosscheck backup;
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup as compressed backupset archivelog all not backed up format '/DBback/arch_bak/arch_%d_%T_%s_%p.ACR';
crosscheck archivelog all;
report obsolete;
delete noprompt expired backup;
delete noprompt obsolete;
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';
delete noprompt backup of archivelog all completed before 'sysdate-8';
release channel c1;
}
exit
EOF
echo "End backup at : `date`" >>$LOG #echo "Begin scp at : `date`" >>$LOG
#scp ${}/*`date +%Y%m%d`* oracle@192.168.1.61:/tmp/
#echo "End scp at : `date`" >>$LOG
echo "=================================================================================" >>$LOG exit 0
1级备份(差异增量)
[oracle@swnode2 ~]$ cat rmanbackup1.sh
#!/bin/bash
#Creation: --
#Version: 1.0.
export ORACLE_SID=gnnt2
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2./db_1
export PATH=$ORACLE_HOME/bin:$PATH DATE=`date +%Y-%m-%d`
LOG=/home/oracle/logs/log_rman_1_$DATA echo "================================================================================="
>>$LOG
echo "Begin backup at : `date`" >> $LOG
rman target / <<EOF >> $LOG run
{
allocate channel c1 device type disk;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/DBback/%d.%F.conf';
backup as compressed backupset incremental level database format '/DBback/1_%d_pdb_shwjs_%T_%s_%p.DBFILE';
crosscheck backup;
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup as compressed backupset archivelog all not backed up format '/DBback/arch_bak/arch_%d_%T_%s_%p.ACR';
crosscheck archivelog all;
report obsolete;
delete noprompt expired backup;
delete noprompt obsolete;
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';
delete noprompt backup of archivelog all completed before 'sysdate-8';
release channel c1;
}
exit
EOF
echo "End backup at : `date`" >>$LOG #echo "Begin scp at : `date`" >>$LOG
#scp ${}/*`date +%Y%m%d`* oracle@192.168.1.61:/tmp/
#echo "End scp at : `date`" >>$LOG
echo "=================================================================================" >>$LOG exit 0
2级备份(累计增量)
[oracle@swnode2 ~]$ cat rmanbackup2.sh
#!/bin/bash
#Creation: --
#Version: 1.0.
export ORACLE_SID=gnnt2
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2./db_1
export PATH=$ORACLE_HOME/bin:$PATH DATE=`date +%Y-%m-%d`
LOG=/home/oracle/logs/log_rman_0_$DATA echo "================================================================================="
>>$LOG
echo "Begin backup at : `date`" >> $LOG
rman target / <<EOF >> $LOG run
{
allocate channel c1 device type disk;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/DBback/%d.%F.conf';
backup as compressed backupset incremental level 1 cumulative database format '/DBback/2_%d_pdb_shwjs_%T_%s_%p.DBFILE';
crosscheck backup;
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup as compressed backupset archivelog all not backed up format '/DBback/arch_bak/arch_%d_%T_%s_%p.ACR';
crosscheck archivelog all;
report obsolete;
delete noprompt expired backup;
delete noprompt obsolete;
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-8';
delete noprompt backup of archivelog all completed before 'sysdate-8';
release channel c1;
}
exit
EOF
echo "End backup at : `date`" >>$LOG #echo "Begin scp at : `date`" >>$LOG
#scp ${}/*`date +%Y%m%d`* oracle@192.168.1.61:/tmp/
#echo "End scp at : `date`" >>$LOG
echo "=================================================================================" >>$LOG exit 0
RMAN恢复过程
A数据库为要被还原的数据库,B数据库为Rman还原库
拷贝A数据库服务器上的pfile至B并修改
建议备份恢复前提前准备好恢复数据库上pfile,具体方法如下
1、获取原库的pfile,并修改
SQL> create pfile='/RmanBackup/init.ora' from spfile;
文件已创建。 将pfile文件复制到恢复主机上,
修改其中的部分配置为备库的具体值。主要修改数据存储路径(红色标识),创建修改后的路径,与配置文件对应
#cd /u01/app/oracle/product/12.2.0/db_1/dbs/
[oracle@swnode2 dbs]$ cat initgnnt2.ora
gnnt1.__data_transfer_cache_size=0
gnnt2.__data_transfer_cache_size=0
gnnt2.__db_cache_size=39594229760
gnnt1.__db_cache_size=39325794304
gnnt1.__inmemory_ext_roarea=0
gnnt2.__inmemory_ext_roarea=0
gnnt1.__inmemory_ext_rwarea=0
gnnt2.__inmemory_ext_rwarea=0
gnnt1.__java_pool_size=805306368
gnnt2.__java_pool_size=671088640
gnnt1.__large_pool_size=939524096
gnnt2.__large_pool_size=805306368
gnnt1.__oracle_base='/oracle/app/oracle'#ORACLE_BASE set from environment
gnnt2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
gnnt1.__pga_aggregate_target=13824425984
gnnt2.__pga_aggregate_target=13824425984
gnnt1.__sga_target=55029268480
gnnt2.__sga_target=55029268480
gnnt1.__shared_io_pool_size=536870912
gnnt2.__shared_io_pool_size=0
gnnt2.__shared_pool_size=13824425984
gnnt1.__shared_pool_size=13287555072
gnnt1.__streams_pool_size=0
gnnt2.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/gnnt/adump'
*.audit_trail='NONE'
*.cluster_database=false #单实例故使用false
*.compatible='12.2.0'
*.control_file_record_keep_time=15
*.control_files='/data/conf_dir/current.261.972470897'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata'
*.db_name='gnnt'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=gnntXDB)'
*.enable_pluggable_database=true
family:dw_helper.instance_mode='read-only'
gnnt2.instance_number=2
gnnt1.instance_number=1
*.local_listener='-oraagent-dummy-'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/acfs_arch'
*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=13107m
*.processes=15000
*.remote_login_passwordfile='exclusive'
*.sga_target=52428m
gnnt2.thread=2
gnnt1.thread=1
gnnt1.undo_tablespace='UNDOTBS1'
gnnt2.undo_tablespace='UNDOTBS2'
2、rman下用修改后的pfile启动至nomount状态,恢复控制文件
RMAN> startup nomount pfile='/u01/app/oracle/product/12.2.0/db_1/dbs/initgnnt2.ora';
Oracle instance started
Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
恢复控制文件(这一步必须nomount状态)
RMAN> restore controlfile from '/data/conf_ORCL_c-1508459345-20181125-00'; Starting restore at -NOV-
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID= device type=DISK channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: ::
output file name=/u01/app/oracle/oradata/racdb11/current.256.980678617
output file name=/u01/app/oracle/oradata/racdb11/current.257.980678613
Finished restore at -NOV-
3、启动到mount状态,恢复数据库
RMAN> alter database mount; Statement processed
released channel: ORA_DISK_1
5、注册备份目录到控制文件,-----------把拷贝过来的备份文件目录注册到控制文件,告诉控制文件我的备份在这个目录
RMAN> CATALOG START WITH '/DBback/';
restore还原数据库文件
1、修改数据文件位置
由于RAC用的是ASM存储管理的,现在是本地文件,需要修改数据文件名所以要newname一下
使用以下语句查出来所有的数据文件,改为本地文件名字
SQL>select 'SET NEWNAME FOR DATAFILE '|| file# ||' to ' ||''''|| name ||''''|| ';' from v$datafile;
查询到的结果修改,去掉SQL格式,修改正确的路径。
rman下 run{}中执行还原
run{
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/DATAFILE/system.257.972470727';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/DATAFILE/sysaux.258.972470787';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/DATAFILE/undotbs1.259.972470823';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/system.270.972471005';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/sysaux.269.972471005';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/DATAFILE/users.260.972470825';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/undotbs1.271.972471005';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/DATAFILE/undotbs2.273.972471285';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/system.282.972471893';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/sysaux.283.972471893';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/undotbs1.281.972471893';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/undo_2.285.972471941';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/users.286.972471947';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/system.292.972569467';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/sysaux.293.972569467';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/undotbs1.291.972569465';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.289.973098773';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.287.973099325';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.288.973099375';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.290.973099407';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/undo_2.295.974139333';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users05.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users06.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users07.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/DATAFILE/system01.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/DATAFILE/sysaux.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/sysaux01.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users08.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users09.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users10.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users11.dbf';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.306.997209999';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.307.1000716387';
SET NEWNAME FOR DATAFILE to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.308.1000717873';
restore database;
switch datafile all;
release channel d4;
release channel d3;
release channel d2;
release channel d1;
}
内容较多,点击展开
recover database
这里有以下几种不完全恢复方式
1、恢复到问题时间点
[oracle@swnode2 oradata]$ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
[oracle@swnode2 oradata]$ rman target / Recovery Manager: Release 12.2.0.1. - Production on Sun Nov :: Copyright (c) , , Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (DBID=, not open) RMAN> recover database until time '2018-11-27 19:00:00';
----------------------------------------------------------------------------------------------------------------------
也可以
RMAN> sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
RMAN> recover database until time '2018-11-27 19:00:00';
2、恢复到指定scn
也可以基于scn恢复,如何获取归档日志最后的scn号呢?
这个scn根据在rman下通过查看备份集详情获得
RMAN>list backupset;
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
.42G DISK :: -NOV-
BP Key: Status: AVAILABLE Compressed: YES Tag: TAG20181127T033133
Piece Name: /DBback/arch_bak/arch_GNNT_20181127_1834_1.ACR List of Archived Logs in backup set
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV-
-NOV- -NOV- BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
Full 20.53M DISK :: -NOV-
BP Key: Status: AVAILABLE Compressed: NO Tag: TAG20181127T035320
Piece Name: /DBback/GNNT.c---.conf
SPFILE Included: Modification time: -NOV-
SPFILE db_unique_name: GNNT
Control File Included: Ckp SCN: Ckp time: -NOV-
基于scn的恢复命令
RMAN>recover database until scn=626964005;
RMAN> recover database until scn=; Starting recover at -- ::
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile : /data/oradata/system.292.972569467
destination for restore of datafile : /data/oradata/sysaux.293.972569467
destination for restore of datafile : /data/oradata/undotbs1.291.972569465
destination for restore of datafile : /data/oradata/users.289.973098773
destination for restore of datafile : /data/oradata/users.287.973099325
destination for restore of datafile : /data/oradata/users.288.973099375
destination for restore of datafile : /data/oradata/users.290.973099407
destination for restore of datafile : /data/oradata/undo_2.295.974139333
destination for restore of datafile : /data/oradata/users05.dbf
destination for restore of datafile : /data/oradata/users06.dbf
destination for restore of datafile : /data/oradata/users07.dbf
destination for restore of datafile : /data/oradata/sysaux01.dbf
destination for restore of datafile : /data/oradata/users08.dbf
destination for restore of datafile : /data/oradata/users09.dbf
destination for restore of datafile : /data/oradata/users10.dbf
destination for restore of datafile : /data/oradata/users11.dbf
channel ORA_DISK_1: reading from backup piece /DBback/1_GNNT_pdb_shwjs_20181126_1824_1.DBFILE
channel ORA_DISK_1: errors found reading piece handle=/DBback/1_GNNT_pdb_shwjs_20181126_1824_1.DBFILE
channel ORA_DISK_1: failover to piece handle=/data/1_GNNT_pdb_shwjs_20181126_1824_1.DBFILE tag=TAG20181126T001008
channel ORA_DISK_1: restored backup piece
channel ORA_DISK_1: restore complete, elapsed time: ::
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile : /data/oradata/system.257.972470727
destination for restore of datafile : /data/oradata/sysaux.258.972470787
destination for restore of datafile : /data/oradata/undotbs1.259.972470823
destination for restore of datafile : /data/oradata/users.260.972470825
destination for restore of datafile : /data/oradata/undotbs2.273.972471285
destination for restore of datafile : /data/oradata/system01.dbf
destination for restore of datafile : /data/oradata/sysaux.dbf
channel ORA_DISK_1: reading from backup piece /DBback/1_GNNT_pdb_shwjs_20181126_1825_1.DBFILE
channel ORA_DISK_1: errors found reading piece handle=/DBback/1_GNNT_pdb_shwjs_20181126_1825_1.DBFILE
channel ORA_DISK_1: failover to piece handle=/data/1_GNNT_pdb_shwjs_20181126_1825_1.DBFILE tag=TAG20181126T001008
channel ORA_DISK_1: restored backup piece
channel ORA_DISK_1: restore complete, elapsed time: ::
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile : /data/oradata/undotbs1.291.972569465
destination for restore of datafile : /data/oradata/undo_2.295.974139333
destination for restore of datafile : /data/oradata/sysaux01.dbf
destination for restore of datafile : /data/oradata/users09.dbf
destination for restore of datafile : /data/oradata/users10.dbf
destination for restore of datafile : /data/oradata/users11.dbf
channel ORA_DISK_1: reading from backup piece /DBback/1_GNNT_pdb_shwjs_20181127_1830_1.DBFILE
channel ORA_DISK_1: errors found reading piece handle=/DBback/1_GNNT_pdb_shwjs_20181127_1830_1.DBFILE
channel ORA_DISK_1: failover to piece handle=/data/1_GNNT_pdb_shwjs_20181127_1830_1.DBFILE tag=TAG20181127T001010
channel ORA_DISK_1: restored backup piece
channel ORA_DISK_1: restore complete, elapsed time: :: starting media recovery archived log for thread with sequence is already on disk as file /data/acfs_arch/1_3585_972470900.dbf
archived log for thread with sequence is already on disk as file /data/acfs_arch/1_3586_972470900.dbf
archived log for thread with sequence is already on disk as file /data/acfs_arch/2_2937_972470900.dbf
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: reading from backup piece /DBback/arch_bak/arch_GNNT_20181126_1828_1.ACR
channel ORA_DISK_1: errors found reading piece handle=/DBback/arch_bak/arch_GNNT_20181126_1828_1.ACR
channel ORA_DISK_1: failover to piece handle=/data/arch_bak/arch_GNNT_20181126_1828_1.ACR tag=TAG20181126T030616
channel ORA_DISK_1: restored backup piece
channel ORA_DISK_1: restore complete, elapsed time: ::
archived log file name=/data/acfs_arch/2_2917_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3567_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3568_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3569_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2918_972470900.dbf thread= sequence=
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: restoring archived log
archived log thread= sequence=
channel ORA_DISK_1: reading from backup piece /DBback/arch_bak/arch_GNNT_20181127_1834_1.ACR
channel ORA_DISK_1: errors found reading piece handle=/DBback/arch_bak/arch_GNNT_20181127_1834_1.ACR
channel ORA_DISK_1: failover to piece handle=/data/arch_bak/arch_GNNT_20181127_1834_1.ACR tag=TAG20181127T033133
channel ORA_DISK_1: restored backup piece
channel ORA_DISK_1: restore complete, elapsed time: ::
archived log file name=/data/acfs_arch/2_2919_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3570_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3571_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2920_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2921_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3572_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2922_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3573_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2923_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3574_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2924_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3575_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3576_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2925_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3577_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3578_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3579_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2926_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3580_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3581_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2927_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2928_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2929_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3582_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2930_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2931_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2932_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3583_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2933_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2934_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2935_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3584_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2936_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/2_2937_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3585_972470900.dbf thread= sequence=
archived log file name=/data/acfs_arch/1_3586_972470900.dbf thread= sequence=
media recovery complete, elapsed time: ::
Finished recover at -- ::
点击展开
3、12c新特性还原
语法如下
RMAN> RECOVER DATABASE UNTIL AVAILABLE REDO; //限制:只针对全库恢复使用这个命令
还原后的调整
修改数据库redo log位置,可根据下面sql查询出来的结果,将asm位置修改为正确目录
SQL> select 'alter database rename file '''||member||q'[' to '/u01/app/oracle/fast_recovery_area/redo';]' from v$logfile;
//需创建红色标识目录
将查询到的结果修改redo后面的编号,进行执行
alter database rename file '+DATA/GNNT/ONLINELOG/group_8.267.972470901' to '/u01/app/oracle/fast_recovery_area/redo1';
alter database rename file '+DATA/GNNT/ONLINELOG/group_7.266.972470901' to '/u01/app/oracle/fast_recovery_area/redo2';
alter database rename file '+DATA/GNNT/ONLINELOG/group_6.265.972470901' to '/u01/app/oracle/fast_recovery_area/redo3';
alter database rename file '+DATA/GNNT/ONLINELOG/group_5.264.972470901' to '/u01/app/oracle/fast_recovery_area/redo4';
alter database rename file '+DATA/GNNT/ONLINELOG/group_2.263.972470901' to '/u01/app/oracle/fast_recovery_area/redo5';
alter database rename file '+DATA/GNNT/ONLINELOG/group_1.262.972470901' to '/u01/app/oracle/fast_recovery_area/redo6';
alter database rename file '+DATA/GNNT/ONLINELOG/group_3.274.972471515' to '/u01/app/oracle/fast_recovery_area/redo7';
alter database rename file '+DATA/GNNT/ONLINELOG/group_4.275.972471541' to '/u01/app/oracle/fast_recovery_area/redo8';
alter database rename file '+DATA/GNNT/ONLINELOG/group_9.276.972471563' to '/u01/app/oracle/fast_recovery_area/redo9';
alter database rename file '+DATA/GNNT/ONLINELOG/group_10.277.972471587' to '/u01/app/oracle/fast_recovery_area/redo10';
alter database rename file '+DATA/GNNT/ONLINELOG/group_11.278.972471609' to '/u01/app/oracle/fast_recovery_area/redo11';
alter database rename file '+DATA/GNNT/ONLINELOG/group_12.279.972471631' to '/u01/app/oracle/fast_recovery_area/redo12';
创建spfile:create spfile from pfile
问题解决
完成后尝试打开数据库
可能问题1:
RMAN> alter database open;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of sql statement command at 11/25/2018 18:22:48
ORA-19751: could not create the change tracking file
ORA-19750: change tracking file: '+DATA/ORCL/CHANGETRACKING/ctf.282.992257129'
ORA-17502: ksfdcre:1 Failed to create file +DATA/ORCL/CHANGETRACKING/ctf.282.992257129
ORA-17501: logical block size 4294967295 is invalid
ORA-29701: ?????????????????
ORA-17503: ksfdopn:2 Failed to open file +DATA/ORCL/CHANGETRACKING/ctf.282.992257129
ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-15374: invalid cluster configuration
问题解决https://blog.csdn.net/jaso5935/article/details/41117733
可能问题2:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00392: log 7 of thread 1 is being cleared, operation not allowed
ORA-00312: online log 7 thread 1:
'/data/u01/app/oracle/fast_recovery_area/ORCL/redo2'
解决链接:https://www.linuxidc.com/Linux/2014-11/108886.html
SQL> select group#,bytes//||'M',status from v$log; GROUP# BYTES//||'M' STATUS
---------- ----------------------------------------- ----------------
800M CLEARING
800M CLEARING
800M CLEARING
800M CLEARING
800M CLEARING_CURRENT
800M CLEARING
800M CLEARING
800M CLEARING_CURRENT
800M CLEARING
800M CLEARING
800M CLEARING GROUP# BYTES//||'M' STATUS
---------- ----------------------------------------- ----------------
800M CLEARING rows selected. SQL> alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
alter database clear logfile group ;
Database altered.
SQL> select group#,bytes//||'M',status from v$log; GROUP# BYTES//||'M' STATUS
---------- ----------------------------------------- ----------------
800M UNUSED
800M UNUSED
800M UNUSED
800M UNUSED
800M CURRENT
800M UNUSED
800M UNUSED
800M CURRENT
800M UNUSED
800M UNUSED
800M UNUSED GROUP# BYTES//||'M' STATUS
---------- ----------------------------------------- ----------------
800M UNUSED rows selected. SQL> alter database open resetlogs; Database altered.
问题解决
可能问题3:
RMAN> recover database until available redo;
Starting recover at 04-DEC-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=5643 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/04/2018 20:28:24
ORA-19698: /u01/app/oracle/fast_recovery_area/ORCL/redo5 is from different database: id=1508459345, db_name=ORCL
问题解决 命令行删除报错的redo,后重新执行recover
[oracle@swnode2 ~]$ rm /u01/app/oracle/fast_recovery_area/ORCL/redo
redo/ redo1 redo2 redo3 redo4 redo5 redo7 redo8
[oracle@swnode2 ~]$ rm /u01/app/oracle/fast_recovery_area/ORCL/redo*
恢复完成!!!
恢复完成测试启动、关闭、查询、查看Oracle运行日志。
最后一步:远程连接配置监听
1、新恢复的数据库没有密码文件,我们需要手动创建
创建前查看到没有用户密码信息
SQL> select * from v$pwfile_users; no rows selected 手动创建
[oracle@swnode2 dbs]$orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=xxxxxx force=y entries=5 //这里不创建密码文件的话sys用户登录会报 ORA-01017
2、注册监听
动态注册:
[oracle@swnode2 dbs]$ sqlplus sys/password@192.168.12.121:/gnnt as sysdba SQL*Plus: Release 12.2.0.1. Production on Fri Dec :: Copyright (c) , , Oracle. All rights reserved. Last Successful login time: Fri Dec :: +: Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1. - 64bit Production
SQL> show parameter db_name NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string gnnt SQL> alter system set local_listener=''; System altered. SQL> alter system register; System altered. SQL> quit
查看监听状态
[oracle@swnode2 dbs]$ lsnrctl status LSNRCTL for Linux: Version 12.2.0.1. - Production on -DEC- :: Copyright (c) , , Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1. - Production
Start Date -DEC- ::
Uptime days hr. min. sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/diag/tnslsnr/swnode2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=swnode2)(PORT=)))
Services Summary...
Service "68e9f82a20250d37e053650da8c0828f" has instance(s).
Instance "gnnt2", status READY, has handler(s) for this service...
Service "6900b0297cc66549e053650da8c0b038" has instance(s).
Instance "gnnt2", status READY, has handler(s) for this service...
Instance "gnnt2", status READY, has handler(s) for this service...
Service "gnnt" has instance(s).
Instance "gnnt2", status READY, has handler(s) for this service...
Service "gnntXDB" has instance(s).
Instance "gnnt2", status READY, has handler(s) for this service...
Service "gnntpdb01" has instance(s).
Instance "gnnt2", status READY, has handler(s) for this service...
Service "pdb_shwjs" has instance(s).
Instance "gnnt2", status READY, has handler(s) for this service...
Instance "gnnt2", status READY, has handler(s) for this service...
The command completed successfully
远程连接测试
#sqlplus sys/psswd@IP:/sid as sysdba
12c RAC 用Rman 恢复到异机单实例的更多相关文章
- Oracle RAC备份异机单实例恢复演练
本文只节选了操作方案的部分章节: 3. 操作步骤 3.1. 异机单实例Oracle数据库软件安装 在异机上进行单实例Oracle数据库软件安装.该步骤过程不再本文中重复描述,如果对安装过程存在疑问 ...
- oracle备份恢复之rman恢复到异机
注意事项: 1 此处实验环境为同平台,同字节序,同版本,源机器和目标机器相同的目录结构. 2 目标机器只需要安装oracle数据库软件即可. 3 第一次利用备份恢复测试环境,之后从源机器拷贝备份到目标 ...
- rman备份与异机恢复
一.rman备份脚本并为定时任务 #!/bin/bashsource ~/.bash_profileexport LANG=en_USBACKUP_DATE=`date +%d`#RMAN_LOG_F ...
- rman 备份并异机恢复
1.RMAN 备份脚本 RUN { CONFIGURE RETENTION POLICY DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CO ...
- RAC 之 RMAN 恢复
RAC 下的RMAN 讲究的是备份和还原的策略要一致.备份策略的不同,会导致备份结果的分步不同,进而影响恢复的策略和步骤.一般情况下,恢复策略和备份策略必须是对应的.如果备份策略进行了修改,那么恢复也 ...
- RAC之RMAN恢复
之前整理的RMAN 有关还原的文章: RMAN 系列(五) ---- RMAN 还原 与 恢复 http://blog.csdn.net/tianlesoftware/archive/2010/07/ ...
- Oracle备份恢复之冷备份恢复与异机还原
(同平台:rhel6.4~rhel6.4:同版本:oracle 11g 11.2.0.1~ oracle 11g 11.2.0.1) 冷备份发生在数据库关闭状态下,直接拷贝物理文件的备份方式,备份数据 ...
- Oracle备份恢复之热备份恢复及异机恢复
原理: 数据库必须运行在归档模式下,否则备份没有意义.备份前冻结块头,使scn号不变化,然后cp物理文件,最后解冻块头.此过程dml语句可以正常执行,动作被写在日志文件里面,当解冻scn号后,日志文件 ...
- rman全备份异机恢复
一.测试环境 [oracle@localhost ~]$ uname -a Linux localhost.localdomain -.el6.x86_64 # SMP Tue May :: EDT ...
随机推荐
- LRU cache缓存简单实现
LRU cache LRU(最近最少使用)是一种常用的缓存淘汰机制.当缓存大小容量到达最大分配容量的时候,就会将缓存中最近访问最少的对象删除掉,以腾出空间给新来的数据. 实现 (1)单线程简单版本 ( ...
- 萌新学渗透之Hack The Box_Beep
我将我的walkthrough过程用视频解说的形式记载 视频地址https://www.bilibili.com/video/BV1VT4y1j7dg 一是因为看我视频的后来者应该都是刚入门的新手,视 ...
- C++中string类型的find 函数
(去膜拜大佬的博客园,结果被自己菜到自闭) find string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,那么会返回一个特别的标记npos. 对其返回的下标position ...
- mongoose.model第三个参数的问题
这个是个好问题,之前按照教程做的数据库没有问题,现在自己从新做出现了问题.还好之前有无意中接触了这个知识点,不然感觉真的很难解决. 在检查完所有东西都没错的时候(前端传给req的数据正常,与数据库相符 ...
- Skill 脚本演示 ycChangeLayerToEntry.il
https://www.cnblogs.com/yeungchie/ ycChangeLayerToEntry.il 快速切换选中 figs 的 lpp(Layer-Purpose Pair). 回到 ...
- x86架构:从实模式进入保护模式
详细的过程说明参考:(1) https://www.cnblogs.com/Philip-Tell-Truth/p/5211248.html (2)x86汇编:从实模式到保护模式 这里简化一下 ...
- 动态修改HttpServletRequest的Post请求参数
需求场景: 公司对APP调用的后台接口有个公用格式如下,外层包含了一些设备.版本.签名信息,主要的业务参数是在body里,外层信息都是在网关解决,验证签名后,在转发body到后台服务. { " ...
- python 变量的命名规则和注意事项
命名规则 变量名只能包含字母.数字和下划线.变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message 变量名不能包含空格,但可使用下划线 ...
- Android 的重要控件 ListView (听说是最难最常用的控件)
这个打字有点慢了,左手受伤了,不过很幸运,左手小拇指没事(这就可以愉快地使用快捷键啦!),虽然有伤,但还是得坚持总结,不只是为自己,还为未来的你们铺路,希望我写的,对你们有帮助. 提前给自己一个祝福: ...
- python1.3集合知识点:
#定义集合:{},集合是只有key没有value的字典,集合内元素不能重复!a={1,2,3,4,5,6}#列表转换成集合b=set([1,2,3,4,5])print(a,b) #集合对列表进行去重 ...