為備份和災難復原服務準備 Oracle 資料庫

開始前,建議您先參閱 Oracle 備份和災難復原服務

您必須先將 Oracle 伺服器新增為備份和 DR 服務的主機,才能備份 Oracle 資料庫。如要讓這項功能正常運作,請務必參閱「備份 Oracle 資料庫的先決條件」,然後按照下列準備步驟操作。

Oracle 資料庫的準備程序
步驟 準備程序
1 在 Linux 環境中準備 Oracle 資料庫
在 Windows 環境中準備 Oracle 資料庫
2 準備備份在 ASM 磁碟群組中含有資料檔案的 Oracle 資料庫
3 準備 Oracle 資料庫驗證
啟用資料庫區塊變更追蹤功能 (選用)
透過 Oracle Data Guard 節點進行保護
設定 RAC 對 RMAN 備份的透明容錯功能,以便將備份傳送至其他節點
Oracle 封存記錄壓縮功能
設定 Oracle 資料庫服務,以便在多個節點間進行負載平衡
修補 Oracle 12c

在 Linux 環境中準備 Oracle 資料庫

保護 Oracle 資料庫前,或資料庫保護工作失敗時,請確認 Oracle 資料庫伺服器上的下列設定正確無誤。

  • 每個要保護的 Oracle 資料庫都必須處於正常運作狀態。例如:

    database: actdb
    #ps -ef | grep pmon | grep -i actdb
    oracle   27688     1  0  2015 ?        00:26:24 ora_pmon_actdb
    
  • 資料庫必須以封存記錄模式運作。如要確認資料庫是以封存記錄模式運作,請以 Oracle OS 使用者身分登入資料庫伺服器,然後設定資料庫環境變數:

    export ORACLE_HOME=<oracle home path>
    (get this from /etc/oratab)
    export ORACLE_SID=<database instance name> (you can get this through
    ps -ef | grep pmon)
    export PATH=$ORACLE_HOME/bin:$PATH
    

    登入 sqlplus:

    #sqlplus / as sysdba
    #SQL> archive log list;
    Database log mode   Archive Mode
    Automatic archival        Enabled
    Archive destination        +FRA
    Oldest online log sequence     569
    Next log sequence to archive   570
    Current log sequence        570
    #SQL>
    
  • 資料庫應使用 spfile。請使用 spfile 確認資料庫是否正在執行:

    #sqlplus / as sysdba
    SQL> show parameter spfile
    NAME      TYPE   VALUE
    ------------------ ----------- ------------
    spfile      string  +DATA/ctdb/spfilectdb.ora
    
  • 對於 Oracle RAC 資料庫,快照控制檔案必須位於共用磁碟下。對於 ASM 下的 Oracle RAC 資料庫,快照控制檔案必須位於共用磁碟下。

    如要確認這一點,請連線至 RMAN 並執行 show all 指令。視需要進行設定:

        rman target /
    

    接著在 RMAN 中:

       show all
    

    資料庫 (db_unique_name 為 CTDB) 的 RMAN 設定參數如下:

    CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
    CONFIGURE BACKUP OPTIMIZATION OFF; # default
    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
    CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/mnt/ctdb/snapcf_ctdb.f';
    

    本範例顯示設定檔已設為本機檔案系統。

    在 RAC 環境中,此值必須設為共用 ASM 磁碟群組。如要將其放在 ASM 磁碟群組中,請使用:

    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+<DG name>/snap_<DB name>.f';
    

準備在 ASM 磁碟群組中備份含有資料檔案的 Oracle 資料庫

在 ASM 磁碟群組中建立備份和 DR 暫存磁碟

必須設定 ASM 磁碟字串參數,且不得為空值。以 ASM OS 使用者身分登入資料庫伺服器,並設定 ASM 環境變數:

    # export ORACLE_HOME=(oracle ASM home path)
    (get this from /etc/oratab)
    #export ORACLE_SID=(ASM instance name) (you
    can get this through ps ?ef | grep pmon)
    #export PATH=$ORACLE_HOME/bin:$PATH

