RedHat 6.0上按步就班裝好Oracle 8.0.5

REDHAT 6.0的重要訊息!
RedHat 6.0
使用不同版本的 glibc, 且與 Oracle 不相容.
你如直接以 RedHat 6.0 去安裝 ORACLE 會得到如此結果:

  • create database objects 會失敗.
  • Oracle binaries, SVRMGRL SQLPLUS, 當你要啟動時會出現core dump 訊息.

Oracle 針對此已提供 glibcpatch.tgz 來修正 RedHat 6.0. 上的問題.但要完全順利安裝.也需一道修正四個RPMs .

以下就是我在 RedHat 6.0 下安裝Oracle 8.0.5 的心得.

我使用的機器組態
    
我使用過兩組機器裝設,機器組態各為:

      1--Pentium 133, 64 megs RAM , 6 gig HD. 

      2--AMD 333 ,192 megs RAM , 10 gig HD.

文件分六段落

RedHat 基本安裝
包括 RedHat 6.0安裝, 增加Oracle記憶體參數( memory parameters)的方法
Oracle 安裝前組態
設定 users, groups, mount points environment variables. 
Oracle 安裝
一步步安裝Oracle.
Oracle 文件安裝
由於預設安裝路徑有 bug,需另外安裝.
Patch 檔安裝
修正系統避免 core-dumping.
Oracle 安裝後的調整 組態調整和 Listener 設定
我必需特別強調,這些步驟在我的機器組態中都確實執行過,確定可行;但我不保證只執行片斷的部份步驟也可執行,如各位有更好的安裝方法,請不吝告訴我。

安裝時不同版本 Linux 的差異
Oracle's
安裝時最最重要的是 glibc 的版本! glibc 的版本不對,安裝時就會出現 "orainst.cm: file or directory not found" 的訊息, 或者在安裝時莫名其妙的掛了; 個人還屬Linux 的新生,選擇由RedHat 開始入門,就是著眼在 RedHat 有較完備的RPM  套件;且Oracle RedHat Linux 上最主要的平台。 

 

就此打住... 笨鳥先飛了...


Redhat 基本安裝
1)
Custom Install

2) swap partitions  盡量調成 記憶體總數的3倍或以上

3) 規格化你的硬碟,我將硬碟規劃如下:

 /          hda1      8001mb      linux native

/home   hda5      1302mb      linux native

hda6         462mb      swap

或是給Oracle 一個mount point (/u01). 當然你也可以如 OFA 中建議做成4mount point,或許 performance 會更好些

4) C Development package 一定要選

5) install 完畢後, 你可以建立一個 /cdrom 光碟機目錄,或是直接使用 /mnt/cdrom mount the CD. 

  • mkdir /cdrom
  • chmod 777 /cdrom

6) CD Mount 起來再切換到 /RedHat/RPMS 目錄 

  • mount -t iso9660 /dev/cdrom /cdrom
  • cd /cdrom/RedHat/RPMS

7) UPDATE 舊的 RPM: 

  • rpm -i -v kernel-source-2.2.5-15.i386.rpm (原版RedHat 6.0 中即是)
  • rpm -i -v tcl-8.0.3-20.i386.rpm 你如要裝上 Intelligent Agent才做此動作,但個人的經驗是並不穩定, 建議不裝. (原版RedHat 5.2 中有)

8) unmount RedHat CD: 

  • cd /
  • umount /cdrom

Kernel memory 參數
根據 Oracle install manual必需在install前先調整好記憶體參數. RedHat 6.0, Oracle 並不需調整 kernel memory就會跑. 個人看法是依你的需求和硬體狀況決定. Redhat 6.0 SHMMAX default setting 32 megs,如你有更多 RAM, 就可以調調看。

 

警告你!
更動 kernel parameters 必須 recompile你的 Linux kernel. 如不曾做過,一定要先看好手冊再做,否則還是少做異動;異動步驟如下:

