linux网管笔记(28)安装oracle及command not found 解决方法-cndes的日志

  Redhat linux下安装oracle 10g

  安装redhat5时要独立分配磁盘给SWAP,空间大小应该是内存大小*2,最好使用内存>1G的机器。

  系统检查命令:

  # grep MemTotal /proc/meminfo �D�D检查内存大小

  # grep SwapTotal /proc/meminfo �D�D检查交换分区大小swap

  # df -k /tmp �D�D要求/tmp 400MB

  # grep \"model name\" /proc/cpuinfo �D�Dcpu检查

  # cat /etc/issue �D�D操作系统检查

  # uname –r �D�D系统内核检查

  当前为root超级用户下进行操作:

  1、由于orcale10不支持 redhat as5 需要修改/etc/redhat-realease 将 Red

  Hat Enterprise Linux Server release 5 (Tikanga) 改为Red Hat Enterprise

  Linux Server release 4 (Tikanga) ,安装完成后再将其修改回来

  2、修改/etc/hosts 文件将127.0.0.1改为本机IP地址 否则网络检查通不过

  3、检查安装所需的软件包,如果提示依赖性错误,先按照提示内容安装所需软件包后继续

  setarch-2*

  make-3*

  glibc-2*

  libaio-0*

  compat-libstdc++-33-3*

  compat-gcc-34-3*

  compat-gcc-34-c++-3*

  gcc-4*

  libXp-1*

  openmotif-2*

  compat-db-4*

  4、修改 /etc/sysctl.conf 内核配置文件,增加/修改以下项目,如没有自己添加

  kernel.shmall = 2097152 # 可以使用的共享内存的总量。

  kernel.shmmax = 2147483648 # 最大共享内存段大小。

  kernel.shmmni = 4096 # 整个系统共享内存段的最大数目。

  kernel.sem = 250 32000 100 128 # 每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。

  fs.file-max = 65536 # 系统中所允许的文件句柄最大数目。

  net.ipv4.ip_local_port_range = 1024 65000 # 应用程序可使用的IPv4端口范围。

  net.core.rmem_default = 1048576 # 套接字接收缓冲区大小的缺省值

  net.core.rmem_max = 1048576 # 套接字接收缓冲区大小的最大值

  net.core.wmem_default = 262144 # 套接字发送缓冲区大小的缺省值

  net.core.wmem_max = 262144 # 套接字发送缓冲区大小的最大值

  运行下面的命令使得内核参数生效:

  /sbin/sysctl –p

  注:内核参数并非必须修改,可以根据自己实际情况而定。

  5、增加下面的内容到文件 /etc/security/limits.conf 文件中:

  soft nproc 2047

  hard nproc 16384

  soft nofile 1024

  hard nofile 65536

  6、增加下面的内容到文件 /etc/pam.d/login 中:

  session required /lib/security/pam_limits.so

  session required pam_limits.so

  7、因为SELINUX对oracle有影响,所以把secure linux设成无效,编辑文件 /etc/selinux/config :

  SELINUX=disabled

  当然你也可以用图形界面下的工具 (系统 > 管理 > 安全级别和防火墙). 选择SELinux页面并且设为无效.

  8、新增组和用户:

  groupadd oinstall

  groupadd dba

  useradd -m -g oinstall -G dba oracle

  passwd oracle 自行设置密码

  9、创建Oracle的安装目录,并把权限付给oracle用户:

  例:

  mkdir -p /u01/app/oracle/product/10.2.0/db_1

  chown -R oracle.oinstall /u01

  10、配置环境变量(/etc/profile或.bash_profile),增加一下内容

  # Oracle Settings

  ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

  ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME

  ORACLE_SID=orcl; export ORACLE_SID

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

  修改后使用source /etc/profile或.bash_profile 命令使配置生效

  11、设置安装语言设置

  登陆oracle用户

  因为中文安装会有乱码所以设置用英文安装 export LC_ALL=en_US

  12、开始安装

  进入oracle安装目录中,执行./runInstaller

  如果提示……/.oui权限不够,进入install目录,执行

  chmod u+x .oui

  chmod u+x unzip

  后再执行./runInstaller便会出现安装界面

  在安装过程中选择高级安装,并将数据库语言选中文字符集选simple chinese 16GBK---gbk编码集,在linux下无法识别gbk编号,查询后中文显示为乱码

  安装快完成好的时候,会出现提示,必须以root 的身份执行两个脚本

  13、安装完成后

  数据库创建完成后,修改vi /etc/oratab,把orcl:/opt/oracle/oracle/product/10g:N那一行最后的N改成Y,

  在/etc/rc.d/rc.local中加入如下:(注意:引号不能缺少,否则导致系统无法启动)

  su - oracle -c “lsnrctl start”

  su - oracle -c “dbstart”

  如果安装后出现错误,进行卸载后重装,卸载命令如下:

  $./runInstaller -silent -deinstall -removeallfiles -removeAllPatches \"REMOVE_HOMES={$ORACLE_HOME}\" –responseFile

  Linux系统下Oracle的自动启动服务创建

  同时将Oracle自动启动加到了我的机器中,下面将过程分享一下

  一、使用root用户修改/etc/oratab 文件:

  $ vi /etc/oratab

  orcl:/oracle/app/product/10.2.0/db_1:N

  改为:

  orcl:/oracle/app/product/10.2.0/db_1:Y

  也就是将最后的N改为Y

  二、使用Oracle用户修改$ORACLE_HOME/bin/dbstart文件:

  # su - oracle

  $ cd $ORACLE_HOME/bin

  $ vi dbstart

  找到 ORACLE_HOME_LISTNER=.....这行, 修改成

  ORACLE_HOME_LISTNER=/u01/app/oracle/product/10.1.0 /db_1

  或者直接修改成:

  ORACLE_HOME_LISTNER=$ORACLE_HOME

  三、测试运行 dbshut, dbstart 看能否启动Oracle 服务及listener服务:

  1.修改dbstart和dbshut的日志文件的权限:

  $su - root

  #cd $ORACLE_HOME

  #chown oracle:oinstall startup.log

  #chown oracle:oinstall shutdown.log

  注:startup.log 和shutdown.log 可能没有,当你运行 ./dbstart 和 ./dbshut 之后才自动创建。

  2.执行相应的脚本进行测试

  #su - oracle

  $cd $ORACLE_HOME/bin

  $./dbstart (./dbshut)

  $ ps -efw | grep ora_

  $ lsnrctl status

  $ ps -efw | grep LISTEN | grep -v grep

  四:创建服务

  $su - root

  # cd /etc/rc.d/init.d/

  # vi oradbstart

  复制如下脚本1或者脚本2内容到oradbstart文件:

  注意点:

  (1) #开始的行不能少,否则后面运行chkconfig命令会报错:oradbstart 服务不支持chkconfig

  (2) 根据自己的环境修改环境变量配置部分(蓝色字体位置)

  (3) 从windows下面保存的如下脚本内容,通过ISO复制到linux,再将脚本复制到oradbstart文件中后

  ,在终端下用vi oradbstart命令打开,一些行后面可能有类似^M的字符,将其删除,否则在运行后面

  的chkconfig命令后,在/etc/rc.d/rcN.d目录(N为运行级别)下生成的S99oradbstart文件是空的,可以

  用vi查看S99oradbstart文件,内容应该和/etc/rc.d/init.d/oradbstart文件内容相同才是正确的

  (第三种情况是我在xp下使用虚拟机VMWARE安装linux,并将如下脚本保存成文本文件,然后制作成ISO

  文件,然后把ISO里面的文件的内容复制到oradbstart时遇到的,这种情况一些行后面类似^M的字符,

  用gredit无法看到,只有使用vi才能看到)

  --脚本1(数据库、监听、dbconsole、sqlplus)

  #!/bin/bash

  # chkconfig: 345 99 10

  # description: Startup Script for Oracle Databases

  # /etc/rc.d/init.d/dbstart

  export ORACLE_BASE=/u01/app/oracle/

  export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

  export ORACLE_SID=orcl

  export PATH=$PATH:$ORACLE_HOME/bin

  ORA_OWNR=\"oracle\"

  # if the executables do not exist -- display error

  if

  then

  echo \"Oracle startup: cannot start\"

  exit 1

  fi

  # depending on parameter -- startup, shutdown, restart

  # of the instance and listener or usage display

  case \"$1\" in

  start)

  # Oracle listener and instance startup

  echo -n \"Starting Oracle: \"

  su - $ORA_OWNR -c \"$ORACLE_HOME/bin/dbstart\"

  touch /var/lock/Oracle

  su - $ORA_OWNR -c \"$ORACLE_HOME/bin/emctl start dbconsole\"

  su - $ORA_OWNR -c \"$ORACLE_HOME/bin/isqlplusctl start\"

  echo \"OK\"

  ;;

  stop)

  # Oracle listener and instance shutdown

  echo -n \"Shutdown Oracle: \"

  su - $ORA_OWNR -c \"$ORACLE_HOME/bin/emctl stop dbconsole\"

  su - $ORA_OWNR -c \"$ORACLE_HOME/bin/isqlplusctl stop\"

  su - $ORA_OWNR -c \"$ORACLE_HOME/bin/dbshut\"

  su - $ORA_OWNR -c \"$ORACLE_HOME/bin/lsnrctl stop\"

  rm -f /var/lock/Oracle

  echo \"OK\"

  ;;

  reload|restart)

  $0 stop

  $0 start

  ;;

  *)

  echo \"Usage: `basename $0` start|stop|restart|reload\"

  exit 1

  esac

  exit 0

  --脚本2(只启动数据库和监听)

  #!/bin/bash

  # chkconfig: 345 99 10

  # description: Startup Script for Oracle Databases

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

  export ORACLE_BASE=/u01/app/Oracle/

  export ORACLE_HOME=/u01/app/Oracle/product/10.2.0/db_1

  export ORACLE_SID=orcl

  export PATH=$PATH:$ORACLE_HOME/bin

  case \"$1\" in

  start)

  su Oracle -c $ORACLE_HOME/bin/dbstart

  touch /var/lock/Oracle

  echo \"OK\"

  ;;

  stop)

  echo -n \"Shutdown Oracle: \"

  su Oracle -c $ORACLE_HOME/bin/dbshut

  rm -f /var/lock/Oracle

  echo \"OK\"

  ;;

  *)

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

  exit 1

  esac

  exit 0

  保存退出。

  打开终端执行:

  $su - root

  #chown oracle.oinstall /etc/rc.d/init.d/oradbstart

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

  然后执行:

  chkconfig --add oradbstart

  chkconfig --list oradbstart

  chkconfig --list oradbstart运行结果:

  oradbstart 0:off 1:off 2:off 3:on 4:on 5:on 6:off

  或者运行如下命令

  chkconfig --level 345 oradbstart on

  五.检查:

  根据上面的运行结果,当相应的运行级别为on时(例如:5:on),在对应的/etc/rc.d/rcN.d(例如:和

  5:on对应的是:/etc/rc.d/rc5.d)下面会生成一个文件:S99oradbstart,使用vi S99oradbstart打开

  该文件,可以看到该文件的内容和/etc/rc.d/init.d/oradbstart内容相同,表示配置成功,其实

  S99oradbstart是一个到/etc/rc.d/init.d/oradbstart的链接,我们可以使用file命令来查看:

  $file /etc/rc.d/rc5.d/S99oradbstart

  S99oradbstart:symbolic link to \'../init.d/oradbstart

  $ps -ef | grep oracle 查看Oracle相关的进程是否启动了

  六.一点说明:

  脚本文件中的:# chkconfig: 345 99 10

  指出3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的级别,这里是345)目录

  下生成的链接文件的序号(启动优先级别)S99oradbstart,10为在除前面指出的级别对应

  的/etc/rc.d/rcN.d(N为除345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)

  K10oradbstart。

  命令说明:

  ps:监控后台进程

  -e 显示所有进程。

  -f 全格式。

  -h 不显示标题。

  -l 长格式。

  -w 宽输出。

  grep:是linux下用于搜索输出内容中所含内容的一个命令。

  1.例如我要搜索名为aaa.txt中的一串字符\"bbb\",可以用

  cat aaa.txt|grep bbb

  2.我要搜索当前目录含有bb的文件,可以用

  ls |grep bb

  例:ps -efw | grep LISTEN | grep -v grep:查看含有LISTEN的监听,除去含有grep的监听。

  chkconfig:功能说明:检查,设置系统的各种服务。

  语 法:chkconfig 或 chkconfig

  补充说明:这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行

  哪些系统服务,其中包括各类常驻服务。

  参 数:

  --add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增

  加相关数据。

  --del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除

  相关数据。

  --list 列出所指定的系统服务。

  --level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。

  注:runlevel可以认为是系统状态,形象一点,您可以认为runlevel有点象微软的windows操作系统中

  的Normal,safemode,和Command prompt only。进入每个runlevel都需要启动或关闭相应的一系列服

  务(services),这些服务(services)以初始化脚本的方式放置于目录/etc/rc.d/rc?.d/或者/etc/rc?.d

  下面(?代表runlevel的对应序号)。

  在大多数的linux发行版本中,通常有8个runlevel

  Runlevel System State

  0 Halt the system

  1 Single user mode

  2 Basic multi user mode

  3 Multi user mode

  5 Multi user mode with GUI

  6 Reboot the system

  S, s Single user mode

  多数的桌面的linux系统缺省的runlevel是5,用户登陆时是图形界面;

  而多数的服务器版本的linux系统缺省的runlevel是3,用户登陆时是字符界面;

  runlevel 1和2除了调试之外很少使用;

  runlevel s和S并不是直接给用户使用,而是用来为Single user mode作准备。

  一个错误的解决

  环境变量已经配好,但是仍报错:

  $ vi .bash_profile

  # .bash_profile

  # Get the aliases and functions

  if ; then

  . ~/.bashrc

  fi

  # User specific environment and startup programs

  PATH=$PATH:$HOME/bin

  export PATH

  unset USERNAME

  export EDITOR=vi

  export ORACLE_SID=dg1

  export ORACLE_BASE=/u01/app/oracle

  export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

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

  export PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin: /usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin

  export PATH=$ORACLE_HOME/bin:$PATH

  umask 022

  解决方法:

  $ sqlplus /nolog

  bash: sqlplus: command not found

  $ ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

  ln: creating symbolic link `/usr/bin/sqlplus\' to `/bin/sqlplus\': Permission deni ed

  $ su - root

  Password:

  # ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

  # su - oracle

  $ sqlplus /nolog

  SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 11 12:51:24 2009

  Copyright (c) 1982, 2005, Oracle. All rights reserved.

  SQL> conn / as sysdba

  Connected to an idle instance.

  SQL> startup

  ORACLE instance started.

  Total System Global Area 167772160 bytes

  Fixed Size 1218316 bytes

  Variable Size 79694068 bytes

  Database Buffers 83886080 bytes

  Redo Buffers 2973696 bytes

  Database mounted.

  Database opened.

  SQL>

  

 

你可能感兴趣的:(oracle,linux,日志,解决方法,网管)