準備 Oracle RAC

若要準備將 Oracle Real Application Cluster (Oracle RAC) 資料庫移轉至 Oracle Cloud Infrastructure 伺服器,您必須執行多個預備工作,才能開始進行移轉。

新增資料庫執行處理的項目

更新 Oracle RAC 節點上的/etc/oratab檔,並依照下列方式為您的資料庫執行處理新增項目:

  1. 請使用 SSH 登入要移轉之來源資料庫 (主要資料庫) 的第一個節點。
  2. 更新 /etc/oratab:執行下列動作,將資料庫執行處理 ID 新增至資料庫項目:
    1. 編輯 /etc/oratab
      sudo vi /etc/oratab
    2. 使用下列格式新增資料庫項目:
      $ORACLE_SID:$ORACLE_HOME:N
      節點 1 範例:
      orcl1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
      節點 2 範例:
      orcl2:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
  3. 執行 oraenv 命令檔以設定資料庫的環境變數,例如 $ ORACLE_HOME
    . oraenv
  4. 重複第二個 Oracle RAC 節點的先前步驟。

確定要移轉的資料庫正在執行

開始移轉程序之前,您必須檢查要移轉的來源資料庫 (主要資料庫) 是否正在執行。

  1. 請使用 SSH 登入要移轉之來源資料庫 (主要資料庫) 所在的伺服器。
  2. 以資料庫軟體擁有者 oracle 身分登入。
    sudo su - oracle
  3. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  4. 移至 $ORACLE_HOME 位置。
    cd $ORACLE_HOME

    如果尚未設定 $ORACLE_HOME 位置,請使用 oraenv 命令檔 (位於 /usr/local/bin 目錄) 來設定環境,包括 $PATH,因此 lsnrctlsqlplus 命令可以在不使用完整路徑名稱的情況下解析。

  5. 檢查監聽器狀態。
    srvctl status listener
  6. 如果監聽器未執行 (例如,輸出有錯誤 TNS-12541: TNS:no listener),請切換至作業系統使用者網格並啟動監聽器。
    sudo su - grid  
    srvctl start listener
  7. 檢查資料庫是否在執行中。
    sqlplus / as sysdba
    此命令應該將您連線到資料庫執行處理,並且會顯示 SQL> 提示。
  8. 檢查資料庫是否以「讀寫模式」執行
    SELECT NAME, OPEN_MODE FROM V$DATABASE;

    便會顯示與下列類似的輸出:

    NAME              OPEN_MODE
    --------------    ---------
    source_db_name    READ WRITE
  9. 結束 SQL*Plus
    EXIT

確定來源資料庫上的所有資料庫元件已安裝在目標資料庫

您可以查詢 DBA_REGISTRY 資料說明視觀表,找到安裝在來源資料庫 (主要資料庫) 中的元件。

  1. 使用 SSH 登入來源資料庫伺服器。
  2. 以管理員使用者身分登入 SQL*Plus。
    例如:
    sqlplus sys / as sysdba
    Password: password
  3. 記下開放式標幟中顯示之軟體的版本。
  4. 結束 SQL*Plus。
    EXIT
  5. 使用 opatch 產品目錄命令來尋找已經套用的最新修正程式集。
    例如:
    $ORACLE_HOME/OPatch/opatch lsinventory
  6. 在來源資料庫的第二個節點以及目標資料庫的兩個節點上重複這些步驟 (待命資料庫)。
  7. 來源資料庫的第二個節點和目標資料庫的兩個節點必須安裝相同或更新的版本。

建立 Oracle Cloud Infrastructure 系統的待命資料庫

除了目前在此系統上的資料庫之外,您還必須在 Oracle Cloud Infrastructure 上建立待命資料庫 (目標資料庫)。建立此資料庫的建立處理作業會在啟動設定期間建立起始資料庫。建立具備您網站所需之主機名稱、資源配置和 CPU 計數的資料庫系統。

產生 SSH 金鑰組

