- 下載,準備
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,很慢.
如果上面的具備了,可以進行下面的步驟了.
- 環境配置,安裝
1)添加使用者組,用root使用者登入
groupadd orainstall
groupadd oradba
groupadd oraoper
useradd ora -G orainstall,oradba
可以根據自己的情況用不同的使用者名稱字和組,根據自己喜好.2)切換到root使用者
vi /etc/sysctl.conf
然後在最後添加一行
kernel.shmmax = 261986254
該參數的值必須小於或等於實體記憶體的值,否則設定不會生效。含義是單個共用記憶體段的最大尺寸,一般設定為實體記憶體的一半.
如果遺漏這步,安裝的最後一步、或者dbca建立資料庫的時候會報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
注意,有些時候顯示的安裝介面是亂碼的,我的red hat linux 9的簡體中文版,安裝程式都是英文的,這個時候可以通過執行如下命令來解決問題:
export LC_ALL=C
export LANG=C
然後再執行./runInstaller就不會有亂碼了.
我在執行./runInstaller的時候出現過一次如下錯誤:
./runInstaller: line 58: ./runInstaller: cannot execute binary file
很快我想到,估計是否安裝軟體錯了,一看檔案名稱是A64位的,重新下載,然後安裝就沒問題了。
所以在下載的時候,一定要注意,看看安裝軟體是否和你的作業系統匹配。
後面就不斷選擇"next"就行了。
出現如下視窗的時候,輸入前面建立的組oradba。
出現如下視窗的時候。
按提示,用root使用者在/tmp目錄下與運行指令碼orainstRoot.sh。結果如下:
[root@localhost tmp]# ./orainstRoot.sh<br />Creating Oracle Inventory pointer file (/etc/oraInst.loc)<br />Changing groupname of /home/oracle/ora9/oraInventory to oradba.<br />[root@localhost tmp]#
出現如下視窗
根據提示,用root使用者到對應目錄下,執行指令碼root.sh,結果如下:
[root@localhost oracle]# ./root.sh<br />Running Oracle9 root.sh script...<br />/nThe following environment variables are set as:<br /> ORACLE_OWNER= oracle<br /> ORACLE_HOME= /home/oracle/ora9/oracle</p><p>Enter the full pathname of the local bin directory: [/usr/local/bin]:<br /> Copying dbhome to /usr/local/bin ...<br /> Copying oraenv to /usr/local/bin ...<br /> Copying coraenv to /usr/local/bin ...</p><p>/nCreating /etc/oratab file...<br />Adding entry to /etc/oratab file...<br />Entries will be added to the /etc/oratab file as needed by<br />Database Configuration Assistant when a database is created<br />Finished running generic part of root.sh script.<br />Now product-specific root actions will be performed.<br />[root@localhost oracle]#
最後設定好sys,system等的密碼之後,就完成了。
- 錯誤總結:
我在安裝過程中出現了一些問題,在這兒跟大家分享.
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資料庫就可以使用了.
- 在windows建立oracle開發環境端開發
在你的電腦上安裝oracle(最低要求是oracle用戶端),在oracle安裝介面上自己選擇安裝模式。
然後在oracle安裝目錄下找到network/admin路徑,在該目錄下有一個tnsnames.ora,添加如下的內容:
local_dev =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = linuxdb)
)
)儲存後,開啟控制台,輸入命令sqlplus dev/chenli@local_dev,就可以登入linux下的linuxdb資料庫了。
這樣你就可以在windows上面用plsqldeveloper等軟體進行開發了。也可以用c/c++,java等程式通過tns串連oracle資料庫了。
- 怎樣擷取oracle協助
如果在oracle開發過程中遇到錯誤,通過如下方法可以很快地擷取出錯資訊:
用oracle安裝使用者登入主機,然後執行命令:oerr ora errno,errno是錯誤碼。
如如果你遇到一個錯誤資訊代碼1102,oracle安裝使用者下執行如下命令:
[ora@localhost ora]$ oerr ora 1102<br />01102, 00000, "cannot mount database in EXCLUSIVE mode"<br />// *Cause: Some other instance has the database mounted exclusive or shared.<br />// *Action: Shutdown other instance or mount in a compatible mode.
就得到了錯誤碼1102的錯誤資訊。