Ubuntu 14.04 LTS 安裝Oracle 11GR2

Ubuntu 14.04 LTS 安裝Oracle 11GR2  ,通過幾天的研究以及參考網上的說明,終於安裝成功了


1.將系統更新到最新:css

sudo apt-get update
sudo apt-get dist-upgrade
html

2.若是使用的Ubuntu不是桌面版(如Ubuntu server),因爲Oracle安裝須要用到圖形界面,因此須要安裝桌面程序:java

sudo apt-get install gnome-core
linux

相信不少都是使用的桌面版,那麼這個步驟就不須要了。c++

3.  安裝Oracle所需的依賴包:sql

sudo apt-get install automake 數據庫

sudo apt-get install autotools-dev
sudo apt-get install binutils
sudo apt-get install bzip2
sudo apt-get install elfutils
sudo apt-get install expat
sudo apt-get install gawk
sudo apt-get install gcc
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
sudo apt-get install ia32-libs
sudo apt-get install ksh
sudo apt-get install less
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install lib32z1
sudo apt-get install libaio1
sudo apt-get install libaio-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libc6-i386 
sudo apt-get install libelf-dev
sudo apt-get install libltdl-dev
sudo apt-get install libmotif4
sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
sudo apt-get install libpth-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install libpthread-stubs0-dev
sudo apt-get install libstdc++5
sudo apt-get install lsb-cxx
sudo apt-get install make
sudo apt-get install openssh-server
sudo apt-get install pdksh
sudo apt-get install rlwrap
sudo apt-get install rpm
sudo apt-get install sysstat
sudo apt-get install unixodbc
sudo apt-get install unixodbc-dev
sudo apt-get install unzip
sudo apt-get install x11-utils
sudo apt-get install zlibcubuntu

不少都是Ubuntu自帶的了,謹慎6起見都執行一遍吧。bash

4.建立用戶(此步可省略,直接使用當前的用戶便可,下面的安裝過程都是以不執行這一步爲準的)
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba  -d /opt/oracle -s /bin/bash oracle
sudo passwd oracle
5.檢查系統變量
網絡

/sbin/sysctl -a | grep sem

/sbin/sysctl -a | grep shm

/sbin/sysctl -a | grep file-max

/sbin/sysctl -a | grep aio-max

/sbin/sysctl -a | grep ip_local_port_range

/sbin/sysctl -a | grep rmem_default

/sbin/sysctl -a | grep rmem_max

/sbin/sysctl -a | grep wmem_default

/sbin/sysctl -a | grep wmem_max


而後根據上面命令中獲得的參數值在/etc/sysctl.conf中增長對應數據,好比:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152kernel.shmmax = 536870912
kernel.shmmni = 4096kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144
net.core.wmem_max = 1048586
運行一下命令更新內核參數:
sysctl –p

6.添加對oracle用戶的內核限制在 /etc/security/limits.conf 文件中增長如下數據
oracle              soft    nproc   2047

oracle              hard    nproc   16384

oracle              soft    nofile  1024

oracle              hard    nofile  65536

oracle              soft    stack   10240
其中oracle是在第四步中建立的用戶,跳過第四步的話就寫當前用戶

7.查看/etc/pam.d/login,增長如下行(有了就不用增長了):

session required pam_limits.so
一樣檢查/etc/pam.d/su,沒有如下行就本身加上:

session required pam_limits.so

7.建立須要的文件夾(用於安裝oracle)並設置其全部權:
mkdir -p /opt/oracle
mkdir -p /opt/oraInventory

chown -R oracle:oinstall  /opt/oracle

chown -R oracle:oinstall  /opt/oraInventory

一樣,若是跳過了第四步,那就將全部權設置命令中的用戶oracle和組oinstall改成本身當前用戶和組(一般兩者是同樣的),固然這時也能夠不執行這兩個chown命令,原本目錄建立者就是全部者了。另外,須要root權限執行這些命令(sudo,下同)

8.若是Ubuntu上沒安裝JRE的話,須要安裝JRE(我這裏直接安裝了JDK,以JDK爲例):

