12c RAC 用Rman 恢復到異機單實例


准備工作

原服務器軟件部署:Redhat 6.6 + Oracle 12.2.0.1 rac

Oracle12c單實例安裝

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: 2018-11-27
#Version: 1.0.0
export ORACLE_SID=gnnt2
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/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 8 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/DBback/%d.%F.conf';
backup as compressed backupset incremental level 0 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 ${1}/*`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: 2018-11-27
#Version: 1.0.0
export ORACLE_SID=gnnt2
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/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 8 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 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 ${1}/*`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: 2018-11-27
#Version: 1.0.0
export ORACLE_SID=gnnt2
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/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 8 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 ${1}/*`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 2483027968 bytes
Fixed Size 8795808 bytes
Variable Size 671091040 bytes
Database Buffers 1795162112 bytes
Redo Buffers 7979008 bytes

恢復控制文件(這一步必須nomount狀態)

RMAN> restore controlfile from '/data/conf_ORCL_c-1508459345-20181125-00';

Starting restore at 25-NOV-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=8 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/racdb11/current.256.980678617
output file name=/u01/app/oracle/oradata/racdb11/current.257.980678613
Finished restore at 25-NOV-18

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 1 to '/u01/app/oracle/oradata/DATAFILE/system.257.972470727';
SET NEWNAME FOR DATAFILE 3 to '/u01/app/oracle/oradata/DATAFILE/sysaux.258.972470787';
SET NEWNAME FOR DATAFILE 4 to '/u01/app/oracle/oradata/DATAFILE/undotbs1.259.972470823';
SET NEWNAME FOR DATAFILE 5 to '/u01/app/oracle/oradata/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/system.270.972471005';
SET NEWNAME FOR DATAFILE 6 to '/u01/app/oracle/oradata/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/sysaux.269.972471005';
SET NEWNAME FOR DATAFILE 7 to '/u01/app/oracle/oradata/DATAFILE/users.260.972470825';
SET NEWNAME FOR DATAFILE 8 to '/u01/app/oracle/oradata/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/undotbs1.271.972471005';
SET NEWNAME FOR DATAFILE 9 to '/u01/app/oracle/oradata/DATAFILE/undotbs2.273.972471285';
SET NEWNAME FOR DATAFILE 10 to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/system.282.972471893';
SET NEWNAME FOR DATAFILE 11 to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/sysaux.283.972471893';
SET NEWNAME FOR DATAFILE 12 to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/undotbs1.281.972471893';
SET NEWNAME FOR DATAFILE 13 to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/undo_2.285.972471941';
SET NEWNAME FOR DATAFILE 14 to '/u01/app/oracle/oradata/68E9F82A20250D37E053650DA8C0828F/DATAFILE/users.286.972471947';
SET NEWNAME FOR DATAFILE 21 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/system.292.972569467';
SET NEWNAME FOR DATAFILE 22 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/sysaux.293.972569467';
SET NEWNAME FOR DATAFILE 23 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/undotbs1.291.972569465';
SET NEWNAME FOR DATAFILE 24 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.289.973098773';
SET NEWNAME FOR DATAFILE 25 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.287.973099325';
SET NEWNAME FOR DATAFILE 26 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.288.973099375';
SET NEWNAME FOR DATAFILE 27 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.290.973099407';
SET NEWNAME FOR DATAFILE 28 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/undo_2.295.974139333';
SET NEWNAME FOR DATAFILE 29 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users05.dbf';
SET NEWNAME FOR DATAFILE 30 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users06.dbf';
SET NEWNAME FOR DATAFILE 31 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users07.dbf';
SET NEWNAME FOR DATAFILE 32 to '/u01/app/oracle/oradata/DATAFILE/system01.dbf';
SET NEWNAME FOR DATAFILE 33 to '/u01/app/oracle/oradata/DATAFILE/sysaux.dbf';
SET NEWNAME FOR DATAFILE 34 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 35 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users08.dbf';
SET NEWNAME FOR DATAFILE 36 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users09.dbf';
SET NEWNAME FOR DATAFILE 37 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users10.dbf';
SET NEWNAME FOR DATAFILE 38 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users11.dbf';
SET NEWNAME FOR DATAFILE 39 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.306.997209999';
SET NEWNAME FOR DATAFILE 40 to '/u01/app/oracle/oradata/6900B0297CC66549E053650DA8C0B038/DATAFILE/users.307.1000716387';
SET NEWNAME FOR DATAFILE 41 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.0 - Production on Sun Nov 25 17:22:19 2018

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

connected to target database: ORCL (DBID=1508459345, 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
------- ---------- ----------- ------------ ---------------
1774    4.42G      DISK        00:21:42     27-NOV-18
        BP Key: 1774   Status: AVAILABLE  Compressed: YES  Tag: TAG20181127T033133
        Piece Name: /DBback/arch_bak/arch_GNNT_20181127_1834_1.ACR

  List of Archived Logs in backup set 1774
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    3570    623133533  26-NOV-18 623144627  26-NOV-18
  1    3571    623144627  26-NOV-18 623144743  26-NOV-18
  1    3572    623144743  26-NOV-18 623144838  26-NOV-18
  1    3573    623144838  26-NOV-18 623144954  26-NOV-18
  1    3574    623144954  26-NOV-18 624000290  26-NOV-18
  1    3575    624000290  26-NOV-18 624137326  26-NOV-18
  1    3576    624137326  26-NOV-18 624182658  26-NOV-18
  1    3577    624182658  26-NOV-18 624466466  26-NOV-18
  1    3578    624466466  26-NOV-18 624648532  26-NOV-18
  1    3579    624648532  26-NOV-18 624811743  26-NOV-18
  1    3580    624811743  26-NOV-18 624898678  26-NOV-18
  1    3581    624898678  26-NOV-18 626225424  26-NOV-18
  1    3582    626225424  26-NOV-18 626528280  26-NOV-18
  1    3583    626528280  26-NOV-18 626552079  26-NOV-18
  1    3584    626552079  26-NOV-18 626796446  27-NOV-18
  1    3585    626796446  27-NOV-18 626801478  27-NOV-18
  1    3586    626801478  27-NOV-18 626947222  27-NOV-18
  2    2919    623133510  26-NOV-18 623144658  26-NOV-18
  2    2920    623144658  26-NOV-18 623144693  26-NOV-18
  2    2921    623144693  26-NOV-18 623144786  26-NOV-18
  2    2922    623144786  26-NOV-18 623144889  26-NOV-18
  2    2923    623144889  26-NOV-18 623627321  26-NOV-18
  2    2924    623627321  26-NOV-18 624141400  26-NOV-18
  2    2925    624141400  26-NOV-18 624652859  26-NOV-18
  2    2926    624652859  26-NOV-18 626211462  26-NOV-18
  2    2927    626211462  26-NOV-18 626223272  26-NOV-18
  2    2928    626223272  26-NOV-18 626225370  26-NOV-18
  2    2929    626225370  26-NOV-18 626234325  26-NOV-18
  2    2930    626234325  26-NOV-18 626290700  26-NOV-18
  2    2931    626290700  26-NOV-18 626528251  26-NOV-18
  2    2932    626528251  26-NOV-18 626535138  26-NOV-18
  2    2933    626535138  26-NOV-18 626542328  26-NOV-18
  2    2934    626542328  26-NOV-18 626550432  26-NOV-18
  2    2935    626550432  26-NOV-18 626560723  26-NOV-18
  2    2936    626560723  26-NOV-18 626586366  26-NOV-18
  2    2937    626586366  26-NOV-18 626844113  27-NOV-18
  2    2938    626844113  27-NOV-18 626947203  27-NOV-18

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1775    Full    20.53M     DISK        00:00:01     27-NOV-18
        BP Key: 1775   Status: AVAILABLE  Compressed: NO  Tag: TAG20181127T035320
        Piece Name: /DBback/GNNT.c-1283969136-20181127-00.conf
  SPFILE Included: Modification time: 26-NOV-18
  SPFILE db_unique_name: GNNT
  Control File Included: Ckp SCN: 626964005    Ckp time: 27-NOV-18

 基於scn的恢復命令

RMAN>recover database until scn=626964005;
RMAN> recover database until scn=626844113;

Starting recover at 2018-11-28 08:37:15
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 00021: /data/oradata/system.292.972569467
destination for restore of datafile 00022: /data/oradata/sysaux.293.972569467
destination for restore of datafile 00023: /data/oradata/undotbs1.291.972569465
destination for restore of datafile 00024: /data/oradata/users.289.973098773
destination for restore of datafile 00025: /data/oradata/users.287.973099325
destination for restore of datafile 00026: /data/oradata/users.288.973099375
destination for restore of datafile 00027: /data/oradata/users.290.973099407
destination for restore of datafile 00028: /data/oradata/undo_2.295.974139333
destination for restore of datafile 00029: /data/oradata/users05.dbf
destination for restore of datafile 00030: /data/oradata/users06.dbf
destination for restore of datafile 00031: /data/oradata/users07.dbf
destination for restore of datafile 00034: /data/oradata/sysaux01.dbf
destination for restore of datafile 00035: /data/oradata/users08.dbf
destination for restore of datafile 00036: /data/oradata/users09.dbf
destination for restore of datafile 00037: /data/oradata/users10.dbf
destination for restore of datafile 00038: /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 1
channel ORA_DISK_1: restore complete, elapsed time: 00:18:46
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 00001: /data/oradata/system.257.972470727
destination for restore of datafile 00003: /data/oradata/sysaux.258.972470787
destination for restore of datafile 00004: /data/oradata/undotbs1.259.972470823
destination for restore of datafile 00007: /data/oradata/users.260.972470825
destination for restore of datafile 00009: /data/oradata/undotbs2.273.972471285
destination for restore of datafile 00032: /data/oradata/system01.dbf
destination for restore of datafile 00033: /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 1
channel ORA_DISK_1: restore complete, elapsed time: 00:10:26
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 00023: /data/oradata/undotbs1.291.972569465
destination for restore of datafile 00028: /data/oradata/undo_2.295.974139333
destination for restore of datafile 00034: /data/oradata/sysaux01.dbf
destination for restore of datafile 00036: /data/oradata/users09.dbf
destination for restore of datafile 00037: /data/oradata/users10.dbf
destination for restore of datafile 00038: /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 1
channel ORA_DISK_1: restore complete, elapsed time: 00:22:46

starting media recovery

archived log for thread 1 with sequence 3585 is already on disk as file /data/acfs_arch/1_3585_972470900.dbf
archived log for thread 1 with sequence 3586 is already on disk as file /data/acfs_arch/1_3586_972470900.dbf
archived log for thread 2 with sequence 2937 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=2 sequence=2917
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3567
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3568
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3569
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2918
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 1
channel ORA_DISK_1: restore complete, elapsed time: 00:06:05
archived log file name=/data/acfs_arch/2_2917_972470900.dbf thread=2 sequence=2917
archived log file name=/data/acfs_arch/1_3567_972470900.dbf thread=1 sequence=3567
archived log file name=/data/acfs_arch/1_3568_972470900.dbf thread=1 sequence=3568
archived log file name=/data/acfs_arch/1_3569_972470900.dbf thread=1 sequence=3569
archived log file name=/data/acfs_arch/2_2918_972470900.dbf thread=2 sequence=2918
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2919
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3570
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3571
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2920
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2921
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3572
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2922
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3573
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2923
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3574
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2924
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3575
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3576
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2925
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3577
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3578
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3579
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2926
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3580
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3581
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2927
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2928
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2929
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3582
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2930
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2931
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2932
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3583
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2933
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2934
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2935
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=3584
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=2936
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 1
channel ORA_DISK_1: restore complete, elapsed time: 00:22:26
archived log file name=/data/acfs_arch/2_2919_972470900.dbf thread=2 sequence=2919
archived log file name=/data/acfs_arch/1_3570_972470900.dbf thread=1 sequence=3570
archived log file name=/data/acfs_arch/1_3571_972470900.dbf thread=1 sequence=3571
archived log file name=/data/acfs_arch/2_2920_972470900.dbf thread=2 sequence=2920
archived log file name=/data/acfs_arch/2_2921_972470900.dbf thread=2 sequence=2921
archived log file name=/data/acfs_arch/1_3572_972470900.dbf thread=1 sequence=3572
archived log file name=/data/acfs_arch/2_2922_972470900.dbf thread=2 sequence=2922
archived log file name=/data/acfs_arch/1_3573_972470900.dbf thread=1 sequence=3573
archived log file name=/data/acfs_arch/2_2923_972470900.dbf thread=2 sequence=2923
archived log file name=/data/acfs_arch/1_3574_972470900.dbf thread=1 sequence=3574
archived log file name=/data/acfs_arch/2_2924_972470900.dbf thread=2 sequence=2924
archived log file name=/data/acfs_arch/1_3575_972470900.dbf thread=1 sequence=3575
archived log file name=/data/acfs_arch/1_3576_972470900.dbf thread=1 sequence=3576
archived log file name=/data/acfs_arch/2_2925_972470900.dbf thread=2 sequence=2925
archived log file name=/data/acfs_arch/1_3577_972470900.dbf thread=1 sequence=3577
archived log file name=/data/acfs_arch/1_3578_972470900.dbf thread=1 sequence=3578
archived log file name=/data/acfs_arch/1_3579_972470900.dbf thread=1 sequence=3579
archived log file name=/data/acfs_arch/2_2926_972470900.dbf thread=2 sequence=2926
archived log file name=/data/acfs_arch/1_3580_972470900.dbf thread=1 sequence=3580
archived log file name=/data/acfs_arch/1_3581_972470900.dbf thread=1 sequence=3581
archived log file name=/data/acfs_arch/2_2927_972470900.dbf thread=2 sequence=2927
archived log file name=/data/acfs_arch/2_2928_972470900.dbf thread=2 sequence=2928
archived log file name=/data/acfs_arch/2_2929_972470900.dbf thread=2 sequence=2929
archived log file name=/data/acfs_arch/1_3582_972470900.dbf thread=1 sequence=3582
archived log file name=/data/acfs_arch/2_2930_972470900.dbf thread=2 sequence=2930
archived log file name=/data/acfs_arch/2_2931_972470900.dbf thread=2 sequence=2931
archived log file name=/data/acfs_arch/2_2932_972470900.dbf thread=2 sequence=2932
archived log file name=/data/acfs_arch/1_3583_972470900.dbf thread=1 sequence=3583
archived log file name=/data/acfs_arch/2_2933_972470900.dbf thread=2 sequence=2933
archived log file name=/data/acfs_arch/2_2934_972470900.dbf thread=2 sequence=2934
archived log file name=/data/acfs_arch/2_2935_972470900.dbf thread=2 sequence=2935
archived log file name=/data/acfs_arch/1_3584_972470900.dbf thread=1 sequence=3584
archived log file name=/data/acfs_arch/2_2936_972470900.dbf thread=2 sequence=2936
archived log file name=/data/acfs_arch/2_2937_972470900.dbf thread=2 sequence=2937
archived log file name=/data/acfs_arch/1_3585_972470900.dbf thread=1 sequence=3585
archived log file name=/data/acfs_arch/1_3586_972470900.dbf thread=1 sequence=3586
media recovery complete, elapsed time: 02:18:38
Finished recover at 2018-11-28 12:18:32
點擊展開

 3、12c新特性還原

RMAN 自動恢復到 REDO 終點的步驟簡化

語法如下

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/1024/1024||'M',status from v$log;

    GROUP# BYTES/1024/1024||'M'                      STATUS
---------- ----------------------------------------- ----------------
         1 800M                                      CLEARING
         2 800M                                      CLEARING
         6 800M                                      CLEARING
         8 800M                                      CLEARING
         7 800M                                      CLEARING_CURRENT
         5 800M                                      CLEARING
        10 800M                                      CLEARING
        11 800M                                      CLEARING_CURRENT
        12 800M                                      CLEARING
         9 800M                                      CLEARING
         4 800M                                      CLEARING

    GROUP# BYTES/1024/1024||'M'                      STATUS
---------- ----------------------------------------- ----------------
         3 800M                                      CLEARING

12 rows selected.

SQL> alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;
alter database clear logfile group 4;
alter database clear logfile group 5;
alter database clear logfile group 6;
alter database clear logfile group 7;
alter database clear logfile group 8;
alter database clear logfile group 9;
alter database clear logfile group 10;
alter database clear logfile group 11;
alter database clear logfile group 12;
Database altered.
SQL> select group#,bytes/1024/1024||'M',status from v$log;

    GROUP# BYTES/1024/1024||'M'                      STATUS
---------- ----------------------------------------- ----------------
         1 800M                                      UNUSED
         2 800M                                      UNUSED
         6 800M                                      UNUSED
         8 800M                                      UNUSED
         7 800M                                      CURRENT
         5 800M                                      UNUSED
        10 800M                                      UNUSED
        11 800M                                      CURRENT
        12 800M                                      UNUSED
         9 800M                                      UNUSED
         4 800M                                      UNUSED

    GROUP# BYTES/1024/1024||'M'                      STATUS
---------- ----------------------------------------- ----------------
         3 800M                                      UNUSED

12 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:1521/gnnt  as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Fri Dec 21 15:40:09 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Last Successful login time: Fri Dec 21 2018 15:32:46 +08:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 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.0 - Production on 21-DEC-2018 15:43:10

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                21-DEC-2018 11:29:53
Uptime                    0 days 4 hr. 13 min. 17 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=1521)))
Services Summary...
Service "68e9f82a20250d37e053650da8c0828f" has 1 instance(s).
  Instance "gnnt2", status READY, has 1 handler(s) for this service...
Service "6900b0297cc66549e053650da8c0b038" has 2 instance(s).
  Instance "gnnt2", status READY, has 2 handler(s) for this service...
  Instance "gnnt2", status READY, has 1 handler(s) for this service...
Service "gnnt" has 1 instance(s).
  Instance "gnnt2", status READY, has 1 handler(s) for this service...
Service "gnntXDB" has 1 instance(s).
  Instance "gnnt2", status READY, has 1 handler(s) for this service...
Service "gnntpdb01" has 1 instance(s).
  Instance "gnnt2", status READY, has 1 handler(s) for this service...
Service "pdb_shwjs" has 2 instance(s).
  Instance "gnnt2", status READY, has 2 handler(s) for this service...
  Instance "gnnt2", status READY, has 1 handler(s) for this service...
The command completed successfully

遠程連接測試

 #sqlplus sys/psswd@IP:1521/sid  as sysdba

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM