下載,準備
http://download.Oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk1.cpio.gz
http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk2.cpio.gz
http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk3.cpio.gz
我建議將安裝檔案放在windows的盤符下,共用資料夾,通過mount -t smbfs方式來讓linux訪問windows下共用的檔案夾來進行安裝,對虛擬linux來說,就不需要佔用那麼大的空間.
需要保證虛擬就機linux和windows之間的網路暢通,用root使用者給linux設定ip地址,方法:root登入圖形介面,"開始菜單"->"system settings"->"network"
虛擬linux磁碟空間8G以上,linux 2.8G,oracle 2.85G,資料庫2G;
虛擬機器記憶體,我自己安裝分配了512M,速度還比較塊,我看別人用256M,很慢.
如果上面的具備了,www.britepic.org可以進行下面的步驟了.
環境配置,安裝
1)添加使用者組,用root使用者登入
groupadd orainstall
groupadd oradba
groupadd oraoper
useradd ora -G orainstall,oradba
可以根據自己的情況用不同的使用者名稱字和組,根據自己喜好.
2)切換到root使用者
vi /etc/sysctl.conf
然後在最後添加一行
kernel.shmmax = 261986254
如果遺漏這步,安裝的最後一步會報ORA-27123: unable to attach to shared memory segment錯誤.
3)在.bash_profile中添加環境變數
然後用ora使用者登入,在該檔案中添加如下的內容:
#ORACLE
export LD_ASSUME_KERNEL=2.4.1
export ORACLE_BASE=/home/ora/ora9
export ORACLE_HOME=/home/ora/ora9/oracle
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
#NoUse
export ORACLE_SID=linuxdb
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.US7ASCII
#LIB,CLASS
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$CLASSPATH:$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
修改.bash_profile之後,重新登入,或者source .bash_profile就可以是上面配置的環境變數生效.
4)解壓縮檔案
在windows下,將存放安裝檔案的檔案夾oracle共用,設定共用許可權為可讀可寫,然後執行如下命令:
mount -t smbfs -o username=cl,password=chenli,ip=192.168.1.100 -l //chenli/oracle /home/ora/setup
命令解釋:
上面命令中,username=cl,password=chenli中cl是windows使用者,chenli是cl使用者的密碼
ip=192.168.1.100 中192.168.1.100 是windows主機的ip地址
//chenli/oracle 中,chenli是windows主機的主機名稱,oracle是共用資料夾
/home/ora/setup 是linux下的目錄路徑,必須存在,可以根據自己的需要,設定不同的路徑.
解壓檔案,順序執行下面的命令:
cd /home/ora/setup
gunzip ship_9204_linux_disk1.cpio.gz
gunzip ship_9204_linux_disk2.cpio.gz
gunzip ship_9204_linux_disk3.cpio.gz
cpio -idmv < ship_9204_linux_disk1.cpio
cpio -idmv < ship_9204_linux_disk2.cpio
cpio -idmv < ship_9204_linux_disk3.cpio
執行完了之後,會出現Disk1,Disk2,Disk3三個目錄
5)安裝
用ora使用者登入到linux的圖形化介面
進入/home/ora/setup/Disk1目錄
執行./runInstaller
注意,有些時候顯示的安裝介面是亂碼的,www.britepic.org我的Red Hat linux 9的簡體中文版,安裝程式都是英文的,這個時候可以通過執行如下命令來解決問題:
export LC_ALL=C
export LANG=C
然後再執行./runInstaller就不會有亂碼了.
錯誤總結:
我在安裝過程中出現了一些問題,在這兒跟大家分享.
1)彈出對話方塊,顯示錯誤資訊:thrown when the ip address of a host cannot be determined
這時候需要用root使用者開啟/etc/hosts 編輯該檔案,ip地址和主機名稱字的對應關係,盡量簡單,在第二列,即主機名稱列,不要出現ip地址形式x.x.x.x的主機名稱
2)在安裝的最後,安裝agent工具的時候出現如下的錯誤資訊:
Parameter "orahome" = /oracle/product/9.2.0
Parameter "nodeinfo" = NO_VALUE
Agent Service Failed
這個問題是沒有打補丁引起的,不過該問題不會影響到資料庫的使用,只是agent工具不可用.
下載p2617419_220_GENERIC.zip p3006854_9204_LINUX.zip p3238244_9204_LINUX.zip
然後安裝,需要重新執行oracle的安裝./runInstaller,所以最好在安裝前打一下這個補丁.
啟動資料庫
用ora使用者登入linux
首先執行命令:sqlplus "/ as sysdba"
顯示SQL>執行命令startup,啟動資料庫;執行shutdown,關閉資料庫.
啟動監控程式,在普通命令列下執行如下命令
lsnrctl start 啟動監控
lsnrctl stop 停止監控
使用資料庫
用ora使用者登入主機
執行sqlplus "/as sysdba" 以系統dba的身份登入資料庫.
然後建立資料表空間,建立使用者,給使用者授予許可權
1)然後建立資料表空間
create tablespace devbase
datafile '/home/ora/tbspace/devbase_20080121.dbf' size 500M
autoextend on
next 100M
maxsize 1000M;
要確保/home/ora/tbspace目錄存在,有許可權,足夠的空間存放資料表空間檔案
2)建立使用者
create user dev
identified by dev123
default tablespace devbase
temporary tablespace temp;
建立使用者dev,密碼是否dev123,預設資料表空間為devbase
注意,這個時候還不能用dev登入資料庫,因為dev使用者還沒有create session,connect,resource許可權,還不能登入;
3)給使用者授予許可權
grant resource,connect to dev;
grant create session to dev;
grant create table to dev;
grant create tablespace to dev;
grant create view to dev;
這時你可以用dev使用者進行登入了.
4)修改使用者密碼
用sys或者system使用者登入,執行如下的sql修改使用者密碼
alter user dev identified by chenli;
最後還因為注意一個小問題,修改ORACLE_HOME/network/admin/tnsnames.ora,將配置該檔案中所有HOST的值,全部由ip地址替換,這樣在登入資料庫的過程總,減少了主機名稱字=>ip地址的解析過程,有些時候,會提高一下登入的速度.
在普通linux使用者下建立開發環境
配置環境變數,搜尋路徑中可以找到oracle程式.
vi .bash_profile 添加如下的配置
#oracle
export ORACLE_BASE=/home/ora/ora9
export ORACLE_HOME=/home/ora/ora9/oracle
export ORACLE_SID=linuxdb
export ORACLE_TERM=xterm
#LD_LIBRARY_PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/local/lib:$ORACLE_HOME/rdbms/demo
PATH=$PATH:/usr/bin:/usr/sbin:/usr/local/bin:.
PATH=$PATH:$ORACLE_HOME/bin
export PATH
建立普通使用者在路徑$ORACLE_HOME/bin,$ORACLE_HOME/include,$ORACLE_HOME/lib上所有目錄的xr讀執行許可權,這樣該登入使用者才能使用$ORACLE_HOME/bin目錄下的一些oracel程式.並且要保證在開發過程中,可以使用oracle下的標頭檔,庫檔案.
1)建立seq對象
create sequence SEQ_STAFF_ID
minvalue 1
maxvalue 9999999
start with 1
increment by 1
cache 20;
2)建立表
create table staff_info
(
staff_id number(10),
staff_name varchar2(20),
addr varchar2(200)
);
ok,一個基本的oracle資料庫就可以使用了.
注意的問題:
很早以前寫的安裝文檔
1.確保RPM開發包,使用下面命令查看是否已安裝這些包
rpm -q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils
2.Oracle官方網站下載Oracle9i安裝檔案為:Linux9i_Disk1.cpio.gz,Linux9i_Disk2.cpio.gz,Linux9i_Disk3.cpio.gz
三個檔案,進行解壓,
zcat Linux9i_Disk1.cpio.gz | cpio -idmv
zcat Linux9i_Disk2.cpio.gz | cpio -idmv
zcat Linux9i_Disk3.cpio.gz | cpio -idmv
然後有Disk1 Disk2 Disk3三個目錄
3.設定核心參數
vi /etc/sysctl.conf,加入下面參數
kernel.shmmax=4294967295 記憶體512M
計算方法為:kernel:shmmax=1024*1024*RAM(M)/2
或者
編輯/etc/sysctl.conf
kernel.shmmax=4294967295
以上為512MB記憶體,所以設定這個數值。可根據實際情況設定。
這個shmmax是定義共用記憶體段的最大尺寸參數shmmax建議的設定值為實體記憶體的一半
執行sysctl -p生效
4.修改oracle使用者能夠開啟的檔案總數
vi /etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
4.建立資料目錄和使用者
以root的身份,使用groupadd命令增加dba組;
#groupadd dba
對於Oracle9i,還需要增加oinstall組,用來分配在資料倉儲中安裝軟體的許可權
#groupadd oinstall
對於oracle9i,使用oinstall和dba組作為預設組建立oracle帳號
#useradd -g oinstall -G dba oracle
設定Oracle帳號的口令
#passwd oracle
為Oracle建立的相應目錄
#mkdir /opt/oracle
#mkdir /opt/oracle/product
#mkdir /opt/oracle/product/9.2.0
為使Oracle帳號在安裝期間使用這些安裝位置,必須具有適當的許可權。將安裝位置的所有許可權更改為Oracle帳號。
#chown -R oracle.oinstall /opt/oracle
#mkdir /var/opt/oracle
#chown oracle.dba /var/opt/oracle
#chmod 755 /var/opt/oracle
5.使用oracle帳號的.bash_profile插入下列環境變數
vi .bash_profile 設定變數
export LD_ASSUME_KERNEL=2.4.1
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/9.2.0
export ORACLE_SID=ora9
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
(1)export TNS_ADMIN=$ORACLE_HOME/network/admin
這樣設定不會頻頻遭遇監聽報錯
重新用oracle使用者登入,環境就可以生效