到Oracle官網下載JDK6(最新爲7,考慮到兼容性問題,安裝6):

http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html

下載jdk-6u45-linux-i586.bin這個文件。放到主文件夾(home目錄)下,進入終端:

$sudo chmod 777 jdk-6u37-linux-x64.bin   // 將文件賦予運行權限  

$sudo -s ./jdk-6u37-linux-x64.bin /usr/lib/jdk  //將JDK安裝到/usr/lib/jdk 目錄下。

注意:最後安裝完成後可能安裝到了主文件夾下了,這是使用命令將其所有複製到/usr/lib/jdk目錄下便可。(若是沒有權限,就使用sudo chmod 777獲取權限再複製)

配置JDK的環境變量,使用編輯器打開主文件夾下的.bashrc配置文件(隱藏),向其中加入以下內容:

#JDK
JAVA_HOME=/usr/lib/jdk/jdk1.6.0_45
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};

注意覈對一下目錄結構是否是正確的。

最後驗證JDK是否安裝正確:

java -version

出現了JDK版本信息就表示正確了。

9.爲Oracle配置環境變量。一樣在主文件夾下的.bashrc配置文件中加入以下內容:

#Oracle
#這個寫剛剛建立的文件夾
export ORACLE_BASE=/opt/oracle 
#這個後面能夠隨便填寫
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
#數據庫的sid
export ORACLE_SID=orcl

export ORACLE_UNQNAME=orcl
#默認字符集
export NLS_LANG=.AL32UTF8
#環境變量
export PATH=${PATH}:${ORACLE_HOME}/bin/;

10.oracle自己並不支持ubuntu來安裝,因此要進行欺騙oracle的安裝程序(sudo執行):

ln -s /etc /etc/rc.d

ln -s /lib/i386-linux-gnu/libgcc_s.so.1 /lib/

ln -s /usr/bin/awk /bin/awk

ln -s /usr/bin/basename /bin/basename

ln -s /usr/bin/rpm /bin/rpm

ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a

ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib/libc_nonshared.a
ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /lib/

ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/

ln -s /usr/lib/i386-linux-gnu/libstdc++.so.5 /lib/

ln -s /usr/lib/i386-linux-gnu/libstdc++.so.5 /usr/lib/


echo ‘Red Hat Linux release 5’ > /etc/redhat-release

注意:以上命令是對應於32位Ubuntu安裝32位Oracle的,若是是64位Ubuntu安裝64位Oracle,上面的i386-linux-gnu就都要改爲x86_64-linux-gnu,目標目錄的lib也要改爲lib64.(沒有lib64就新建一個)

由於Ubuntu將某些庫文件根據32位系統和64位系統分別存放了,但Oracle只認/usr/lib和/lib目錄,因此須要進行上面的軟連接。

11.下載Oracle安裝程序:

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

下載Linux x86的那兩個文件(64位系統就下Linux x86-64),解壓後獲得database文件夾。

12.正式安裝Oracle,爲database文件夾下的runInstaller文件賦予可執行權限:

chmod 777 runInstaller

跳轉到database目錄,在終端下執行:

./runInstaller

此時可能會出現database目錄下部分文件的權限不足,致使安裝程序沒法啓動的問題,根據提示,對那些文件使用chmod 777進行受權就好了(貌似一共3個文件)。

啓動安裝圖形界面後,可能會發現文字亂碼,全是口口口:


這時能夠關閉該界面,先在終端輸入:

export

或者

export.gbk

而後再執行:

./runInstaller

就能夠在全英文界面下進行安裝了。

13.安裝前進行swap空間檢查時可能出現swap空間過小的問題,這通常是因爲系統安裝時沒有建立swap分區,解決辦法是建立swap文件來開闢swap空間:

經過下面方法創建swap文件:
#dd if=/dev/zero of=/tmp/swapfree bs=32k count=65515 (count是分區數量,swap大小=bs*count,增長2G)
#mkswap /tmp/swapfree (格式化交換分區文件)
#swapon /tmp/swapfree (啓用交換分區文件)
#swapon –s (顯示swap狀態)
修改/etc/fstab,讓系統每次啓動都把/tmp/swapfree做爲swap使用,增長下面一行:
/tmp/swapfree swap swap defaults 0 0