若要取得「Oracle Cloud Infrastructure 虛擬機器資料庫」系統上工具、公用程式和其他資源的本機存取權,您可以使用 Secure Shell (SSH) 從屬端軟體建立安全連線,並以使用者 Oracle 或使用者 opc 的身分登入。若要使用 SSH 存取待命「虛擬機器資料庫」系統,您必須使用 SSH 金鑰組而非密碼來認證遠端使用者。金鑰組由私密金鑰和公用金鑰組成。您可以將私密金鑰保留在電腦上,並在每次啟動執行處理時提供公用金鑰。若要建立索引鍵組,您可以使用 UNIX 樣式系統 (包括 Linux、Solaris、BSD 和 OS X) 上的 OpenSSH,或 Windows 上的 PuTTY Key Generator 等協力廠商工具。

建立虛擬雲端網路

當您使用 Oracle Cloud Infrastructure 時,第一個步驟是為雲端資源設定虛擬雲端網路 (VCN)。請確定已先設定 VCN 後,再建立待命資料庫。如需有關如何建立 VCN 的詳細資訊,請參閱 Oracle Cloud Infrastructure 文件。

確認用戶支援的虛擬機器資料庫型態

當您註冊 Oracle Cloud Infrastructure 時,系統會為您的租用設定一組服務限制。服務限制是資源的配額或允許設定。例如,您的租用已允許每個可用性網域的運算執行處理數目上限。當您購買 Oracle Cloud Infrastructure 時,通常會隨著 Oracle 帳戶代表建立這些限制。

建立待命「虛擬機器資料庫」系統時,您必須確定選取的「虛擬機器」資料庫型態密切對應至主要 (來源) 執行處理。您還必須確定用戶支援選取的型態。

驗證您的租用限制和使用狀況 (依區域):

注意:

如果指定的資源類型具有每個可用性網域的限制,則會顯示每個可用性網域的限制和使用狀況。
  1. 開啟 Oracle Cloud Services 儀表板。開啟「使用者」功能表,然後按一下用戶:< your_tenancy_name >。
  2. 按一下頁面左邊的服務限制

    您針對特定區域的資源限制和使用狀況會依服務細分。

  3. 按一下資料庫,確認租用支援的虛擬機器資料庫型態。

您選取的待命資料庫資源型態應該是密切對應至主要 (來源) 執行處理型態的形狀組合,以及您租用中支援的資料庫型態。「虛擬機器資料庫」系統可以在固定資料大小型態中使用。請確定為建立資料庫所選擇的資源配置可以容納來源資料庫,以及任何未來的大小需求。指標規則是使用類似或高於來源資料庫的形狀。

建立待命虛擬機器資料庫系統

注意:

