在備份/復原設備上準備 Oracle 資料庫,以供備份和災難復原服務使用

開始之前,建議先參閱 Backup and DR Service for 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>
export PATH=$ORACLE_HOME/bin:$PATH
 Login to sqlplus:
sqlplus / as sysdba
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
 Note: If archive log mode is not enabled then get archive mode enabled
 before proceeding.
  • 資料庫應使用 spfile。確認資料庫是否正在執行 spfile
sqlplus / as sysdba
show parameter spfile
NAME      TYPE   VALUE
------------------ ----------- ------------
spfile      string  +DATA/ctdb/spfilectdb.ora
 Note: If the value is `null_` then
 get the spfile set. Backup and DR supports backing up using pfile as well.
 pfile should be available in default location. For example, a
 Linux `pfile` should be located under `$ORACLE_HOME/dbs`.
  • 如為 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';
 This example shows the configuration set to the local file system.

 In a RAC environment, this must be set to shared ASM Disk Group. To put it
 on the ASM Disk Group, use:

```bash
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+(disk group name)/snap_(database 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)
export PATH=$ORACLE_HOME/bin:$PATH

連線至「sqlplus」:

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

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

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

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

準備 Oracle 資料庫驗證

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

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

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

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

如果是 Oracle 12c,這個角色可以改為 sysbackupof sysdba,且資料庫使用者名稱開頭為 #。

  1. 確認已在 RAC 環境中的所有節點上授予 sysdba 角色:
sqlplus / as sysasm
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
  1. 請按照下列操作說明,根據環境類型測試服務名稱:

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

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

範例: 資料庫名稱: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」(應用程式詳細資料和設定) 下方提供該檔案的絕對路徑,如「Application details & settings for Oracle databases」(適用於 Oracle 資料庫的應用程式詳細資料和設定) 一文所述。

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

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

TNS_ADMIN=(tnsnames.ora file location)
tnsping act_svc_dbstd
  1. 檢查資料庫使用者帳戶,確認 Backup and DR 備份可以連線:
sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
  1. 在「應用程式詳細資料和設定」下方的「Oracle 服務名稱」設定中,提供您建立的服務名稱 (act_svc_dbstd),如「Oracle 資料庫的應用程式詳細資料和設定」一文所述

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

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

三節點 RAC 範例:

  • 資料庫名稱:dbrac

  • 執行個體 1 名稱:dbrac1

  • Instance2 名稱:dbrac2

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

  1. $ORACLE_HOME/network/admin$GRID_HOME/network/admintnsnames.ora 檔案中建立 servicename 項目,方法是加入下列項目:
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
  1. 測試服務名稱:

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

TNS_ADMIN=(tnsnames.ora file location)
tnsping act_svc_dbrac3
  1. 檢查資料庫使用者帳戶,確認備份和災難復原備份可以連線:
sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
  1. 在「應用程式詳細資料和設定」下方的「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 和資料庫驗證都需要 Oracle Data Guard 主要節點服務名稱。

如要瞭解所有詳細資料和設定,請參閱「Oracle 資料庫的應用程式詳細資料和設定

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

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

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

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

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

其中:

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

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

  • Servicename:為備份和災難復原 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)
      ) )

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

1:172.1.1.1:act_svc_node2:F

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

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

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

Oracle 封存記錄壓縮

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

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

  • 建議大多數環境採用中等壓縮。這些格式兼具壓縮率和速度。

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

預設設定為「基本」。基本壓縮不需要 Oracle 進階壓縮功能。

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

rman target /
show all

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

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

請參閱:

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

從多個節點設定平行 RMAN 映像檔副本

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

  1. 在所有節點上安裝 Backup and DR 代理程式。

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

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

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

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

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

  1. 在「Application Details & Settings」(應用程式詳細資料和設定) 中設定, 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>
  1. 在 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>)
) )
  1. 測試建立的服務名稱:
tnsping act_service_<dbname>
  1. 測試服務名稱和使用者憑證:
sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
  1. 在「應用程式詳細資料和設定」Oracle 服務名稱下方指定這個服務名稱。

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

srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3>
srvctl start service -d <dbname> -s act_arc_service_<dbname>
  1. 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>)
) )
  1. 測試服務名稱:
tnsping act_arch_service_<dbname>
  1. 在「應用程式詳細資料和設定」封存記錄備份服務名稱下方指定這個服務名稱。

修補 Oracle 12c

如果 Oracle 12c 安裝作業未包含此修補程式 (可從 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. (選用) 搭配備份和災難復原服務使用 Oracle Direct NFS
  2. Oracle 修補程式和已知問題

Oracle DBA 指南