14.圖形安裝界面的第一步是填寫電子郵件,可是填完可能會出錯:Unexpected error occurred while  validating inputs at state  'getOCMDetails'。這是因爲缺乏pdksh依賴包,簡單的解決辦法是不填寫郵件地址,不勾選下面的複選框,直接下一步,彈出提示後點 ‘Yes’就能直接進入下一步了。完美的解決辦法能夠到網上去看。


15.剩下的過程基本上很順利了,只須要設置一下密碼就好了,其餘的設置都在啓動安裝程序前完成了,不要進行改動!

16.圖形界面下進行依賴檢查的時候會列出不少依賴檢查失敗了,沒法進入下一步了,此時選中右上角的‘忽略全部’就能夠進入下一步了。

17.若是沒有嚴格按照前面的要求作,安裝過程當中可能彈出錯誤,此時不要關閉界面,根據給出的日誌位置,在日誌中查看錯誤出現的緣由,通常都是指定位置找 不到相應的文件致使的,此時打開一個新的終端窗口,找到這些文件並將文件複製到對應的位置或者建立軟連接便可。(一般是/usr/lib目錄下找不到庫文 件,這些庫文件都位於/usr/lib/i386-linux-gnu目錄下了)而後在圖形界面點擊「Retry‘便可繼續安裝。

好比:「error in invoking target 'client_sharedlib' of makefile '/opt/oracle11g/server/rdbms/lib/ins_rdbms.mk''這個錯誤就是沒有執行:

ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a

ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib/libc_nonshared.a

這兩個命令致使的(針對32位安裝的狀況)。

若是嚴格按照前面的要求作了,上面這種錯誤是不會出現的。另外,若是32位系統安裝64位Oracle或者64位系統安裝32位Oracle也是會彈出錯誤的,錯誤提示是這樣的:

Error in invoking target 'client_sharedlib' of makefile '/opt/app/oracle/product/10.2.0/db_1/network/lib/ins_net_client.mk'

這種錯誤就只能從新下載正確的Oracle版本再進行安裝了。


18.即便嚴格按照要求作了,仍是會出現兩個錯誤:

a.


解決辦法:

打開一個新的終端,輸入以下命令:

sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk

而後在圖形界面點擊‘Retry’就能繼續安裝了。

b.


解決辦法:

打開一個新的終端,輸入以下四個命令:

sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\)  \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g'  $ORACLE_HOME/network/lib/env_network.mk

sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1  -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk

sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh

sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk

而後在圖形界面點擊‘Retry’就能繼續安裝了。

下面的安裝過程就沒有什麼問題了。

19.最後應該就順利完成了,按照安裝程序提示最後執行兩個腳本:

sudo /opt/oracle/oraInventory/orainstRoot.sh   
sudo /opt/oracle/Oracle11gee/product/11.2.0/dbhome_1/root.sh

就完成了所有的安裝。能夠經過https://localhost:1158/em進行網絡訪問了。

安裝後的問題

a.終端下使用「emctl start dbcontrol」命令啓動em控制檯時出現:Environment variable  ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique  name.的問題,解決辦法是設置一個UNQNAME :export ORACLE_UNQNAME=xxxx.

b.設置完成後

在終端使用emctl命令關閉或啓動dbcontrol(emctl stop dbcontrol  , emctl start dbcontrol)的時候還可能出錯:

OC4J Configuration issue. /opt/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_pavilion_orcl not found.
EM Configuration issue. /opt/oracle/product/11.2.0/dbhome_1/pavilion_orcl not found.

