心血來潮,突然想在OEL6下面安裝Oracle10g和Oracle11g,2個版本共存,方便學習和實驗,這個安裝過程其實不難操作,如果你有分別安裝過10g和11g的經驗,相信具體操作是很容易的,最總要的一點是如何讓2個版本共存和正常使用。
在虛擬機器上測試了整個安裝過程,本本比較懶,過程相當緩慢。
環境
WMWARE WORKSTAION 7
OS OracleLinux-R6 32Bit 1G記憶體 30G硬碟1+20G硬碟2(用於存放安裝軟體)
DATABASE
10201_database_linux32
linux_11gR2
之所以選擇的作業系統是OEL,主要是出於相容性考慮,畢竟這是Oracle自家的玩意兒,自己公司的產品的相容性肯定要比與別家的相比好點。
PS:不過令我很鬱悶的一點就是,啟動資料庫安裝程式的時候,為什麼相同的環境變數配置,使用Red Hat Enterprise的時候都能夠正常顯示中文,但是一到OEL就是經典的方塊,不過作業系統是5.x還是6.x,不過database是10.x還是11.x。
下面是安裝過程的簡單記錄和匯總。
一、 首先安裝oracle10g
1. 建立oracle安裝需要的組
root使用者執行
groupadd oinstall
groupadd dba
groupadd oper
2. 建立oracle使用者
root使用者執行
useradd oracle -g oinstall -G dba,oper
passwd oracle
3. 修改oracle的設定檔
oracle使用者執行
添加下面的行到.bash_profile
export EDITOR=vi #設定sqlplus預設編輯器為vi
alias sqlplus=’rlwrap sqlplus’ #一個小工具,能夠讓sqlplus想windows下一樣使用方向鍵
export NLS_LANG=”SIMPLIFIED CHINESE_CHINA.UTF8″
export ORACLE_SID=TEST10G
export ORACLE_BASE=/opt/oracle/db/10g
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:
export PATH=$ORACLE_HOME/bin:/usr/bin:/usr/ccs/bin:/etc:/bin:/usr/openwin/bin:/usr/local/bin:/usr/X11R6/bin:
umask 022
4. 修改核心參數
root使用者執行
添加下面的行到/etc/sysctl.conf
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
5. 修改資源限制
root使用者執行
添加下面的行到/etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
4. 建立相關的目錄
root使用者執行
mkdir /opt/oracle
chown oracle:oinstall /opt/oracle
5. 格式化、掛載新增加的硬碟
root使用者執行
[root@www.bkjia.com ~]# fdisk -l
[root@www.bkjia.com ~]# fdisk /dev/sdb
輸入 n p 1 w
[root@www.bkjia.com ~]# mkfs -t ext4 -c /dev/sdb1
[root@www.bkjia.com ~]# mkdir /media/newdriver
[root@www.bkjia.com ~]# mount /dev/sdb1 /media/newdriver/
[root@www.bkjia.com ~]# mkdir /media/newdriver/ora
[root@www.bkjia.com ~]# chown oracle:oinstall /media/newdriver/ora
6. 上傳軟體並解壓軟體
oracle使用者執行
unzip -q 10201_database_linux32.zip
7. 版本欺騙
root使用者執行
cp /etc/RedHat-release /etc/redhat-release.bak
vi /etc/redhat-release修改這個檔案為
#Red Hat Enterprise Linux Server release 6.0 (Santiago)
Red Hat 4
8. 亂碼問題
oracle使用者執行
在執行./runInstaller之前
export LANG=en_US
9. 安裝過程中遇到的錯誤
9.1. 缺少libXp包
root使用者執行
Exception in thread “main” java.lang.UnsatisfiedLinkError: /tmp/OraInstall2011-07-30_01-41-36AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
解決辦法:缺少libXp包,Linux安裝光碟片中尋找安裝即可,www.bkjia.com具體安裝細節不在贅述。
由於從來沒有在Linux6版本中安裝過10g版本的資料庫,一開始還怕會有不少問題,還好,一切順利,接下來的11g版本相信也不會有什麼問題。
10. 安裝rlwrap
root使用者執行
[root@www.bkjia.com ~]# tar zxvf rlwrap-0.37.tar.gz
[root@www.bkjia.com ~]# cd rlwrap-0.37
[root@www.bkjia.com rlwrap-0.37]# ./configure
[root@www.bkjia.com rlwrap-0.37]# make
[root@www.bkjia.com rlwrap-0.37]# make install
11. 使用啟動指令碼
使用啟動指令碼之前需要做一些修改,主要是配置下ORACLE_HOME_LISTNER這個變數.
vi $ORACLE_HOME/bin/dbstart
把79行的
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
修改成
ORACLE_HOME_LISTNER=$ORACLE_HOME
否則報錯:
[oracle@gtlions bin]$ ./dbstart
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
12. 使用關閉指令碼
由於在10g版本當中沒有隨著關閉指令碼配置關閉監聽的功能,指令碼中寫道
# Oracle Net Listener is NOT shutdown using this script.
因此我們需要增加監聽的停止指令碼,我們可以借鑒下11g的關閉指令碼,拷貝相關部分過來即可
ORACLE_HOME_LISTNER=$ORACLE_HOME
if [ ! $ORACLE_HOME_LISTNER ] ; then
echo “ORACLE_HOME_LISTNER is not SET, unable to auto-stop Oracle Net Listener”
echo “Usage: $0 ORACLE_HOME”
else
LOG=$ORACLE_HOME_LISTNER/listener.log
# Set the ORACLE_HOME for the Oracle Net Listener, it gets reset to
# a different ORACLE_HOME for each entry in the oratab.
export ORACLE_HOME=$ORACLE_HOME_LISTNER
# Stop Oracle Net Listener
if [ -f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
echo “$0: Stoping Oracle Net Listener” >> $LOG 2>&1
$ORACLE_HOME_LISTNER/bin/lsnrctl stop >> $LOG 2>&1 &
else
echo “Failed to auto-stop Oracle Net Listener using $ORACLE_HOME_LISTNER/bin/tnslsnr”
fi
fi
13. 配置/etc/oratab
增加或者修改如下內容,注意最後的一個Y,安裝完成的時候預設是會寫入這個檔案一行記錄,但是最後一位是N
/etc/oratab TEST10G:/opt/oracle/db/10g/product/10.2.0/db_1:Y
二、 接著安裝oracle11g
1. 修改oracle的設定檔
注意,首先備份好這個檔案,因為這個檔案是10g版本使用的設定檔,只有同時儲存了2個版本的對應的設定檔,在以後的使用過程中才能方便的切換。
備份後修改先前配置,修改後對應設定如下:
export NLS_LANG=”SIMPLIFIED CHINESE_CHINA.UTF8″
export ORACLE_SID=TEST11G
export ORACLE_BASE=/opt/oracle/db/11g/base
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:
export PATH=$ORACLE_HOME/bin:/usr/bin:/usr/ccs/bin:/etc:/bin:/usr/openwin/bin:/usr/local/bin:/usr/X11R6/bin:
umask 022
2. 版本恢複原狀
vi /etc/redhat-release
修改這個檔案為
Red Hat Enterprise Linux Server release 6.0 (Santiago)
3. 亂碼問題
在執行./runInstaller之前export LANG=en_US
三、 配置和使用
最後,如何分別使用和同時使用這2個版本的資料庫。
當然是通過使用不同的設定檔來實現的啦,重點在於每次使用不同版本的資料庫的時候切換到相應的環境變數。
有多個辦法比如:
1、逐個設定相關的變數;
2、備份2個版本的環境變數參數檔案.bash_profile,登陸後手工切換;
3、這裡我用的SecureCRT的ssh工具,針對oracle配置兩個會話,設定在登入後執行不同的指令碼,在這麼我們就是要讓它來替我們完成環境變數的設定。
四、 最後
特地查看了下2個版本的安裝目錄的佔用空間的大小,資料檔案上差不多,10g的佔用1.1g,11g的佔用1.4g,但是安裝軟體佔用的就相差很大了,11g的幾乎是10g的3倍,前者是3.7g,後者才1.3g。大傢伙啊11g。
-The End-