RHEL 6.2 x86_64 下安装Oracle 11g步骤

1 篇文章 0 订阅
1 篇文章 0 订阅
 

RHEL6.2  x86_64 下oracle 11g的安装 by 宫长玉

 在安装过程中如遇到问题可以一起讨论,共同学习,如有错误,还请告知,谢谢

1.首先 修改 /etc/sysctl.conf文件 添加参数

[root@redz-server ~]# cat >>/etc/sysctl.conf << EOF

> #oracle need parameters

> fs.aio-max-nr=1048576

> fs.file-max=6815744

> kernel.shmall=2097152

> kernel.shmmax=1024000000(根据系统内存多少来调整)

> kernel.shmmni=4096

> kernel.sem=250 32000 100 65500

> net.ipv4.ip_local_port_range=9000 65500

> net.core.rmen_default=262144

> net.core.rmem_max=4194304

> net.core.wmem_default=262144

> net.core.wmem_max=1048586

> EOF

 

执行  /sbin/sysctl -p使参数生效

 

2. 修改 /etc/security/limits.conf

[root@redz-server ~]# cat >>/etc/sysctl.conf << EOF

[root@redz-server ~]# cat >> /etc/security/limits.conf << EOF

> # oracle need parameters

> orcle  soft  nproc    2047

> oracle  hard  nproc   16384

> oracle  soft  nofile  1024

> oracle  hard  nofile  65536

> EOF

 

3. 修改 /etc/pam.d/limits.conf

[root@redz-server ~]# cat >> /etc/pam.d/login << EOF

> session  required  pam_limits.so

> EOF

4.修改 /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

4. 修改 /etc/csh.login

 vi /etc/csh.login

 

#oracle need setting

if ( $USER == "oralce" ) then

   limit maxproc        16384

   limit descriptors    65536

   umask 022

endif

 

5.创建用户组及用户

[root@redz-server ~]# /usr/sbin/groupadd oinstall

[root@redz-server ~]# /usr/sbin/groupadd dba

[root@redz-server ~]# /usr/sbin/useradd -m -g oinstall -G dba oracle

[root@redz-server ~]# echo "oracle"|passwd --stdin oracle

 

更改用户 oracle 的密码 。

passwd: 所有的身份验证令牌已经成功更新。

 

6.创建安装目录并授权

[root@redz-server ~]# mkdir -p /opt/oracle/ora11g

[root@redz-server ~]# chown -R oralce:oinstall /opt/oracle/ora11g

[root@redz-server ~]# chown -R oracle:oinstall /opt/oracle/ora11g

[root@redz-server ~]# chmod -R 775 /opt/oracle/ora11g

[root@redz-server ~]# mkdir -p /opt/oracle/oraInventory

[root@redz-server ~]# chown -R oracle:oinstall /opt/oracle/oraInventory

[root@redz-server ~]# chmod -R 775 /opt/oracle/oraInventory

 

7设置oracle 用户环境变量 (注意shell命令 '[',' ]‘和’=‘两边都有一个空格)

vi /home/oracle/.bash_profile

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/opt/oracle/ora11g; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.2/dbhome; export ORACLE_HOME

ORACLE_SID=redzdb; export ORACLE_SID

ORACLE_TERM=xterm; export ORACLE_TERM

PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH;export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;

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

 

umask 022

 

使文件生效

source /home/oracle/.bash_profile

  

8设置系统防火墙

 [root@redz-server ~]# vi /etc/sysconfig/iptables (只有在防火墙启用的情况下,才存在iptables文件)

 加入

-A INPUT -m state --state NEW -m tcp -p tcp --drop 1158 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --drop 1521 -j ACCEPT

[root@redz-server ~]# /etc/init.d/iptables restart(重启防火墙,启用新规则)

 

 

9.在安装前要设置在/etc/hosts文件中添加本地ip

192.168.1.8  redz-server   localhost

10 .用oracle用户登录。解压数据库安装文件后,开始安装(如果环境变量前面设置成功,这里便不用在手动设置,如果安装中文是乱码

在 终端先执行 export LANG=en_US)

[oracle@redz-server ~]$  export LANG=en_US

[oracle@redz-server ~]$  cd orainstall

[oracle@redz-server ~ orainstall]# ./runInstaller

等候图形界面安装

ps :

 如果用root用户登录后,在终端中su oracle 后,安装,可能存在display错误

有许多解决办法,但是不一定成功,所以还是建议直接用oracle用户登录系统

display检测不通过的解决

方法1:  [root@redz-server ~]# xhost    local:oracle;

方法2:  [root@redz-server ~]# xhost   +;

方法2:  [root@redz-server ~]# xhost   +192.168.1.8;

             [ root@redz-server ~]# su oracle

             [oracle@redz-server ~]$ export DISPLAY=192.168.1.8:0.0

以上方法可能都不成功

   

 

 

11.安装完成后, 配置监听器监听数据库实例名称(oracle监听的动态注册与静态注册不是很清楚,高版本数据库,可能不需要手动配置监听便能访问了,因此,此步骤可以暂时省略)

./netmgr

 

4.设置oralce 随机启动

[root@redz-server ~]# vi /etc/oratab

 redzdb:/opt/oracle/ora11g/product/11.2.2/dbhome:N

改为

 redzdb:/opt/oracle/ora11g/product/11.2.2/dbhome:Y

12.以系统用户oracle编辑 $ORACLE_HOME/bin/dbstart

 

#注释掉 ORACLE_HOME_LISTNER=$1

添加 ORACLE_HOME_LISTNER=$ORACLE_HOME

 

 

ps:因为在这个脚本自动生成的时候,也就是ORACLE被安装进RHEL的时候,这个脚本并不知道你的

 

◆ORACLE_HOME_LISTNER是什么,现在要将这个参数显示的写明,这样就不会在执行这个脚本的时候报

 

◆ORACLE_HOME_LISTNER没有被指定的错误了。注意:dbstart和dbshut脚本在10g之后就已经将监听器的启动与关闭合并进数

据库实例的启动与关闭脚本里面了。而不再是单独分开的了

 

13 以系统用户oracle编辑 $ORACLE_HOME/bin/dbshut

#注释掉 ORACLE_HOME_LISTNER=$1

添加 ORACLE_HOME_LISTNER=$ORACLE_HOME

 

14 编写随机启动脚本,注册为系统服务

 

su root

vi /etc/init.d/redzora

 

#!/bin/bash

#chkconfig:2345 99 10

#description:StartupScriptfororacleDatabases

#/etc/rc.d/init.d/oradbstart

export ORACLE_BASE=/opt/oracle/ora11g

export ORACLE_HOME=/opt/oracle/ora11g/product/11.2.2/dbhome

export ORACLE_SID=redzdb

export PATH=$PATH:$ORACLE_HOME/bin

case "$1" in

start)

