在Linux下安装配置Oracle11g R2
最近在安裝Linux下的Oracle環(huán)境,折騰了很久,遇到了不少問(wèn)題,最后終于搞定了,于是寫下此文,記錄安裝過(guò)程,以備后用。
1.Linux環(huán)境配置準(zhǔn)備
環(huán)境:Linux:Redhat Enterprise 5.4,DB:Oracle 11g R2 X64,Oracle安裝到/home/oralce_11目錄下。
配置過(guò)程如下:(大部分是網(wǎng)上的內(nèi)容,個(gè)人也是按照網(wǎng)上步驟來(lái)的)
1)???????? 檢查基本需求(對(duì)于牛逼的服務(wù)器來(lái)說(shuō),這個(gè)肯定是滿足要求的,可以跳過(guò))
內(nèi)存大小
grep MemTotal /proc/meminfo
交換分區(qū)大小
grep SwapTotal /proc/meminfo
增加交換分區(qū)
創(chuàng)建/home/swap這么一個(gè)分區(qū)文件。文件的大小是5120000個(gè)block,一般情況下1個(gè)block為1K,所以這里空間是5G。
dd if=/dev/zero of=/home/swap bs=1024 count=5120000
接著再把這個(gè)分區(qū)變成swap分區(qū)。
mkswap /home/swap
然后把它加到fstab里面
echo "/home/swap swap swap defaults 0 0" >> /etc/fstab
2)???????? 檢查軟件需求,沒(méi)有的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
(這里如果出現(xiàn)沒(méi)有安裝的,那么就要把Linux光盤放入,進(jìn)入Server文件夾,找到對(duì)應(yīng)的RPM包,運(yùn)行RPM命令來(lái)進(jìn)行安裝,如果喜歡圖形界面的話,在圖像界面也可以通過(guò)雙擊對(duì)應(yīng)的RPM包來(lái)安裝。需要注意的是在安裝libaio-devel unixODBC unixODBC-devel 這3個(gè)軟件包的時(shí)候,除了安裝X64的包以為,還要安裝i386的包,不能因?yàn)槭荴64的系統(tǒng),就不裝i386的包了。 )
3)???????? 配置內(nèi)核。
編輯 /etc/sysctl.conf。
將以下內(nèi)容添加至文件
# 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 更改立即生效,執(zhí)行以下命令。
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的系統(tǒng),那么這里就要用?/lib64/security/pam_limits.so,不然系統(tǒng)可能會(huì)在服務(wù)器上無(wú)法登錄!】
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)???????? 創(chuàng)建操作系統(tǒng)用戶,作為軟件安裝和支持組的擁有者。
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
9)???????? 創(chuàng)建軟件安裝目錄。
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 --實(shí)例名,根據(jù)需要進(jìn)行修改
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
LANG=C????????????????????? --設(shè)定此參數(shù)避免安裝過(guò)程出現(xiàn)亂碼
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH LANG
11)??? 在圖形界面下(在本機(jī)操作或者通過(guò)VNC遠(yuǎn)程操作) 以root身份打開(kāi)另一個(gè)終端窗口
--這步至關(guān)重要,不執(zhí)行這步在以oracle用戶運(yùn)行 # ./runInstaller時(shí)會(huì)啟動(dòng)不了圖型安裝界面
#xhost +
#xhost + localhost
12)?? 將下載的Oracle安裝文件解壓到Linux中,然后安裝數(shù)據(jù)庫(kù)
#su - oracle
cd database/
./runInstaller
13)接下來(lái)會(huì)出現(xiàn)圖形化的安裝向?qū)?#xff0c;按照向?qū)б徊揭徊降牟僮?#xff0c;和Windows下安裝Oracle的向?qū)б粯?#xff0c;沒(méi)有太大區(qū)別,直到最后安裝完成。
2.確認(rèn)安裝成功
Linux下的Oracle在安裝結(jié)束后是處于運(yùn)行狀態(tài)的。運(yùn)行top –u oracle可以看到以O(shè)racle用戶運(yùn)行的進(jìn)程。在圖形化界面下,運(yùn)行$ORACLE_HOME/sqldeveloper/sqldeveloper.sh可以出現(xiàn)Oracle自帶的免費(fèi)Oracle管理客戶端SQL Developer。試著連接剛安裝的Oracle,連接成功。
這時(shí)需要重啟服務(wù)器,看服務(wù)器重啟后,Oracle是否可以正常啟動(dòng)。以Root用戶運(yùn)行reboot命令可以重啟Linux,重啟完成后,默認(rèn)情況下Oracle并不像Windows中的Oracle那樣注冊(cè)成服務(wù),隨機(jī)器一起啟動(dòng)的,所以需要手動(dòng)敲入命令來(lái)啟動(dòng)。啟動(dòng)方式:以oracle用戶登錄運(yùn)行以下語(yǔ)句:
1,進(jìn)入sqlplus:
sqlplus /nolog
2,以sysdba的身份連接到數(shù)據(jù)庫(kù),并啟動(dòng)Oracle數(shù)據(jù)庫(kù)引擎:
SQL> conn /as sysdba
SQL> startup
3,退出sqlplus,運(yùn)行Listener
SQL> exit
$ lsnrctl start
這樣數(shù)據(jù)庫(kù)的TNS也啟動(dòng)了,可以通過(guò)網(wǎng)絡(luò)連接數(shù)據(jù)庫(kù)了。一般情況下就啟動(dòng)這兩個(gè)就夠了,如果想用Oracle提供的EM來(lái)管理Oracle的話還需要啟動(dòng)EM控制臺(tái),運(yùn)行如下命令:
$ emctl start dbconsole
這樣就可以通過(guò)https://servername:1158/em/console來(lái)訪問(wèn)EM控制臺(tái)了。
這里我在實(shí)際操作中運(yùn)行sqlplus出現(xiàn)了錯(cuò)誤,大致如下:
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
網(wǎng)上也有很多人遇到了這個(gè)問(wèn)題,原來(lái)是SELinux在作怪,我采用的解決辦法是禁止掉SELinux:
更改/etc/sysconfig/selinux 文件的內(nèi)容為 SELINUX=disabled,然后重啟服務(wù)器。
好像這個(gè)辦法不是很好,也有說(shuō)的解決辦法是使用chcon 命令
示例: chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
另外我在啟動(dòng)Listener時(shí)也報(bào)錯(cuò)TNS-12555: TNS:permission denied
后來(lái)網(wǎng)上搜了下,發(fā)現(xiàn)是oracle用戶就無(wú)法進(jìn)入/var/tmp/.oracle文件夾,方法很簡(jiǎn)單,執(zhí)行:chmod 777 /var/tmp/.oracle 之后就ok了.
還有,我在啟動(dòng)EM控制臺(tái)的時(shí)候又遇到了錯(cuò)誤:Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.
設(shè)置了這個(gè)變量后(運(yùn)行export ORACLE_UNQNAME=xxxx實(shí)例名)后,再啟動(dòng)EM控制臺(tái),又出現(xiàn)了新的錯(cuò)誤:OC4J Configuration issue. /u01/app/oracle/product/11.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_xxxx not found.沒(méi)有這個(gè)文件?去查了一下,確實(shí)是沒(méi)有這樣一個(gè)文件存在,怎么辦呢?其實(shí)很簡(jiǎn)單,運(yùn)行:
emca -config dbcontrol db
根據(jù)向?qū)е匦屡渲靡幌戮涂梢粤恕?/p>
3.配置Oracle為開(kāi)機(jī)自啟動(dòng)
雖然說(shuō)Oracle作為服務(wù)器不會(huì)經(jīng)常關(guān)機(jī),但是偶爾重啟一下,每次都要去手動(dòng)啟動(dòng)Oracle還是太麻煩了,希望的是能夠像在Windows中一樣,每次開(kāi)機(jī)的時(shí)候自動(dòng)啟動(dòng)Oracle,只需要將Oracle配置為L(zhǎng)inux的服務(wù)就可以了。操作如下:
1,以root用戶建立/etc/rc.d/init.d/oracle11g腳本文件,內(nèi)容如下(環(huán)境變量設(shè)置根據(jù)實(shí)際情況進(jìn)行修改):
#!/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用戶執(zhí)行以下命令
chmod 755 /etc/rc.d/init.d/oracle11g
chkconfig --add oracle11g
3, 重啟服務(wù)
service oracle11g stop
service oracle11g start
這樣在開(kāi)關(guān)機(jī)的時(shí)候oracle自動(dòng)啟動(dòng)和停止。
另外,還有說(shuō),需要修改/etc/oratab這個(gè)文件,將最后的N改為Y,如下:
xxxxTEST:/home/oracle_11/app/oracle/product/11.2.0/db_1:Y
最后,我們要測(cè)試一下這個(gè)自啟動(dòng)是否真的有效,重啟一下服務(wù)器吧,過(guò)幾分鐘后,可以看到客戶端可以正常連接到Oracle了。Oracle環(huán)境配置成功!
轉(zhuǎn)載于:https://www.cnblogs.com/studyzy/archive/2010/09/06/install_oracle_11gr2_in_redhat_linux.html
總結(jié)
以上是生活随笔為你收集整理的在Linux下安装配置Oracle11g R2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: postgresql 备份恢复(一)
- 下一篇: 用C#实现仿Ruby的XML Build