之所以寫這篇文章,是為了讓那些在linux上安裝Oracle頭痛不已的兄弟姐妹們。一次安裝,多次克隆,而且可以跨平臺克隆,也就是說在Reshat 7.2下克隆出來的Oracle,可以運行在AS3、Redhat9.0上
It's Very Easy
Let's go!
Oracle 8.1.7 for Linux系統,在安裝上存在一切困難,尤其在Redhat7.2系統下安裝的時候會出現很多意想不到的事情,譬如圖形界面無法顯示、xwin無法遠程連接,在編譯的過程中如果沒有安裝GCC,Glibc等等一些庫文件,容易出現無法link的錯誤,而全部安裝又會造成其他困難。因此在Oracle安裝過程中總結出來了一些經驗。介紹如下:
<1>:Oracle在一臺服務器中安裝成功后,可以作為種子系統,將其打成tar.gz包,并平滑轉移到另外一臺服務器上,經過測試沒有問題;
Oracle 8.1.7 for Linux系統,在安裝上存在一切困難,尤其在Redhat7.2系統下安裝的時候會出現很多意想不到的事情,譬如圖形界面無法顯示、xwin無法遠程連接,在編譯的過程中如果沒有安裝GCC,Glibc等等一些庫文件,容易出現無法link的錯誤,而全部安裝又會造成其他困難。因此在Oracle安裝過程中總結出來了一些經驗。介紹如下:
<1>:Oracle在一臺服務器中安裝成功后,可以作為種子系統,將其打成tar.gz包,并平滑轉移到另外一臺服務器上,經過測試沒有問題;
<2>: 另外一臺沒有事先安裝oracle系統的服務器需要安裝 JDK (java虛擬機),因為oracle一些jar文件需要java虛擬機來解釋運行,假如沒有jdk,即使轉移安裝好的oracle也會出現各種錯誤; (經過研究不需要JDK)
<3>:需要設置oracle用戶的環境變量,在oracle系統用戶登陸后,要讀取 /home/oracle/.bash_proile的環境變量,如果沒有這些變量,oracle一些程序無法找到或無法運行;
<4>:需要修改oracle的監聽的Hostname,如果使用安裝好的hostname,那么在使用oracle windows client遠程連接數據庫會出現無法遠程連接數據庫的問題;
<5>:oci8.so(php與oracle接口程序)仍然需要本地安裝好gclearcase/" target="_blank" >cc編譯器,因為copy其他服務器的oci8.so文件,有可能不能正常連接運行。
<6>:用戶登陸的啟動oracle數據庫,必須要用oracle用戶來啟動,如果用root用戶來啟動會造成安全隱患。
b):安裝數據庫步驟:
<1>:準備用戶環境。
#groupadd dba
#groupadd oinstall
#useradd oracle -g oinstall -G dba
#passwd oracle
輸入新用戶的密碼。
創建安裝目錄(以/var/oracle/為例)
#mkdir /var/oracle
#chown oracle.dba /var/oracle
#chmod 777 /var/oracle
<2>:設置Oracle用戶的登陸環境變量,編輯 /home/oracle/.bash_profile文件,將下列參數加入到 /home/oracle/.bash_profile中;
. /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh
export LD_ASSUME_KERNEL=2.2.5
export LDEMULATION=elf_i386_glibc21
export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/
export ORACLE_BASE=/var/oracle
export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=Billing
export ORACLE_TERM=vt100
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
umask 022
c):將OracleOk.tar.gz文件解壓縮
獲得已經安裝好的OracleOk.tar.gz文件,將其解壓縮到/var/oracle目錄中,安裝方式如下:
[voipack@bobyang root]# cd /var/oracle
[voipack@bobyang root]# tar –xvzf oracleOk.tar.gz
d):安裝JDK
將jdk118_v3-glibc-2.1.3.tar.bz2 copy到/usr/local
[voipack@bobyang root]# cp jdk118_v3-glibc-2.1.3.tar.bz2 /usr/local/
[voipack@bobyang root]# bunzip2 -d jdk118_v3-glibc-2.1.3.tar.bz2
[voipack@bobyang root]# tar xvf jdk118_v3-glibc-2.1.3.tar
[voipack@bobyang root]#ln -s /usr/local/jdk118_v3 /usr/local/java
<f>:修改 /var/oracle/product/8.1.7/network/admin下的listener.ora跟tnsnames.ora文件中的HOST名字。將Host的名稱修改為本地服務器Host名稱。
# Generated by Oracle configuration tools.
LISTENER =
(DEs criptION_LIST =
(DEs criptION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Bobyang)(PORT = 1521))
)
)
(DEs criptION =
(PROTOCOL_STACK =
(PRESENTATION = GIOP)
(SESSION = RAW)
)
(ADDRESS = (PROTOCOL = TCP)(HOST = Bobyang)(PORT = 2481))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /var/oracle/product/8.1.7)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = Billing)
(ORACLE_HOME = /var/oracle/product/8.1.7)
(SID_NAME = Billing)
)
)
f):oracle系統啟動
<1>:以oracle用戶登陸到Linux系統
[oracle@bobyang oracle]$ sqlplus /nolog (本地連接數據庫oracle)
SQL*Plus: Release 8.1.7.0.0 - Production on Fri May 23 14:56:21 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
SQL>connect /as sysdba (以sysdba超級用戶連接數據庫)
Connected.
SQL> startup (啟動oracle數據庫)
ORACLE instance started.
Total System Global Area 72704160 bytes
Fixed Size 73888 bytes
Variable Size 55681024 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
Database opened.
SQL>exit (退出oracle數據庫)
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
With the Partitioning option
JServer Release 8.1.7.0.1 - Production
[oracle@bobyang oracle]$ lsnrctl start (啟動Oracle net8遠程監聽端口)
LSNRCTL for Linux: Version 8.1.7.0.0 - Production on 23-MAY-2003 14:59:35
(c) Copyright 1998 Oracle Corporation. All rights reserved.
Starting /var/oracle/product/8.1.7/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 8.1.7.0.0 - Production
System parameter file is /var/oracle/product/8.1.7/network/admin/listener.ora
Log messages written to /var/oracle/product/8.1.7/network/log/listener.log
Listening on: (DEs criptION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Listening on: (DEs criptION=(ADDRESS=(PROTOCOL=tcp)(HOST=netbank)(PORT=1521)))
Listening on: (DEs criptION=(ADDRESS=(PROTOCOL=tcp)(HOST=netbank)(PORT=2481))(PROTOCOL_STACK=(PRESENTATION=GIOP)(SESSION=RAW)))
Connecting to (DEs criptION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 8.1.7.0.0 - Production
Start Date 23-MAY-2003 14:59:35
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /var/oracle/product/8.1.7/network/admin/listener.ora
Listener Log File /var/oracle/product/8.1.7/network/log/listener.log
Services Summary...
Billing has 1 service handler(s)
PLSExtProc has 1 service handler(s)
The command completed successfully
[voipack@boyang oracle]$ lsnrctl stop (關閉Oracle net8遠程監聽端口)
LSNRCTL for Linux: Version 8.1.7.0.0 - Production on 23-MAY-2003 14:59:31
(c) Copyright 1998 Oracle Corporation. All rights reserved.
Connecting to (DEs criptION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
The command completed successfully
SQL> shutdown (關閉數據庫)
Database closed.
Database dismounted.
ORACLE instance shut down
至此,Oracle克隆到另外一臺服務器的安裝完畢!夠簡單了吧。不需要圖形界面,不需要GCC等眾多軟件。
編譯oci8.so(PHP與Oracle接口程序)
<1>:需要將php-4.0.6.tar.gz原代碼拷到目標機器,解包,到php-4.0.6目錄下,運行如下:
[voipack@bobyang root]# ./configure (編譯PHP前的配置)
[voipack@bobyang root]# make (開始編譯PHP)
[voipack@bobyang root]# make install (安裝php程序)
[voipack@bobyang root]# cd ext/oci8 (進入到oci8接口庫)
[voipack@bobyang root]# phpize
[voipack@bobyang root]# aclocal (生成配置文件)
[voipack@bobyang root]# ./configure (Oci8接口配置)
[voipack@bobyang root]# make (編譯Oci8)
[voipack@bobyang root]# make install (安裝ori8接口程序,當前目錄下的modules子目錄下的oci8.so將被拷到/usr/lib/php4目錄下)
<1>:同時需要將oci8.so在php.ini文件中去掉注釋
;extension=mhash.so
;extension=mssql65.so
;extension=mssql70.so
;extension=mysql.so
;extension=oas.so
;extension=odbc.so
extension=oci8.so (將注釋去掉)
;extension=oracle.so
;extension=pdf.so
extension=pgsql.so
;extension=sablot.so
;extension=swf.so
;extension=sybase_ct.so
;extension=zlib.so
<3>:重新啟動Apache服務器
[voipack@bobyang root]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
注釋:另外發現安裝jdk根本沒這個需要。我安裝oracle8.1.7目前只是簡化到了三個步驟:
一:設置oracle環境變量
二:解壓縮克隆過來的oracle文件
三:修改listener.ora 跟 tnsnames.ora文件,修改host名稱
不過不同的linux系統能否運行這種方式的oracle,我測試過可以保證,呵呵!如果你愿意這個項目的話,可以共同研究 :P
原文轉自:http://www.anti-gravitydesign.com