Skip to main content
NetApp Solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

保護Azure雲端中的Oracle資料庫

貢獻者

NetApp 解決方案工程部門的 Allen Cao

本節說明如何使用azacsnap工具保護Oracle資料庫、以及將Snapshot備份、還原和快照分層整理至Azure Blob。

使用AzAcSnap工具備份Oracle資料庫與Snapshot

Azure應用程式一致的Snapshot工具(AzAcSnap)是一種命令列工具、可處理在擷取儲存快照之前將資料庫置於應用程式一致狀態所需的所有協調作業、藉此保護協力廠商資料庫的資料。

如果是Oracle、您可以將資料庫置於備份模式、以擷取快照、然後將資料庫從備份模式中移出。

備份資料與記錄磁碟區

您可以使用執行Snapshot命令的簡單Shell指令碼、在資料庫伺服器主機上設定備份。然後、指令碼可以排程從crontab執行。

一般而言、備份頻率取決於所需的RTO和RPO。頻繁建立快照會佔用更多儲存空間。備份頻率與空間使用率之間存在一定的平衡。

資料磁碟區通常比記錄磁碟區耗用更多儲存空間。因此、您可以每隔幾小時在資料磁碟區上拍攝快照、並每隔15到30分鐘在記錄磁碟區上建立更頻繁的快照。

請參閱下列備份指令碼與排程範例。

對於資料Volume快照:

 # /bin/sh
cd /home/azacsnap/bin
. ~/.bash_profile
azacsnap -c backup --volume data --prefix acao-ora01-data --retention 36
azacsnap -c backup --volume other --prefix acao-ora01-log --retention 250

對於記錄Volume快照:

 # /bin/sh
cd /home/azacsnap/bin
. ~/.bash_profile
azacsnap -c backup --volume other --prefix acao-ora01-log --retention 250

crontab 排程:

15,30,45 * * * * /home/azacsnap/snap_log.sh
0 */2 * * * /home/azacsnap/snap_data.sh
註 設定備份時 azacsnap.json 組態檔、將所有資料磁碟區(包括二進位磁碟區)新增至 dataVolume 及所有記錄磁碟區 otherVolume。快照的最大保留量為250個複本。

驗證快照

前往Azure入口網站> Azure NetApp Files / Volume、檢查快照是否已成功建立。

此螢幕擷取畫面顯示快照清單中的兩個檔案。
此螢幕快照顯示快照清單中的八個檔案。

Oracle從本機備份還原與還原

Snapshot備份的主要優點之一是它與來源資料庫磁碟區共存、而且主要資料庫磁碟區幾乎可以立即復原。

在主伺服器上還原及還原Oracle

下列範例示範如何從同一Oracle主機上的Azure儀表板和CLI還原及還原Oracle資料庫。

  1. 在資料庫中建立要還原的測試表格。

    [oracle@acao-ora01 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Mon Sep 12 19:02:35 2022
    Version 19.8.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.8.0.0.0
    
    SQL> create table testsnapshot(
         id integer,
         event varchar(100),
         dt timestamp);
    
    Table created.
    
    SQL> insert into testsnapshot values(1,'insert a data marker to validate snapshot restore',sysdate);
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> select * from testsnapshot;
    
     ID
    ----------
    EVENT
    --------------------------------------------------------------------------------
    DT
    ---------------------------------------------------------------------------
             1
    insert a data marker to validate snapshot restore
    12-SEP-22 07.07.35.000000 PM
  2. 在備份快照之後、將表格丟棄。

    [oracle@acao-ora01 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 13 14:20:22 2022
    Version 19.8.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.8.0.0.0
    
    SQL> drop table testsnapshot;
    
    Table dropped.
    
    SQL> select * from testsnapshot;
    select * from testsnapshot
                  *
    ERROR at line 1:
    ORA-00942: table or view does not exist
    
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> exit
    Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.8.0.0.0
  3. 從「支援資料」儀表板、將記錄磁碟區還原至上次可用的快照Azure NetApp Files 。選擇*恢復磁碟區*。

    此螢幕快照顯示Anf儀表板中磁碟區的快照還原方法。

  4. 確認「恢復Volume」(恢復Volume)、然後按一下「恢復」以完成磁碟區還原至最新的可用備份。

    「確定要這麼做?」快照還原頁面。

  5. 對資料磁碟區重複相同的步驟、並確定備份包含要恢復的資料表。

    此螢幕快照顯示Anf儀表板中資料磁碟區的快照還原方法。

  6. 再次確認磁碟區還原、然後按一下「還原」。

    「確定要這麼做?」資料磁碟區快照還原頁面。

  7. 如果您有多個控制檔複本、請重新同步控制檔、並以可用的最新複本取代舊控制檔。

    [oracle@acao-ora01 ~]$ mv /u02/oradata/ORATST/control01.ctl /u02/oradata/ORATST/control01.ctl.bk
    [oracle@acao-ora01 ~]$ cp /u03/orareco/ORATST/control02.ctl /u02/oradata/ORATST/control01.ctl
  8. 登入Oracle伺服器VM、然後使用sqlplus執行資料庫恢復。

    [oracle@acao-ora01 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 13 15:10:17 2022
    Version 19.8.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    Connected to an idle instance.
    
    SQL> startup mount;
    ORACLE instance started.
    
    Total System Global Area 6442448984 bytes
    Fixed Size                  8910936 bytes
    Variable Size            1090519040 bytes
    Database Buffers         5335154688 bytes
    Redo Buffers                7864320 bytes
    Database mounted.
    SQL> recover database using backup controlfile until cancel;
    ORA-00279: change 3188523 generated at 09/13/2022 10:00:09 needed for thread 1
    ORA-00289: suggestion :
    /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_43__22rnjq9q_.arc
    ORA-00280: change 3188523 for thread 1 is in sequence #43
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    
    ORA-00279: change 3188862 generated at 09/13/2022 10:01:20 needed for thread 1
    ORA-00289: suggestion :
    /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_44__29f2lgb5_.arc
    ORA-00280: change 3188862 for thread 1 is in sequence #44
    ORA-00278: log file
    '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_43__22rnjq9q_.arc' no longer
    needed for this recovery
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    
    ORA-00279: change 3193117 generated at 09/13/2022 12:00:08 needed for thread 1
    ORA-00289: suggestion :
    /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_45__29h6qqyw_.arc
    ORA-00280: change 3193117 for thread 1 is in sequence #45
    ORA-00278: log file
    '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_44__29f2lgb5_.arc' no longer
    needed for this recovery
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    
    ORA-00279: change 3193440 generated at 09/13/2022 12:01:20 needed for thread 1
    ORA-00289: suggestion :
    /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_46_%u_.arc
    ORA-00280: change 3193440 for thread 1 is in sequence #46
    ORA-00278: log file
    '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_45__29h6qqyw_.arc' no longer
    needed for this recovery
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    cancel
    Media recovery cancelled.
    SQL> alter database open resetlogs;
    
    Database altered.
    
    SQL> select * from testsnapshot;
    
      ID
    ----------
    EVENT
    --------------------------------------------------------------------------------
    DT
    ---------------------------------------------------------------------------
             1
    insert a data marker to validate snapshot restore
    12-SEP-22 07.07.35.000000 PM
    
    SQL> select systimestamp from dual;
    
     SYSTIMESTAMP
    ---------------------------------------------------------------------------
    13-SEP-22 03.28.52.646977 PM +00:00

此畫面顯示已使用本機快照備份還原掉落的表格。