?
このドキュメントでは、 php中國(guó)語(yǔ)ネットマニュアル リリース
????
在RedHat 6.0上安裝Oracle 8i(全攻略)
|
來(lái)源:LinuxByte
|
晏子 編譯
-------------------------------------------------------------------------------- 目前,網(wǎng)上已有不少較少Oracle 8i在Linux(RedHat 6.0)上的安裝指南,但在實(shí)際運(yùn)用中還是會(huì)遇到各種各樣的問題,這其中的是,一則指南本身不完全,還有就是Oracle本身也有一定的問題。本文是我找到的最完整的一個(gè)安裝指南,其他的FAQ很具實(shí)用價(jià)值,故將此文整理出來(lái)供大家參考。 本文只介紹Oracle 8i企業(yè)版(815ship.tgz)。 如果你還有問題,請(qǐng)到Oracle 技術(shù)網(wǎng)絡(luò)和deja.com提問或查找答案。 -------------------------------------------------------------------------------- 1. 準(zhǔn)備安裝 1.1 獲得Java運(yùn)行時(shí)刻環(huán)境(JRE) 1.2 重新配置并編譯你的內(nèi)核 1.3 建立Linux用戶組和帳號(hào) 1.4 設(shè)置環(huán)境變量 2. 安裝 2.1 運(yùn)行Oracle通用安裝程序 2.2 安裝所有Oracle選件 2.3 不要用數(shù)據(jù)庫(kù)助手創(chuàng)造數(shù)據(jù)庫(kù) 2.4 使用Oracle 8i補(bǔ)丁 3. 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) 3.1 運(yùn)行數(shù)據(jù)庫(kù)助手 3.2 使用定制/專用服務(wù)器模式 3.3 保存到腳本 3.4 運(yùn)行腳本 3.5 擴(kuò)大你的重做日志文件 3.6 修改你的init.ora文件 3.7 不使用數(shù)據(jù)庫(kù)助手創(chuàng)造一個(gè)數(shù)據(jù)庫(kù) 4. 數(shù)據(jù)庫(kù)創(chuàng)建的后期過(guò)程 4.1 自動(dòng)啟動(dòng)和關(guān)閉數(shù)據(jù)庫(kù) 4.2 安裝SQL*Plus聯(lián)機(jī)幫助 5. 配置Net8 5.1 Net8助手的限制 5.2 建立一個(gè)監(jiān)聽器 5.3 為本地命名方法配置Net8 5.4 配置SQLNET.ORA 5.5 使用本地命名方法測(cè)試Net8連接 5.6 為主機(jī)命名方法配置Net8 5.7 使用主機(jī)命名方法測(cè)試Net8連接 5.8 建立Oracle命名服務(wù)器 5.9 使用Oracle命名方法測(cè)試Net8連接 5.10 為IIOP連接配置監(jiān)聽器 5.11 自動(dòng)啟動(dòng)和關(guān)閉監(jiān)聽器 5.12 自動(dòng)啟動(dòng)和關(guān)閉Oracle命名服務(wù)器 6. 常見問題 Oracle 通用安裝程序 我不能運(yùn)行Oracle通用安裝程序。我怎么辦? Oracle 通用安裝程序提示我為OSDBA和OSOPER指定Linux用戶組。你也被這樣提出過(guò)嗎? 數(shù)據(jù)庫(kù)助手 有這么辦法不使用數(shù)據(jù)庫(kù)助手就能創(chuàng)造一個(gè)數(shù)據(jù)庫(kù)嗎? 我得到“can"t find class java/lang/Thread”的一個(gè)錯(cuò)誤消息 我得到一條警告消息"JNLS Exception:oracle.ntp.jnls.JNLSException Unable to find any National Character Sets. Please check your Oracle installation."。 當(dāng)保存到腳本時(shí),我得到錯(cuò)誤消息"Unable to create database. DBCA-00047: Unable to create destination directories."。 我應(yīng)該選擇“典型”還是“定制”安裝? 我在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)得到一條“ ORA-01012 :Not logged in”。 盡管我使用了專用服務(wù)器過(guò)程,仍然得到“ ORA-01012 :Not logged in”。 我得到一條“ORA-01034 :ORACLE not available”。 創(chuàng)造一個(gè)數(shù)據(jù)庫(kù)花了很長(zhǎng)的時(shí)間。 使用補(bǔ)丁 在使用8.1.5.0.1補(bǔ)丁以后,svrmgrl和sqlplus仍然報(bào)告8.1.5.0.0。 在使用8.1.5.0.2補(bǔ)丁以后,當(dāng)運(yùn)行svrmgrl時(shí),我得到一條“ORA-12545 Connect failed because target host or object does not exist”。 其他 在我的pmon跟蹤文件中有一條:“OER 536879337 in Load Indicator : Error Code = 570716328 !” 在我的警告記錄文件和pmon蹤跡文件中,我得到很多“Load Indicator not Supported by OS!”。 我得到“ORA-00601 cleanup lock conflict”并且Oracle因中度負(fù)載的EJB顧客而死掉。 有人在一個(gè)2.3版內(nèi)核上使用Oracle8i嗎? 7. 資源鏈接 補(bǔ)丁和支持文檔的重要鏈接 1. 準(zhǔn)備安裝 1.1 獲得Java運(yùn)行時(shí)刻環(huán)境(JRE) 本文中所指的Java運(yùn)行時(shí)刻環(huán)境意味著JRE 1.1.6v5,而不是JDK。從<a href=www.Blackdown.org>Blackdown</a>下載,要得到glibc版本而不是libc版本。在你喜歡的任何目錄下安裝它,但是確保建立一個(gè)名為/usr/local/jre的符號(hào)連接到你安裝了JRE的目錄,并且其安裝目錄可被以后創(chuàng)建的Linux帳號(hào)oracle讀取和執(zhí)行。 如果你使用JDK而不是JRE,通用安裝程序?qū)⒃谝院蟊г筄racle不能找到Java類java.lang.Thread。其原因是: JRE使用rt.jar作為包含Java庫(kù)的文件,而JDK使用classes.zip。 Oracle通用安裝程序是一個(gè)Java應(yīng)用程序,它被編碼成使用rt.jar而不是classes.zip作為它的java 的CLASSPATH部分。 因此,你仍然可以通過(guò)創(chuàng)建一個(gè)名為rt.jar的符號(hào)連接連接到classes.zip而繼續(xù)使用JDK。 如果你有興趣使用IBM的JDK 1.1.8,要注意IBM的實(shí)現(xiàn)僅僅支持原生線程,并且不支持-green標(biāo)志。Oracle 8i安裝腳本使用原生和green線程。 注意:你不需要設(shè)定CLASSPATH環(huán)境變量。如果你已經(jīng)安裝其他版本的java,在你運(yùn)行安裝程序時(shí),刪除CLASSPATH的設(shè)置(unset),而在你使用安裝程序時(shí),再把它設(shè)置回來(lái)。這點(diǎn)在使用netasst和dbassist時(shí)也是一樣。 1.2 重新配置并編譯你的內(nèi)核 很多用戶已經(jīng)報(bào)告不為Oracle8i重新配置內(nèi)核而成功。當(dāng)心!下列文字摘自O(shè)racle8i Linux文檔(原文): Oracle8i Administrator"s Reference Release 8.1.5 for Intel Linux (A74957-01) Chapter 1 - Administering Oracle8i Controlling the System Global Area Size Limits of the SGA The maximum size of a single shared memory region is specified by the Linux parameter SHMMAX. For example, if SHMMAX is 512 KB and the SGA is 2048 KB, the SGA requires four segments. If the size of the SGA exceeds the maximum size of a shared memory segment (SHMMAX), Oracle8i attempts to attach more contiguous segments to fulfill the requested SGA size. SHMSEG is the maximum number of segments that can be attached by a process. To attach the segments at contiguous addresses, SHMMAX must be set to its maximum value on systems where its size is limited. Note: Intimate Shared Memory (ISM) may cause problems when SHMMAX is smaller than the database SGA size. 1.3 設(shè)置Linux用戶組和帳號(hào) 你需要?jiǎng)?chuàng)建Linux用戶組dba和oinstall。 創(chuàng)建Linux帳號(hào)oracle有一個(gè)問題。Oracle8i Linux文檔在oracle賬號(hào)應(yīng)該屬于哪個(gè)Linux用戶組上自相矛盾??匆豢聪旅嬲設(shè)racle8i Linux安裝指南的文字,它說(shuō)Linux oracle帳號(hào)應(yīng)該屬于oinstall組: Oracle8i Installation Guide Release 8.1.5 for Intel Linux (A74958-0) Chaper 2 - Setting the Environment Setup Task to Perform as the root User Create a Linux Account to Own Oracle Software The oracle account is the Linux account that owns the Oracle8i software after installation. You must run the OUI from this account. On Intel-Linux, use the operating system administration utility useradd to create an oracle account with the following properties: Login Name Any name, but this document refers to it as the oracle account. Default GID Corresponding to the oinstall group. 而另一方面,Oracle8i Linux管理指南說(shuō)Linux oracle帳號(hào)應(yīng)該屬于dba組: Oracle8i Administrator"s Reference Release 8.1.5 for Intel Linux (A74957-01) Chapter 1 - Administering Oracle8i Managing Special Accounts and Groups (Table 1-8) The oracle software owner is the only required member of the dba group. You can add the root user, or any other Linux user, to the dba group. Members of this group have access to SQL*Plus specially privileged functions. If your account is not a member of the dba group, you must enter a password in order to connect as INTERNAL or gain access to the other administrative functions of SQL*Plus. The default group ID is dba. 那么Linux oracle到底應(yīng)該屬于哪個(gè)Linux用戶組?我的建議是dba。甚至對(duì)Oracle 8.0.5,oracle帳號(hào)已經(jīng)是dba組的一個(gè)成員了。 你將oracle分配到dba還是oinstall組,在安裝過(guò)程上有差別: 如果oracle是dba的一個(gè)成員,通用安裝程序?qū)⑻崾灸氵\(yùn)行腳本 Oracle/tmp/OraInstall/oraInstroot.sh。這個(gè)腳本將改變$ORACLE_BASE/oraInventory的組屬主為oinstall。 而如果oracle是oinstall的一個(gè)成員,通用安裝程序?qū)ⅰ氨г埂被蛱崾灸鉕racle帳號(hào)OSDBA和OSOPER的Linux組,但是不提醒你要運(yùn)行上述的腳本。 1.4 設(shè)置環(huán)境變量 設(shè)置所有所需的環(huán)境變量,例如在安裝指南中指明的ORACLE_BASE、ORACLE_HOME、ORACLE_SID和LD_LIBRARY_PATH。我也將$ORACLE_HOME/bin加到PATH中。 注意:你不需要設(shè)定CLASSPATH環(huán)境變量。如果你已經(jīng)安裝其他版本的java,在你運(yùn)行安裝程序時(shí),刪除CLASSPATH的設(shè)置(unset),而在你使用安裝程序時(shí),再把它設(shè)置回來(lái)。這點(diǎn)在使用netasst和dbassist時(shí)也是一樣。 如果你僅有128MB的物理內(nèi)存,并且你在網(wǎng)絡(luò)上有另外一臺(tái)Linux機(jī)器,你可能想要運(yùn)行Oracle通用安裝程序但在另外一臺(tái)Linux機(jī)器上顯示,以便你不需要在你安裝Oracle8i的機(jī)器上運(yùn)行X。通過(guò)設(shè)置DISPLAY環(huán)境變量到正在運(yùn)行X的主機(jī)名或IP地址(另一臺(tái)Linux機(jī)器)做到,還有X使用的屏幕號(hào)。 例如,如果我正在安裝Oracle8i的IP地址是 192.168.0.1,并且運(yùn)行X的另一臺(tái)Linux機(jī)器是192.168.0.2, 從主機(jī)192.168.0.1設(shè)置DISPLAY環(huán)境變量,如下: export DISPLAY=192.168.0.2:0.0 在192.168.0.1上運(yùn)行的任何X應(yīng)用程序?qū)⑵漭敵鏊偷?92.168.0.2。然而,X服務(wù)器必須允許除自己以外的主機(jī)的顯示請(qǐng)求。在192.168.0.2主機(jī)上,做: xhost +192.168.0.1 如果你設(shè)置了NLS_LANG環(huán)境變量,保證它被設(shè)置為一個(gè)合適/正確的值。見盡管我使用了專用服務(wù)器過(guò)程,仍然得到“ ORA-01012 :Not logged in”。 2. 安裝 2.1 運(yùn)用 Oracle 通用安裝程序 如果你只有一臺(tái)至少196MB的Linux機(jī)器,那么你可以安全地在同一臺(tái)機(jī)器上運(yùn)行X并安裝Oracle 8i。如果你僅有128MB,安裝可能很慢。 如果你有2臺(tái)Linux機(jī)器,一個(gè)為Oracle8i,另一個(gè)運(yùn)行X,從運(yùn)行X的主機(jī)telnet到安裝Oracle 8i的主機(jī),并以oracle登錄。通過(guò)進(jìn)入CDROM(或下載版本的解壓目錄)并運(yùn)行腳本./runInstaller運(yùn)行Oracle通用安裝程序。當(dāng)應(yīng)用程序遠(yuǎn)程運(yùn)行時(shí),顯示應(yīng)該出現(xiàn)在X上。如果不是,見前一章。 RedHat 6.1的用戶有運(yùn)行安裝程序本身的問題,例如: Error in CreateOUIProcess(): -1 : Bad Address 對(duì)此,這里是其他一些人的一些建議: 如果你使用GNOME,獲得enlightenment-0.15.5-37.i386.rpm或更高。 使用KDE。 進(jìn)入install/linux目錄,并運(yùn)行runInst.sh。 在你看到第一個(gè)對(duì)話后繼續(xù)下一個(gè)對(duì)話,你將被提醒運(yùn)行腳本/tmp/OraInstall/oraInstroot.sh。這個(gè)腳本將改變$ORACLE_BASE/oraInventory的組屬主為oinstall。如果從來(lái)沒有這樣提醒你,要么是你以前已經(jīng)安裝了Oracle8i(只裝附加部件)或oracle帳號(hào)不是dba的一個(gè)成員,改變oracle的用戶組為dba。 如果Oracle通用安裝程序突然死了,問題可能是內(nèi)存太小。嘗試做下列操作: 增大你的交換區(qū) 當(dāng)使用install/linux/runInst.sh時(shí),增加由Java使用的堆大小,通過(guò)將傳遞給jre的參數(shù)從-mx64mb改為-mx100mb。 2.2 安裝所有Oracle選件 你可以選擇安裝或不安裝的Oracle選件是Time Series Option、Visual Retrieval Information Option、Spatial Option、和interMedia Option。其他Oracle 選件例如JServer、Parallel Option、和Partitioning Options被缺省安裝。 當(dāng)你到了選件要安裝的對(duì)話時(shí),不管你是否想使用Oracle選件,安裝Oracle所有選件。Oracle選件將不被使用,直到你決定在一個(gè)數(shù)據(jù)庫(kù)中使用他們。 安裝所有Oracle選件的原因是由于$ORACLE_HOME/bin/relink腳本的一個(gè)bug。這個(gè)腳本在每次升級(jí)后或Oracle8i打補(bǔ)丁后都要運(yùn)行。然而,似乎腳本假定所有的庫(kù)文件,包括哪些Oracle自帶的選件,都存在。如果它不能找到甚至一個(gè)庫(kù)文件,重新鏈接就失敗。 如果你碰巧使用了原來(lái)的8.1.5.0.1補(bǔ)丁并且注意了sqlplus或svrmgrl仍然報(bào)告是8.1.5.0.0,這是因?yàn)?,是由于丟失庫(kù)文件而導(dǎo)致重新鏈接失敗。在我第一次安裝時(shí),我取消了我能取消的所有Oracle選件。在使用補(bǔ)丁以后,錯(cuò)誤記錄(如果你做了一個(gè))將顯示出: /usr/bin/ld: Cannot open -lordsdo8: No such file or directory 當(dāng)你不安裝Oracle選件而使用8.1.5.0.2補(bǔ)丁,情況是更糟糕。你甚至不能運(yùn)行svrmgrl: ORA-12545 Connect failed because target host or object does not exist. 2.3 不要用數(shù)據(jù)庫(kù)助手創(chuàng)建數(shù)據(jù)庫(kù) 在安裝完成后,Oracle數(shù)據(jù)庫(kù)助手將運(yùn)行。注意,即使你在以前的提示你是否要用數(shù)據(jù)庫(kù)助手創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)的一個(gè)對(duì)話框回答“No”,它仍將運(yùn)行。 當(dāng)你運(yùn)行數(shù)據(jù)庫(kù)助手時(shí),你將得到一條錯(cuò)誤消息: JNLS Exception:oracle.ntp.jnls.JNLSException Unable to find anyNational Character Sets. Please check your Oracle installation. 只要忽略這條消息并且繼續(xù)。當(dāng)你被提示創(chuàng)建、修改或刪除一個(gè)數(shù)據(jù)庫(kù)時(shí),就取消,并且完全退出Oracle通用安裝程序。我們需要首先使用補(bǔ)丁。 以下是從8i補(bǔ)丁的常見問題有關(guān)上面錯(cuò)誤消息的文字: -------------------------------------------------------------------------------- 6. Just before the DB Assistant is launched, a dialog is displayed withthe warning:"JNLS Exception: oracle.ntp.jnls.JNLSException Unable to find any National Character Sets. Please check your Oracle installation." This is a known problem (884001). Ignore the warning -------------------------------------------------------------------------------- 2.4 使用 Oracle8i 補(bǔ)丁 從Oracle Technology Network獲得最新的補(bǔ)丁。目前,最新的補(bǔ)丁是8.1.5.0.2。8.1.5.0.2 補(bǔ)丁是一個(gè)累積的補(bǔ)丁。它包括8.1.5.0.1 補(bǔ)丁。運(yùn)行補(bǔ)丁并通過(guò)檢查/tmp/81501.log和/tmp/81502.log查看任何錯(cuò)誤。檢查是否在這些腳本中有重新連接失敗。用grep找詞“fail”。如果重新連接失敗,有可能是沒有安裝Oracle所有選件。見“安裝所有Oracle選件”。 3. 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) 3.1 運(yùn)行數(shù)據(jù)庫(kù)助手 既然你使用了最新的補(bǔ)丁,你現(xiàn)在已經(jīng)準(zhǔn)備好創(chuàng)建你的數(shù)據(jù)庫(kù)了。運(yùn)行dbassist。你將得到這樣一條錯(cuò)誤消息: JNLS Exception:oracle.ntp.jnls.JNLSException Unable to find anyNational Character Sets. Please check your Oracle installation. 只要忽略這條消息并且繼續(xù)。這是摘自8i補(bǔ)丁的常見問題關(guān)于上面錯(cuò)誤消息的文字: -------------------------------------------------------------------------------- 6. Just before the DB Assistant is launched, a dialog is displayed withthe warning:"JNLS Exception: oracle.ntp.jnls.JNLSException Unable to find any National Character Sets. Please check your Oracle installation." This is a known problem (884001). Ignore the warning -------------------------------------------------------------------------------- 實(shí)際上,你不必使用數(shù)據(jù)庫(kù)助手創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。你可以得到頁(yè)腳本來(lái)做它。詳見item number 9 on the 8i patch FAQ。然而,這個(gè)文件假定你使用數(shù)據(jù)庫(kù)助手。 3.2 使用定制安裝/專用服務(wù)器模式 當(dāng)提示在Typical(典型)與Custom(定制)之間選擇時(shí),選擇定制,同樣,當(dāng)提示在Dedicated Server Mode(專用服務(wù)器模式)和Shared Server Mode(共享服務(wù)器模式)之間選擇時(shí),選擇專用服務(wù)器模式。如果你需要一個(gè)使用共享服務(wù)器模式(MTS)的數(shù)據(jù)庫(kù),你可以一開始創(chuàng)建一個(gè)使用專用服務(wù)器模式的數(shù)據(jù)庫(kù)并在以后改變?yōu)楣蚕矸?wù)器模式或MTS。如果你堅(jiān)持創(chuàng)建一個(gè)使用共享服務(wù)器模式的數(shù)據(jù)庫(kù),一旦被啟動(dòng),你可能得到這個(gè)錯(cuò)誤: ORA-01012: Not logged in 其原因在下面介紹,下文摘自O(shè)racle8i Concept 文檔(沒包含在Oracle8i EE Linux CD,但是包含在Oracle8i EE NT CD!): Oracle8i Concepts Release 8.1.5 A67781-01 Chapter 8 Restricted Operations of the Multi-Threaded Server Certain administrative activities cannot be performed while connected to a dispatcher process, including shutting down or starting an instance and media recovery. An error message is issued if you attempt to perform these activities while connected to a dispatcher process. These activities are typically performed when connected with administrator privileges. When you want to connect with administrator privileges in a system configured with multi-threaded servers, you must state in your connect string that you want to use a dedicated server process (SRVR=DEDICATED) instead of a dispatcher process. 使用專用服務(wù)器的另一個(gè)原因,至少目前,是當(dāng)創(chuàng)建一個(gè)實(shí)例(instance)時(shí),使用BEQ協(xié)議,因?yàn)檫€沒有設(shè)置任何監(jiān)聽器,至少?zèng)]在一開始的安裝時(shí)設(shè)置。BEQ協(xié)議是唯一一個(gè)不要求監(jiān)聽器正在運(yùn)行的協(xié)議,并且只能用在Oracle正在運(yùn)行的同一臺(tái)機(jī)器上。還有,BEQ協(xié)議總是使用一個(gè)專用服務(wù)器,絕不是一個(gè)多線程服務(wù)器(MTS)。這是摘自O(shè)racle8i Administration Reference for Linux的文字: Oracle8i Administrator"s Reference Release 8.1.5 for Intel Linux A74957-01 Chapter 5 The BEQ Protocol The BEQ protocol is both a communications mechanism and a process-spawning mechanism. If a service name is not specified, either directly by the user on the command line or the login screen or indirectly through an environment variable such as TWO_TASK, then the BEQ protocol is used. In which case, a dedicated server will always be used, and the multi-threaded server is never used. This dedicated server is started automatically by the BEQ protocol, which waits for the server process to start and attach to an existing SGA. If the startup of the server process is successful, the BEQ protocol then provides inter-process communication through UNIX. An important feature of the BEQ protocol is that no network listener is required for its operation, since the protocol is linked into the client tools and directly starts its own server process with no outside interaction. However, the BEQ protocol can only be used when the client program and Oracle8i reside on the same machine. The BEQ protocol is always installed and always linked to all client tools and to the Oracle8i Server. 如果上述仍然不能讓你工作,它可能是NLS_LANG環(huán)境變量設(shè)置不當(dāng)?shù)膯栴}。見盡管我使用了專用服務(wù)器過(guò)程,仍然得到“ ORA-01012 :Not logged in”。 3.3 保存到腳本 當(dāng)提示你是否要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù),或保存到腳本中并在以后運(yùn)行腳本時(shí),選擇保存到腳本。這將幫助你理解背后發(fā)生了什么并幫助你在數(shù)據(jù)庫(kù)創(chuàng)建期間診斷任何問題。 3.4 運(yùn)行腳本 腳本將在$ORACLE_HOME/install中找到。你僅需運(yùn)行一個(gè)腳本,因?yàn)樗哉_的順序調(diào)用所有其他單獨(dú)的腳本。我建議你分別運(yùn)行每個(gè)腳本。 當(dāng)你運(yùn)行第一個(gè)腳本時(shí),名為SIDrun.sh,它將啟動(dòng)實(shí)例并創(chuàng)建SYSTEM數(shù)據(jù)文件和表空間、控制文件和重做(redo)日志文件。運(yùn)行其他腳本,名為SIDrun1.sh和SIDrun2.sh。 3.5 擴(kuò)大你的重做日志文件 如果你接受缺省的512K的重做日志文件大小和2個(gè)重做日志組,你會(huì)注意到在$ORACLE_BASE/admin/SID/bdump警告日志文件中找到這樣的消息: Thread 1 cannot allocate new log, sequence 4 Checkpoint not complete 第一行的最后數(shù)字是變化的。這是因?yàn)橹刈鋈罩疚募叽缣?。在這種情況下,再增加2個(gè)稍大些的(如4MB)重做日志記載組,刪除并重建前2個(gè)日志組使得所有的日志文件組有4MB的大小。 如果你對(duì)重做日志組沒有足夠大的尺寸,腳本SIDjava.sh,它在Oracle8i中初始化Java,可能不能完成并且失敗。如果你有較小的退回(rollback)片段,會(huì)發(fā)生同樣的事情。 現(xiàn)在運(yùn)行其他腳本,按照主腳本提供的順序所指出的那樣。當(dāng)你運(yùn)行腳本SIDjava.sh時(shí),即如果你選擇了JServer選件在數(shù)據(jù)庫(kù)中創(chuàng)建,注意它可能花很長(zhǎng)時(shí)間。罪魁禍?zhǔn)拙褪荢QL語(yǔ)句create或REPLACE JAVA SYSTEM。 3.6 修改你的init.ora文件 由數(shù)據(jù)庫(kù)助手生成的init.ora文件沒有指明要使用的退回片段。這已經(jīng)被指出來(lái)了,因?yàn)閷?shí)例的初始啟動(dòng)還沒有生成退回片段,除了在SYSTEM中的片段。 因此你需要修改你的位于$ORACLE_BASE/admin/pfile中的init.ora文件并且為ROLLBACK_SEGMENTS提供值。 3.7 不用數(shù)據(jù)庫(kù)助手創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) 有一種方法不必使用dbassist創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。進(jìn)入$ORACLE_HOME/rdbms/install/create目錄,并閱讀讀README文件。另一個(gè)參考是8i Patch FAQ的第9條。 以下是我使用在$ORACLE_HOME/rdbms/install/create下提供的腳本創(chuàng)建another數(shù)據(jù)庫(kù)的步驟。在這種情形下,SID將稱作8idb: 為了與以前創(chuàng)建數(shù)據(jù)庫(kù)的管理文件的目錄一致,我創(chuàng)建了如下目錄: cd $ORACLE_BASE/admin mkdir 8idb mkdir 8idb/pfile mkdir 8idb/bdump mkdir 8idb/cdump mkdir 8idb/udump mkdir 8idb/create mkdir 8idb/exp mkdir 8idb/adhoc mkdir 8idb/arch 當(dāng)然,你將不需要所有這些目錄。你至少需要pfile、bdump、cdump和udump。 拷貝文件$ORACLE_HOME/rdbms/install/create/init.ora到目錄$ORACLE_BASE/admin/8idb/pfile,并且我給文件起名為init8idb.ora。你可以保留init.ora名字。 然后建立下列符號(hào)連接: ln -s $ORACLE_BASE/admin/8idb/pfile/init8idb.ora $ORACLE_HOME/dbs/init8idb.ora 連接的名字很重要,因?yàn)樗鼞?yīng)該在以后匹配/etc/oratab中的ORACLE_SID入口。在$ORACLE_HOME/bin中的腳本dbstart和dbshut讀入在/etc/oratab中的每個(gè)入口,為每個(gè)入口獲得ORACLE_SID,并尋找$ORACLE_HOME/dbs相應(yīng)的參數(shù)文件, 這里參數(shù)文件的名字必須是initSID.ora。 現(xiàn)在修改$ORACLE_BASE/admin/8idb/pfile/init8idb.ora文件。我特別修改了下列入口: 以下,我命名新的數(shù)據(jù)庫(kù)為我打算的SID: db_name = 8idb instance_name = 8idb service_names = 8idb.company.com.au 對(duì)于控制文件,我指定了控制文件的完整路徑和名字。這些文件將在數(shù)據(jù)庫(kù)創(chuàng)建期間生成: control_files = ("/home/oracle/app/oracle/oradata/8idb/control01.ctl", "/home/oracle/app/oracle/oradata/8idb/control02.ctl") 對(duì)于共享池的尺寸,我修改shared_pool_size與其他數(shù)據(jù)庫(kù)一樣。我能記得dbassist說(shuō)過(guò)類似于“you need at least 50mb for shared_pool_size with the JServer option”的東西。 shared_pool_size = 52428800 既然我們將在以后增加重做日志文件的數(shù)量和大小,我決定現(xiàn)在而非以后增加緩沖區(qū)。 log_buffer = 327680 退回片段仍然是離線的,因?yàn)閿?shù)據(jù)庫(kù)還沒有被創(chuàng)建,所以這些還不存在。因此我給下列入口加上注釋: # rollback_segments =( r01 , r02 , r03 , r04 ) 指明你想在哪兒倒出文件。這里我做了下列設(shè)置: background_dump_dest = /home/oracle/app/oracle/admin/8idb/bdump core_dump_dest = /home/oracle/app/oracle/admin/8idb/cdump user_dump_dest = /home/oracle/app/oracle/admin/8idb/udump 因?yàn)槲也皇褂肁dvanced Replication Option(高級(jí)復(fù)制選件),我注釋了下列入口: #job_queue_processes = 0 #job_queue_interval = 60 #distributed_transactions = 10 #open_links = 4 我禁用了到8i數(shù)據(jù)庫(kù)的IIOP連接的分派器(dispatcher)以便我們?cè)诰嫖募蚿mon跟蹤文件中不會(huì)得到“Load Indicator not supported by OS”的消息。也要注意,在我的參數(shù)文件中沒有任何mts入口。因此,這里被創(chuàng)建的數(shù)據(jù)庫(kù)使用專用服務(wù)器進(jìn)程。 #mts_dispatchers = "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)" #mts_servers = 1 最后,按README文件的說(shuō)明,我改變compatible入口。然而,注意,dbassist僅允許值8.1.0。也許是dbassist另一個(gè)bug? compatible = "8.1.5" 現(xiàn)在我創(chuàng)建立了目錄/掛載點(diǎn),在那里我想要存儲(chǔ)數(shù)據(jù)文件。當(dāng)然,遵循OFA,下列僅僅是一個(gè)例子。 mkdir $ORACLE_BASE/oradata/8idb 現(xiàn)在我從$ORACLE_HOME/rdbms/install/create拷貝腳本cdrb1.sh, cdrb2.sh,和cdrb3.sh到$ORACLE_HOME/install并分別命名他們?yōu)?idbcrdb1.sh, 8idbcrdb2.sh,和8idbcrdb3.sh: cp -vf $ORACLE_HOME/rdbms/install/create/crdb1.sh $ORACLE_HOME/install/"$ORACLE_SID"crdb1.sh cp -vf $ORACLE_HOME/rdbms/install/create/crdb2.sh $ORACLE_HOME/install/"$ORACLE_SID"crdb2.sh cp -vf $ORACLE_HOME/rdbms/install/create/crdb3.sh $ORACLE_HOME/install/"$ORACLE_SID"crdb3.sh 確保你至少對(duì)于bash加雙引號(hào)與$ORACLE_SID。 改變目錄到$ORACLE_HOME/install。然后我編輯第一個(gè)腳本SIDcrdb1.sh(在這里8idbcrdb1.sh),顯示如下: 修改ORACLE_SID匹配我想要的SID: ORACLE_SID=8idb 修改口令文件的名字指明我想要的SID: $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapw8idb password=change_on_install 修改starpup命令指明要使用的參數(shù)文件的地點(diǎn)。我們可以指明實(shí)際的參數(shù)文件而不是到參數(shù)文件的一個(gè)符號(hào) 連接: startup nomount pfile = $ORACLE_HOME/dbs/init8idb.ora 改變?cè)贑REATE DATABASE命令中的數(shù)據(jù)庫(kù)名以匹配在參數(shù)文件指明示的那個(gè): CREATE DATABASE "8idb" 再回到CREATE DATABASE命令,改變SYSTEM數(shù)據(jù)文件的地點(diǎn)和大小位于我們先前創(chuàng)建了的目錄下: DATAFILE "$ORACLE_BASE/oradata/8idb/system01.dbf" SIZE 80M 改變CREATE DATABASE命令中重做日志文件的地點(diǎn)并增加其大?。? logfile "$ORACLE_BASE/oradata/8idb/redo01.log" SIZE 4096K, "$ORACLE_BASE/oradata/8idb/redo02.log" SIZE 4096K; 現(xiàn)在運(yùn)行腳本SIDcdrb1.sh。如果你得到消息: ORA-12162: TNS:service name is incorrectly specified 那么你沒有為ORACLE_SID指定有效的值。這發(fā)生了保留ORACLE_SID的值$1時(shí),它假定從命令行獲得參數(shù),而我沒指定一個(gè)參數(shù)。 如果由于一些原因,數(shù)據(jù)庫(kù)的創(chuàng)建失敗了,你不光是只是重新運(yùn)行腳本,是你將還要?jiǎng)h除先前被創(chuàng)建了的口令文件。否則,你將得到: OPW-00005: File with same name exists - please delete or rename 在我的情況中,我不僅刪除了先前的口令文件,我也刪除了文件$ORACLE_HOME/dbs/lkSID。這個(gè)文件似乎在你創(chuàng)建數(shù)據(jù)庫(kù)時(shí)創(chuàng)建,實(shí)際上它只是一個(gè)文本文件:"DO NOT DELETE THIS FILE!" 你可能碰到的其他錯(cuò)誤如下: ORA-01501: CREATE DATABASE failed ORA-00200: controlfile could not be created ORA-00202: controlfile: "/home/oracle/app/oracle/oradata/8idb/dbs/control02.ctl" ORA-27040: skgfrcre: create error, unable to create file Linux Error: 2: No such file or directory 錯(cuò)誤是顯然的,因?yàn)槲覟榈诙€(gè)控制文件指定了一個(gè)不存在的目錄。 編輯第二個(gè)腳本SIDcrdb2.sh(8idbcrdb2.sh): 修改ORACLE_SID匹配我想要的SID: ORACLE_SID=8idb 我搜索所有$ORACLE_HOME/dbs的出現(xiàn)并且用$ORACLE_BASE/oradata/8idb替代了它們。因?yàn)槲以谕粋€(gè)目錄下存儲(chǔ)他們。另外,遵循你的OFA地點(diǎn),因此你可以最終為每個(gè)數(shù)據(jù)文件獲得不同的掛載點(diǎn)。當(dāng)然, 絕對(duì)確保你指定的路徑存在(沒有錯(cuò)別字!)或數(shù)據(jù)文件將不被創(chuàng)建,并且特別地你必須使再次運(yùn)行腳本的一部分創(chuàng)建數(shù)據(jù)文件或借助svrmgrl創(chuàng)建他們。 現(xiàn)在運(yùn)行第二個(gè)腳本SIDcrdb2.sh(8idbcrdb2.sh)。只要你正確指定了所有的路徑,并且你正確地指定了你的ORACLE_SID,你應(yīng)該沒有任何問題。 現(xiàn)在,你可能想要增加更多的重做日志文件,否則你將在警告日志文件中得到類似于以下的消息: Thread 1 cannot allocate new log, sequence 79 Checkpoint not complete 為此我運(yùn)行了svrmgrl,以internal連接了并再創(chuàng)建了2個(gè)重做日志組,如下顯示: SQL> alter database 2 add logfile group 3 ("/home/oracle/app/oracle/oradata/8idb/redo03.log") size 4096K 3 / Statement Processed. SQL> alter database 2 add logfile group 4 ("/home/oracle/app/oracle/oradata/8idb/redo04.log") size 4096k 3 / Statement Processed. 你可能想要通過(guò)在括號(hào)內(nèi)增加另一個(gè)文件名,并且每個(gè)重做日志文件的文件名由一個(gè)逗號(hào)分開,且每個(gè)重做日志文件的文件名包圍在他們自己的引號(hào)內(nèi),可讓每個(gè)日志文件組有超過(guò)一個(gè)的成員。 編輯第3個(gè)腳本SIDcrdb3.sh(8idbcrdb3.sh)。我在這里做的所有改變是值ORACLE_SID。 運(yùn)行第3個(gè)腳本。應(yīng)該沒有問題。 在繼續(xù)安裝Oracle的一些或所有選件前,你可能想要檢查系SYSTEM表空間最大范圍。通過(guò)sqlplus以system/manager登錄并且做: SQL> set linesize 1000 SQL> SELECT tablespace_name "TABLESPACE", 2 initial_extent "INITIAL_EXT", 3 next_extent "NEXT_EXT", 4 min_extents "MIN_EXT", 5 max_extents "MAX_EXT", 6 pct_increase 7 FROM sys.dba_tablespaces 8 / TABLESPACE INITIAL_EXT NEXT_EXT MIN_EXT MAX_EXT PCT_INCREASE ------------------------------ ----------- ---------- ---------- ---------- ------------ SYSTEM 10240 10240 1 121 50 OEM_REPOSITORY 131072 131072 1 2147483645 0 RBS 131072 131072 2 2147483645 0 TEMP 262144 262144 1 2147483645 0 USERS 51200 51200 1 2147483645 0 INDX 51200 51200 1 2147483645 0 6 rows selected. SYSTEM表空間的缺省MAXEXTENTS是121,它確實(shí)不夠,特別是當(dāng)我們?cè)黾覱racle選件時(shí)。如果我們不增加它,我們將得到類似于“unable to extend ... in tablespace SYSTEM”的錯(cuò)誤消息。因此我做了: SQL> alter tablespace system 2 default storage 3 (pctincrease 0 maxextents unlimited) 4 / Tablespace altered. 現(xiàn)在再運(yùn)行上面的查詢。這次,SYSTEM表空間的MAX_EXT應(yīng)該是一個(gè)大數(shù)字。 退出sqlplus并且返回到shell?,F(xiàn)在選擇你的數(shù)據(jù)庫(kù)想要哪個(gè)Oracle選件。如果Oracle選件要求執(zhí)行超過(guò)一個(gè)的腳本,保證你以在$ORACLE_HOME/rdbms/install/create/ README文件中說(shuō)明的正確的順序執(zhí)行這些腳本。 確定改變每個(gè)腳本中的ORACLE_SID值。如果你加入InterMedia選件,保證你在drsys.sh腳本中為DRSYS數(shù)據(jù)文件指定了正確且有效的一條路徑。 最后, 編輯你的initSID.ora文件并刪除和rollback_segments入口的注釋,以便在你關(guān)閉并且重啟數(shù)據(jù)庫(kù)時(shí),將使用創(chuàng)建的退回片段。 記住,我們這里創(chuàng)建的數(shù)據(jù)庫(kù)使用8idb作為ORACLE_SID,并且在后文中引用的數(shù)據(jù)庫(kù)假定為ORACLE_SIDO為ORCL。 4. 數(shù)據(jù)庫(kù)創(chuàng)建的后期過(guò)程 4.1自動(dòng)化數(shù)據(jù)庫(kù)啟動(dòng)和關(guān)閉 自動(dòng)化數(shù)據(jù)庫(kù)的啟動(dòng)和關(guān)閉是簡(jiǎn)單的。即使你不想要數(shù)據(jù)庫(kù)自動(dòng)地啟動(dòng),你應(yīng)該總是自動(dòng)化數(shù)據(jù)庫(kù)的關(guān)閉以防止破壞你的數(shù)據(jù)庫(kù)。有關(guān)的步驟是: su成為root。 用一行ORACLE_SID:ORACLE_HOME:{Y|N}形式修改/etc/oratab,用來(lái)自你的環(huán)境變量的值代替ORACLE_SID和 ORACLE_HOME。該行類似這樣: ORCL:/home/oracle/app/oracle/product/8.1.5:Y 在行末尾的Y將表明你是否想要數(shù)據(jù)庫(kù)自動(dòng)地啟動(dòng)和關(guān)閉。 在/etc/rc.d/init.d里創(chuàng)建一個(gè)腳本,起名為oracle8i,并把下面的代碼放進(jìn)去,它是在"Oracle8i Linux Installation Guide"提供的腳本基礎(chǔ)上的一個(gè)修改版本。注意在該指南中的腳本由一個(gè)bug,阻止它關(guān)掉Oracle8i數(shù)據(jù)庫(kù)。這在下面解釋。 #!/bin/sh # Set ORA_HOME to be equivalent to the ORACLE_HOME # from which you wish to execute dbstart and # dbshut # set ORA_OWNER to the user id of the owner of the # Oracle database in ORA_HOME ORA_HOME=/home/oracle/app/oracle/product/8.1.5 ORA_OWNER=oracle case "$1" in "start") # Start the Oracle databases: # The following command assumes that the oracle login will not prompt the # user for any values echo -n "Starting Oracle8i: " su - $ORA_OWNER -c $ORA_HOME/bin/dbstart touch /var/lock/subsys/oracle8i echo ;; "stop") # Stop the Oracle databases: # The following command assumes that the oracle login will not prompt the # user for any values echo -n "Shutting down Oracle8i: " su - $ORA_OWNER -c $ORA_HOME/bin/dbshut rm -f /var/lock/subsys/oracle8i echo ;; "restart") # Restart the Oracle databases: echo -n "Retarting Oracle8i: " $0 stop $0 start echo ;; *) echo "Usage: oracle8i { start | stop | restart }" exit 1 esac exit 0 確保用你的ORACLE_HOME環(huán)境變量值代替ORA_HOME的值。關(guān)于該修改的腳本有幾點(diǎn)要注意的是: 上述修改的腳本在/var/lock/subsys下創(chuàng)建立一個(gè)文件以指出系統(tǒng)或進(jìn)程正在運(yùn)行,而缺省腳本不做這個(gè)。作為一個(gè)背景進(jìn)程,腳本/etc/rc.d/rc,在殺死過(guò)程時(shí),將對(duì)以一個(gè)K開始的運(yùn)行級(jí)別(runlevel)執(zhí)行所有腳本,并且它也通過(guò)檢查在/var/lock/subsys下的一個(gè)文件(文件名類似)的存在與否來(lái)檢查子系統(tǒng)是否正在運(yùn)行。因此,如果你使用缺省腳本,它將不關(guān)閉Oracle8i 數(shù)據(jù)庫(kù),因?yàn)檫@個(gè)文件在/var/lock/subsys下不存在。對(duì)RedHat 6.0是這樣。我不能肯定RedHat 6.1或其他Linux分發(fā)的/etc/rc.d/rc腳本是否相同。 作為上述的結(jié)論,如果你為上面的腳本起名不是oracle8i,修改所有的行: touch /var/lock/subsys/oracle8i rm /var/lock/subsys/oracle8i 并且用腳本名代替oracle8i。例如,如果你命名腳本為dbora,你應(yīng)該有: touch /var/lock/subsys/dbora rm /var/lock/subsys/dbora 測(cè)試腳本確實(shí)在工作。試試: ./oracle8i stop ./oracle8i start ./oracle8i restart ./oracle8i invalid-parameter 創(chuàng)建到你剛剛創(chuàng)建的自動(dòng)化數(shù)據(jù)庫(kù)關(guān)閉的腳本的一個(gè)連接。Runlevel 0是HALT ,而runlevel 6是REBOOT。 我的情況是: ln -s /etc/rc.d/init.d/oracle8i /etc/rc.d/rc0.d/K10oracle8i ln -s /etc/rc.d/init.d/oracle8i /etc/rc.d/rc6.d/K10oracle8i 無(wú)論何時(shí)系統(tǒng)把它的runlevel改變到0或6,腳本將過(guò)獲得執(zhí)行,這就是當(dāng)你分別發(fā)出/sbin/shutdown - h now和/sbin/shutdown - r now時(shí)所發(fā)生的。 另外,可以創(chuàng)建到你創(chuàng)建的自動(dòng)化數(shù)據(jù)庫(kù)啟動(dòng)腳本的一個(gè)連接。我為RedHat 6.0選擇的缺省運(yùn)行級(jí)別是runlevel 3。在我的情況中: ln -s /etc/rc.d/init.d/oracle8i /etc/rc.d/rc3.d/S99oracle8i 4.2 安裝 SQL * Plus聯(lián)機(jī)幫助 如果你還沒有SQL*Plus的幫助手段,你可以想要安裝它。這完全是可選的。通過(guò)運(yùn)行SQL*Plus并且在SQL*Plus提示符下鍵入HELP來(lái)檢查你是否有了SQL*Plus的聯(lián)機(jī)幫助。要安裝聯(lián)機(jī)幫助: 以oracle登錄到shell。 鍵入export SYSTEM_PASS=system/manager(對(duì)Bash)定義環(huán)境變量SYSTEM_PASS。 執(zhí)行腳本$ORACLE_HOME/bin/helpins。 運(yùn)行SQL*Plus并在SQL*Plus提示符下鍵入HELP。 5. 配置Net8 在本節(jié)中,將解釋如何安裝并且配置一個(gè)Net8監(jiān)聽器和Oracle命名服務(wù)者。你不必要求使用Oracle命名服務(wù)器。Oracle提供若干方法解析網(wǎng)絡(luò)服務(wù)名字。對(duì)于完全的討論,見從 Oracle技術(shù)網(wǎng)絡(luò)站點(diǎn)的Oracle Net8 管理員指南。 5.1 Net8助手的局限 你可能經(jīng)歷了Net8助手的問題。我所碰到的導(dǎo)致netasst崩潰的情形是在做下列的任何操作: 測(cè)試一個(gè)網(wǎng)絡(luò)服務(wù)名字。 查找Oracle命名服務(wù)器。 創(chuàng)建Oracle命名服務(wù)器。 上述的結(jié)果是,不能為Oracle命名服務(wù)器的敏感操作(例如START、STOP和RELOAD)設(shè)置一個(gè)Oracle命名服務(wù)器加密的口令,因?yàn)榭诹畹募用芩?/td> |