更動 memory params
1)
切換到目錄中再編輯 shmparam.h 

  • cd /usr/src/linux/include/asm
  • vi shmparam.h

2) 往下找到 "#define SHMMAX 0x2000000." 其中 0x2000000 代表 32 megs. 將它改成你所要的. 我將它改成 0x8000000代表有128 megs RAM . 
其餘參考值有
0x4000000 = 67108854        64 megs RAM
0x6000000 = 100663296      96 megs RAM

3) 異動後存檔 

4) 現在你可以 recompile kernel. Recompile 後繼續往下做。(如不做 Recompile 也可以繼續安裝完成,但效能較差)


Oracle 安裝前組態

RedHat Linux text mode 啟動
 RedHat 6.0
內定值為 Run Level 5 X Windows 畫面. 安裝 Oracle, 建議暫時切換到 runlevel to 3的文字組態. 以下為步驟: (當然你也可維持X Windows 畫面去安裝.個人試過也可安裝.只是效能較差)

1) root  Login.

2) 開啟一個 terminal window.

3) 切換到 /etc 目錄

  • cd /etc


4)
編輯 inittab 檔案

5) 更動以下參數:
id:5:initdefault:
to read:
id:3:initdefault:

6) Reboot (重新開機)

7) 文字介面主要考量為效能.如你只是跑純 database server, 你根本不會在乎是否使用 X Windows. 說穿了.誰會浪費記憶體去給 GUI?
 

安裝 patches 檔案
RedHat 6.0 上安裝Oracle, 你必需加入5RPM packages Oracle 運作. 同時也需去 download Oracle's TechNet 內的 glibc patch.

1) 如果你有 Redhat 6.0 CD .檔案就在 RedHat/RPMS 目錄中. 如否則你就需要去download 這些RPMs.

CD root Mount 起來. 將這些RPMS 裝起來:

·  mount /mnt/cdrom (或是 mount -t iso9660 /dev/cdrom /cdrom)

·  cd /cdrom/RedHat/RPMS (或是切換到你放RPM的位置)

·  rpm -ivh compat-binutils-5.2-2.9.1.0.23.1.i386.rpm

·  rpm -ivh compat-glibc-5.2-2.0.7.1.i386.rpm

·  rpm -ivh compat-egcs-5.2-1.0.3a.1.i386.rpm

·  rpm -ivh compat-egcs-c++-5.2-1.0.3a.1.i386.rpm

·  rpm -ivh compat-libs-5.2-1.i386.rpm

·  cd /

·  umount /mnt/cdrom
 

2) Create groups 

  • groupadd dba ( RedHat 6 group ID 自動為 500).
  • groupadd oper (可設可不設. 如有設定 ID 會自動為501).

3) Create oracle user 

  • useradd oracle -g 500 (與上項 dba group number 相同)
  • passwd oracle (設定 password)

 

4) 如你也像我沒做 mount points Oracle, 就做個目錄給 oracle, 我給它名稱 /u01. 

  • mkdir /u01 (你也可像 OFA建議建 /u01, /u02, /u03 /u04 四個目錄).

5) 更改 mount points 上的owner group permissions. 

  • chown -R oracle.dba /u01 (如你有 /u02, /u03 and /u04 就重覆做)

6) Mount Oracle Server CD: 

  • mount  /mnt/cdrom (mount -t iso9660 /dev/cdrom /cdrom).

7) 切換到 oracle CD orainst 目錄, 定義 ORACLE_OWNER的變數, 接著run  oratab script.  (記著只有 root 的權限才能 run )

  • cd /cdrom/orainst
  • ORACLE_OWNER=oracle; export ORACLE_OWNER
  • sh oratab.sh (就依 defaults 值即可).

8) Log out. 

9) oracle 身份Login.

