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

開始之前,建議先參閱 Oracle 適用的備份和災難復原服務

如要備份 Oracle 資料庫,必須先將 Oracle 伺服器新增為備份和災難復原服務的主機。如要使用這項功能,請務必先參閱備份 Oracle 資料庫的必要條件,然後按照下列準備步驟操作。

Oracle 資料庫的準備程序
步驟 準備程序
1 在 Linux 環境中準備 Oracle 資料庫
在 Windows 環境中準備 Oracle 資料庫
2 準備備份 Oracle 資料庫,並將資料檔案儲存在 ASM 磁碟群組中
3 準備 Oracle 資料庫驗證
啟用資料庫區塊變更追蹤 (選用)
從 Oracle Data Guard 節點進行保護
將 RMAN 備份的 RAC 透明容錯移轉設定至其他節點
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';
    

準備備份 Oracle 資料庫,並將資料檔案儲存在 ASM 磁碟群組中

ASM 磁碟群組上的備份和災難復原暫存磁碟

ASM diskstring 參數必須設定且不得為空值。以 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 磁碟字串值,再繼續進行 Backup and DR 保護作業。備份和災難復原備份會新增備份暫存磁碟的磁碟字串路徑 (/dev/Backup and DR/asm/*),以便對應至 ASM。

檔案系統上的備份和災難復原暫存磁碟

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

準備 Oracle 資料庫驗證

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

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

  2. 如果沒有提供,請為備份和災難復原備份建立資料庫使用者帳戶:

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

    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 服務名稱僅用於資料庫驗證。 作業系統驗證不需要這個權限。

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

  1. 如果未列出 Oracle 服務名稱,請在 $ORACLE_HOME/network/admin 檔案中建立服務名稱項目,位置為 $ORACLE_HOME/network/admin$GRID_HOME/network/admin,方法是新增項目:tnsnames.ora

    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. 檢查資料庫使用者帳戶,確認 Backup and DR 備份可以連線:

    sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
    
  4. 在「Application Details & Settings」(應用程式詳細資料和設定) 下方的「Oracle Service Name」(Oracle 服務名稱) 設定中,提供您建立的服務名稱 (act_svc_dbstd),如「適用於 Oracle 資料庫的應用程式詳細資料和設定」一文所述。

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

Oracle 服務名稱僅用於資料庫驗證。作業系統驗證不需要這個權限。

三節點 RAC 範例:

  • 資料庫名稱:dbrac

  • 執行個體 1 名稱:dbrac1

  • 執行個體 2 名稱:dbrac2

  • 執行個體 3 名稱:dbrac3,資料庫保護設定來自節點 3 (執行個體名稱 dbrac3):

  1. tnsnames.ora 檔案中建立 servicename 項目,位置在 $ORACLE_HOME/network/admin$GRID_HOME/network/admin,方法是新增下列項目:

    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. 檢查資料庫使用者帳戶,確認 Backup and DR 備份可以連線:

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

    如果 tnsnames.ora 檔案位於非標準位置,請在「Application Details & Settings」(應用程式詳細資料和設定) 下的「Oracle Path」(Oracle 路徑) 設定中,提供 tnsnames.ora 檔案的絕對路徑,如「Application details & settings for Oracle databases」(Oracle 資料庫的應用程式詳細資料和設定) 一文所述。TNS_Admin

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

資料庫變更區塊追蹤功能說明請參閱「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 節點設定,請務必在管理控制台的「Application Details & Settings」(應用程式詳細資料和設定) 下方設定主要節點憑證。

資料庫驗證 (僅限 Linux)

  • 使用者名稱/密碼:資料庫使用者帳戶憑證。 如要讓這個使用者帳戶在具有 sysdba 存取權的 Data Guard 節點上可用,必須在主要節點上建立這個使用者,並授予 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 資料庫的應用程式詳細資料和設定」。

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

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

您打算納入備份容錯移轉設定的所有節點,都必須安裝並執行 Backup and DR 代理程式。保護措施只能從一個節點設定。

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

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

其中:

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

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

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

  • 角色:F,表示這是容錯移轉節點

如要在容錯移轉節點上建立新的服務名稱,請前往 tnsnames.ora 檔案 ($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora)

Oracle 單一節點環境的範例

RAC One Node 包含兩個節點:

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 環境範例 (非單一節點):

  • 2 節點 RAC (dbrac1dbrac2)

  • 保護機制是使用「dbrac」資料庫名稱從 dbrac1 設定,容錯移轉則設為 dbrac2

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

  • 節點 2 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)
  ) )

在「應用程式詳細資料與設定」下方,叢集節點項目如下:

Failoverchoice:NodeIP:Servicename:Role

1:172.1.1.1:act_svc_node2:F

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

F:容錯移轉節點,只有在保護節點無法執行備份時才會參與。

M:維護節點,通過驗證後會取代保護節點, 以便執行備份。

Oracle 封存記錄壓縮

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

  • 壓縮比越低,對備份輸送量的影響就越小。這類執行個體最適合 CPU 資源是限制因素的環境。

  • 建議大多數環境採用中等壓縮。這些演算法可提供良好的壓縮率和速度組合。

  • 高壓縮比會耗用大量資源,因此最適合透過較慢的網路備份,因為網路速度是限制因素。

預設設定為「基本」。基本壓縮不需要 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. 您可以在「應用程式詳細資料和設定」中指定這項服務。在「進階設定」下方選擇聲道數 (聲道數)。RMAN 會在節點 3 和節點 4 之間分配通道。

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

設定 Oracle 資料庫服務,在多個節點之間進行負載平衡

  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. 在「應用程式詳細資料和設定」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 指南