請確定使用與主要資料庫相同的參數 (例如字元集) 建立資料庫。
  1. 登入您的 Oracle Cloud Services 儀表板
  2. 開啟導覽功能表。在服務下,按一下資料庫 (NOT 資料庫傳統)。
  3. 資料庫底下,按一下裸機、VM 以及 Exadata
  4. 選取您要使用的隔間
  5. 按一下啟動資料庫系統
  6. 在「啟動資料庫系統」精靈中,輸入下列資訊:
    1. 資料庫系統資訊
      • 間:依照預設,資料庫系統會在您目前的隔間啟動,您可以使用該隔間中的網路資源。若要啟用資料庫系統、網路以及子網路資源的隔間選擇,請按一下對話方塊中的裡連結。
      • 顯示名稱:資料庫系統的易記顯示名稱。名稱不一定要是唯一的。Oracle Cloud id (OCID) 可唯一識別資料庫系統。
      • 可用性網域:資料庫系統所在的可用性網域。
      • 形狀類型:選取虛擬機器
      • 圖形:用來啟動資料庫系統的圖形。圖形會決定資料庫系統的類型和配置給系統的資源。從上一個段落選擇識別的「虛擬機器資料庫型態」。

      • 節點總計:資料庫系統中的節點數目。數字取決於您選取的圖形。您必須指定 2。
      • Oracle Database Software Edition:資料庫系統支援的資料庫版本。選擇相同或高於主要資料庫的資料庫版本。

      • 可用的儲存體大小 (GB):輸入至少與主要 (來源) 伺服器大小相同的大小。
      • 授權類型:您要用於資料庫系統的授權類型。您的選擇會影響帳單的計量。

        • 括授權表示雲端服務的成本包括「資料庫」服務的授權。
        • 自備授權 (BYOL)」表示您是 Oracle Database 客戶,具有「無限授權合約」或「非無限制授權合約」,且想要在 Oracle Cloud Infrastructure 使用您的授權。這會移除個別內部部署授權和雲端授權的需求。
      • SSH 公用金鑰:要用於 SSH 存取資料庫系統之金鑰組的公用金鑰部分。請使用您在上一個段落產生的公用金鑰。
    2. 網路資訊
      • 虛擬雲端網路: 要啟動資料庫系統的 VCN。選取您在上一個區段中建立的 VCN。
      • 網路隔間:包含雲端網路內子網路的隔間,可將資料庫系統連附至該隔間。
      • 從屬端子網路: 資料庫系統應該連附的子網路。

      • 機名稱前置碼:選擇資料庫系統的主機名稱。主機名稱的開頭必須是字母字元,而且只能包含文數字字元和連字號 (-)。

        • 允許的字元數上限為 30。主機名稱在子網路內必須是唯一的。如果不是唯一的,資料庫系統將無法啟動設定。

      • 主機網域名稱:資料庫系統的網域名稱。如果選取的子網路使用 Oracle 提供的網際網路與 VCN 解析器進行 DNS 名稱解析,此欄位會顯示子網路的網域名稱,而且無法變更。否則,您可以選擇提供網域名稱。不允許使用連字號 (-)。

      • 主機與網域 URL:結合主機與網域名稱以顯示資料庫的完整網域名稱 (FQDN)。長度上限為 64 個字元。
    3. 資料庫資訊
      • 資料庫名稱:資料庫的名稱。資料庫名稱的開頭必須是字母字元,並且最多可包含 8 個文數字字元。不允許使用特殊字元。指定與主要資料庫 (來源資料庫) 名稱不同的名稱。
      • 資料庫版本:啟動時在資料庫系統上建立的起始資料庫版本。資料庫系統在作用中之後,您可以在其上建立其他資料庫。您可以在資料庫系統上混合資料庫版本,但不可以在版本上使用。
      • PDB 名稱:此設定值會在稍後執行 Oracle RMAN 複製步驟時建立可插式資料庫 (PDB),因此忽略此設定值。
      • 資料庫管理員密碼:輸入主要資料庫 (來源資料庫) 所使用的相同 SYS 密碼。SYS、SYSTEM、TDE 公事包和「PDB 管理」必須要有強大的密碼。密碼必須是 9 到 30 字元,而且至少包含 2 大寫、2 小寫、2 數字以及 2 特殊字元。特殊字元必須是_、#或-。密碼不可包含使用者名稱 (SYS、SYSTEM 等等) 或以正向或反向順序包含"oracle"這個字,無論大小寫為何。(如果主要資料庫 SYS 密碼不符合這項需求,您可以在完成這些設定值之後變更它。)

      • 確認資料庫管理員密碼:重新輸入您指定的「資料庫管理員密碼」。
      • 自動備份:核取此方塊即可啟用此資料庫的自動增量備份。
      • 資料庫工作負載:選取最適合您應用程式的工作負載類型。

        • 「線上交易處理 (OLTP)」可設定交易工作負載的資料庫,而這些資料庫的隨機資料存取量較高。
        • 「決策支援系統 (DSS)」會以接近大型資料掃描作業的偏置,為決策支援或資料倉儲工作負載設定資料庫。
      • 字元集:資料庫的字元集。預設值為 AL32UTF8。
      • 國字元集:資料庫的本國字元集。預設值為 AL16UTF16。
      • 標記:您可以視需要套用標記。如果您具備建立資源的權限,也具有將任意格式標記套用至該資源的權限。若要套用定義的標記,您必須具備使用標記命名空間的權限。如需有關標記的詳細資訊,請參閱資源標記。如果不確定是否應該套用標記,請略過此選項 (您可於稍後套用標記),或要求管理員。
  7. 按一下啟動資料庫系統。資料庫系統就會顯示在清單中,且狀態為「啟動設定」。資料庫系統的圖示會從黃色變成綠色 (或紅色代表錯誤)。
  8. 等待資料庫系統的圖示以轉換綠色,狀態為「可用」,然後按一下標示的資料庫系統名稱。顯示資料庫系統的詳細資訊。
  9. 請記下 IP 位址;您需要專用或公用 IP 位址 (視網路組態而定) 才能連線資料庫系統。
  10. 檢查主要 (來源) 資料庫的 SYS 密碼。如果它不符合 Oracle Cloud Infrastructure 的密碼要求,請將它變更為符合您為待命資料庫 (目標資料庫) 建立的密碼。

