Oracle10g/11g 在SUSE/RHEL上的安装与配置[原创总结]


在过去对众多项目的支撑过程中,Oracle作为首选数据库,其安装与配置过程成了重复性最多的工作之一。
在此,我进行了总结,并分享出来,希望能对大家有所帮助。
随着Oracle版本的提升,从9i ->10g ->11g,其安装与配置过程其实越来越简单,尤其到了11g,会自动检测所缺少的系统软件包,并在系统参数配置方面进行自动调优。

在Linux下Oracle的安装配置过程我认为可分为三大步:
第一步 预安装的环境参数配置
在Windows下没有这一步,因为已经由安装程序直接完成了,Linux下目前也有相应的rpm软件包可进行快速设置,例如SUSE的orarun,但我强烈建议不要采用这类软件包,因为它们所完成的设置在参数、权限、目录规划等方面都存在不足。

第二步 实际的数据库安装过程
执行runInstaller安装数据库程序;
执行dbca创建数据库实例;
执行netca创建数据库监听和配置本地服务名;
这些过程与Windows平台上基本上没有什么差异。

第三步 系统服务的创建与配置
创建管理数据库服务的shell脚本,实现数据库的开机自启动和关机自停止。
这一步过程在Windows平台上可直接通过 管理工具-服务 进行配置。

鉴于Oracle10g与11g的安装与配置步骤基本相同,我就把它们整合在了一起,具体步骤如下:
一、预安装的环境参数配置

1.系统环境设置
确保交换分区的大小超过2G,且IP为固定IP,避免在安装环境检测时提示失败(若实在条件有限,可以强行安装)。

2.安装所需软件包
Oracle10g 需要安装以下软件包(*代表所有匹配的软件包都需要安装,请自行从安装光盘中获取):
#rpm -Uvh setarch-* make-* glibc-* libaio-* compat-libstdc++-* compat-gcc-* gcc-* libXp-* openmotif22-* compat-db-*
Oracle11g 除了需要安装上面提到的软件包以外,还需要以下软件包:
#rpm -Uvh sysstat-* unixODBC-* ksh-* binutils-* elfutils-*
注意:*代表通配符,意思是所有匹配的软件包都需要安装,以上软件包都可以在操作系统的安装光盘中找到。

3.修改/etc/redhat-release文件
因为Oracle 10g官方只支持到RHEL4和SUSE9,所以需要更改版本说明。
RHEL需要编辑/etc/redhat-release文件,暂时将内容修改为redhat-4。
SUSE需要编辑/etc/SUSE-relase,暂时将内容修改为SUSE-9。

Oracle11g已经支持最新的Linux发行版本,因此无需修改。

4.修改内核参数
#vi /etc/sysctl.conf
32位Oracle推荐配置参数如下:

kernel.shmmax = 2147483648 #这里设置为物理内存的一半,但32位Linux最大仅支持4G,即4294967295字节。
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144

64位Oracle推荐配置参数如下:

kernel.shmmax = 536870912 #这里设置为物理内存的一半。
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 1024 65500 #如果是11g则推荐 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

使更改立即生效,使用下面的命令:
#sysctl -p

5.建立安装Oracle需要的用户,组,及目录
#groupadd oinstall
#groupadd dba
#groupadd oper
#useradd -g oinstall -G dba oracle
#passwd oracle

#mkdir /oracle
#chown -R oracle:oinstall /oracle
#chmod -R 775 /oracle

安装oracle的目录建议指定在一个单独的分区、磁盘或阵列上,以减少因操作系统问题而带来的数据风险。

6.设置oracle用户的shell limit
#vi /etc/security/limits.conf

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

更改/etc/pam.d/login文件,添加如下内容,使shell limit生效:
#vi /etc/pam.d/login

session                  required                pam_limits.so

7.配置oracle用户的环境变量

编辑/home/oracle目录下的.bash_profile文件,设置如下内容:

