Oracle數據庫離線增量備份與恢復

      網友投稿 1729 2022-05-29

      oracle數據庫離線增量備份與恢復

      項目背景:

      客戶數據庫版本為Oracle 11G 11.2.0.4版本;

      客戶Oracle數據庫業務需要上云,數據量較大,RMAN備份后,備份集約有1T左右;

      客戶希望盡可能減少業務停機時間;

      客戶Oracle數據庫在內網,無法直通公網;

      遷移方案:

      因為客戶的Oracle數據庫無法直連公網,所以只能采用離線遷移方式;

      為減少業務停機時間,本方案使用RMAN備份,分全量和增量兩個備份集,分別上傳到公有云;

      全量備份時間較長,定在凌晨 01:00開始,備份完成后通過其它主機上傳到華為云;

      客戶公網帶寬為500Mbps,傳輸速度約50MB左右,完成1TB的備份集數據傳輸,約需要6個小時;

      全量備份執行、全量備份集上傳,均無法業務中斷,待全量備份集在云上恢復完成后,再在線下停業務、增量備份、上傳增量備份集、云上恢復增量備份集;

      遷移方案拓撲簡圖如下所示:

      遷移過程:

      # 在客戶業務環境,執行Oracle數據庫全量備份;

      # 備份腳本如下:

      $ more full_orcl.sh

      echo -e '******Start********_'$(date '+%Y%m%d%H%M%S')

      export ORACLE_SID=orcl

      export ORACLE_BASE=/oracle/app

      export ORACLE_HOME=/oracle/app/product/11.2.0/dbhome_1

      export PATH=$ORACLE_HOME/bin:$PATH

      rman target /<

      run{

      allocate channel c1 type disk;

      backup as compressed backupset incremental level 0 tag 'orcl_incr_L0' format

      '/rmanbak/full_bak/orcl/full_%d_%T_%s' database include current controlfile;

      sql "alter system archive log current";

      backup as compressed backupset archivelog all format '/rmanbak/full_bak/orcl/arclog_0_%s_%p_%t_%d' delete input;

      crosscheck backup;

      delete noprompt expired backup;

      delete noprompt obsolete;

      crosscheck archivelog all;

      delete noprompt expired archivelog all;

      release channel c1;

      }

      exit;

      EOF

      # 執行數據庫備份腳本:

      $ ./full_orcl.sh

      # 備份集通過客戶公網,直接上傳到華為云;

      # 通過在客戶主機上安裝華為云obsutils,直接將備份集上傳到華為云OBS桶;

      # 上傳過程略;

      注:云上數據庫環境需要提前部署好;

      僅需要安裝好Oracle數據庫軟件即可,無需建庫;

      通過在源數據庫,查看rman備份,確認全量備份集中,哪個備份文件中包含參數文件、控制文件,下面會用到;

      $ rman target /

      RMAN> startup nomount;

      RMAN> restore spfile from '/rmanbak/full_bak/orcl/full_ORCL_20210311_15';

      # 使用新恢復出來的參數文件,重啟數據庫

      RMAN> shutdown immediate;

      RMAN> startup nomount;

      RMAN> restore controlfile from '/rmanbak/full_bak/orcl/full_ORCL_20210311_15';

      RMAN> alter database mount;

      RMAN> restore database;

      # 注:需要注意,要把全量備份集的所有磁盤文件,都catalog到rman中:

      RMAN> catalog start with '/rmanbak/full_bak/orcl/';

      RMAN> recover database;

      Starting recover at 11-MAR-21

      using channel ORA_DISK_1

      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=297

      channel ORA_DISK_1: restoring archived log

      archived log thread=1 sequence=298

      channel ORA_DISK_1: reading from backup piece /rmanbak/full_bak/orcl/arclog_0_16_1_1066925664_ORCL

      channel ORA_DISK_1: piece handle=/rmanbak/full_bak/orcl/arclog_0_16_1_1066925664_ORCL tag=TAG20210311T161424

      channel ORA_DISK_1: restored backup piece 1

      channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

      archived log file name=/oracle/app/fast_recovery_area/ORCL/archivelog/2021_03_11/o1_mf_1_297_j4mobbwl_.arc thread=1 sequence=297

      channel default: deleting archived log(s)

      archived log file name=/oracle/app/fast_recovery_area/ORCL/archivelog/2021_03_11/o1_mf_1_297_j4mobbwl_.arc RECID=8 STAMP=1066926666

      archived log file name=/oracle/app/fast_recovery_area/ORCL/archivelog/2021_03_11/o1_mf_1_298_j4mobbxm_.arc thread=1 sequence=298

      channel default: deleting archived log(s)

      archived log file name=/oracle/app/fast_recovery_area/ORCL/archivelog/2021_03_11/o1_mf_1_298_j4mobbxm_.arc RECID=7 STAMP=1066926666

      unable to find archived log

      archived log thread=1 sequence=299

      RMAN-00571: ===========================================================

      RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

      RMAN-00571: ===========================================================

      RMAN-03002: failure of recover command at 03/11/2021 16:31:08

      RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 299 and starting SCN of 6324617

      # 注:在此處,我們需要將數據庫歸檔日志,恢復到備份時刻的最后一個日志號;

      # 根據上面錯誤提示,我們在recover時,需要指定thread=1 sequence=299;

      # 再次執行recover:

      RMAN> run {

      Oracle數據庫離線增量備份與恢復

      set until sequence 299 thread 1;

      recover database;

      }

      # 執行recover成功;

      # 說明:因為后續還需要繼續恢復增量備份集,所以此處切不可對數據庫進行resetlogs操作;

      # 在此處可以簡單確認恢復的數據是否可讀;

      # 不可以對數據庫進行resetlogs操作,可以以read only方式打開,做簡單查詢:

      $ sqlplus "/as sysdba"

      SQL> alter database open read only;

      SQL> select count(*) from xxx.xxxxx;

      # 確認業務數據可以正常查詢即可

      # 基于數據一致性考慮,最后一次增量備份之前,源端環境就不能有新增的數據了;

      # 所以需要在源端將業務系統停機;

      # Oracle數據庫,需要確認已經沒有客戶連接session在連接,并關閉監聽;

      $ lsnrctl stop

      $ netstat -ntlp | grep 1521

      # 在客戶業務環境,執行Oracle數據庫增量備份;

      # 備份腳本如下:

      $ more incr_orcl.sh

      echo -e '******Start********_'$(date '+%Y%m%d%H%M%S')

      export ORACLE_SID=orcl

      export ORACLE_BASE=/oracle/app

      export ORACLE_HOME=/oracle/app/product/11.2.0/dbhome_1

      export PATH=$ORACLE_HOME/bin:$PATH

      rman target /<

      run{

      allocate channel c1 type disk;

      backup as compressed backupset incremental level 1 tag 'orcl_incr_L1' format

      '/rmanbak/incr_bak/orcl/incr_%d_%T_%s' database include current controlfile;

      sql "alter system archive log current";

      backup as compressed backupset archivelog all format '/rmanbak/incr_bak/orcl/arclog_1_%s_%p_%t_%d' delete input;

      crosscheck backup;

      delete noprompt expired backup;

      delete noprompt obsolete;

      crosscheck archivelog all;

      delete noprompt expired archivelog all;

      release channel c1;

      }

      exit;

      EOF

      # 執行數據庫備份腳本:

      $ ./incr_orcl.sh

      上傳過程此處不再贅述;

      # 將數據庫啟動到mount狀態:

      $ rman target /

      RMAN> shutdown immediate

      RMAN> startup mount

      # 將增量備份集catalog到rman:

      RMAN> catalog start with '/rmanbak/incr_bak/orcl/';

      # 通過以下命令,確認備份集的最后一個歸檔日志:

      RMAN> recover database;

      Starting recover at 11-MAR-21

      allocated channel: ORA_DISK_1

      channel ORA_DISK_1: SID=63 device type=DISK

      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: /oracle/app/oradata/orcl/system01.dbf

      destination for restore of datafile 00002: /oracle/app/oradata/orcl/sysaux01.dbf

      destination for restore of datafile 00003: /oracle/app/oradata/orcl/undotbs01.dbf

      destination for restore of datafile 00004: /oracle/app/oradata/orcl/users01.dbf

      destination for restore of datafile 00005: /oracle/app/oradata/orcl/TABLESPACE.dbf

      destination for restore of datafile 00006: /oracle/app/oradata/orcl/TBS_SHMSA01.dbf

      destination for restore of datafile 00007: /oracle/app/oradata/orcl/SSDD_TBS01.dbf

      destination for restore of datafile 00008: /oracle/app/oradata/orcl/SYNC_XUANCHUAN_TBS01.dbf

      destination for restore of datafile 00009: /oracle/app/oradata/orcl/MarShareL201.dbf

      destination for restore of datafile 00010: /oracle/app/oradata/orcl/MSAPUB_DATA01.dbf

      destination for restore of datafile 00011: /oracle/app/oradata/orcl/MLP_SHCORPUS01.dbf

      channel ORA_DISK_1: reading from backup piece /rmanbak/incr_bak/orcl/incr_ORCL_20210311_17

      channel ORA_DISK_1: piece handle=/rmanbak/incr_bak/orcl/incr_ORCL_20210311_17 tag=OADB_INCR_L1

      channel ORA_DISK_1: restored backup piece 1

      channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

      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=299

      channel ORA_DISK_1: restoring archived log

      archived log thread=1 sequence=300

      channel ORA_DISK_1: reading from backup piece /rmanbak/incr_bak/orcl/arclog_1_19_1_1066926876_ORCL

      channel ORA_DISK_1: piece handle=/rmanbak/incr_bak/orcl/arclog_1_19_1_1066926876_ORCL tag=TAG20210311T163436

      channel ORA_DISK_1: restored backup piece 1

      channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

      archived log file name=/oracle/app/fast_recovery_area/ORCL/archivelog/2021_03_11/o1_mf_1_299_j4mpshyt_.arc thread=1 sequence=299

      channel default: deleting archived log(s)

      archived log file name=/oracle/app/fast_recovery_area/ORCL/archivelog/2021_03_11/o1_mf_1_299_j4mpshyt_.arc RECID=9 STAMP=1066928175

      archived log file name=/oracle/app/fast_recovery_area/ORCL/archivelog/2021_03_11/o1_mf_1_300_j4mpshz2_.arc thread=1 sequence=300

      channel default: deleting archived log(s)

      archived log file name=/oracle/app/fast_recovery_area/ORCL/archivelog/2021_03_11/o1_mf_1_300_j4mpshz2_.arc RECID=10 STAMP=1066928175

      unable to find archived log

      archived log thread=1 sequence=301

      RMAN-00571: ===========================================================

      RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

      RMAN-00571: ===========================================================

      RMAN-03002: failure of recover command at 03/11/2021 16:56:17

      RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 301 and starting SCN of 6325298

      # 再次執行recover恢復增量備份集:

      RMAN> run {

      set until sequence 301 thread 1;

      recover database;

      }

      $ sqlplus "/as sysdba"

      SQL> shutdown immediate

      SQL> startup mount;

      SQL> alter database open resetlogs;

      # 進行簡單查詢,確認業務數據狀態;

      數據庫增量恢復完成!

      Oracle 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:分布式系統關注點(22)——360°的全方位監控
      下一篇:契約鎖開放平臺連接各類業務軟件,適用組織各種用印場景
      相關文章
      亚洲天堂一区二区| 亚洲妇熟XXXX妇色黄| 亚洲无砖砖区免费| 亚洲精品无码高潮喷水在线| 亚洲国产成人爱av在线播放| 爱情岛论坛亚洲品质自拍视频网站| 亚洲色偷偷综合亚洲av78| 亚洲伊人久久大香线蕉啊| 亚洲精品高清国产麻豆专区| 亚洲国产一区二区a毛片| 国产精品亚洲一区二区三区在线| 亚洲午夜无码久久久久| 国产亚洲精品国看不卡| 国产亚洲一区区二区在线| 不卡精品国产_亚洲人成在线| 亚洲午夜爱爱香蕉片| 久久久久亚洲AV无码专区网站| 亚洲精品无码专区2| 精品国产亚洲一区二区在线观看| 国产国拍亚洲精品福利| 激情综合色五月丁香六月亚洲| 久久亚洲欧洲国产综合| 日韩va亚洲va欧洲va国产| 亚洲成AV人在线播放无码| 亚洲AV日韩AV鸥美在线观看| 久久精品亚洲一区二区| 亚洲av鲁丝一区二区三区| 亚洲综合国产精品| 亚洲人成日本在线观看| tom影院亚洲国产一区二区| 成人区精品一区二区不卡亚洲| 亚洲日本天堂在线| 亚洲AV无码专区在线观看成人| 国产成人亚洲综合无| 国产成人亚洲精品影院| 久久精品国产亚洲AV麻豆不卡| 日产亚洲一区二区三区| 亚洲不卡中文字幕| 亚洲精品国产首次亮相| 亚洲国产精品一区二区第一页免 | 亚洲成年人免费网站|