21.7 將資料從內嵌式 Sybase SQL Anywhere 移轉至外部 Oracle 資料庫

ZENworks 10 Management 可讓您將資料從內部內嵌式 Sybase SQL Anywhere 資料庫或在 ZENworks 主要伺服器上執行的外部 Sybase SQL Anywhere 資料庫移轉至未安裝 ZENworks 10 Management 的設備上所安裝的 Oracle 資料庫。

重要:如果設備上安裝了 ZENworks 報告伺服器,則在移轉資料庫後報告伺服器將無法使用。若要使用報告伺服器,必須於轉移資料庫後,再次將 ZENworks 報告伺服器安裝在已安裝了 Oracle Client 的主要伺服器上。如需詳細資訊,請參閱節 21.7.3, 轉移後任務

請檢閱以下各節以瞭解如何轉移資料庫︰

21.7.1 準備移動資料

在將資料從 Sybase 資料庫轉移至 Oracle 資料庫之前,請執行以下步驟:

  • 確認 ZENworks 10 Management 的授權狀態為「使用中」。該產品必須以授權版本或試用版本進行安裝並執行。

  • 使用 report-save (rpsv) (目的資料夾) 指令儲存所有報告、rights.xmlownership.xml。XML 檔案包含所有報告的權限與擁有權詳細資料。

  • 確認設定了 Sybase 資料庫的主要伺服器已升級至 ZENworks 10 Management。

  • 確認 ZENworks 主要伺服器上已安裝內部或外部 Sybase 資料庫。

  • 確認 Oracle 資料庫安裝在未安裝 ZENworks 10 Management 的設備上。

  • 確保 USERS 表空間具有足夠的空間,可以建立並儲存 ZENworks 資料庫綱要。要建立不含任何資料的 ZENworks 資料庫綱要,至少需要 100 MB 的表空間,同時依據要移轉的資料庫大小,還需要額外增加適當空間。資料庫移轉公用程式依預設僅使用 USERS 表空間。移轉期間無法手動指定任何其他表空間。

  • 在資料庫提示符處執行以下詢問,以確認 NLS_CHARACTERSET 參數和 NLS_NCHAR_CHARACTERSET 參數是否分別設定為 AL32UTF8 和 AL16UTF16︰

    select parameter, value from nls_database_parameters where parameter like '%CHARACTERSET%';
    
  • (視情況而定) 若要透過建立新的使用者綱要來移轉資料庫,請確保符合下列額外要求︰

    • 務必注意資料庫管理員的身份證明。

    • 必須具備用於關聯至 Oracle 存取使用者的表空間。

  • 在下列情況下,您可以選擇使用位於網路中某部伺服器上的現有使用者綱要來移轉資料庫︰

    • 資料庫管理員使用必要的權限建立使用者綱要,並將使用者綱要的身分證明傳送給您。在此情況下,移轉資料庫時不必提供資料庫管理員身份證明。

    • 在 Oracle 資料庫中建立使用者綱要,並選擇在資料庫移轉期間加以使用。

    若要使用現有使用者綱要來移轉資料庫,請確保符合以下額外要求︰

    • 確保使用者綱要具備建立資料庫的下列權限。

      • CREATE SESSION
      • CREATE_TABLE
      • CREATE_VIEW
      • CREATE_PROCEDURE
      • CREATE_SEQUENCE
      • CREATE_TRIGGER
    • 確保在 USERS 表空間上的使用者綱要配額已設定為「沒有限制」。

  • 手動停止在管理區中所有伺服器上正在執行的 ZENworks 服務。

    若要停止服務:

    • 在 Windows 上: 請進行下列幾項操作:

      1. 在 Windows 桌面的「開始」功能表上,按一下「設定」>「控制台」

      2. 連按兩下「管理工具」>「服務」

      3. 停止下列服務︰Novell ZENworks 伺服器Novell ZENworks 服務監控程式Novell ZENworks 代辦服務

    • 在 Linux 上︰ 在主控台的提示下,輸入下列指令:

      • /etc/init.d/./novell-zenmntr stop

      • /etc/init.d/./novell-zenserver stop

      • /etc/init.d/./novell-zenloader stop

  • 確保主要伺服器上的 Novell ZENworks 內嵌式資料儲存服務正在執行。

    • 在 Windows 上: 請進行下列幾項操作:

      1. 在 Windows 桌面的「開始」功能表上,按一下「設定」>「控制台」

      2. 連按兩下「管理工具」>「服務」

      3. 「Novell ZENworks 內嵌式資料儲存」服務的狀態必須為「已啟動」

    • 在 Linux 上︰ 在主控台提示下,輸入 /etc/init.d/./sybase-asa status

  • (選用) 資料庫的移轉狀態將記錄在 novell-zenworks-configure.log 檔案中。預設只會記錄「資訊」和「嚴重」兩類訊息。若要將其他類型 (例如「較好」、「最好」和「警告」) 的訊息也記錄到檔案中,請在 novell-zenworks-configure.properties 檔案中執行以下操作︰

    1. Logger.logLevel 的值設定為相應的訊息類型。

      例如,若想記錄類型為「最好」的訊息︰

       #Logger.logLevel   = FINEST
      
    2. 移除行中的「#」以取消註解︰

      Logger.logLevel   = FINEST
      

    novell-zenworks-configure.properties 檔案位於 %ZENWORKS_HOME%\conf\ (Windows) 及 /etc/opt/novell/zenworks/ (Linux)。