出現這種錯誤的緣由是Oracle會根據獲取到的系統主機名來選擇使用相應的EM資料庫關閉或啓動em控制器,好比Ubuntu系統安裝時給主機起了個 pavilion的名稱,Oracle獲取到的主機名就是pavilion,而後會尋找OC4J_DBConsole_pavilion_orcl  和pavilion_orcl這兩個資料庫完成關閉或啓動em控制器的任務。可是Oracle自己只會根據$ORACLE_HOME/NETWORK /ADMIN/listener.ora文件中的主機名建立資料庫。listener.ora中的HOST默認是localhost,因此Oracle默 認建立的資料庫是OC4J_DBConsole_localhost_orcl  和localhost_orcl。所以纔出現上述找不到資料庫的問題。

解決此問題的辦法是:

將$ORACLE_HOME/NETWORK/ADMIN/listener.ora文件中的HOST=localhost改成 HOST=pavilion(paviliion爲你的主機名),而後在相應位置完整複製OC4J_DBConsole_localhost_orcl  和localhost_orcl並重命名爲OC4J_DBConsole_pavilion_orcl 和pavilion_orcl:

cp  -rp /opt/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_localhost_orcl    /opt/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_pavilion_orcl 

cp -rp /opt/oracle/product/11.2.0/dbhome_1/localhost_orcl  /opt/oracle/product/11.2.0/dbhome_1/pavilion_orcl 

如此就能正常啓動和關閉dbcontrol了。

或者能夠直接使用

emca -config dbcontrol db

命令從新配置一下資料庫也能夠解決。

另外,修改了Ubuntu主機名或IP地址後一樣會致使這樣的問題,解決辦法也是同樣的。

另附EM資料庫配置教程:http://ginaduxuefang.iteye.com/blog/1545144

c.EM控制檯中的按鈕都是口口亂碼,其餘正常。這是因爲Java字體缺失致使的,由於EM的按鈕都是Java生成的。解決辦法是:

在JDK(或JRE)的字體文件夾下新建中文字體目錄fallback,並將Windows系統下的simsun.ttc字體文件複製到fallback下,而後將其更名爲simsun.ttf並授予恰當權限:

$ mkdir $ORACLE_HOME/jdk/jre/lib/fonts/fallback

$ cp simsun.ttc  $ORACLE_HOME/jdk/jre/lib/fonts/fallback/

$mv  $ORACLE_HOME/jdk/jre/lib/fonts/fallback/simsun.ttc  $ORACLE_HOME/jdk/jre/lib/fonts/fallback/simsun.ttf

$chmod 444 $ORACLE_HOME/jdk/jre/lib/fonts/fallback/simsun.ttf

後須要清理一下Cache,重啓EM便可:
$ rm $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/*.gif
$ emctl stop dbconsole
$ emctl start dbconsole
登錄Web頁面查看,EM顯示就能夠正常顯示中文了.

d.在終端運行sqlplus  / as sysdba命令進入SQLPlus工具時可能出現錯誤:

sqlplus: error while loading shared libraries:   /u01/app/oracle/product/11.1.0/db_1/lib/libnnz11.so: cannot restore  segment prot after reloc: Permission denied

這是因爲SELinux致使的,解決辦法是禁用SELinux:

更改

/etc/sysconfig/selinux 

文件的內容爲

 

SELINUX=disabled

,而後重啓

更改/etc/sysconfig/selinux 文件的內容爲 SELINUX=disabled,而後重啓。

或者使用chcon命令:

chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so 

e.啓動Linstener時可能出現錯誤:

TNS-12555: TNS:permission denied 

緣由是沒法訪問/var/tmp/.oracle文件夾,解決辦法是進行受權:

sudo chmod 777 /var/tmp/.oracle

f.系統關機後每次開機都必須手動啓動Oracle,能夠編寫一個自啓動腳本實現每次開機自動啓動Oracle,附Oracle啓動/關閉方法以及開機自啓動腳本:

http://www.cnblogs.com/mchina/archive/2012/11/27/2782993.html

g.卸載Oracle的方法:

1. 運行 $ORACLE_HOME/bin/localconfig delete     2. rm -rf $ORACLE_BASE/*     3. rm -f /etc/oraInst.loc /etc/oratab     4. rm -rf /etc/oracle     5. rm -f /etc/inittab.cssd     6. rm -f /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv  7. rm -rf $ORCLE_HOME

相關文章
相關標籤/搜索