10) 此時, 你可將 download 下來的glibcpatch.tgz 檔案, 放到 oracle user的主目錄下:

  • mkdir ~/orapatch
  • cd ~/orapatch
  • ftp ftp.oracle.com (ORACLE現在不容許用anonymouslog in)
  • cd /otn/linux    (原來在 /pub/www/otn/linux 現已異動位置)
  • get glibcpatch.tgz
  • quit

設定 oracle user的環境
1)
鍵入 umask [enter],以確認 umask 值為 022. 如果是表示一切順利.如果不是,等一下在  .bash_profile 檔中需加以設定

2) 使用你最常用的編輯工具在 oracle home 目錄下編輯一個 .bash_profile . 內容如下

  • ORACLE_HOME=/u01/app/oracle/product/8.0.5; export ORACLE_HOME
  • LD_LIBRARY_PATH=/u01/app/oracle/product/8.0.5/lib; export LD_LIBRARY_PATH
  • ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
  • ORACLE_SID=ora1; export ORACLE_SID  (SID值可自設)
  • ORACLE_TERM=386; export ORACLE_TERM (386的值適合大部份 Intel PCs, 你可依CPU型號更改為486 . 586 等,但我的測試結果相容度仍以386為最佳設定)
  • PATH=$PATH:/u01/app/oracle/product/8.0.5/bin; export PATH
  • TMPDIR=/var/tmp; export TMPDIR (此行可設可不設)
  •  umask 022 (只有當 umask 值不是 022 時才加入此行)

3) Log out, 再次以 oracle 登入. 鍵入 env 來確認方才設訂的環境生效

4) 再次確認一次 Oracle /bin, /usr/bin, /usr/local/bin. 中的路徑


Oracle 安裝
1)
切換到 Oracle install 目錄  (此時的 user 仍是  oracle )

  • cd /cdrom/orainst

2) 開始安裝 

  • ./orainst /c

3) Custom Install (此舉可將所需設定一次搞定). 

4) OK 跳過 README's. 

5) Install, Upgrade or De-install software.

6) Install new product- DO NOT Create DB objects. (因必需執行glibcpatch此時切記不要裝 DB objects! )

7) 確認 ORACLE_HOME ORACLE_BASE 都和方才環境設定相同

8)  log files 值以defaults 值即可

9) Install from CD-ROM

10) 確認 ORACLE_SID 和方才環境設定相同

11) 選擇 appropriate language. (此處為 Traditional Chinese)

12) 此時 Installer 將顯示 root.sh script 將結束. OK即可

13) 此時進入 Install options menu 畫面, 此時的選項為除以下外的選項

  • Oracle 8.0.5 documentation 絕不可選. 因有 bug 將使你的 install crash. 但我們可在基本安裝後修正. 此時稍安勿躁.
  • 不要選 JDBC drivers 除非你已定義了 classesxxx.zip 的路徑.

       如果您準備使用 JDBC(對跨平台的Oracle應用十分方便),只需在安裝畫面要求您選擇組件(components)時,加上該選項即可。當然,您應該先裝好JDK(註:Redhat包括JDK)然需要設置oracle 用戶的ClassPath環境變量,最好的辦法是在oracle用戶目錄的.bash_profile .profile中加上一句:
CLASSPATH=/usr/lib/jdk/lib/classes.zip; export CLASSPATH
然而,如果您只需做Web Applet的話,在安裝程序"Choose JDBC Components"
的時候, 選擇"JDK 1.1 JDBC Thin Driver",如果您需要做完整的Java應用,
選擇"JDK 1.1 JDBC OCI Driver"

  • 不要選Intelligent agent 除非你一開始時便安裝了 TCL rpm package .

Install menu 的選用原則:
"小而美" 是最高守則. 只選你需要的部份. 切記若有不足還可加裝. 此時最需要的是保持最乾淨簡單的環境來完成安裝. 誰也不想看到錯誤訊息. 在此階段若看到錯誤訊息.即使安裝過程完成了.還是跑不起來的(這是我的慘痛經驗故此處必要確定安裝的有:Oracle 8.0.5 Standard

        SQL *PLUS

        PL-SQL 即可運作

14) 按下 install

