1. 程式人生 > >ubuntu下安裝oracle資料庫

ubuntu下安裝oracle資料庫

今天來記錄一下ubuntu下安裝oracle11的詳細過程。安裝過程是我親自安裝得情況下記錄的,是可行的方案。

一 :環境

ubuntu:ubuntu 14.04 LTS amd64位
oracle:oracle11
jdk:jdk1.7
記憶體:1G
硬碟:20G
CPU:1個

二:安裝

1.下載oracle11

下載到/home下,有兩個壓縮檔案,利用如下命令解壓:

sudo tar -zxvf linux.x64_11gR2_database_1of2.zip
sudo tar -zxvf linux.x64_11gR2_database_2of2.zip

解壓完後,在home目錄下生成一個database資料夾,這就是oracle的安裝目錄。

2.安裝jdk1.7

或者直接用ubuntu linux預設有自己的OpenJdk:

sudo apt-get install openjdk-7-jre 
sudo apt-get install openjdk-7-jdk 

3.安裝遠端視覺化桌面

因為oracle的安裝涉及到利用安裝嚮導進行安裝,所以一定要安裝視覺化遠端桌面。安裝方法見我另外一篇博文:
window遠端連線Ubuntu 14.04的桌面,做完這一步才能開始安裝。

4.更新原始檔

因為ubuntu的官方源並不全,特別是安裝ia32-libs包的時候沒有,首先我們備份原始檔,然後把以下源增加到源列表:(刪除原來的所有源,然後把下面的源貼上進去):

sudo cp /etc/apt/sources.list /etc/apt/sources.list_back

把/etc/apt/sources.list原始檔的內容替換成以下源:

deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirrors.163
.com/ubuntu/ precise-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse deb http://extras.ubuntu.com/ubuntu trusty main deb-src http://extras.ubuntu.com/ubuntu trusty main deb http://archive.ubuntu.com/ubuntu/ raring main restricted universe multiverse #163源: deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse #阿里源: deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb http://mirrors.aliyuncs.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyuncs.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyuncs.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyuncs.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyuncs.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyuncs.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyuncs.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyuncs.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyuncs.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyuncs.com/ubuntu/ trusty-backports main restricted universe multiverse

5.安裝依賴包

替換完後執行一下命令進行更新:

sudo apt-get update
sudo apt-get upgrade

然後安裝以下依賴包,一定每個包都安裝成功,要不然可能oracle安裝不成功。

sudo apt-get install bzip2 
sudo apt-get install elfutils 
sudo apt-get install automake 
sudo apt-get install autotools-dev 
sudo apt-get install binutils 
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 zlibc

6.檢查系統變數

sudo /sbin/sysctl -a | grep sem 
sudo /sbin/sysctl -a | grep shm 
sudo /sbin/sysctl -a | grep file-max 
sudo /sbin/sysctl -a | grep aio-max 
sudo /sbin/sysctl -a | grep ip_local_port_range 
sudo /sbin/sysctl -a | grep rmem_default 
sudo /sbin/sysctl -a | grep rmem_max 
sudo /sbin/sysctl -a | grep wmem_default 
sudo /sbin/sysctl -a | grep wmem_max

然後根據上面命令中得到的引數值在/etc/sysctl.conf中增加對應資料,可以開啟兩個終端,這樣方便填寫:

sudo vim /etc/sysctl.conf

把sysctl.conf中的以下內容用查得的值填上

fs.aio-max-nr = ? 
fs.file-max = ? 
kernel.shmall = ? 
kernel.shmmax = ? 
kernel.shmmni = ? 
kernel.sem = ? 
net.ipv4.ip_local_port_range = ? 
net.core.rmem_default = ? 
net.core.rmem_max = ? 
net.core.wmem_default = ? 
net.core.wmem_max = ?

執行一下命令更新核心引數:

sudo sysctl -p 

7.新增對當前使用者的核心限制在 /etc/security/limits.conf 檔案中增加以下資料(XXX為你當前使用者名稱)

XXX  soft nproc 2047
XXX  hard nproc 16384 
XXX  soft nofile 1024 
XXX  hard nofile 65536 
XXX  soft stack 10240

8.檢查/etc/pam.d/login,增加以下行(有了就不用增加了):

session required pam_limits.so 

檢查/etc/pam.d/su,沒有以下行就自己加上:

session required pam_limits.so

9.oracle預設不支援ubuntu需要欺騙一下oracle安裝程式,執行以下命令:

sudo mkdir /usr/lib64 
sudo ln -s /etc /etc/rc.d 
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/ 
sudo ln -s /usr/bin/awk /bin/awk 
sudo ln -s /usr/bin/basename /bin/basename 
sudo ln -s /usr/bin/rpm /bin/rpm 
sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/ 
sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/ 
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/ 
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/ 
echo 'Ubuntu Linux release 14.04' > /etc/ubuntu-release 