export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 #根据实际情况设置,如果是安装11g R2则将10.2.0更改为11.2.0。
export ORACLE_SID=orcl #根据实际情况设置
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$CLASSPATH
export CLASSPATH

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

二、实际的数据库安装过程
首先,从Oracle官方网站下载所需的版本,个人推荐在64位的Linux操作系统上安装64位的Oracle,这样才能够获得良好的数据库性能。

Oracle官方下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
Oracle10.2 32位:10201_database_linux32.zip
Oracle10.2 64位:10201_database_linux_x86_64.cpio.gz
Oracle11.2 64位:linux.x64_11gR2_database_1of2.zip , linux.x64_11gR2_database_2of2.zip

将安装文件放入/oracle/install 目录(以Oracle10.2 64位为例):
#mkdir /oracle/install
#mv 10201_database_linux_x86_64.cpio.gz /oracle/install/
#chown -R oracle:oinstall /oracle/install

解压数据库安装包:
#cd /oracle/install
zip文件解压:#unzip 10201_database_linux32.zip
cpio.gz文件解压:#zcat 10201_database_linux_x86_64.cpio.gz | cpio -idmv

修改解压后的目录权限:
#chown -R oracle:oinstall /oracle/install/database

Oracle的安装需要通过oracle用户登陆图形化终端(如Gnome,KDE)支持,通过以下几种方式可以实现:
使用Oracle用户直接本地登陆图形化终端;
配置VNC Server,通过VNC Client远程登陆Oracle用户图形化终端,配置方法:
http://heylinux.com/archives/669.html
配置并通过Xmanager的Xbrowser远程登陆Oracle用户图形化终端,配置方法:
http://heylinux.com/archives/394.html
将远程安装程序的图形化界面显示到本地,方法为:
启动Xmanager主程序,通过Oracle用户登陆命令行终端,
然后执行 $export DISPLAY=192.168.1.7:0.0 //请更改为当前实际操作命令终端的IP地址

使用Oracle用户登陆后,为了防止安装时出现中文乱码,先把语言环境改为英文:
$export LC_CTYPE=en_US.UTF-8

解压后,开始安装Oracle数据库程序:
$database/runInstaller

下面以 Oracle10.2 64位 为例:
1.选择安装类型,这里选择高级安装,如下图所示:

2.指定证书存放目录,如下图所示:

3.选择安装的数据库类型及oracle所支持的语言,这里选择企业版,语言选择英文和简体中文,如下图所示:

4.指定oracle环境变量,安装路径。因为我们在.bash_profile中已经声明,所以这里会自动填充.如下图所示:

5.Oracle安装前的检查工作,如下图所示:

6.选择配置选项,这里我们选择仅安装数据库程序,数据库实例的创建则通过后面的dbca来单独完成,如下图所示:

7.点击“Next”,开始安装,在出现下图显示的内容时执行以下操作:

#su - root
#/oracle/oraInventory/orainstRoot.sh
#/oracle/product/10.2.0/db_1/root.sh

8.安装完成,恢复操作系统版本信息。

执行dbca创建数据库实例:
$dbca

下面以 Oracle10.2 64位 为例:
1.选择创建数据库,如下图所示:

2.选择自定义数据库,如下图

3.输入数据库实例名,即SID(根据实际情况设置),如下图所示:

4.默认配置,点击“Next”,如下图所示:

5.输入管理用户密码,如下图所示:

6.选择数据库设备类型,默认使用操作系统的文件系统,如下图所示:

7.默认配置,点击“Next”,如下图所示:

8.默认配置,点击“Next”,如下图所示:

9.配置数据库安装组件,点击右下角“Standard Database Components...”,取消“Oracle JVM”与“Oracle XML DB”,如下图所示:


10.配置数据库参数,修改字符集参数为“ZHS16GBK”与“UTF-8”,其他设置保持默认,如下图所示:

11.后面的步骤均保持默认配置,点击“Next”或“Finish”,直到安装完成。

三、系统服务的创建与配置
下面以 Oracle10.2 64位 为例:

