此主題回答使用者對於 Oracle Universal Installer 使用方面所提出的一些常見問題。此 FAQ 中的問題和回答共分為下列幾個類別:
是否可以在某個程式碼區塊中呼叫動作?
不可以。您不能在程式碼區塊內呼叫動作。
Universal Installer 在不同平台執行安裝時,如何處理特定平台的動作?
某些動作是針對特定平台的動作。OSP 隨附的動作僅適用於 Windows 和 Solaris 平台。不適用於特定平台的動作會在安裝時被忽略,而不適用於特定平台的查詢則會傳回預設值。
有沒有建立或擷取 .exe 檔案的動作?
OUI 目前沒有可以建立或執行自動解壓縮 (.exe) 檔案的動作。請將自動解壓縮檔案的內容新增到檔案群組,然後使用 copyGroup 動作來複製檔案。如果使用此程序,解除安裝時將會移除所有檔案。安裝執行檔後,就可以使用產生動作來執行。
解除安裝如何運作?
每個動作都有一個定義的還原函數,在解除安裝時會以反向執行。您可以指定讓動作在安裝時、安裝和解除安裝時,或只在解除安裝時執行。各個指定為在解除安裝時執行的動作,會在元件的日誌中新增一個項目。進行解除安裝時,日誌會與動作的解除安裝方法一起反向執行。
何謂安裝程式動作日誌?
動作日誌是依階段作業來寫入的。每當一個新的安裝階段作業開始時,系統就會建立安裝程式動作日誌。安裝程式動作日誌中會記錄每個動作執行的作業,以及動作發生的時機是在安裝時或是解除安裝時。每個階段作業均儲存在 installActionstime_stamp.log 檔案中,其中 time_stamp 的格式為:
yyyy-mm-dd_hh-mm-ss[AM|PM].log
.err 和 .out 檔案也會在它們的檔案名稱中使用時戳,以便於持續追蹤每個階段作業的這些檔案。
要如何產生 SQL 命令?
您可以使用 spawn 動作來產生 SQL 命令。
例如,若要在安裝時建立兩個表格,您可以使用 ct.sql SQL 命令檔,包含下列各行:
create table &1 (col1 number, col2 number);
create table &2 (col1 number, col2 number);
exit;
若要在安裝時使用 SQL Plus 以 spawn 動作來建立 foo1 和 foo2 表格,其「安裝命令」參數如下:
在 Windows NT、95 或 98 系統中,請使用下列其中一項:
sqlplusw system/manager @x:/directory/ct.sql foo1 foo2
cmd /c sqlplus system/manager @x:/directory/ct.sql foo1 foo2 (僅適用於 NT)
command /c sqlplus system/mamager @x:/directory/ct.sql foo1.foo2 (Win 95/98)
sqlplus system/manager @x:/directory/ct.dql foo1 foo2 (UNIX)
若要在安裝時啟動 Oracle 資料庫,您可以使用 db.startup 命令檔,包含下列各行:
connect internal
startup
exit;
如果使用 spawn 動作,「安裝命令」參數如下 (如果「伺服器管理程式」行模式在系統路徑中):
在 UNIX 命令行:
svrmgr1 command=@/private1/Directory/db.startup
在 DOS 命令行:
svrmgr1 @/private1/Directory/db.startup
若要關閉資料庫,您可以使用 db.shutdown 命令檔,包含下列各行:
connect internal
shutdown immediate
exit;
如果使用 spawn 動作,「安裝或解除安裝命令」參數如下 (如果「伺服器管理程式」行模式在系統路徑中):
在 UNIX 命令行:
svrmgr1 command=@/private1/Directory/db.shutdown
在 DOS 命令行:
svrmgr1 @/private1/Directory/db.shutdown
是否可以使用查詢擷取 ORACLE_HOME 產品目錄?
您可以使用 RgsQueries 來測試使用舊版 OUI 安裝的產品。您可以使用 AreasQueries 來測試使用 OUI 安裝的產品。目前沒有查詢可以傳回 Oracle 本位目錄中安裝的所有產品清單。
要如何建立共用相同檔案的兩個元件?
若要建立共用相同檔案的兩個元件,其中一種方法便是建立包含共用檔案的個別元件。兩個元件對於共用檔案的元件會有相依性。若安裝了兩個元件之一,則會安裝此個別元件。當解除安裝其他兩個元件且沒有元件相依於此元件時,也會解除安裝此個別元件。
相依元件和被依附元件有何差別?
相依元件通常是頂層元件,會依存於下層元件 (被依附項)。相依元件必須等到它的所有被依附元件都安裝之後才能夠安裝。
例如:如果元件 A (必要或選擇性) 需要安裝元件 B 才能正常運作,那麼 A 就依存於 B。在此情況下,A 是相依項,B 是被依附項。
何謂循環相依性?
如果被依附元件依存於原來的相依元件,就會發生循環相依性。例如,如果 A 依存於 B,B 依存於 C,而 C 依存於 A,就有循環相依性存在。在個別階段作業編輯元件並指定相依性時,就可能發生此情況。「暫存驗證程式」會檢查是否有循環相依性。
OUI 不支援循環相依性。
如何匯出公用變數?
您可以透過變數關聯,讓相依元件中的變數與被依附元件中的變數建立關聯。您必須將 B 中的變數 foo 與 A 中對應的公用變數建立關聯。必要條件是這兩個變數均需標記為「公用」且屬於相同類型。
例如,如果「元件 A」依存於「元件 B」,且元件 B 有 foo 公用變數,則可以匯出「元件 A」中的變數,作為「元件 B」中的 foo 值。
如何指定字串給程式碼區塊中的數值變數?
請使用 parseInt 函數將字串轉換成數值。因為函數不會導致異常狀況,所以如果傳送的字串不是代表有效的整數,則 parseInt 函數會傳回 0。
如何在組態輔助程式規格檔中使用變數?
請依下列方式在組態輔助程式規格檔中設定 CLASSPATH 變數:
Name=<類別路徑>
Description=<為這個要啟動的組態設定工具指定所需的類別路徑>
您還需將 CLASSPATH 包含在規格檔之 GENERAL 區段的引數清單中。
使用此規格檔建立組態輔助程式時,install/deinstall 引數將會包含 CLASSPATH 引數。您應在此處指定 CLASSPATH,使用與指定動作/查詢/對話方塊/函數的引數時相同形式來指定。
注意::因為參數 (-cp) 已是規格的一部分,所以您不需要再指定一次。
在理想的情況下,您應建立下列平台特定常數:
c_sPathSeparator,並將它的值設為分號 (;) (Windows 平台) 和冒號 (:) (UNIX 平台)。
c_sCLASSPATH,並將它的值設為 %CLASSPATH% (Windows 平台) 和 $CLASSPATH (UNIX 平台)。
建立常數後,您就可以使用它們來確認傳送到「Java 程式實際執行環境 (JRE)」的類別路徑是否正確,如以下範例所示:
NET8_LOCATION + "/lib/netcfg.jar" + c_sPathSeparator + c_sCLASSPATH
如何建立多重項目對話方塊?
「多重項目」對話方塊會顯示使用者定義的提示,以及安裝作業所需的輸入欄位。每個輸入欄位的左側都會顯示一個相關的標籤。輸入欄位共有三種類型:POPDOWN、SECURE 或 TEXTFIELD。這些輸入欄位類型都有區分大小寫,因此必須依照列示輸入。目前每個對話方塊只能有一個 POPDOWN 欄位,供您從可用的選項清單中選擇項目。SECURE 欄位通常是用來輸入密碼。當您必須手動輸入要求的資訊時,則是使用 TEXTFIELD 類型。
子標題欄位顯示什麼內容?
您可以在所有標準對話方塊中指定子標題,直接顯示在標題之下。子標題欄位的預設值是空字串。您可以在「資訊」對話方塊中指定顯示在對話方塊下方的說明文字。說明文字的預設值是空值。
如何驗證密碼?
使用「密碼」對話方塊時,您可以使用對話方塊預設值功能來設定密碼。(對話方塊預設值不會被驗證。)「密碼」對話方塊會執行驗證,檢查您在輸入密碼和確認密碼欄位中輸入的值是否相同。這個值會設到接受密碼的變數中。變數驗證方法可以新增其他驗證,例如檢查密碼是否正確等等。
如何在特定元件執行作業?
依照預設,會在 component_table 中所列的每個元件執行作業。如果您只想在特定的元件執行作業,請使用元件鍵從清單選取個別的元件。例如:
範例 Components_Table:
comp0 c:/components/component0.prp component0 "NT,Solaris" 1.0
comp1 c:/components/component1.prp component1 "NT,Solaris" 1.0
comp2 c:/components/component2.prp component2 "NT,Solaris" 1.0
patch3 c:/components/patch3.prp patch1 "NT,Solaris" 1.1
指定元件的命令行範例:
ospSilent c:/myspec.txt -components {comp0, comp1, patch3}
要如何在全新的 NT 系統指定 Oracle_Home 欄位的自訂預設值?
您可以在 oraparam.ini 檔案中加上下列項目:
DEFAULT_HOME_LOCATION=/<HomeDirectory>
目錄名稱就會附加到具有最多磁碟可用空間的磁碟機,並使用它作為預設值。這個值只有在全新系統進行安裝時才會用到。
如需有關使用 oraparam.ini 檔案的詳細資訊,請參閱 Oracle Universal Installer Concepts Guide 的 "Troubleshooting" 章節。
進行 UNIX 安裝時如何顯示版本注意事項?
OUI 會在安裝結束時提示您輸入工具或命令來顯示版本注意事項 (如果適用)。如果您想使用 vi 或 emacs 來檢視版本注意事項,請在工具名稱前輸入 xterm -e。例如,xterm -e vi 會顯示一個個別的 xterm 視窗,並立即執行 vi <filename> 命令。
OUI 會傳回哪些不同的結束碼?
如需有關結束碼的詳細資訊,請參考 Oracle Universal Installer Concepts Guide。
要如何建立回應檔 (含有在某一特定安裝階段作業所做的全部選擇)?
如需有關使用回應檔的詳細資訊,請參考 Oracle Universal Installer Concepts Guide 的 "Customizing and Creating Response Files" 章節。特別是 "Creating a Response File with Record Mode" 小節。
OUI 如何決定其暫時檔的位置?
OUI 會先嘗試 $TEMP 環境變數,如果找不到,再接著嘗試 $TMP;如果還是找不到,即預設為 /tmp (Solaris) 和 C:/Temp (Windows)。
OUI 指定變數值的順序為何?
變數會依下列優先順序設定:
命令行
為什麼在 Linux 環境中我除了英文版的 OUI 外,不能呼叫其他語言版本?
如果您不能在 Linux 環境中呼叫英文版以外的其他語言版本 OUI,請使用國家代碼和語言代碼在 Shell 中設定語言設定值。
將語言設定值設定為法文的命令行範例:
setenv LANG fr_FR
setenv LC_ALL fr_FR
為何在叢集系統看不到「節點選擇」頁面?
如果您沒有在叢集系統中看到此頁面,請檢查是否已順利安裝 Oracle Clusterware。如果已順利安裝,請執行 <CRSHome>/bin/olsnodes 來檢查叢集軟體是否已啟動且在執行中。如果 olsnodes 沒有傳回節點清單,OUI 便不會顯示此頁面。這是系統特定問題,不是 OUI 的問題。如果沒有安裝 Oracle Clusterware,且系統是廠商叢集軟體的一部分,請執行 Disk1/install/<平台>/lsnodes 來取得節點清單。如果 lsnodes 沒有傳回節點清單,OUI 便不會顯示此頁面。
為何我看到空 Oracle 本位目錄的「選取的節點」頁面?
如果您已經解除安裝在這個本位目錄的軟體,就會發生這種狀況。因為 OUI 仍然保持這個本位目錄和節點資訊。因此,請自安裝產品目錄對話方塊移除 Oracle 本位目錄 (請參閱線上說明瞭解詳細資訊),然後開始安裝。
為何 OUI 在「可用的產品」頁面或「安裝類型」頁面顯示清單方塊?
可能是提供的選項太多和 (或) 選項的描述太長,而讓單一頁面無法容納清單和描述。如果有三個選項,若要確保能夠顯示圓鈕頁面,則每個選項只能有三行描述。
為何「安裝類型」和「摘要」頁面的大小與 Oracle 本位目錄的實際需求大小不同?
大小是由安裝時所需的空間和已安裝的產品累計而得。通常某些空間 (用於連結) 在安裝完成之後就不需要。如果此大小不正確,安裝開發人員應視需要更新元件中的偏差大小。若要計算實際大小,可以使用 -printdisk 選項執行 OUI,並且確定暫時檔、用於連結的暫存空間、Oracle 本位目錄,以及 Oracle 本位目錄之外的所有檔案 (例如資料庫檔案),都設定在不同的磁碟。OUI 將會在日誌目錄中建立一個檔案,說明每個動作的磁碟使用量。然後,就可以使用最高和結束使用量來設定偏差大小 (安裝、暫時和後續安裝)。
如何除錯安裝階段的錯誤?
如果這是「安裝」階段的問題 (例如在安裝時發生的錯誤),請查看 installActionstime_stamp.log 的上次更新。如果上一個項目是動作或查詢的錯誤,這就是潛在的安裝命令檔問題。安裝開發應該進一步決定修訂問題的優先順序。修訂這些情況之優先順序的秘訣:
這是預期的錯誤?如果是,就不算是錯誤。
動作/查詢的引數是否正確?如果不正確,請進行修正,然後重新暫存元件。這屬於安裝命令檔問題。
如果動作/查詢的輸入正確,但作業不正確,那麼這有可能是程式庫問題。請檢查這是不是自訂程式庫。
如果這是在「連結」階段發生的問題,請查看 installActionstime_stamp.log 的 make 作業輸出。您是否可以從 OUI 外部順利執行 make 作業?如果不行,那麼這就是 make 檔案的問題,而不是 OUI 的問題。
如何除錯叢集安裝問題?
請檢查 installActionstime_stamp.log,查看是否有錯誤訊息,指示 OUI 在將檔案植入遠端節點時發生問題。
請重新開始安裝,並且選取相同的 Oracle 本位目錄和相同的節點,然後移至「可用的產品」頁面。OUI 將會執行先決條件檢查,以確定節點是否已經啟動,以及您是否可以存取 Oracle 本位目錄和產品目錄。(您也可以手動執行這些檢查。)
如果這是叢集安裝,而且發生未將檔案傳送至遠端節點的問題,則請檢查 installActionstime_stamp.log,查看檔案是否為 copyGroup/copyExpandedGroup 安裝動作中的一部分。如果未複製檔案,但在進行連結作業時產生檔案,那麼這是安裝問題,而不是 OUI 的問題。如果 OUI 擁有這個檔案 (例如 OracleHome/inventory 目錄中的檔案、root.sh 等),那麼這就是 OUI 問題。
如果問題與在遠端節點執行的服務/登錄更新有關,這就是 OUI 問題。OUI 小組將會在收到您針對問題所提供的可重製測試案例後,決定修訂問題的優先順序。OUI 依據大部分叢集作業的 SRVM API。分辨出修訂問題之優先順序後所得的結果將可判斷 OUI 是否沒有正確執行作業,或是屬於 SRVM 問題。OUI 小組將會據此適當的重新指派錯誤。
如何除錯組態輔助程式問題?
如果這是組態輔助程式的問題,請停止所有組態輔助程式。結束 OUI。開啟 installActionstime_stamp.log,查看略過的組態輔助程式清單與命令行。在 OUI 之外以相同順序執行工具,觀察是否能正常運作。若無法運作,則為組態輔助程式的問題。這不是安裝或 OUI 問題。
如果這是停止特定組態輔助程式而發生的問題,請檢查停止作業在其他組態輔助程式是否可以正常運作。如果可以運作,這就是某個組態輔助程式的問題。OUI 只會試著終止該組態輔助程式的處理作業,讓組態輔助程式自行決定是否做相同的回應。
如果是組態輔助程式失敗的問題,這就是組態輔助程式問題。請查看詳細資訊窗格或 installActionstime_stamp.log,取得組態輔助程式報告的潛在錯誤。您可以使用這項資訊來修正問題,或將問題報告給安裝開發小組。
如果這是組態輔助程式名稱的問題,則屬於安裝命令檔問題。
嘗試安裝時出現「無法鎖定取得安裝來源區的獨佔寫入存取權」錯誤訊息。
為了避免同時寫入暫存區,暫存區會有一個鎖定。如果您在執行其他暫存階段作業的同時,又嘗試暫存到同一個暫存區,或安裝階段作業嘗試從同一個暫存區進行安裝,就會發生這項錯誤。請檢查您是否在執行某個安裝程式階段作業的同時,又嘗試從同一個暫存區進行暫存。
可以新增到檔案群組的項目數目上限是多少?
您大約可以新增 6000 個檔案到檔案群組。如果檔案群組中的檔案數目超過這個限制,將會同時影響安裝階段的記憶體需求和安裝速度。使用 copyJarContents 動作擷取的 jar 檔案也應該套用相同的限制。
要如何含括我元件的翻譯的版本注意事項?
由於所有的版本注意事項都必須包括在檔案對應中,因此您可以新增所有翻譯的版本注意事項檔,並將它們全部標記成要複製到特定的目標位置。您現在就可以建立此檔案的版本注意事項。
建議您將翻譯的 (非英文) 版本注意事項放在個別的檔案群組中,而 copyGroup 動作跟著原始的 copyGroup 動作。
我有跨多個磁碟的產品。OUI 在安裝此產品時,持續多次要求相同的磁碟。為何會這樣?
請確定「建立多片 CD 作業」是最後一個在暫存區執行的作業。如果您安裝、刪除任何元件,或對暫存區進行其他變更,就必須在 Oracle Software Packager 重新建立多片 CD。同時請檢查下列各項:
暫存區有沒有任何不必要的元件。這些都是暫存區中從未安裝過的非頂層元件 (因為沒有元件依存於它們)。
暫存時,務必只選取支援目標版本的平台。
下列範例使用的頂層元件含有 Oracle Universal Installer 提供之不同類型的被依附項。
測試 1:測試元件是否有「必要的」被依附項類型
設定
建立兩個頂層元件 (A 和 B),每個各有相同的「必要」被依附項 (C)。
安裝
I1a.選擇 A 會安裝 A 與 C。
I1b.之後,選擇 B 僅安裝 B (之前已安裝其被依附項 C)。
解除安裝
D1a.選擇 A 僅解除安裝 A。不會解除安裝 C,因為它是 B 的「必要」被依附項,因此還需要它。
D1b.選擇 A 與 C 會解除安裝 A、B 與 C。同時也會解除安裝 B,因為解除安裝了它的「必要」被依附項 C,無法單獨安裝 B。
D1c.選擇 C 會解除安裝 A、B 與 C。同時也會解除安裝 A 與 B,因為解除安裝了它們的「必要」被依附項 C,無法單獨安裝 A 與 B。
測試 2:測試元件是否有 '1,more' 類型的被依附項
設定
建立兩個頂層元件 (A 和 B),每個各有「相同的」兩個 '1,more' 類型被依附項 (C 和 D)。
安裝測試 2
I2.a. 選擇 A 和兩個被依附項 (C 和 D) 會安裝 A、C 和 D。
I2.b. 之後,選擇 B (沒有 C 和 D) 只會安裝 B。
解除安裝測試 2
D2.a1.選擇 A 僅解除安裝 A。
D2.a2.選擇 A 與一個被依附項 C (在 A 之下) 會解除安裝所有的元件 (A、B、C 和 D)。
注意:會解除安裝 B 和 D。
D2.a3.只選擇一個被依附項 C (在 A 之下) 會解除安裝所有的元件 (A、B、C 和 D)。
注意:會解除安裝 A、B 和 D。
D2.a4.只選擇一個被依附項 D (在 A 之下) 會解除安裝所有的元件 (A、B、C 和 D)。
注意:會解除安裝 A、B 和 C。
D2.a5.選擇兩個被依附項 C 與 D (在 A 之下) 會解除安裝所有的元件 (A、B、C 和 D)。
注意:會解除安裝 A 和 B。
D2.b1.選擇 B 僅解除安裝 B。
D2.b2.選擇 B 與一個被依附項 C (在 B 之下) 會解除安裝所有的元件 (A、B、C 和 D)。
注意:會解除安裝 A 和 D。
D2.b3.只選擇一個被依附項 C (在 B 之下) 會解除安裝所有的元件 (A、B、C 和 D)。
注意:會解除安裝 A、B 和 D。
D2.b4.只選擇一個被依附項 D (在 B 之下) 會解除安裝所有的元件 (A、B、C 和 D)。
注意:會解除安裝 A、B 和 C。
D2.b5.選擇兩個被依附項 C 與 D (在 B 之下) 會解除安裝所有的元件 (A、B、C 和 D)。
注意:會解除安裝 A 和 B。
版權所有 © 1996,2016,Oracle。 保留一切權利。
Oracle 是 Oracle Corporation 和 (或) 其關係公司的註冊商標。
其他名稱為各商標持有人所擁有之商標。