最後一個命令執行不了的話,可以用以下命令執行:

sudo vim /etc/ubuntu-release

在ubuntu-release文字中增加Ubuntu Linux release 14.04,然後儲存退出即可。

10.配置oracle的環境變數

sudo gedit ~/.profile 

開啟.profile檔案,為檔案中新增以下行:
xxx換成你目前的使用者名稱

export ORACLE_BASE=/home/xxx/app/xxx 
export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/dbhome_1 
export ORACLE_SID=orcl 
export ORACLE_UNQNAME=orcl 
export PATH=$PATH:${ORACLE_HOME}/bin/; 

11.啟動oracle安裝程式開始安裝

首先檢查一下oracle的環境變數是否是你設定的:

echo $ORACLE_BASE 
echo $ORACLE_HOME 
echo $PATH

如果不是,重新開啟一個終端,應該就可以了。或者執行以下命令:

source ~/.profile

這個命令的作用是使你設的環境變數生效。

接下來執行以下命令開啟遠端桌面服務:

vncservser :1

記住不要這個命令前面不要加上sudo ,否則開啟的是root使用者的遠端桌面,而不是你要安裝的使用者,開啟後的輸出結果如下:
這裡寫圖片描述

現在可以在window上利用VNC-Viewer軟體進行連線:
這裡寫圖片描述

注意:後面的1數字一定要和你開啟的埠一致。

開啟的遠端桌面後,開啟桌面裡的終端,我的安裝程式解壓在主目錄:/home/database
所以cd進去:cd /home/database
為了不亂碼,終端先export LANG=US一下
再執行目錄下面的runInstaller: ./runInstaller
可進入圖形化安裝介面,接著根據安裝嚮導提示做就行了
先決條件檢查會提示一堆fails,不用管它,直接把ignore All挑上,直接finish
這裡要提一句,如果你的swap空間不夠的話,會提示交換空間不夠,不能繼續
解決方式:
可以另開一個終端用下面的命令臨時提升交換空間,再去recheck一下,就行了:

free -m 
mkdir /swapfile 
cd /swapfile 
sudo dd if=/dev/zero of=swap bs=1024 count=400000 
sudo mkswap -f swap 
sudo swapon swap 

12.安裝到68%時的錯

ins_ctx.mk的錯誤提示,直接contiue跳過去
後面還回報錯:
make file ‘/……emagent.mk’出錯
解決方法:
另開一個終端,鍵入命令列:

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

點選安裝介面的retry,就可以繼續了
類似的後面還會提示四次,以下面的命令列如法炮製 ,把以下命令執行完。

sudo sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh 
sudo sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk 
sudo sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk 
sudo sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk 

13.安裝完成會提示有兩個sh檔案需要執行:

還是另開一個終端:

sudo /home/xxx/app/xxx/oracle/oraInventory/orainstRoot.sh 
sudo /home/xxx/app/xxx/oracle/Oracle11gee/product/11.2.0/dbhome_1/root.sh 

安裝完成!

三:測試

1,執行sqlplus

執行sqlplus前測試一下oracle的環境變數:

echo $ORACLE_BASE 
echo $ORACLE_HOME 
echo $PATH 

如果顯示的是你配置的值,可以繼續以下步驟。

2.檢視資料庫的監聽狀態
利用一下命令檢視是否正在監聽,正常情況會顯示很多監聽資訊
這裡如果沒有輸出,說明無監聽,需要自己配置 :

lsnrctl status 

沒有監聽的解決辦法:
執行 netca 可以建立監聽,調出圖形介面設定監聽
如果沒有建立庫此時可以dbca 建立資料庫.
順便執行以下程式碼修復 dbconsole

emca -repos drop 
emca -repos create 
emca -config dbcontrol db 
emca start dbconsole 

到此資料庫應該就可以跑起來了

如果沒有監聽,執行一下命令啟動監聽:

lsnrctl start

3.啟動oracle資料庫
輸入以下命令,啟動sqlplus:

sqlplus / as sysdba

oracle的啟動和停止命令是:

SQL>startup
SQL>shutdown

startup時會顯示你建立的orcl例項已經正常載入。

4..sqldeveloper連不上oracle的問題:
如果需要遠端連線oracle資料庫,需要修改一下oracle的監聽地址:
修改/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora檔案內容為:
這裡寫圖片描述

改/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora的內容如下:
這裡寫圖片描述

修改完以上檔案後,關閉監聽並重啟監聽,資料庫不用停止和啟動:

lsnrctl stop
lsnrctl start

這樣你就可以遠端連線你的oracle了。

完結。。。。。。。