確定連接埠 1522 和 1521 在主要資料庫和待命資料庫之間開啟

您必須確定已在主要資料庫 (來源資料庫) 上開啟 1522 連接埠,並在待命資料庫 (目標資料庫) 上開啟連接埠 1521,以允許資料庫連線。

啟用 Oracle Cloud Infrastructure 系統與 Oracle Cloud Infrastructure Classic 系統的通訊

Oracle Cloud Infrastructure Classic 系統上,您必須從 Oracle Cloud Infrastructure 虛擬機器系統開啟連接埠 22 和 1522 以輸入流量。

Oracle Cloud My Services 主控台中設定待命資料庫至主要資料庫通訊設定值

您可以使用「Oracle Cloud 我的服務」主控台來設定通訊設定的第一部分。

  1. 登入「我的服務」主控台。
  2. 從儀表板中,按一下資料庫 (經典)。
  3. 在服務:Oracle Database Cloud Service 中,按一下頁面右側的開啟服務主控台
  4. 從資料庫部署的 img/action_menu.png 功能表中,選取存取規則
    此時會顯示「存取規則」頁面。
  5. 找出 ora_p2_dblistener 規則,啟用來自公用網際網路之連接埠 1522 上的輸入流量。
  6. 從找到之規則的 img/action_menu.png 功能表中,選取啟用
    將會顯示「啟用存取規則」視窗。
  7. 按一下啟用
    「啟用存取規則」視窗便會關閉,並在規則清單中顯示為已啟用。運算節點上的指定連接埠會開啟至公用網際網路。
  8. 建立來源 db-ssh 規則,以從公用網際網路開啟連接埠 22 上的輸入流量。
    如果連接埠 22 尚未開啟,請新增此存取規則。
    建立存取規則精靈中,輸入下列資訊:
    1. 規則名稱:source-db-ssh
    2. 來源:PUBLIC-INTERNET (從下拉式功能表選取)
    3. 目的地:下拉式功能表中的資料庫名稱
    4. 目的地連接埠:22
    5. 協定:TCP (從下拉式功能表中選取)
  9. 按一下建立
  10. 狀態設為已啟用。
  11. 使用 SSH 登入待命資料庫 (目標資料庫) 所在的伺服器。
  12. Oracle Cloud Infrastructure 系統對連接埠 22 測試 SSH 到 Oracle Database Cloud Service 系統。
    Oracle Database Cloud Service 系統上的連接埠 22 預設會從公用網際網路開啟。
    1. 使用安全檔案傳輸公用程式 (例如 SCP) 將 SSH 私密金鑰傳輸至/home/opc/.ssh目錄。
    2. 如果您是 Oracle Cloud Infrastructure opc 使用者,請執行下列命令來測試 SSH。在此範例中,私密金鑰命名為 privateKey:
      ssh -i /home/opc/.ssh/privateKey opc@source_ip
在「命令行」完成 Oracle Cloud InfrastructureOracle Cloud Infrastructure Classic Communication Settings

