開始之前,建議先參閱 Oracle 適用的備份和災難復原服務。
如要備份 Oracle 資料庫,必須先將 Oracle 伺服器新增為備份和災難復原服務的主機。如要使用這項功能,請務必先參閱備份 Oracle 資料庫的必要條件,然後按照下列準備步驟操作。
在 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 資料庫驗證,請參閱「使用資料庫驗證進行備份和災難復原」。
請按照「在 Linux 環境中準備 Oracle 資料庫」一文中的步驟操作。
如果沒有提供,請為備份和災難復原備份建立資料庫使用者帳戶:
create user act_rman_user identified by <password>;
登入所有節點並執行下列指令,授予
sysdba
所有 RAC 節點的存取權:sqlplus
grant create session, resource, sysdba to act_rman_user;
如果是 Oracle 12c,這個角色可以是
sysbackup
,而非of sysdba
,且資料庫使用者名稱開頭為 #。確認已在 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
請按照下列操作說明,根據環境類型測試服務名稱:
在非 RAC 環境中建立及驗證 Oracle 服務名稱
Oracle 服務名稱僅用於資料庫驗證。 作業系統驗證不需要這個權限。
範例:
資料庫名稱:dbstd
執行個體名稱:dbstd
如果未列出 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 資料庫的應用程式詳細資料和設定」一文所述。測試資料庫的服務名稱項目,確認已設定:
以 Oracle OS 使用者身分登入,並設定 Oracle 環境:
TNS_ADMIN=(tnsnames.ora file location) tnsping act_svc_dbstd
檢查資料庫使用者帳戶,確認 Backup and DR 備份可以連線:
sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
在「Application Details & Settings」(應用程式詳細資料和設定) 下方的「Oracle Service Name」(Oracle 服務名稱) 設定中,提供您建立的服務名稱 (act_svc_dbstd),如「適用於 Oracle 資料庫的應用程式詳細資料和設定」一文所述。
在 RAC 環境中建立及驗證 Oracle 服務名稱
Oracle 服務名稱僅用於資料庫驗證。作業系統驗證不需要這個權限。
三節點 RAC 範例:
資料庫名稱:
dbrac
執行個體 1 名稱:
dbrac1
執行個體 2 名稱:
dbrac2
執行個體 3 名稱:
dbrac3
,資料庫保護設定來自節點 3 (執行個體名稱dbrac3
):
在
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
測試服務名稱:
以 Oracle OS 使用者身分登入,並設定 Oracle 環境:
TNS_ADMIN=(tnsnames.ora file location) tnsping act_svc_dbrac3
檢查資料庫使用者帳戶,確認 Backup and DR 備份可以連線:
sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
在「應用程式詳細資料和設定」下方的「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 (
dbrac1
、dbrac2
)保護機制是使用「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 環境中,您可以設定從多個節點平行執行備份。
在所有節點上安裝備份和災難復原代理程式。
使用應用程式詳細資料和設定,將 ASM 磁碟群組對應至節點 3 和節點 4。
使用 srvctl 建立資料庫服務,從節點 3 和節點 4 執行。
您可以在「應用程式詳細資料和設定」中指定這項服務。在「進階設定」下方選擇聲道數 (聲道數)。RMAN 會在節點 3 和節點 4 之間分配通道。
設定 Oracle 服務名稱和 RAC 成員節點。
設定 Oracle 資料庫服務,在多個節點之間進行負載平衡
在「應用程式詳細資料和設定」中設定, RAC 成員節點:節點 3 的 IP 和節點 4 的 IP。
建立維護節點的資料庫服務,供備份和災難復原服務用於備份:
srvctl add service -d <dbname> -s act_service_<dbname> -r <dbinstance3>,<dbinstance4> srvctl start service -d <dbname> -s act_service_<dbname>
在 tnsnames.ora 檔案 ($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora) 下,為備份節點 (本例中的
dbinstance3
和dbinstance4
節點) 上建立的 Oracle 服務名稱新增 tns 項目act_service_<dbname> = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <DATABASE NAME>) ) )
測試建立的服務名稱:
tnsping actservice
測試服務名稱和使用者憑證:
sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
在「應用程式詳細資料和設定」Oracle 服務名稱下方指定這個服務名稱。
在受保護的節點 (例如節點 3) 上建立專用的封存記錄備份服務,用於備份:
srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3> srvctl start service -d <dbname> -s act_arc_service_<dbname>
在
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>) ) )
測試服務名稱:
tnsping act_archservice
在「應用程式詳細資料和設定」封存記錄備份服務名稱下方指定這個服務名稱。
修補 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 主機前,請繼續執行下列步驟:
Oracle DBA 指南
- Oracle 資料庫的備份和災難復原
- 保護 Oracle 資料庫的必要條件
- Oracle 修補程式和已知問題
- 準備要保護的 Oracle 資料庫
- 探索及保護 Oracle 資料庫
- Oracle 資料庫的詳細資料和設定
- 搭配備份和災難復原服務使用 dNFS
- 保護已探索到的 Oracle 資料庫
- 將 Oracle 資料庫掛接為標準掛接點
- 建立 Oracle 資料庫的即時虛擬副本
- 還原及復原 Oracle 資料庫
- 使用掛接和遷移功能即時復原 Oracle 資料庫
- 使用備份和災難復原工作流程佈建環境