首頁 > 軟體

Ubuntu 12.04 安裝Oracle 10g 全過程(完美)及問題解決辦法

2020-06-16 17:46:37

PS:Ubuntu 12.04 安裝Oracle 10g 全過程(完美)及問題解決辦法正常情況下,完美無錯。。如果遇到問題,也有解決辦法

1.安裝前準備工作

1.1 到oracle官網下載適合自己電腦的oracle軟體包;

我的是:Oracle Database 10gRelease 2 (10.2.0.1.0)Enterprise/Standard Edition for Linux x86下的:10201_database_linux32.zip

地址:http://www.oracle.com/technetwork/database/10201linuxsoft-097986.html

1.2 更新ubuntu

# apt-get update

# apt-get upgrade

1.3 安裝額外的javaJDK

可在【Ubuntu軟體中心】搜OPENjdk,安裝OpenJDK 完成後path路徑自動設定好了

1.4 安裝缺少的包並降低GCC版本

apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio1 alien

apt-get install ksh libtool libstdc++5 build-essential compat-libstdc++


解除安裝gcc-4.6,安裝gcc-4.4 版本

apt-get remove gcc-4.6

apt-get install gcc-4.4


1.5 建立oracle使用者

登入到root使用者下操作:


1.5.1 修改shell

ls -l /bin/sh    如果是dash修改為bash

rm /bin/sh

ln -s /bin/bash /bin/sh


1.5.2 建立使用者和組及oracle安裝路徑

addgroup oinstall

addgroup dba

addgroup nobody

usermod -g nobody nobody


adduser oracle

usermod -g oinstall -G dba oracle

id oracle

id nobody


mkdir -p /opt/oracle

mkdir -p /opt/oradata

chown -R oracle:dba /opt/ora*

chmod -R 775 /opt/ora*


1.5.3 建立欺騙版本宣告

vi /etc/RedHat-release

然後向其中加入 Red Hat Linux release 3.1


1.5.4 建立連結

ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

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


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

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

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


mkdir /etc/rc.d 

ln -s /etc/rc0.d /etc/rc.d/rc0.d 

ln -s /etc/rc1.d /etc/rc.d/rc1.d 

ln -s /etc/rc2.d /etc/rc.d/rc2.d 

ln -s /etc/rc3.d /etc/rc.d/rc3.d 

ln -s /etc/rc4.d /etc/rc.d/rc4.d 

ln -s /etc/rc5.d /etc/rc.d/rc5.d 

ln -s /etc/rc6.d /etc/rc.d/rc6.d 

ln -s /etc/init.d /etc/rc.d/init.d 


1.5.5  新增使用者到sudoer列表中

vi /etc/sudoers

在“ root ALL=(ALL:ALL) ALL” 下一行 ,新增:

oracle ALL=(ALL:ALL) ALL


1.5.6 修改核心引數和系統變數

A 修改/etc/sysctl.conf檔案(可以不用修改)

gedit /etc/sysctl.conf

新增如下內容:

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 25 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

B  修改/etc/security/limits.conf(可以不用修改)

gedit /etc/security/limits.conf

新增如下內容:

* soft nproc 2407

* hard nproc 16384

* soft nofile 1024

* hard nofile 65536

說明:不要忘了“*”號,可以換成oracle


C 修改ubuntu的oracle使用者的環境變數

修改/home/oracle/.profile和/etc/profile兩個檔案

vi /home/oracle/.profile

vi /etc/profile

新增如下內容:

#oracle_path start

export ORACLE_HOME=/opt/oracle

export ORACLE_SID=orcl

export ORACLE_OWNER=oracle

export PATH=$PATH:$ORACLE_HOME/bin

#oracle_path end


1.5.7  使引數生效

重新啟動系統 或 終端執行命令 sysctl -p

1.5.8  將下載好的oracle安裝檔案mv到/home/oracle下,並解壓。登出root使用者,登入oracle使用者


2.開始安裝oracle

2.1 開啟終端,cd到/home/oracle/database的oracle解壓檔案下,執行下面這條命令

