歡迎您光臨本站 註冊首頁

在Linux下安裝配置Oracle11g R2

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

在Linux下安裝配置Oracle11g R2

最近在安裝Linux下的Oracle環境,折騰了很久,遇到了不少問題,最後終於搞定了,於是寫下此文,記錄安裝過程,以備後用。

1.Linux環境配置準備

環境:Linux:Redhat Enterprise 5.4,DB:Oracle 11g R2 X64,Oracle安裝到/home/oralce_11目錄下。

配置過程如下:(大部分是網上的內容,個人也是按照網上步驟來的)

1)         檢查基本需求(對於牛逼的伺服器來說,這個肯定是滿足要求的,可以跳過)
內存大小
grep MemTotal /proc/meminfo
交換分區大小
grep SwapTotal /proc/meminfo
增加交換分區
創建/home/swap這麼一個分區文件。文件的大小是5120000個block,一般情況下1個block為1K,所以這裡空間是5G。
dd if=/dev/zero of=/home/swap bs=1024 count=5120000
接著再把這個分區變成swap分區。
mkswap /home/swap
然後把它加到fstab裡面
echo "/home/swap swap swap defaults 0 0" >> /etc/fstab
2)         檢查軟體需求,沒有的yum install安裝
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc- gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh

(這裡如果出現沒有安裝的,那麼就要把Linux光碟放入,進入Server文件夾,找到對應的RPM包,運行RPM命令來進行安裝,如果喜歡圖形界面的話,在圖像界面也可以通過雙擊對應的RPM包來安裝。需要注意的是在安裝libaio-devel unixODBC unixODBC-devel 這3個軟體包的時候,除了安裝X64的包以為,還要安裝i386的包,不能因為是X64的系統,就不裝i386的包了。 )
3)         配置內核。
編輯 /etc/sysctl.conf。
將以下內容添加至文件
# Kernel paramaters required by Oracle 11gR1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
4)         要使 /etc/sysctl.conf 更改立即生效,執行以下命令。
sysctl –p
5)         編輯 /etc/security/limits.conf。
添加以下行:
oracle           soft    nproc           2047
oracle           hard    nproc           16384
oracle           soft    nofile          1024
oracle           hard    nofile          65536
6)         編輯 /etc/pam.d/login。
添加以下行:
session    required     /lib/security/pam_limits.so
session    required     pam_limits.so

【注意:如果是X64的系統,那麼這裡就要用 /lib64/security/pam_limits.so,不然系統可能會在伺服器上無法登錄!】
7)         編輯 /etc/profile。
添加以下行:
if [ $USER = "oracle" ]; then
   if [ $SHELL = "/bin/ksh" ]; then
      ulimit -p 16384
      ulimit -n 65536
   else
      ulimit -u 16384 -n 65536
   fi
fi
8)         創建操作系統用戶,作為軟體安裝和支持組的擁有者。
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
9)         創建軟體安裝目錄。
mkdir –p /home/oracle_11/app/
chown -R oracle.oinstall /home/oracle_11/
chmod -R 755 /home/oracle_11/
10)     編輯 /home/oracle/.bash_profile。
添加以下行:
umask 022
ORACLE_BASE=/home/oracle_11/app
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/db_1
ORACLE_SID=MYTEST --實例名,根據需要進行修改
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
LANG=C                      --設定此參數避免安裝過程出現亂碼
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH LANG
11)    在圖形界面下(在本機操作或者通過VNC遠程操作) 以root身份打開另一個終端窗口
--這步至關重要,不執行這步在以oracle用戶運行 # ./runInstaller時會啟動不了圖型安裝界面
#xhost +
#xhost + localhost
12)   將下載的Oracle安裝文件解壓到Linux中,然後安裝資料庫
#su - oracle
cd database/
./runInstaller

13)接下來會出現圖形化的安裝嚮導,按照嚮導一步一步的操作,和Windows下安裝Oracle的嚮導一樣,沒有太大區別,直到最後安裝完成。

2.確認安裝成功

Linux下的Oracle在安裝結束后是處於運行狀態的。運行top –u oracle可以看到以Oracle用戶運行的進程。在圖形化界面下,運行$ORACLE_HOME/sqldeveloper/sqldeveloper.sh可以出現Oracle自帶的免費Oracle管理客戶端SQL Developer。試著連接剛安裝的Oracle,連接成功。