15) 當出現 ULIMIT 訊息時. Ok 即可

16) 當要輸入 dba group 鍵入 dba

17) 如你也設了另一個 group (oper), OSOPER prompt出現時就鍵入oper . 否則就以default 值輸入即可

18) 當你輸入了另一個 group,  installer 將顯示過程需 relinked. 只需按 OK 即可

19) 到這步驟時, 所有基本設定都已完成 ,就等著將程式裝進硬碟了!
就歇歇手,喝杯咖啡,聳聳肩,整理一下手邊的資料,耐心等候 

20) 如果畫面上出現, "The requested action has been performed for selected products," 就表示初步完成. 按下 OK.退回到install 主目錄畫面

21) Exit 並在下一次確認畫面中選 YES

22) 如果上述訊息沒出現, 即使過程都跑完了, 也是RUN不起來的(我第一次遇到這狀況時,查了3天才解決). 此時只有回頭重做. 個人經驗大都是因為USER 使用錯誤導致.仔細一點就不會錯

23) 當按下 Exit .退回文字贏螢幕時.應會出現 Result: Success. 那就太好了. 有這訊息才代表第一大段安裝完成. 接下來就繼續安裝Oracle Documents 並做安裝後的調整


Oracle  文件安裝
需單獨安裝的理由: Oracle 在安裝過程中會將 doc files 裝到並不存在的目錄去. 這個Bug 會使過程中所有與ORACLE DOCS有關的動作都掛掉. 幸好有 Ben Drasin, 的文件提供解決方法如下:

1) 首先設定Oracle doc 的正確目錄路徑.

  • mkdir /u01/app/oracle/doc

2) 之後將兩個目錄聯結. 使用 link 使文件裝到正確路徑去.

  • ln -s /u01/app/oracle/doc /u01/app/oracle/product/8.0.5

3) 之後再次到 CD 的裝設位置.

  • ./orainst /c

4) Custom Install.

5) 在接下來兩個畫面都按 OK 跳過

6) Install, Upgrade, or De-Install software.

7) Add/Upgrade software.

8) 確認畫面上 ORACLE_HOME路徑

9) log 值以 畫面default 值即可

10) Install from CD-ROM.

11) 設定好 language. (設法如前述)

12) 畫面上會顯示 root.sh 已存在. 因到這理ORACLE 並沒有啟動過, 只要將參數 append 到現存 root.sh即可, 故選 Append.

13) 當出現 "Post-Installation..." 訊息時.Ok

14) 你會再看到 Install 畫面. 此時再選 Oracle Server Release 8.0.5 Documentation 即可

15) Install.

16) 此時 ORACLE_DOC 的路徑應已Link 到新設路徑

17) 選你要的 documentation 表示方式

18) 如果畫面上出現, "The requested action has been performed for selected products," 就表示初步完成. 按下 OK. 退回到 install 主目錄畫面.

19) 當按下 Exit .退回文字螢幕時.應會出現 Result: Success.

接著就可安裝DB objects和做安裝後的調整設定了


執行ORACLE Patch
除非你執行過這支 patch 檔案, 你的ORACLE 一定會在執行時得到core-dump 的結果. 我不信邪的在6.0到6.2的版本都試過.屢試不爽(真的不爽).執行patch 檔方法如下

1) 切到 patch. 檔的目錄下

  • cd ~/orapatch

2) 解開 patch.

  • tar -xvzf glibcpatch.tgz

3) 執行 script. 

  • sh glibcpatch.sh


4)
接著就是等待. script 跑完後, 畫面上會出現 "Applied glibc patch for Oracle 8.0.5.x successfully." 的訊息


安裝 DB objects
patch 檔安裝後.接著便可安裝database.