./runInstaller -jreLoc /usr/lib/jvm/java-6-openjdk-i386/jre

  java-version是java的安裝版本,這一句是為了在影象化裝oracle是不會出現亂碼或者方框

然後就向windows下安裝一樣的影象化安裝介面。


不行的話,使用英文安裝介面

export LANG=ENGLISTH

./runInstaller


2.2  按照下面的影象步驟操作

 http://www.cnblogs.com/luochengor/archive/2011/08/20/2147041.html

2.3  執行到設定設定指令碼時

  切換到root下,在終端中執行指令碼

  /home/oracle/oralnventory/orainstRoot.sh

  /opt/ora10/root.sh

2.4  出現oracle database 10g 安裝完成時,記下兩個URL。


2.5  安裝資料庫

  在終端中執行如下命令:

$dbca    //如果出現中文亂碼,執行下面命令

$cd /opt/ora10/bin

$gedit dbca

在dbca中找到“JRE_DIR=/opt/ora10/jdk/jre”,替換為JRE_DIR=/usr/lib/jvm/java-1.6.0-openjdk/jre  ,然後儲存退出

$dbca    //正常顯示了

2.6  按照下面步驟執行

  http://www.cnblogs.com/luochengor/archive/2011/08/20/2147041.html

  但是:要將資料庫名字及SID都要寫上orcl

  一直到安裝完成。

3.  啟動oracle


在“終端”以oracle身份執行


啟動TNS監聽器:$ORACLE_HOME/bin/lsnrctl start

($ORACLE_HOME,就是oracle的安裝目錄:/opt/ora10 .直接cd,進入oracle的安裝目錄,到bin資料夾下,$lsnrctl start ,也行)。


關閉TNS:$ORACLE_HOME/bin/lsnrctl stop

啟動sqlplus:$ORACLE_HOME/bin/sqlplus /nolog


關閉sqlplus:SQL> exit


4. 為了能夠像windows下一樣能夠使用上下鍵翻動命令,還需要安裝rlwrap包:


  sudo apt-get install rlwrap


  然後修改oracle使用者的~/.bashrc檔案和/etc/profile檔案,在其最後新增兩行:

這樣上下左右鍵就可以使用了。


  最後來解決oracle中文字元集的問題。不出意外的話,啟動oracle會發現所有的中文都是“?”,要麼就是亂碼,這其實是伺服器端字元集和用戶端字元集不一致造成的。

解決方法為:DBA身份進入sqlplus,做查詢

SQL>select userenv(‘language’) from dual;

將查詢結果複製,在/etc/bash.bashrc檔案中再加一行:export NLS_LANG=”查詢結果”,重新登入問題解決。例如:我的查詢結果為SIMPLIFIED CHINESE_CHINA.AL32UTF8,則新加一行為export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"。

但是有時候這個方法不一定奏效,你可以將

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

分別寫到兩個檔案中嘗試一下,但是兩個檔案寫的一定要一致。


5.  如果有問題可按下列過程處理:

5.1

問題:呼叫makefile '../sqlplus/lib/ins_sqlplus.mk' 的目標'install' 時出錯。請參閱'/home/oracle/oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解詳細資訊。


解決辦法:$ORACLE_HOME/sqlplus/lib/env_sqlplus.mk新增一行:EXPDLIBS=-lclntsh ,然後點選“重試”按鈕, ok.

其實安裝 gcc-4.4 以後沒有這個問題。


5.2

問題:呼叫makefile '../sysman/lib/ins_sysman.mk' 的目標'agent nmo nmb' 時出錯。請參閱'.. /oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解詳細資訊。

分析:後面遇到的錯誤其實本質上是一個問題,主要是gcc的版本高了,oracle10g的gcc是3.4左右的版本,但是ubuntu的開發速度早就用了4.0以上版本,而且你還無法apt安裝低版本

解決辦法:解除安裝gcc-4.6,安裝gcc-4.4 版本

apt-get remove gcc-4.6

apt-get install gcc-4.4