您必須設定 TCP 通訊埠大小、編輯 etc/host 檔案,以及更新主要資料庫 (來源資料庫) 上的 tnsnames.ora 檔案。

  1. SSH 到主要資料庫的第一個節點 (來源資料庫)
  2. 以 root 身分連線。
    sudo su -
  3. (選擇性) 設定 TCP 通訊埠大小。例如:
    sysctl -w net.core.rmem_max=10485760 
    sysctl -w net.core.wmem_max=10485760

    注意:

    TCP 通訊埠大小設成可增加移轉期間的效能。這項設定可能不適用於實際執行資料庫。
  4. 以 Oracle 使用者身分連線。
    su - oracle
  5. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  6. 在 Oracle RAC 節點的 Oracle Cloud Infrastructure Classic 主要資料庫 (來源資料庫) 的 $ ORACLE_HOME/network/admin/tnsnames.ora 檔案中,新增類似以下的 TNS 項目:

    注意:

    以主要資料庫 (來源資料庫) 的參數取代 source_node1_ip、source_node2_ip 和 source_server_name。將 target_node1_ip、target_node2_ip、target_server_name 取代為待命資料庫 (目標資料庫) 的參數。
    MIGRAC_OCIC_s1 =
      (DESCRIPTION =
        (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = source_node1_ip)(PORT = 1522))
          (ADDRESS = (PROTOCOL = TCP)(HOST = source_node2_ip)(PORT = 1522))
        )
        (CONNECT_DATA =
          (UR=A)
          (SERVER = DEDICATED)
          (SERVICE_NAME = source_service_name)
        )
      )
      
    MIGRAC_OCI_s2 =
      (DESCRIPTION =
        (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = target_node1_ip)(PORT = 1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = target_node2_ip)(PORT = 1521))
        )
        (CONNECT_DATA =
          (UR=A)
          (SERVER = DEDICATED)
          (SERVICE_NAME = target_service_name)
        )
      )
    

    注意:

    (UR = A) 對 RAC 而言是選擇性的。
  7. 測試 SQL*Plus 連接埠 1521 上從待命資料庫 (目標資料庫) 系統連線至主要資料庫 (目標資料庫) 的 1521。
    sqlplus sys@migrac_oci_s2 as sysdba
    Enter password: password
    
    SQL> SELECT NAME FROM V$DATABASE;
  8. 結束 SQL*Plus。
    exit
  9. 在主要資料庫的第二個節點 (來源資料庫) 重複這些步驟。

啟用 Oracle Cloud Infrastructure Classic 系統與 Oracle Cloud Infrastructure 系統的通訊

Oracle Cloud Infrastructure Database 系統上,您必須開啟 22 和 1521 連接埠,才能輸入 Oracle Cloud Infrastructure Classic 系統的流量。

Oracle Cloud Infrastructure 主控台中設定 Oracle Cloud Infrastructure ClassicOracle Cloud Infrastructure 通訊設定值

您可以使用 Oracle Cloud Infrastructure 主控台來設定通訊設定值的第一部分。

  1. 記下 Oracle Cloud Infrastructure Classic 伺服器的公用 IP 位址。
  2. 登入 Oracle Cloud Infrastructure 主控台。
  3. 在頁面的左側,選取隔間,然後選取頁面頂端的網路頁籤。
  4. 在隔間頁面的虛擬雲端網路上,選取網路的名稱。
  5. 在以網路名稱標籤的頁面上,從左側導覽窗格中選取安全清單
  6. 在「安全清單」頁面上,選取您要檢視的清單。
  7. 在 Security_list_name 的 network_name 安全清單頁面中,按一下編輯所有規則
  8. 捲動以尋找要變更的規則,或者按一下輸入或輸出規則的新增規則。
  9. 將資料庫系統安全清單更新為您在第一個步驟取得的 Oracle Cloud Infrastructure Classic 伺服器公用 IP。
    依照預設,會在 Oracle Cloud Infrastructure 系統上為公用網際網路的流量啟用 SSH 的連接埠 22。
    1. Oracle Cloud Infrastructure Compute Classic 伺服器上的「來源 CIDR」設為 IP 位址。
    2. IP PROTOCOL 設成 TCP。
    3. SOURCE PORT RANGE 設為 ALL。
    4. DESTINATION RANGE 設為 1521。
在「命令行」上將 Oracle Cloud Infrastructure Classic 填入 Oracle Cloud Infrastructure Communication Settings