21.7.2 將資料從 Sybase SQL Anywhere 資料庫移轉至 Oracle 資料庫

將資料從 Sybase SQL Anywhere 資料庫移轉至 Oracle 資料庫

  1. 確保節 21.7.1, 準備移動資料中列出的所有任務均已完成。

  2. 執行資料庫移轉公用程式。

    • 在 Windows 上: 在指令提示字元下,前往 ZENworks 安裝路徑\bin\novell-zenworks-configure.bat 檔案並輸入以下指令︰

      novell-zenworks-configure.bat -c DBMigrateConfigureAction

    • 在 Linux 上︰ 在主控台提示下,前往 /opt/novell/zenworks/bin 並輸入以下指令︰

      novell-zenworks-configure -c DBMigrateConfigureAction

  3. 輸入目標資料庫類型,如 Oracle。

  4. 輸入 Oracle 資料庫伺服器的 IP 位址或主機名稱。

  5. 輸入 Oracle 資料庫伺服器所使用的埠。

  6. 輸入 Oracle 資料庫之完全合法的網路服務名稱。

  7. 您可以選擇建立新的使用者綱要,亦可使用現有的使用者綱要。

    若選擇建立新的使用者綱要,請繼續步驟 8

    若選擇使用現有的使用者綱要,則跳至步驟 9

  8. 輸入資料庫伺服器管理員的使用者名稱與密碼。

  9. 當提示輸入資料庫使用者名稱時輸入綱要名稱。

  10. 當提示輸入資料庫使用者密碼時輸入資料庫綱要密碼。

    資料庫轉移隨即開始。

  11. 資料庫移轉完成後,可以檢查 novell-zenworks-configure.log 檔案以瞭解移轉是否成功。記錄檔案位於 %ZENWORKS_HOME%\log\ (Windows) 及 /var/opt/novell/log/zenworks/ (Linux)。

  12. 成功轉移資料庫後,繼續執行節 21.7.3, 轉移後任務

繼續資料庫移轉

若由於某些原因停止了資料庫移轉,則只要建立 dbmigration.xml 檔案,便可透過 ZENworks 轉移公用程式繼續進行轉移。檔案位於 Windows 上的 ZENworks 安裝路徑\bin 目錄及 Linux 上的 /opt/novell/zenworks/bin 目錄中。

  1. 執行資料庫移轉公用程式。

    • 在 Windows 上: 在指令提示字元下,前往 ZENworks 安裝路徑\bin\novell-zenworks-configure.bat 檔案並輸入以下指令︰

      novell-zenworks-configure.bat -c DBMigrateConfigureAction

    • 在 Linux 上︰ 在主控台提示下,前往 /opt/novell/zenworks/bin 並輸入以下指令︰

      novell-zenworks-configure -c DBMigrateConfigureAction

  2. 輸入目標資料庫類型,如 Oracle。

  3. 輸入 Oracle 資料庫伺服器的 IP 位址或主機名稱。

    必須指定資料庫移轉期間所用之 Oracle 資料庫伺服器的 IP 位址或主機名稱。例如,若在資料庫移轉期間已指定資料庫伺服器的 IP 位址,則您在繼續移轉資料庫時必須指定同一個 IP 位址。您無法指定資料庫伺服器的主機名稱。

  4. 輸入 Oracle 資料庫伺服器所使用的埠。

  5. 輸入 Oracle 資料庫之完全合法的網路服務名稱。

  6. 選擇使用現有綱要。

  7. 當提示輸入停止資料庫轉移前所指定的資料庫使用者名稱時,輸入綱要名稱。

  8. 當提示輸入停止資料庫轉移前所指定的資料庫使用者密碼時,輸入資料庫綱要密碼。

  9. 選擇繼續轉移資料庫。

    資料庫轉移隨即開始。

  10. 成功轉移資料庫後,繼續執行節 21.7.3, 轉移後任務

