Linux中Oracle的安装

周末在家闲着无事就决定安装Oracle玩玩。这次用的是 RedhatEnterprise 4 + Oracle11gR2,在这次安装过程中遇到了些问题,特总结下来以备后用。

在开始安装之前先是安装Linux,由于在前几次的安装中跟/只挂载了10G左右的容量,没想到/u01也是用的/的容量,因此在安装完Linux系统后/只有大概4G左右的容量了是不够安装Oracle的。而且安我的习惯是将安装包解压到/tmp目录下,而/tmp目录也是用的/的容量。因此在这次安装中,在装Linux时,我就单独将/u01挂载了一些容量,只是这次挂载的容量还是小了点,只挂载了5G左右的容量,下次安装要挂载8-10G左右的容量才行。我看了下Oracle完全安装完大概要5.3G的容量。好了废话不多说,下面开始安装之前需要注意的东西。

检查硬件
内存
# grep MemTotal /proc/meminfo
交换空间
# grep SwapTotal /proc/meminfo
磁盘空间
# df -ah

首先是要检查需要支持的软件包:
就我的RedHatEnterprise4为例:

binutils-2.15.92.0.2-18
compat-libstdc++-33.2.3-47.3

elfutils-libelf-0.97-5
elfutils-libelf-devel-0.97.5
elfutils-libelf-devel-static-0.97.5

glibc-2.3.9.4-2.19
glibc-common-2.3.9.4-2.19
glibc-devel-2.3.9.4-2.19
glibc-headers-2.3.9.4-2.19

gcc-3.4.5-2
gcc-c++-3.4.5-2

kernel-headers-2.6.18
ksh-20060214

libaio-devel-0.3.105-2
libaio-0.3.105-2

libgcc-3.4.5
libstdc++-3.4.5-2
libstdc++-devel-3.4.5-2

make-3.80-5
sysstat-5.0.5
unixODBC-2.2.11
unixODBC-devel-2.2.11


使用的命令是 rpm -qa | grep "部分包名"
如果没有的话可以在安装盘中找到相应的包,然后用 rpm -ivh *.rpm安装。

检查完安装包后就是创建相应的Oracle用户了,涉及到oinstall(The Oracle Inventory group)用户组、dba(The OSDBA group)用户组和oracle(The Oracle software owner)用户。

用root用户执行:
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle


添加好用户和用户组后,就是修改内核参数,修改/etc/sysctl.conf文件,加上如下参数:

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.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 应用配置。

修改用户限制,修改/etc/security/limits.conf 文件,加上下面的参数:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536


修改用户验证选项,修改/etc/pam.d/login 文件,加上如下参数:

session required pam_limits.so

修改用户配置文件,修改/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


然后再设置目录的权限和拥有者:
mkdir -p /u01/ (当然这步可以免了,因为我在最开始装Linux系统中就创建了这个目录并挂载了容量,只是容量要挂载大点)
chown -R oracle:oinstall /u01/
chmod -R 775 /u01/


最后就是修改oracle用户的.bash_profile文件了,增加一些环境变量:
增加
(注意在设置环境变量值时,等号左右两边是没有空格的)
export ORACLE_BASE=/u01/app
export ORACLE_HOME=$ORACLE_BASE/oracle
export ORACLE_SID=zero(用来设置全局数据库名的,在安装过程中会用到这里设置的值)
export PATH=$ORACLE_HOME/bin:$PATH


其实我认为在设置环境变量这一步应该是安装完oracle后再设置的,因为在安装的过程中目录可能会有变化,这会导致执行oracle下的命令时提示命令找不到的错误。比如我安装后又修改了环境变量参数如下:

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

其他的不用作任何改动。

还有一点要说明下,就是oracle是不允许动态IP安装的。像我是在安装Linux系统时选择DHCP动态分配IP,然后在安装oracle之前调用 netconfig 命令将动态分配IP禁掉,然后在静态IP中填写之前动态分配的IP地址就OK了。当然还要修改 /etc/hosts 文件,加上静态IP地址、主机域名和主机名。

以上准备工作全部结束后,就是安装oracle的时候了。
切换成oracle用户 su - oracle
执行安装 ./runInstaller

然后就照着提示一路next就OK了。

安装完成后就是配置监听器了,执行 netca 命令,而我在这一步遇到了错误,大概如下:

#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGSEGV (0xb) at pc=0xa44b13a8, pid=2973, tid=3086891216
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_17-b02 mixed mode)
# Problematic frame:
# C [libnnz11.so+0x3c3a8]
#
# An error report file with more information is saved as hs_err_pid2973.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
/u01/app/oracle/product/11.2.0/dbhome_1/bin/netca: line 178: 2973
Aborted $JRE $JRE_OPTIONS -classpath $CLASSPATH oracle.net.ca.NetCA $*

解决办法:
据说是因为Host是64-Bit的系统,装32位的软件环境下,会产生这个错误bug,主要装个补丁(patch name:p8670579_112010_LINUX.zip)就可以解决问题。
文件名: p8670579_112010_LINUX.zip
文件描述: parche oracle 11gr2
文件大小: 1.13 MB

首先从网上下载这个补丁包,然后用 unzip p8670579_112010_LINUX.zip 解压这个补丁包,会生成8670579命名的文件夹,
cd 8670579 进去后会发现 etc目录和 file目录和一个readme文件。

执行OPatch目录下opatch命令:
$ORACLE_HOME/OPatch/opatch apply -invPtrLoc $ORACLE_HOME/oraInst.loc

(补充一点查看oracle数据库中已经安装的补丁列表用 opatch lsinventory 命令)

在执行这个步骤时可能会报错:
Java could not be located. OPatch cannot proceed!

OPatch failed with error code = 1

这是由于环境变量参数路径设置不正确产生的问题,我最开始就碰到了这个问题。

比如说我这个最开始把$ORACLE_HOME设成的路径是/u01/app/oracle,而jdk目录在/u01/app/oracle/product/11.2.0/dbhome_1/下,它当然报错提示找不到jdk了。修改成正确的$ORACLE_HOME路径后这个错误就解决了。

以上就是我安装oracle的全过程和安装过程中可能碰到的问题。

猜你喜欢

转载自zerojava.iteye.com/blog/1113517