1) 切換到 Oracle install 目錄  (此時的 user 仍是  oracle )

  • cd /cdrom/orainst

2) 開始安裝 

  • ./orainst /c

3) Custom Install

4) OK 跳過接下來兩個 README's畫面.

5) Create/Upgrade Database objects.

6) 接著, Create Database Objects.

7) 確認 ORACLE_HOME ORACLE_BASE 都和方才環境設定相同., OK.

8) log files 值以defaults 值即可.

9) 確認 ORACLE_SID 和方才環境設定相同. 

10) 你會再看到 Install 畫面. 此時再選"Oracle 8 Standard RDBMS 8.0.5.0.0" 來安裝 database objects.

11) Install.

12) Create Product DB Objects.

13) Filesystem-based Database 而後決定 mount point. 

14) 如果你同我一樣只有一個 mount point, 當畫面上出現 distribute control files over multiple mount points, 就按 NO, 並把當初設的單一 mount 點鍵入 (:我的設定是 /u01). 如你有多個 mount 點時, 就按YES 並把位置一一設入

15) 選定適當的 character set. (此時內定值為非中文,你必需手鍵入ZHT16BIG5以定義繁體中文)

16) 選定適當的national character set. (此時內定值應已承接上項設定,但你也可以手鍵入ZHT16BIG5來確定使用繁體中文)

17) 定義 SYSTEM 帳號的密碼. 含確認要連續兩次輸入.  (內定值為:MANAGER) 

18) 定義SYS帳號的密碼. 含確認要連續兩次輸入.(內定值為:CHANGE_ON_INSTALL)  

19) 如你要定義 internal 的密碼給  dba operator, 你可按 YES 並設密碼. 否則, 就按 NO.  ( INTERNAL 密碼內定值為 ORACLE) 

20) 定義 TNS listener 的密碼. 含確認要連續兩次輸入.

21) 當畫面上出現詢問是否 configure the MTS Listener ,切記一定按 No (Listener 必需在初步安裝後調整)

22) 直接接受 control files default . 

23) 接著兩個畫面直接按 OK 接受內定值跳過即可 

24) 最後, 按下 Yes 接受所有的 default.

25) 到這步驟時, 所有基本設定都已完成 ,就等著將程式裝進硬碟了!

26) 如果畫面上出現, "The requested action has been performed for selected products," 就表示初步完成. 按下 OK.退回到install 主目錄畫面.

27) Exit 並在下一次確認畫面中選 YES. 

28) 當按下 Exit .退回文字贏螢幕時.應會出現 Result: Success. 那就太好了. 有這訊息才代表第一大段安裝完成. 接下來就繼續安裝後的調.


Oracle 安裝後的調整
1) Log out,
再以 root 登入.  (調整的權限為 ROOT)

2) Copy oracle user目錄下的 .bash_profile 檔到 root 的目錄下

  • cp /home/oracle/.bash_profile  /root/.bash_profile

再編輯 root's .bash_profile. 讓內容成為:

  • ORACLE_HOME=/u01/app/oracle/product/8.0.5; export ORACLE_HOME
  • LD_LIBRARY_PATH=/u01/app/oracle/product/8.0.5/lib; export LD_LIBRARY_PATH
  • ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
  • ORACLE_SID=ora1; export ORACLE_SID
  • PATH=$PATH:/u01/app/oracle/product/8.0.5/bin; export PATH
  • umask 022 (只有當 umask 值不是 022 時才加入此行)

3) Log out, 再以 root 登入使方才設定生效

4) 執行 root.sh script 

  • cd $ORACLE_HOME/orainst
  • sh root.sh

5) 確認 ORACLE_OWNER, ORACLE_HOME, ORACLE_SID 都正確後, Y. 

6) 當畫面要你輸入 full path name to your local bin directory時輸入 /usr/local/bin