21.7.3 轉移後任務

若管理區中僅有一部伺服器,則資料成功轉移至 Oracle 資料庫後,所有 ZENworks 服務均會自動啟動。

若管理區域中有多個伺服器︰

  1. 在執行轉移公用程式的設備上,將以下檔案複製到所有伺服器上的相應目錄中︰

    • zdm.xml
    • dmaccounts.properties
    • dmmappings.properties

    檔案位於 Windows 上的 ZENworks 安裝路徑\conf\datamodel 目錄中及 Linux 上的 /etc/opt/novell/zenworks/datamodel 目錄中。

  2. 重新啟動 ZENworks 服務。

    • 在 Windows 上: 請進行下列幾項操作:

      1. 在 Windows 桌面的「開始」功能表上,按一下「設定」>「控制台」

      2. 連按兩下「管理工具」>「服務」

      3. 啟動下列服務︰Novell ZENworks 伺服器Novell ZENworks 服務監控程式Novell ZENworks 代辦服務

    • 在 Linux 上︰ 在主控台的提示下,輸入下列指令:

      • /etc/init.d/./novell-zenmntr restart

      • /etc/init.d/./novell-zenserver restart

      • /etc/init.d/./novell-zenloader restart

  3. 將 ZENworks 報告從 Sybase SQL Anywhere 資料庫移轉至 Oracle 資料庫︰

    1. 將 Oracle Client 安裝在不含 ZENworks 報告伺服器之例項的主要伺服器上。

    2. 將 ZENworks 報告伺服器的新例項安裝在已安裝 Oracle Client 的設備上。

    3. 將報告複製到正在執行報告伺服器新例項的設備上。這些報告是您在轉移之前所儲存的 ZENworks 報告。如需詳細資訊,請參閱節 21.7.1, 準備移動資料

    4. 使用以下指令發行報告並回存報告的權限與擁有權詳細資料︰

      zman rpld 包含權限與.xml_擁有權之目錄的路徑.xml

    5. 轉移資料庫之前請先解除安裝已安裝的 ZENworks 報告伺服器例項。

ZENworks 伺服器現在指向新資料庫。

對於 Oracle 10g 資料庫,所有管理員名稱都區分大小寫,包括使用者來源中的登入名稱。在安裝期間自動建立的預設 ZENworks 管理員帳戶採用首字母大寫的形式,因此,為了登入 ZENworks 控制中心,您必須輸入 Administrator

21.7.4 資料庫移轉疑難排解

Java 堆積空間異常疑難排解

由於記憶體不足,在移轉資料庫時發生 Java 堆積空間異常︰

  1. 編輯 Windows 上的 ZENworks 安裝路徑\bin\novell-zenworks-configure.bat 檔案或 Linux 上的 /opt/novell/zenworks/bin/novell-zenworks-configure,以根據執行轉移公用程式之設備的 RAM 變更以下行中的堆積空間值︰

    "%JAVA_HOME%\bin\java" -Djava.library.path=%ZENLIB% -cp "%MYCP%" %DEBUG_OPTS% %JAVA_OPTS% -Xmx128m com.novell.zenworks.configure.ConfigureLoader %CONFIG_OPTS%
    

    堆積空間值以 MB 表示,不超過 -Xmx128m。預設值為 128。

    例如,如果設備的 RAM 為 512 MB,則 novell-zenworks-configure.bat 檔案中的行可更新為以下行︰

    "%JAVA_HOME%\bin\java" -Djava.library.path=%ZENLIB% -cp "%MYCP%" %DEBUG_OPTS% %JAVA_OPTS% -Xmx512m com.novell.zenworks.configure.ConfigureLoader %CONFIG_OPTS%
    

    重要:堆積空間值必須等於或小於設備的 RAM。

  2. 在主控台提示下,執行 Windows 上的 ZENworks 安裝路徑\bin\novell-zenworks-configure.bat 檔案或 Linux 上的 /opt/novell/zenworks/bin/novell-zenworks-configure

  3. 遵照提示進行。

    當提示您輸入繼續移轉所需的檔案位置時,請輸入 DBMigration.xml 的完整路徑。檔案位於 Windows 上的 ZENworks 安裝路徑\bin 目錄及 Linux 上的 /opt/novell/zenworks/bin 目錄中。

    XML 檔案包含一個表清單和一個用於指示表是否成功轉移的旗標。當繼續移轉資料庫時,只會移轉旗標值設為「False」的表。