連線至 sqlplus

    #sqlplus / as sysasm
    #sql> show parameter asm_diskstring
    NAME      TYPE   VALUE
    ------------------- ----------- ------------------------------
    asm_diskstring      string  ORCL:*, /dev/sdt1, /dev/sdu1

如果值的結果為空值,請先為現有的 ASM 磁碟取得正確的 ASM 磁碟字串值,再繼續執行備份和 DR 保護機制。備份和災難復原備份會為備份暫存磁碟新增磁碟字串路徑 (/dev/Backup and DR/asm/*),以便對應至 ASM。

檔案系統上的備份和 DR 暫存磁碟

如果您要將 Oracle ASM 資料庫保護至檔案系統,請務必將「應用程式詳細資料與設定」下的「將 ASM 轉換為檔案系統」設為「是」。請參閱「Oracle 資料庫的應用程式詳細資料和設定」。

準備 Oracle 資料庫驗證

只有在您打算使用資料庫驗證時,才需要進行下列額外的準備步驟。如要瞭解 Oracle 資料庫驗證,請參閱「使用資料庫驗證功能進行備份和災難復原」。

  1. 請按照「在 Linux 環境中準備 Oracle 資料庫」中的步驟操作。

  2. 建立資料庫使用者帳戶 (如果未提供),用於備份和災難復原備份:

    create user act_rman_user identified by <password>;
    
  3. 登入 sqlplus 並在所有節點上執行以下指令,授予 sysdba 存取所有 RAC 節點的權限:

    grant create session, resource, sysdba to act_rman_user;
    

    在 Oracle 12c 中,這個角色可以是 sysbackup 而非 of sysdba,資料庫使用者名稱則以 # 開頭。

  4. 確認已在 RAC 環境中的所有節點上授予 sysdba 角色:

    #sqlplus / as sysasm
    # sql> select * from gv$pwfile_users;
    INST_ID USERNAME SYSDB SYSOP SYSAS
    ---------- --------------  ----- ----- -----
    1 SYS TRUE TRUE FALSE
    2 SYS TRUE TRUE FALSE
    1 ACT_RMAN_USER TRUE TRUE FALSE
    2 ACT_RMAN_USER TRUE TRUE FALSE
    
  5. 請按照下列操作說明,根據環境類型測試服務名稱:

在非 RAC 環境中建立及驗證 Oracle 服務名稱

Oracle 服務名稱僅用於資料庫驗證。但 OS 驗證不需要使用。

範例:資料庫名稱:dbstd,執行個體名稱:dbstd

  1. 如果清單中未列出 Oracle 服務名稱,請在 tnsnames.ora 檔案的 $ORACLE_HOME/network/admin$GRID_HOME/network/admin 中新增服務名稱項目:

    act_svc_dbstd =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST
    = (IP of the database server)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = dbstd)
    ) )
    

    如果 tnsnames.ora 檔案位於非標準位置,請在「Application Details & Settings」下方提供其絕對路徑,如「Oracle 資料庫的應用程式詳細資料和設定」所述

  2. 測試資料庫的服務名稱項目,確認已設定資料庫:

    以 Oracle OS 使用者身分登入並設定 Oracle 環境:

    TNS_ADMIN=(tnsnames.ora file location)
    tnsping act_svc_dbstd
    
  3. 請檢查資料庫使用者帳戶,確認備份和災難復原備份可以連線:

    sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
    
  4. 在「應用程式詳細資料和設定」下方,提供「Oracle 服務名稱」設定中的服務名稱 (act_svc_dbstd),如「Oracle 資料庫的應用程式詳細資料和設定」所述

在 RAC 環境中建立及驗證 Oracle 服務名稱

Oracle 服務名稱僅用於資料庫驗證。但 OS 驗證不需要使用。

三節點 RAC 範例:

  • 資料庫名稱:dbrac

  • 執行個體 1 名稱:dbrac1

  • 執行個體 2 名稱:dbrac2

  • 執行個體 3 名稱:dbrac3,資料庫保護機制已從 Node3 設定 (執行個體名稱 dbrac3):

  1. $ORACLE_HOME/network/admin$GRID_HOME/network/admintnsnames.ora 檔案中建立服務名稱項目,方法是新增下列項目:

    act_svc_dbrac3 =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = (IP of the database server)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (INSTANCE_NAME = dbrac3)
    (SERVICE_NAME = dbrac)
    ) ) )
     Where:
     HOST = This can be SCAN IP in a RAC environment or VIP or IP of the node 3 database server.
    SERVICE_NAME = database name
    INSTANCE_NAME = database instance name on node3
    
  2. 測試服務名稱:

    以 Oracle OS 使用者身分登入並設定 Oracle 環境:

    TNS_ADMIN=(tnsnames.ora file location)
    tnsping act_svc_dbrac3
    
  3. 檢查資料庫使用者帳戶,確保備份和災難復原備份可以連線:

    sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
    
  4. 在「應用程式詳細資料和設定」下方,提供「Oracle 服務名稱」設定下的服務名稱 (act_svc_dbrac3),如「Oracle 資料庫的應用程式詳細資料和設定」所述。

    如果 tnsnames.ora 檔案位於非標準位置,請在 Oracle TNS_Admin 路徑設定下,提供 tnsnames.ora 檔案的絕對路徑,如「Oracle 資料庫的應用程式詳細資料和設定」一文所述的「應用程式詳細資料和設定

啟用資料庫區塊變更追蹤功能 (選用)

如需瞭解資料庫變更區塊追蹤功能,請參閱「Oracle 資料庫區塊變更追蹤 (BCT)

如要確認是否已啟用資料庫區塊變更追蹤功能,請按照下列步驟操作:

sqlplus / as sysdba

在 SQL 提示中:

select * from v$block_change_tracking;

如果未啟用資料庫區塊變更追蹤功能,請透過 sqlplus 啟用資料庫區塊變更追蹤功能:

使用 ASM 磁碟群組

sqlplus / as sysdba

在 SQL 提示中:

alter database enable block change tracking using file '+<ASM Disk Group Name>/<database name>/<dbname>.bct';

使用檔案系統

sqlplus / as sysdba

在 SQL 提示中:

alter database enable block change tracking using file '$ORACLE_HOME/dbs/<dbname>.bct';

透過 Oracle Data Guard 節點保護

您可以透過主要資料庫節點或 Oracle Data Guard 待命節點保護 Oracle 資料庫。如果保護措施是從 Oracle Data Guard 節點設定,請務必在管理控制台的「應用程式詳細資料與設定」下方設定主要節點憑證。

資料庫驗證 (僅限 Linux)

  • 使用者名稱/密碼:資料庫使用者帳戶憑證。為了讓這個使用者帳戶在 Data Guard 節點上具備 sysdba 存取權,必須在主要節點上使用 sysdba 權限建立這個使用者 (請參閱「建立具備 sysdba 存取權的備份使用者帳戶」)。接著,必須將主要節點的密碼檔案 (位於 $ORACLE_HOME/dbs/ 下方) 複製到 Data Guard 節點。

作業系統驗證

  • 使用者名稱/密碼:在 OS 驗證下,不需要 sysdba 權限。這個資料庫使用者帳戶需要 connect, alter system 權限。為了讓這個使用者帳戶可在 Data Guard 節點上使用,您必須在主要節點上建立這個使用者。

如果使用者沒有 sysdba 角色,則需要 grant connect, alter system, select on dba_tablespaces

如要授予這些權限,請在 SQL 提示中執行下列操作:

    grant connect, alter system, select on dba_tablespaces to act_rman_user;
  • Oracle Data Guard 主要節點服務名稱:這是在 Data Guard 節點上設定的 tnsnames.ora 檔案中的服務名稱,用於從待命節點連線至主要節點。如果備份是從 Data Guard 待命節點設定,則 OS 和 DB 驗證都需要 Oracle Data Guard 主要節點服務名稱。

如需所有詳細資料和設定的完整說明,請參閱「Oracle 資料庫的應用程式詳細資料和設定

資料庫節點 OS 驗證 資料庫驗證
主要 不需要資料庫憑證。 需要資料庫憑證。如果未選取任何角色,系統會使用 sysdba。
待命 即使是 OS 驗證 (用於連線至主要登錄檔以切換登錄檔),也需要資料庫憑證。資料庫憑證不需要具備 sysdba/sysbackup 角色。如果使用 sysdba/sysbackup 帳戶,請在「應用程式詳細資料和設定」的「資料庫中的使用者角色」中設定使用者角色。 需要資料庫憑證。 資料庫憑證必須是 sysdba 或 sysbackup 角色,且「資料庫中的使用者角色」必須設為 應用程式詳細資料與設定中的 sysdba 或 sysbackup。如要設定資料庫驗證,請參閱「為 Oracle 伺服器啟用資料庫驗證」。

設定 RAC 對 RMAN 備份的透明容錯移轉至其他節點

備份和災難復原代理程式必須在您打算納入備份容錯設定的所有節點上安裝及執行。這項防護機制只會從一個節點設定。

在「詳細資料與設定」的「叢集節點」中,指定 Oracle RAC 環境中的容錯節點選項:

    <Failover choice>:<Node IP>:<Servicename>:<Role>

其中:

  • 容錯移轉選項:容錯移轉的節點順序。

  • 節點 IP:要執行備份作業的節點 IP 位址

  • Servicename:在 tnsnames.ora 中建立並指定的服務名稱,用於 Backup and DR RMAN 備份。這可以是為備份和災難復原備份建立的新專屬服務,或是該節點上資料庫的 SID 名稱 (執行個體名稱)。

  • 角色:F,表示為備援節點

如要在 tnsnames.ora 檔案 ($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora) 下的備援節點上建立新服務名稱

Oracle One Node 環境中的範例

RAC One 節點由兩個節點組成:

172.15.157.200
172.15.157.201

在任何時間點,系統都只會在其中一個節點上執行一個資料庫 OneN。OneN 受到 172.15.157.200 的保護,叢集節點設定指定為 1:172.15.157.201:OneN:F

如果 OneN 改為 172.15.157.201,備份和災難復原備份會跟著改變,並從 172.15.157.201 而非 200 啟動下一個備份工作。如果備份工作發生容錯移轉,則工作會失敗,而下一個工作會使用容錯移轉節點來啟動新的備份。

在 Oracle 環境 (非 One Node) 中的範例:

  • 2 個節點 RAC (dbrac1dbrac2)

  • 保護措施會使用 dbrac1 中的資料庫名稱「dbrac」設定,且容錯移轉會設為 dbrac2

  • 節點 2 上的服務名稱:act_svc_dbrac2

  • Node2 IP 或掃描 IP:172.1.1.0

act_svc_node2 =

  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.1.0)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (INSTANCE_NAME = dbrac2)
  (SERVICE_NAME = dbrac)
  ) )

在「Application Details & Settings」下方,叢集節點項目如下:

Failoverchoice:NodeIP:Servicename:Role

1:172.1.1.1:act_svc_node2:F

叢集節點項目 F 和 M 的行為

F:備援節點,僅在保護節點未執行備份時才參與。

M:維護節點,如果經過驗證,可執行備份作業,則會取代保護節點。

Oracle 封存記錄檔壓縮功能

備份和災難復原服務的封存記錄備份功能支援 Oracle 記錄備份集合壓縮功能。您選取的壓縮類型取決於這些 RMAN 設定。請根據用途選取所需選項。

  • 壓縮率越低,對備份傳輸量的影響就越小。這些最適合 CPU 資源是限制因素的環境。

  • 大多數環境都建議使用中等壓縮率。這些方法可同時提供壓縮率和速度。

  • 高壓縮比會耗用大量資源,最適合在網路速度較慢的情況下備份資料,因為在這種情況下,網路速度是限制因素。

預設為「Basic」(基本)。基本層級不需要 Oracle 進階壓縮功能。

如要檢查環境中設定的壓縮類型,請在 RMAN 提示字元中執行 show all 指令:

rman target /

    show all

設定 Oracle 資料庫服務,以便跨多個節點進行負載平衡

這項程序僅適用於 Oracle ASM 資料庫。在本範例中,假設為四節點 RAC 環境;節點 3 和 4 會負載平衡,以便備份使用。

請參閱:

Oracle RAC 節點之間的負載平衡需要 Oracle 資料庫驗證。

設定從多個節點進行平行 RMAN 映像檔複製作業

在 RAC 環境中,您可以設定備份作業從多個節點並行執行。

  1. 在所有節點上安裝備份和災難復原代理程式。

  2. 使用應用程式詳細資料和設定,設定 ASM 磁碟群組對應至節點 3 和節點 4。

  3. 使用 srvctl 建立資料庫服務,從節點 3 和節點 4 執行。

  4. 您可以使用這項服務,在「應用程式詳細資料和設定」下方指定。在「進階設定」下方選擇「聲道數」(Number of channels)。RMAN 會在節點 3 和節點 4 之間分配通道。

  5. 設定 Oracle 服務名稱和 RAC 成員節點。

設定 Oracle Database Services,以便跨多個節點進行負載平衡

  1. 在「應用程式詳細資料和設定」中設定 RAC 成員節點:節點 3 的 IP 和節點 4 的 IP。

  2. 為備份和災難復原服務建立資料庫服務,以便備份和災難復原服務使用該服務進行備份:

    srvctl add service -d <dbname> -s act_service_<dbname>
    -r <dbinstance3>,<dbinstance4> srvctl start service -d <dbname>
    -s act_service_<dbname>
    
  3. 在 tnsnames.ora 檔案 ($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora) 下,為在備援節點 (本例中的 dbinstance3dbinstance4 節點) 上建立的 Oracle 服務名稱新增 tns 項目

    act_service_<dbname> =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = <DATABASE NAME>)
    ) )
    
  4. 測試已建立的服務名稱:

    tnsping actservice

  5. 測試服務名稱和使用者憑證:

    sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
    
  6. 在「Application Details & Settings」下方指定 Oracle 服務名稱。

  7. 在受保護的節點 (例如節點 3) 上建立專用的封存記錄備份服務,用於備份:

    srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3>
    srvctl start service -d <dbname> -s act_arc_service_<dbname>
    
  8. tnsnames.ora 檔案 ($ORACLE_HOME/network/admin/tnsnames.ora$GRID_HOME/network/admin/tnsnames.ora) 下方建立的封存記錄備份服務名稱新增 tns 項目

    act_arc_service_<dbname> =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (INSTANCE_NAME = <node 3 instance>)
    (SERVICE_NAME = act_arc_service_<dbname>)
    ) )
    
  9. 測試服務名稱:

    tnsping act_archservice

  10. 在「應用程式詳細資料和設定」下方指定這個服務名稱,用於備份封存記錄。

修補 Oracle 12c

如果 Oracle 12c 安裝作業未納入此修補程式,備份和 DR 應用程式感知掛載作業可能會失敗,您可以從 Oracle 支援入口網站下載此修補程式:

Oracle Database 12c Bug# 19404068 (ORA-1610 ON RECOVER DATABASE FOR CREATED CONTROLFILE)

  • (修補程式 19404068) Oracle 12.1.0.2.0 適用的 Linux x86-64

如要查看是否已安裝修補程式,請執行:

    $cd $ORACLE_HOME/OPatch
    $./opatch lsinventory -details
    $./opatch lsinventory -details | grep 19404068

後續步驟

新增 Oracle 主機前,請繼續執行下列步驟:

  1. (選用) 搭配備份和 DR 服務使用 Oracle Direct NFS
  2. Oracle 修補程式和已知問題

Oracle DBA 指南