這時需要重啟伺服器,看伺服器重啟后,Oracle是否可以正常啟動。以Root用戶運行reboot命令可以重啟Linux,重啟完成後,默認情況下Oracle並不像Windows中的Oracle那樣註冊成服務,隨機器一起啟動的,所以需要手動敲入命令來啟動。啟動方式:以oracle用戶登錄運行以下語句:

1,進入sqlplus:

sqlplus /nolog

2,以sysdba的身份連接到資料庫,並啟動Oracle資料庫引擎:

SQL> conn /as sysdba

SQL> startup

3,退出sqlplus,運行Listener

SQL> exit

$ lsnrctl start

這樣資料庫的TNS也啟動了,可以通過網路連接資料庫了。一般情況下就啟動這兩個就夠了,如果想用Oracle提供的EM來管理Oracle的話還需要啟動EM控制台,運行如下命令:

$ emctl start dbconsole

這樣就可以通過https://servername:1158/em/console來訪問EM控制台了。

這裡我在實際操作中運行sqlplus出現了錯誤,大致如下:

sqlplus / as sysdba

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,然後重啟伺服器。

好像這個辦法不是很好,也有說的解決辦法是使用chcon 命令

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

另外我在啟動Listener時也報錯TNS-12555: TNS:permission denied

後來網上搜了下,發現是oracle用戶就無法進入/var/tmp/.oracle文件夾,方法很簡單,執行:chmod 777 /var/tmp/.oracle 之後就ok了.

還有,我在啟動EM控制台的時候又遇到了錯誤:Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.

設置了這個變數后(運行export ORACLE_UNQNAME=xxxx實例名)后,再啟動EM控制台,又出現了新的錯誤:OC4J Configuration issue. /u01/app/oracle/product/11.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_xxxx not found.沒有這個文件?去查了一下,確實是沒有這樣一個文件存在,怎麼辦呢?其實很簡單,運行:

emca -config dbcontrol db

根據嚮導重新配置一下就可以了。

3.配置Oracle為開機自啟動

雖然說Oracle作為伺服器不會經常關機,但是偶爾重啟一下,每次都要去手動啟動Oracle還是太麻煩了,希望的是能夠像在Windows中一樣,每次開機的時候自動啟動Oracle,只需要將Oracle配置為Linux的服務就可以了。操作如下:

1,以root用戶建立/etc/rc.d/init.d/oracle11g腳本文件,內容如下(環境變數設置根據實際情況進行修改):

#!/bin/bash
#
# chkconfig: 35 95 1
# description: init script to start/stop oracle database 11g, TNS listener, EM
#
#
#
# match these values to your environment:

ORACLE_BASE=/home/oracle_11/app
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/db_1
ORACLE_SID=BRDWDEV
ORACLE_UNQNAME=BRDWDEV
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
LANG=C

export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_UNQNAME PATH LD_LIBRARY_PATH LANG

# see how we are called:
case $1 in
start)
su - oracle<<EOO
lsnrctl start
sqlplus /nolog<<EOS
connect / as sysdba
startup
EOS
emctl start dbconsole
EOO
;;

stop)
su - oracle<<EOO
lsnrctl stop
sqlplus /nolog<<EOS
connect / as sysdba
shutdown immediate
EOS
emctl stop dbconsole
EOO
;;

*)
echo "Usage: $0 {start|stop}"
;;
esac

2,以root用戶執行以下命令

chmod 755 /etc/rc.d/init.d/oracle11g

chkconfig --add oracle11g

3, 重啟服務

service oracle11g stop

service oracle11g start

這樣在開關機的時候oracle自動啟動和停止。

另外,還有說,需要修改/etc/oratab這個文件,將最後的N改為Y,如下:

xxxxTEST:/home/oracle_11/app/oracle/product/11.2.0/db_1:Y

最後,我們要測試一下這個自啟動是否真的有效,重啟一下伺服器吧,過幾分鐘后,可以看到客戶端可以正常連接到Oracle了。Oracle環境配置成功!
《解決方案》

:em02:謝謝。。。

[火星人 ] 在Linux下安裝配置Oracle11g R2已經有627次圍觀

http://coctec.com/docs/service/show-post-2402.html