5.3

呼叫makefile '../network/lib/ins_net_server.mk' 的目標'install' 時出錯。請參閱'.. /oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解詳細資訊。

        分析:我在網上找到了一篇類似的文件,參見(點選開啟連結),但是我手工編譯還是有問題,而且在oracle10g中並不是他所提到的-lons引數問題。

        還是gcc版本問題,我曾嘗試過安裝低版本的gcc,但是一開始編譯就報錯,所以放棄了,如果有人能成功降低版本環境,相信一定能解決所有錯誤問題,這也是為什麼ubuntu 8能很自然成功安裝的一個解釋。

        方法:目前我還沒有方法,按照其.mk檔案的說明,這個東西好像是資料庫連結斷裂時候重新連結用的

解決辦法:解除安裝gcc-4.6,安裝gcc-4.4 版本

在/usr/bin 下做了 /usr/bin/gcc-4.4 的軟連結

cd /usr/bin

ln -s /usr/bin/gcc-4.4 /usr/bin/gcc


5.4

呼叫makefile '../rdbms/lib/ins_rdbms.mk' 的目標'all_no_orcl ihsodbc' 時出錯。請參閱'../oraInventory/logs/installActions2011-12-06_11-07-36-AM.log' 以了解詳細資訊。

      分析:我們看一下log檔案

        資訊: Generating BASE ORASDK library...

        資訊: Creating /opt/ora10/lib/liborasdkbase.so.10.2

        資訊: gcc: 錯誤:/lib/libgcc_s.so.1:沒有那個檔案或目錄

        gcc: 錯誤:/usr/lib/libstdc++.so.5:沒有那個檔案或目錄

        我們看到終於是那個非常多的錯誤了,其實還是gcc的問題,重新下載了libgcc_s.so.1,並且重新做了stdc++5的連結,但是問題還是更多,因為只做軟連結和下載一個動態庫是沒法解決所有問題的。

解決辦法:安裝compat-libstdc++-33_3.2.3-48.3_i386.deb,重試。。

在一個libgcc_s.so.1軟連結

cd /lib

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


6. 開機啟動


6.1 root 下面修改:vi /etc/oratab

orc1:/opt/oracle/product/10.2.0/db_1:Y

將N該為Y


6.2 oracle 下面修改:

cd $ORACLE_HOME/bin

vi dbstart

找到 ORACLE_HOME_LISTNER 這行, 修改成:

ORACLE_HOME_LISTNER=/opt/oracle/product/10.2.0/db_1

或者直接修改成:

ORACLE_HOME_LISTNER=$ORACLE_HOME


測試執行 dbshut, dbstart 看能否啟動oracle 服務及listener服務

ps -efw | grep ora_

lsnrctl status

ps -efw | grep LISTEN | grep -v grep


6.3 root 下建立檔案:

vi /etc/rc.d/init.d/oracle10


#!/bin/bash

# chkconfig: 345 99 10

# description: Startup Script for Oracle Databases

# /etc/init.d/oracle10

export ORACLE_SID=ym

# export ORACLE_HOME_LISTNER=/data/files/oracle/10g/bin

#oracle 安裝目錄

export ORACLE_HOME=/data/files/oracle/10g

export PATH=$PATH:$ORACLE_HOME/bin

case "$1" in

start)

su oracle -c $ORACLE_HOME/bin/dbstart #啟動服務

su oracle -c $ORACLE_HOME/bin/lsnrctl start #啟動監聽

touch /var/lock/oracle

echo "OK"

;;

stop)

echo -n "Shutdown Oracle: "

su oracle -c $ORACLE_HOME/bin/dbshut #啟關閉服務

su oracle -c $ORACLE_HOME/bin/lsnrctl stop #關閉監聽

rm -f /var/lock/oracle

echo "OK"

;;

*)

echo "Usage: 'basename $0' start|stop"

exit 1

esac

exit 0


然後

chmod 775 oracle10

chkconfig --add oracle10

chkconfig --list oracle10


IT145.com E-mail:sddin#qq.com