Skip to main content
NetApp Solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

資料庫從內部部署移轉至Azure雲端

貢獻者

由於Oracle決定逐步淘汰單一執行個體資料庫、許多組織已將單一執行個體Oracle資料庫轉換成多租戶容器資料庫。如此一來、便可輕鬆將一部分名為pdb的容器資料庫重新配置至雲端、並提供最大可用度選項、將移轉期間的停機時間降至最低。

不過、如果您仍有Oracle資料庫的單一執行個體、則可以先將其轉換成多租戶容器資料庫、然後再嘗試重新配置pdb。

下列各節提供在任一種情況下、將內部部署Oracle資料庫移轉至Azure雲端的詳細資料。

將單一非CDB執行個體轉換為多租戶CDB中的pdb

如果您仍有單一執行個體的Oracle資料庫、無論您是否要將其移轉至雲端、都必須將其轉換成多租戶容器資料庫、因為Oracle不久將停止支援單一執行個體資料庫。

下列程序會將單一執行個體資料庫插入容器資料庫、做為可插拔的資料庫或pdb。

  1. 在獨立的單一執行個體資料庫所在的同一主機上建置Shell Container資料庫 ORACLE_HOME

  2. 關閉單一執行個體資料庫、然後以唯讀模式重新啟動。

  3. 執行 DBMS_PDB.DESCRIBE 產生資料庫中繼資料的程序。

    BEGIN
      DBMS_PDB.DESCRIBE(
        pdb_descr_file => '/home/oracle/ncdb.xml');
    END;
    /
  4. 關閉單一執行個體資料庫。

  5. 啟動Container資料庫。

  6. 執行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY 用於判斷非CDB是否與CDB相容的功能。

    SET SERVEROUTPUT ON
    DECLARE
      compatible CONSTANT VARCHAR2(3) :=
        CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
               pdb_descr_file => '/disk1/oracle/ncdb.xml',
               pdb_name       => 'NCDB')
        WHEN TRUE THEN 'YES'
        ELSE 'NO'
    END;
    BEGIN
      DBMS_OUTPUT.PUT_LINE(compatible);
    END;
    /

    如果輸出為「是」、則非CDB相容、您可以繼續下一步。

    如果輸出為否、則非CDB不相容、您可以檢查 PDB_PLUG_IN_VIOLATIONS 請參閱、瞭解為何不相容。您必須先修正所有違規、才能繼續。例如、任何版本或修補程式不相符的問題都應該透過執行升級或opatch公用程式來解決。修正違規之後、請執行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY 再次確認非CDB與CDB相容。

  7. 插入非CDB的單一執行個體。

    CREATE PLUGGABLE DATABASE ncdb USING '/home/oracle/ncdb.xml'
      COPY
      FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/')
    ;
    註 如果主機上沒有足夠的空間、則為 NOCOPY 選項可用於建立pdb。在這種情況下、單一執行個體非CDB在作為pdb外掛之後無法使用、因為原始資料檔案已用於pdb。請務必在轉換之前建立備份、以便在發生任何問題時、有一些問題需要重新處理。
  8. 如果來源單一執行個體非CDB與目標CDB之間的版本不同、請從轉換後的pdb升級開始。對於相同版本的轉換、可以跳過此步驟。

    sqlplus / as sysdba;
    alter session set container=ncdb
    alter pluggable database open upgrade;
    exit;
    dbupgrade -c ncdb -l /home/oracle

    檢閱中的升級記錄檔 /home/oracle 目錄。

  9. 開啟可插拔的資料庫、檢查是否有pdb外掛程式違規、然後重新編譯無效的物件。

    alter pluggable database ncdb open;
    alter session set container=ncdb;
    select message from pdb_plug_in_violations where type like '%ERR%' and status <> 'RESOLVED';
    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -c 'ncdb' -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql
  10. 執行 noncdb_to_pdb.sql 以更新資料字典。

    sqlplus / as sysdba
    alter session set container=ncdb;
    @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql;

    關閉並重新啟動Container DB。ncdb會從受限模式中移除。

將內部部署的Oracle資料庫移轉至Azure(重新配置pdb)

使用最大可用度選項的 Oracle PDB 重新定位採用了 PDB 熱複製技術、可在將磁碟區複製到目標時、提供來源 PDB 可用度。在轉換時、使用者連線會自動重新導向至目標 PDB 。因此、停機時間會盡量減少、而不受 PDB 大小的影響。NetApp提供可執行的工具套件、可將移轉程序自動化。

  1. 在Azure VM上的Azure公有雲中建立相同版本和修補層級的CDB。

  2. 從Ansible控制器複製自動化工具套件的複本。

    git clone https://github.com/NetApp-Automation/na_ora_aws_migration.git
  3. 請閱讀README檔案中的指示。

  4. 設定來源與目標Oracle伺服器的Ansible主機變數檔案、以及DB伺服器主機的組態檔以進行名稱解析。

  5. 在Ansible控制器上安裝Ansible控制器先決條件。

    ansible-playbook -i hosts requirements.yml
    ansible-galaxy collection install -r collections/requirements.yml --force
  6. 針對內部部署伺服器執行任何移轉前工作。

    ansible-playbook -i hosts ora_pdb_relocate.yml -u admin -k -K -t ora_pdb_relo_onprem
    註 管理使用者是內部部署Oracle伺服器主機上具有Sudo權限的管理使用者。系統管理員使用者會以密碼驗證。
  7. 執行Oracle pdb從內部部署重新配置至目標Azure Oracle主機。

    ansible-playbook -i hosts ora_pdb_relocate.yml -u azureuser --private-key db1.pem -t ora_pdb_relo_primary
    註 Ansible控制器可位於內部部署或Azure雲端。控制器需要連線至內部部署的Oracle伺服器主機和Azure Oracle VM主機。Oracle資料庫連接埠(例如1521)會在內部部署的Oracle伺服器主機與Azure Oracle VM主機之間開啟。

其他Oracle資料庫移轉選項

如需其他移轉選項、請參閱Microsoft文件: "Oracle資料庫移轉決策程序"