1.编辑 /etc/oratab文件,配置以下选项:
orcl:/oracle/product/10.2.0/db_1 :Y //修改该选项最后的“N”为“Y”;

2.编写自定义脚本
创建用于启动、关闭与重启Oracle服务的自定义脚本并命名为oracle10g,内容如下:

# !/bin/sh
# chkconfig: 2345 80 03
# description: oracle dabase deamons
# filename:oracle10g

ORACLE_HOME=/oracle/product/10.2.0/db_1
ORACLE_OWNER=oracle

case "$1" in
  'start')
    ORACLE_PROCESS=`ps aux | grep ora_ | grep -v grep |wc -l`
    if [ $ORACLE_PROCESS -ne 0 ]; then
      echo "ERROR: Oracle already running."
      sleep 1
    else
      echo -n "Starting Oracle: "
      su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbstart
      touch /var/lock/subsys/oracle10g
      sleep 2
    fi
    ORACLE_LISTENER=`ps -e |grep tnslsnr |wc -l`
    if [ $ORACLE_LISTENER -ne 0 ]; then
      echo "ERROR: Listener already running."
      sleep 1
    else
      echo -n "Starting Listener: "
      su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
      sleep 2
    fi
    echo
    ;;

  'stop')
    ORACLE_LISTENER=`ps -e |grep tnslsnr |wc -l`
    if [ $ORACLE_LISTENER -ne 0 ]; then
      echo -n "Shutting down Listener: "
      su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
      sleep 2
    else
      echo "ERROR: Listener already shutdown."
      sleep 1
    fi
    ORACLE_PROCESS=`ps aux | grep ora_ | grep -v grep |wc -l`
    if [ $ORACLE_PROCESS -ne 0 ]; then
      echo -n "Shutting down Oracle: "
      su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbshut
      rm -f /var/lock/subsys/oracle10g
      sleep 2
    else
      echo "ERROR: Oracle already shutdown."
      sleep 1
    fi
    echo
    ;;

  'restart')
    echo "Restarting Oracle: "
    $0 stop
    $0 start
    echo
    ;;

  *)
    echo "Usage: oracle { start | stop | restart }"
    exit 1

esac
exit 0

3.配置自定义脚本
通过以下命令将自定义脚本添加至系统自动启动与自动关闭管理服务中:
# cp oracle10g /etc/rc.d/init.d/
# chmod 744 /etc/rc.d/init.d/oracle10g
# chown oracle:oinstall /etc/rc.d/init.d/oracle10g
# ln -s /etc/rc.d/init.d/oracle10g /etc/rc.d/rc3.d/S99oracle10g
# ln -s /etc/rc.d/init.d/oracle10g /etc/rc.d/rc5.d/S99oracle10g
# ln -s /etc/rc.d/init.d/oracle10g /etc/rc.d/rc0.d/K01oracle10g
# ln -s /etc/rc.d/init.d/oracle10g /etc/rc.d/rc6.d/K01oracle10g
这样,系统在开启时将会最后自动启动Oracle,而在关闭时会最先自动关闭Oracle。

4.使用自定义脚本
/etc/init.d/oracle10g start //启动数据库
/etc/init.d/oracle10g stop //关闭数据库
/etc/init.d/oracle10g restart //重启数据库

四、卸载ORACLE
如果需要完全卸载Oracle,可通过以下步骤完成:
1. 停止oracle10g并删除自定义脚本
#/etc/init.d/oracle10g stop
#rm -f /etc/init.d/oracle10g
2. 使用oracle用户执行 $ORACLE_HOME/bin/localconfig delete
3. $rm -rf $ORACLE_BASE/*
4. $rm -f /etc/oraInst.loc /etc/oratab
5. $rm -rf /etc/oracle
6. $rm -f /etc/inittab.cssd
7. $rm -f /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv
8. 使用root用户删除oracle用户和组
#userdel -r oracle
#groupdel oinstall
#groupdel dba
#groupdel oper
9.卸载完成

  1. No comments yet.
(will not be published)
*