在Linux下安装Oracle数据库十分繁琐,前段时间本人在空闲时间进行了一次尝试,使用Oracle VirtualBox安装CentOS 6.4 64位系统,并在其底下安装Oracle11gR2,安装期间碰到了一些问题,也在网上查找了很多资料,经过2天的努力,成功完成了安装。现将我在安装时记录的详细步骤(带图)分享给大家,希望可以对大家有所帮助,步骤如下:
[root@localhost101 ~]# uname -a #内核版本
Linux localhost101 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost101 ~]# getconf LONG_BIT #操作系统位数
64
[root@localhost101 ~]# free -m #查看内存及交换分区大小,官方要求内存至少1G,建议2G以上;此处内存为1203M
total used free shared buffers cached
Mem: 2006 968 1037 0 42 417
-/+ buffers/cache: 509 1497
Swap: 3071 0 3071
#交换分区大小,官方要求为内存的1.5倍以上。内存大小为2-16G时,交换分区空间等于内存大小;超过16G内存,交换分区只设置为16G
[root@localhost101 ~]# df -hT /tmp # 查看/tmp分区空间,官方要求至少1G
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 123G 5.8G 111G 5% /
[root@localhost101 ~]# hostname #主机名,主机名可通过修改/etc/hosts和/etc/sysconfig/network进行修改
localhost101
2、关闭防火墙、禁用SELinux
[root@localhost101 ~]# service iptables stop
[root@localhost101 ~]# chkconfig iptables off
[root@localhost101 ~]# vi /etc/selinux/config #将SELINUX=disabled
#对于关闭系统防火墙这个操作,我在安装的过程中是没有禁用的,安装完后,加了iptables端口放行后,重启iptables,就可以正常使用了,也没有遇到有些帖子中提到的动态端口的问题。 所以这个步骤也可以不做,当遇到问题时可临时关闭以便排除问题。
3、确认以下包全部安装
[root@localhost101 ~]# rpm -q binutils
binutils-2.20.51.0.2-5.36.el6.x86_64
[root@localhost101 ~]# rpm -q gcc
gcc-4.4.7-3.el6.x86_64
[root@localhost101 ~]# rpm -q gcc-c++
gcc-c++-4.4.7-3.el6.x86_64
[root@localhost101 ~]# rpm -q glibc
glibc-2.12-1.107.el6.x86_64
[root@localhost101 ~]# rpm -q glibc-devel
glibc-devel-2.12-1.107.el6.x86_64
[root@localhost101 ~]# rpm -q libgcc
libgcc-4.4.7-3.el6.x86_64
[root@localhost101 ~]# rpm -q libstdc++
libstdc++-4.4.7-3.el6.x86_64
[root@localhost101 ~]# rpm -q libstdc++-devel
libstdc++-devel-4.4.7-3.el6.x86_64
[root@localhost101 ~]# rpm -q libaio
libaio-0.3.107-10.el6.x86_64
[root@localhost101 ~]# rpm -q make
make-3.81-20.el6.x86_64
[root@localhost101 ~]# rpm -q sysstat
sysstat-9.0.4-20.el6.x86_64
#32位包依赖安装
[root@localhost101 rpm]# rpm -ivh nss-softokn-freebl-3.12.9-11.el6.i686.rpm glibc-2.12-1.107.el6.i686.rpm
[root@localhost101 rpm]# rpm -ivh libtool-ltdl-2.2.6-15.5.el6.i686.rpm ncurses-libs-5.7-3.20090208.el6.i686.rpm readline-6.0-4.el6.i686.rpm unixODBC-2.2.14-12.el6_3.i686.rpm
#所有rpm包安装完成后的验证
[root@localhost101 rpm]# rpm -q binutils
binutils-2.20.51.0.2-5.36.el6.x86_64
[root@localhost101 rpm]# rpm -q compat-libcap1
compat-libcap1-1.10-1.x86_64
[root@localhost101 rpm]# rpm -q compat-libstdc++
package compat-libstdc++ is not installed
[root@localhost101 rpm]# rpm -q compat-libstdc++-33
compat-libstdc++-33-3.2.3-69.el6.x86_64
compat-libstdc++-33-3.2.3-69.el6.i686
[root@localhost101 rpm]# rpm -q gcc
gcc-4.4.7-3.el6.x86_64
[root@localhost101 rpm]# rpm -q gcc-c++
gcc-c++-4.4.7-3.el6.x86_64
[root@localhost101 rpm]# rpm -q glibc
glibc-2.12-1.107.el6.x86_64
glibc-2.12-1.107.el6.i686
[root@localhost101 rpm]# rpm -q glibc-devel
glibc-devel-2.12-1.107.el6.x86_64
glibc-devel-2.12-1.107.el6.i686
[root@localhost101 rpm]# rpm -q ksh
ksh-20100621-19.el6.x86_64
[root@localhost101 rpm]# rpm -q libgcc
libgcc-4.4.7-3.el6.x86_64
libgcc-4.4.7-3.el6.i686
[root@localhost101 rpm]# rpm -q libstdc++
libstdc++-4.4.7-3.el6.x86_64
libstdc++-4.4.7-3.el6.i686
[root@localhost101 rpm]# rpm -q libstdc++-devel
libstdc++-devel-4.4.7-3.el6.x86_64
libstdc++-devel-4.4.7-3.el6.i686
[root@localhost101 rpm]# rpm -q libaio
libaio-0.3.107-10.el6.x86_64
libaio-0.3.107-10.el6.i686
[root@localhost101 rpm]# rpm -q libaio-devel
libaio-devel-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6.x86_64
[root@localhost101 rpm]# rpm -q make
make-3.81-20.el6.x86_64
[root@localhost101 rpm]# rpm -q sysstat
sysstat-9.0.4-20.el6.x86_64
[root@localhost101 rpm]# rpm -q unixODBC
unixODBC-2.2.14-12.el6_3.i686
unixODBC-2.2.14-12.el6_3.x86_64
[root@localhost101 rpm]# rpm -q unixODBC-devel
unixODBC-devel-2.2.14-12.el6_3.i686
unixODBC-devel-2.2.14-12.el6_3.x86_64
#上面的列表中有些问题还是比较奇怪的,64位系统下安装了一些32位的包,如果你直接去光盘上找,可能有些是找不到的,可以通过访问下列网址查找:
4、创建安装数据库时所需要使用的用户组dba、oinstall及oracle用户,并将oracle用户加入到dba组
[root@localhost101 etc]# grep oinstall /etc/group #检查用户组oinstall是否存在
[root@localhost101 etc]# grep dba /etc/group #检查用户组dba是否存在
[root@localhost101 etc]# id oracle #检查oracle用户是否存在
id: oracle: No such user
#上述均表示用户组和用户不存在
[root@localhost101 etc]# /usr/sbin/groupadd oinstall #创建用户组oinstall
[root@localhost101 etc]# /usr/sbin/groupadd dba #创建用户组dba
#检查用户组是否创建成功,以下表示创建成功
[root@localhost101 etc]# grep dba group
dba:x:503:
[root@localhost101 etc]# grep oinstall group
oinstall:x:502:
[root@localhost101 etc]# /usr/sbin/useradd -g oinstall -G dba oracle #创建oracle用户,并将oracle用户同时设定为oinstall和dba用户组的组成员
[root@localhost101 etc]# passwd oracle #设定oracle用户的密码
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
5、配置系统内核参数
#以root用户登录,修改在/etc/sysctl.conf文件,在该文件中添加以下参数:使用/sbin/sysctl -p 生效
# use for oracle 11g
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1174405120
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 = 1048576
#要注意的是,原来sysctl.conf中已经有shmall和shmmax参数了,注释掉。kernel.shmmax一般比物理内存一半大点。
6、修改文件限制
#修改/etc/security/limits.conf,加入
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
7、修改ulimit
#修改/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、新建安装目录
[root@localhost101 u01]# mkdir -p /u01/app/oracle/ #新建目录,目录可以自行定义
[root@localhost101 u01]# chown -R oracle:oinstall /u01/app/oracle/ #设置目录所有权
[root@localhost101 u01]# chmod -R 775 /u01/app/oracle/ #设置目录权限
9、设置Oracle环境变量
#切换到oracle用户,修改.bash_profile文件,添加Oracle环境变量
# Oracle 11g environment
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORA_NLS10=$ORACLE_HOME/nls/data
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/bin:/lib:/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMPDIR=/tmp
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
unset USERNAME
[oracle@localhost101 ~]$ source .bash_profile #使用source命令使环境变量文件生效
10、修改hosts文件
#修改/etc/hosts文件
[root@localhost101 etc]# vi hosts
127.0.0.1 localhost101 localhost.localdomain localhost
::1 localhost6 localhost6.localdomain6
11、安装Oracle软件
尝试安装i386的包,不能安装
[root@localhost101 rpm]# rpm -ivh libaio-0.3.106-5.i386.rpm
warning: libaio-0.3.106-5.i386.rpm: Header V3 DSA/SHA1 Signature, key ID e8562897: NOKEY
Preparing... ########################################### [100%]
package libaio-0.3.107-10.el6.x86_64 (which is newer than libaio-0.3.106-5.i386) is already installed
package libaio-0.3.107-10.el6.i686 (which is newer than libaio-0.3.106-5.i386) is already installed
[root@localhost101 rpm]# rpm -q libaio
libaio-0.3.107-10.el6.x86_64
libaio-0.3.107-10.el6.i686
#有几个包提示没有安装,可以忽略,因为在6.4的64位中,默认是不安装i386的包,而在安装oracle11g中,确有需要才提示