Oracle 資料庫故障疑難排解

如果 Oracle 資料庫在轉移資料庫時發生故障︰

  1. 在主控台提示下,執行 Windows 上的 ZENworks 安裝路徑\bin\novell-zenworks-configure.bat 檔案或 Linux 上的 /opt/novell/zenworks/bin/novell-zenworks-configure

  2. 遵照提示進行。

    當提示您輸入繼續移轉所需的檔案位置時,請輸入 DBMigration.xml 的完整路徑。檔案位於 Windows 上的 ZENworks 安裝路徑\bin 目錄及 Linux 上的 /opt/novell/zenworks/bin 目錄中。

    XML 檔案包含一個表清單和一個用於指示表是否成功轉移的旗標。當繼續移轉資料庫時,只會移轉旗標值設為「False」的表。

    重要:請不要編輯 DBMigration.xml 的內容。

Oracle 表空間問題疑難排解

若 Oracle USERS 表空間的大小不足以建立和儲存 ZENworks 資料庫綱要,則資料庫移轉將失敗,並會在嘗試建立表時出現下列錯誤訊息︰

SEVERE: Terminating the database migration...
SEVERE: An error has occurred while migrating the database.

若要解決此問題,Oracle 資料庫管理員必須增加 USERS 表空間的大小。要建立不含任何資料的 ZENworks 資料庫綱要,請確保表空間大小至少為 100 MB,同時依據要移轉的資料庫大小,還需要額外增加適當空間。

資料庫移轉失敗問題疑難排解

若 NLS_CHARACTERSET 參數未設定為 AL32UTF8 且 NLS_NCHAR_CHARACTERSET 參數未設定為 AL16UTF16,則資料庫移轉失敗,並出現以下錯誤訊息︰

Failed to run the sql script: localization-updater.sql,
message:Failed to execute the SQL command: insert into
zLocalizedMessage(messageid,lang,messagestr)
values('POLICYHANDLERS.EPE.INVALID_VALUE_FORMAT','fr','La stratégie {0} n''a
pas pu être appliquée du fait que la valeur de la variable "{1}" n''est pas
dans un format valide.'),
message:ORA-00600: internal error code, arguments: [ktfbbsearch-7], [8], [],
[], [], [], [], []

若要解決此問題,請將 NLS_CHARACTERSET 參數和 NLS_NCHAR_CHARACTERSET 參數分別設定為 AL32UTF8 和 AL16UTF16。若要確保字元集參數已設定為建議值,請在資料庫提示符處執行以下查詢︰

select parameter, value from nls_database_parameters where parameter like '%CHARACTERSET%';

使用現有使用者綱要執行資料庫移轉的疑難排解

若選擇使用現有的使用者綱要移轉資料庫,則資料庫移轉公用程式將建立 ZENworks 資料庫,但可能無法移轉資料。

若要解決該問題,請:

  1. 確保資料庫管理員將從剛剛建立的 ZENworks 資料庫中刪除 ZENworks 表、檢視窗和使用者序列。然後,清除 user_recyclebin 資料庫表。

  2. 使用相同使用者綱要再次啟動資料庫移轉。如需詳細資訊,請參閱將資料從 Sybase SQL Anywhere 資料庫移轉至 Oracle 資料庫

21.7.5 回復為 Sybase 資料庫

如果您要返回使用 Sybase 資料庫︰

  1. 請在執行轉移公用程式的設備上,重新命名以下檔案︰

    • zdm.xml.bak 重新命名為 zdm.xml
    • dmaccounts.properties.bak 重新命名為 dmaccounts.properties
    • dmmappings.properties.bak 重新命名為 dmmappings.properties

    檔案位於 Windows 上的 ZENworks 安裝路徑\conf\datamodel 目錄中及 Linux 上的 /etc/opt/novell/zenworks/datamodel 目錄中。

  2. 重新啟動所有 ZENworks 服務︰

    • 在 Windows 上: 請進行下列幾項操作:

      1. 在 Windows 桌面的「開始」功能表上,按一下「設定」>「控制台」

      2. 連按兩下「管理工具」>「服務」

      3. 啟動下列服務︰Novell ZENworks 伺服器Novell ZENworks 服務監控程式Novell ZENworks 代辦服務

    • 在 Linux 上︰ 在主控台的提示下,輸入下列指令:

      • /etc/init.d/./novell-zenmntr restart

      • /etc/init.d/./novell-zenserver restart

      • /etc/init.d/./novell-zenloader restart