echo "-----startuporacle-----" >> /var/log/oracleauto.log

su oracle -c $ORACLE_HOME/bin/dbstart

su oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"

touch /var/lock/subsys/redzora

echo "-----startuporaclesuccessful-----" >> /var/log/oracleauto.log

echo "OK"

;;

stop)

echo "-----shutdwnoracle-----" >> /var/log/oracleauto.log

su oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"

su oracle -c $ORACLE_HOME/bin/dbshut

rm -f /var/lock/subsys/redzora

echo "-----shutdownoraclesuccessful-----" >> /var/log/oracleauto.log

echo "OK"

;;

*)

echo "Usage:'basename$0'start|stop"

exit1

esac

 

 

 

按 ALT+z

输入:wq

保存退出

执行 chmod -Rf 777  /var/lock/subs/

       chmod -Rf 777  /var/log

使用户能够读写启动文件及日志

 

ps:

(参考文章引用,对作者表示感谢)

现在,我要对这段脚本做一个关键解释:

 

第一:#chkconfig:23459910虽是一行注释,但是确实关键的必不可少的一行,除非你不用chkconfig命令来自动生成符号连接文件,而是完全采用手工创建。否则没有这一行,执行chkconfig系统将会报出oracle11没有chkconfig服务权限的错误。

 

第二:suoracle-c$ORACLE_HOME/bin/dbstart和touch/var/lock/subsys/oracle11这两行的作用是首先执行dbstart脚本启动oracle,然后在服务活动列表目录中创建一个与oracle11这个服

 

务同名的一个文件,表示这个服务是活动的,也就是被启动的。

 

而suoracle-c$ORACLE_HOME/bin/dbshut和rm-f/var/lock/subsys/oracle11这两行的作用是首先执行dbshut急哦脚本关闭oracle,然后从服务活动列表目录中删除那个与oracle11同名的那

 

个文件,表示这个服务不是活动的,也就是已经被关闭。

 

那么为什么要做touch/var/lock/subsys/oracle11和rm-f/var/lock/subsys/oracle11这两步呢?原因是跟LINUX系统的机制有关的:LINUX的判别一个服务是否被启动的依据是在/var/lock/subsys/目录下是否与服同名的文件,若有则表示这个服务已经被启动了,在系统关闭的时候,LINUX会把这里面列出的服务全部关闭,并删掉与服务同名的文件。若一个服务被启动了,但却在这个目录里没有那个服务的同名文件,则不会关闭那个服务。网上的文章均将这个地方设置错了,所以会发现,ORACLE可以随系统启动了,但却没有随系统关闭。我也是分析了/etc/rc.d/rc.local后才发现这个原理的。经过试验,果然如此。再分析mysql的启动与关闭脚本也是这样做的,最终恍然大悟

 

原来如此。这个地方请大家注意了。

 

15将编写的启动脚本注册为系统服务

   1)给脚本赋予可以被执行的权限

   su root

  chown oracle /etc/init.d/redzora

  chmod 775 /etc/init.d/redzora

 2)创建符号链接文件

 chkconfig --add /etc/init.d/redzora

(参考文章引用,对作者表示感谢)

执行这个命令就需要你在脚本中写上#chkconfig:2345 99 10了。这样当这个命令被执行的时候,回去oracle11文件中寻找这行注释,并解析这行注释,根据解析结果分别在/etc/rc.d/rc2.d;/etc/rc.d/rc3.d;/etc/rc.d/rc4.d;/etc /rc.d/rc5.d中创建符号连接文件S99oracle11文件,这个文件是系统启动时要执行的,其实这个文件是指向/etc/init.d /oracle11的,启动的时候系统向这个文件发送一个start参数,也就执行了oracle11文件中的start分支了。还会在/etc /rc.d/rc0.d;/etc/rc.d/rc1.d;/etc/rc.d/rc6.d中创建K10oracle11文件,这个文件时系统关闭时要执行的,其实这个文件也是指向/etc/init.d/oracle11的,关闭的时候系统向这个文件发送一个stop参数,也就执行了oracle11文件中的stop分支了。

 

我想你应该明白#chkconfig:2345 99 10中这些数字的含义了吧:指出2,3,4,5级别启动这个服务,99是在相应的/etc /rc.d/rcN.d(N为前面指定的级别,这里是2345)目录下生成的链接文件的序号(启动优先级别)S99oracle11,10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除2345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)K10oracle11。至于为什么在这些目录中创建文件和文件的命名规则,这就要您对LINUX的系统启动流程有一个熟悉的了解了,在这就不详谈了

 

 

在root用户下测试执行 /etc/init.d/redzora start

/etc/init.d/redzora stop

自动启动成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值