7) 接著畫面會顯示 ORACLE_HOME does not match the home directory for oracle. 這是因切換USER的緣故不需理會. 鍵入 Y 並繼續. script 會完整結束不需擔心

8) Log out, 再切換成 oracle  登入

9) 嘗試touch ORACLE: 

  • svrmgrl                        --呼叫 SERVER  ENTERPRISE MANAGER
  • connect internal          --TOUCH  INTERNAL
  • shutdown                     --SHUTDOWN DATABASE
  • quit                              --結束SERVER  ENTERPRISE MANAGER

異動 init(ORACLE_SID)file異動ORACLE 基本設定
當你 shutdown Oracle server, ORACLE會自動複製一個叫 init(ORACLE_SID)_0.ora 的檔案給 init(ORACLE_SID).ora. 就是說當你的ORACLE_SID ora1, 將會出現initora1_0.ora initora1.ora 兩個檔案.(位置在 /u01/app/oracle/admin/ora1/pfile

"_0.ora" ORACLE 安裝時的暫存檔. 另一個檔案才是我們要看的檔案. 它是Oracle 用來定義 System 組態. 理論上它會隨你的硬體組態調整. 但你如有更多 RAM, 如發現設定中的設定為 "small" 你就可將 "medium" "large."前的”#”去除. 預設值為 "small." 

更改 TNS Listener 權限給 ROOT
TNS listener
原始權限設定不佳. 可以下列步驟異動權限給 root:

  • su root       (此時user oracle 故使用 su root 切換user)
  • [enter password]
  • chown oracle.dba $ORACLE_HOME/bin/tnslsnr
  • chmod 750 $ORACLE_HOME/bin/tnslsnr
  • chown oracle.dba $ORACLE_HOME/network/log
  • chmod 775 $ORACLE_HOME/network/log
  • touch $ORACLE_HOME/$ORACLE_HOME/network/log/listener.log
  • chown root.dba $ORACLE_HOME/network/log/listener.log  (有時會出現找不到檔案.就編輯個同名稱空白檔給它抓即可解決)
  • chmod 664 $ORACLE_HOME/network/log/listener.log


exit (
離開 root 回到 oracle)


第一次啟動 Oracle server 並測試
一切的努力都為了此一刻.
1)
確認此時的user oracle若不是.請切換至 oracle

2) 若你是從別的PC端使用 GUI 介面來管理Oracle server, 你就必需使用到 TNS listener. 一般 default config 大部份使用 TCP/IP, 你必需自己更改設定. 讓它會動

  • lsnrctl start    (內定值為 ipc service ,解決方法為到 /u01/app/oracle/product/8.0.5/network/admin 內的 tnsnames.ora listener.ora 中將 TCP/IP 設定留下.使listener 使用TCP/IP service即可)

3) 啟動Oracle server

  • svrmgrl
  • connect internal
  • startup
  • quit

4) 現在讓我們試著用 sqlplus creates user profiles:

  • cd $ORACLE_HOME/sqlplus/admin
  • svrmgrl
  • connect system/<password> (password 就是之前你設給 system 的密碼 (內定值 "manager")).
  • @pupbld.sql
  • quit


5)
或者你想試用內建的 sample tables ( user/password scott/tiger),你可如此做

  • cd $ORACLE_HOME/rdbms/admin
  • sqlplus (先用 system/manager登入)
  • @utlsampl.sql

現在我們隨便做個查詢, 就用 SQLPLUS 還有之前裝的 example tables. username scott password tiger. 

  • sqlplus
  • username: scott
  • password: tiger
  • select * from emp;

如果一切正常, 你會從 emp table中看到資料. 那就表示ORACLE 開始工作了.

 

把系統改回 run level 5
若你還是習慣 X Windows, 就編輯 /etc/inittab .並把 id:3:initdefault: 改回 id:5:initdefault:即可.當然若你一直在X Windows下安裝到現在.那這步驟就可省略了