您必須編輯 $ORACLE_HOME/network/admin/tnsnames.ora 檔案,並在待命資料庫 (目標資料庫) 上設定 TCP 通訊埠大小。

  1. 待命資料庫 (目標資料庫) 第一個節點的 SSH。
  2. 在待命資料庫 (目標資料庫) 上,以資料庫軟體擁有者 Oracle 連線。
    sudo su - oracle
  3. 執行設定$ ORACLE_HOME 環境變數的 oraenv 命令檔。
    . oraenv
  4. 在兩個節點的 Oracle Cloud Infrastructure 虛擬機器系統的 $ORACLE_HOME/network/admin/tnsnames.ora 檔案中,新增兩個資料庫的 TNS 項目:
    在此範例中,主要資料庫 TNS 名稱是 OCIC-ORCL,而待命資料庫 TNS 名稱是 OCI-ORCL

    注意:

    使用主要資料庫 (來源資料庫) 的參數取代 source_node1_ip, source_node2_ip, source_server_name

    target_node1_ip、target_node2_ip、target_server_name取代為待命資料庫 (目標資料庫) 的參數

    MIGRAC_OCIC_s1 =
      (DESCRIPTION =
        (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = source_node1_ip)(PORT = 1522))
          (ADDRESS = (PROTOCOL = TCP)(HOST = source_node2_ip)(PORT = 1522))
        )
        (CONNECT_DATA =
          (UR=A)
          (SERVER = DEDICATED)
          (SERVICE_NAME = source_service_name)
        )
      )
      
    MIGRAC_OCI_s2 =
      (DESCRIPTION =
        (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = target_node1_ip)(PORT = 1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = target_node2_ip)(PORT = 1521))
        )
        (CONNECT_DATA =
          (UR=A)
          (SERVER = DEDICATED)
          (SERVICE_NAME = target_service_name)
        )
      )
  5. 使用 SQL*Plus 以測試從 Oracle Cloud Infrastructure 系統到連接埠 1521 之 Oracle Cloud Infrastructure Classic 資料庫的連線。
    sqlplus sys@migrac_orcl_s2 as sysdba
    Enter password: password
    (在此階段,您執行的任何 SQL 敘述句將會失敗,因為待命資料庫尚未完全設定。)
  6. 在命令行,以 root 身分連線。
    sudo su -
  7. (選擇性) 在兩個節點上,設定 TCP 通訊埠大小。例如:
    sysctl -w net.core.rmem_max=10485760 
    sysctl -w net.core.wmem_max=10485760

    注意:

    TCP 通訊埠大小設成可增加移轉期間的效能。這項設定可能不適用於實際執行資料庫。
  8. 在待命資料庫的第二個節點 (目標資料庫) 重複這些步驟。

確定已經套用並同步組合修正程式

請確定主要資料庫 (來源資料庫) Oracle Cloud Infrastructure Classic 系統的修正程式層次早於或等於待命資料庫 (目標資料庫) Oracle Cloud Infrastructure 系統的修正程式層次。

  1. 請使用 SSH 登入主要資料庫的第一個節點 (來源資料庫)。
  2. 請檢查主要資料庫的修正程式層次,如下所示:
    1. 尋找修正程式的簡短清單:
      $ORACLE_HOME/OPatch/opatch lspatches
    2. 若要尋找修正程式的詳細清單:
      $ORACLE_HOME/OPatch/opatch lsinventory
  3. 記下修正程式層次。
  4. 針對主要資料庫 (來源資料庫) 的第二個節點,重複步驟 1 到 3。
  5. 請使用 SSH 登入待命資料庫的節點 (目標資料庫)。
  6. 請執行 opatch lsinventory 命令,檢查待命資料庫節點上的修正程式層次。
  7. 比較資料庫節點的修正程式層次。確定待命系統的組合修正程式等於或晚於主要資料庫的組合修正程式。
  8. 如果您必須在待命資料庫 (目標資料庫) 上安裝稍後的修正程式,請存取 My Oracle Support:https://support.oracle.com/
  9. 將正確的修正程式版本下載至待命資料庫 (目標資料庫)。
  10. 擷取組合修正程式。
  11. 列出可用的修正程式。
    $ORACLE_HOME/OPatch/opatch lspatches
  12. 套用修正程式。
    $ORACLE_HOME/OPatch/opatch apply patch_number