Oracle

This article need editing and rewriting!

Oracle Install Tips - 10g on RHEL5

Install requisite packages

  yum -y install setarch-2*
  yum -y install make-3*
  yum -y install glibc-2*
  yum -y install libaio-0*
  yum -y install compat-libstdc++-33-3*
  yum -y install compat-gcc-34-3*
  yum -y install compat-gcc-34-c++-3*
  yum -y install gcc-4*
  yum -y install libXp-1*
  yum -y install openmotif-2*
  yum -y install compat-db-4*

Update /etc/hosts with correct servername

      10.1.4.200     oracle.sysxperts.com oracle

Update /etc/security/limits.conf

  oracle soft nproc 15360
  oracle hard  nproc  16384
  oracle soft  nofile 64512
  oracle hard  nofile 65536

Create users and groups

  groupadd dba
  useradd -g dba oracle; echo "mypass" |passwd --stdin oracle

Create directories and chown for oracle

   mkdir -p /u01/app/oracle/product/10.2.0/db_1
   chown -R oracle.dba /u01

Make sure SELINUX is disabled in /etc/selinux/config and reboot if it was enabled:

          SELINUX=disabled

Update /etc/sysctl.conf with:

  # Controls the maximum shared segment size, in bytes  - see kernel and hugepages info
  kernel.shmmax = 68719476736
  # Controls the maximum number of shared memory segments, in pages
  kernel.shmall = 4294967296
  kernel.sem = 250 32000 100 128
  fs.file-max = 104032
  net.ipv4.ip_local_port_range = 1024 65000
  net.core.rmem_default = 1048576
  net.core.rmem_max = 1048576
  net.core.wmem_default = 262144
  net.core.wmem_max = 262144
   
  run sysctl -p  #activates new kernel parameters  

To mount an NFS share for backups: nas.sysxperts.com:/Archive /archive_fs nfs hard,nolock,vers=3,proto=tcp,bg,rsize=32768,wsize=32768,timeo=600,intr 0 0 nas.sysxperts.com:/Brchive /backup_fs nfs hard,nolock,vers=3,proto=tcp,bg,rsize=32768,wsize=32768,timeo=600,intr 0 0

Edit the oracle users ~/.bash_profile

  # Oracle Settings
  TMP=/tmp; export TMP
  TMPDIR=$TMP; export TMPDIR
  ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
  ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
  ORACLE_SID=TEST; export ORACLE_SID
  ORACLE_TERM=xterm; export ORACLE_TERM
  PATH=/usr/sbin:$PATH; export PATH
  PATH=$ORACLE_HOME/bin:$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 

Start vncserver with (install with yum -y install vnc-server if necessary):

  vncserver
  vncpasswd

Establish vnc session and run xhost + as root

Extract cpio with:

cpio -idmv < 10201_database_linux_x86_64.cpio

cd to directory where cpio command was run

./database/runInstaller

download latest patch and unzip

./Disk1/runInstaller

To uninstall run the deinstaller from the latest patch Disk1/runInstaller

Edit /etc/oratab and set restart flag for TEST instance

  TEST:/u01/app/oracle/product/10.2.0/db_1:Y

sar and dstat is useful for stats on server - yum -y install sysstat dstat ls -lattr /var/log/sa and choose the filename with the date you want to see stats for then

  sar -A /var/log/sa/saXX

man sar and dstat are your friends

See oracle automated startup for init setup (http://docs.google.com/View?docid=dfxjbxcc_155dbzfvtg8)

++++++++++++++++++++++++++

Oracle 10g/11g Automated Startup and Shutdown on RedHat Create file /etc/init.d/oracle with following code and change file to be executable

#!/bin/sh # chkconfig: 345 99 01 # description: Oracle # # ORACLE=oracle case $1 in 'start')

      cat <<-"EOF"|su - ${ORACLE}
      # Start Oracle Net
      if [ -f ${ORACLE_HOME}/bin/tnslsnr ] ;
      then
              echo "starting Oracle Net Listener"
              ${ORACLE_HOME}/bin/lsnrctl start
      fi
      echo "Starting Oracle databases"
      ${ORACLE_HOME}/bin/dbstart
      ${ORACLE_HOME}/bin/emctl start dbconsole

EOF

      ;;

'stop')

      cat <<-"EOF"|su - ${ORACLE}
      echo "shutting down dbconsole"
      ${ORACLE_HOME}/bin/emctl stop dbconsole
      # Stop Oracle Net
      if [ -f ${ORACLE_HOME}/bin/tnslsnr ] ;
      then
              echo "stopping Oracle Net Listener"
              ${ORACLE_HOME}/bin/lsnrctl stop
      fi
      echo "stopping Oracle databases"
      ${ORACLE_HOME}/bin/dbshut

EOF

      ;;

*)

      echo "usage: $0 {start|stop}"
      exit
      ;;

esac # exit

Run: chkconfig oracle on

Update the oracle user .bash_profile as follows: export ORACLE=oracle export ORACLE_SID=`cat /etc/oratab |sed -e 's/:.*' -e 's/#.*' -e '/^$/d'|head -1` export PATH=$PATH:/usr/local/bin export ORAENV_ASK=“NO” . /usr/local/bin/oraenv

Update /etc/oratab with your instances orcl:/u01/oracle/product/11.1.0/db_1:Y orcltest:/u01/oracle/product/11.1.0/db_1:Y

Alternatively if you want to use your own start scripts you could do the following (BUT WHY?):

Create an /etc/init.d/oracle script with: #!/bin/sh # #oracle agent init script #chkconfig: 2345 97 05 #description: oracle # Source function library. if [ -f /etc/init.d/functions ] ; then

      . /etc/init.d/functions

elif [ -f /etc/rc.d/init.d/functions ] ; then

      . /etc/rc.d/init.d/functions

else

      exit 0

fi prog=oracle ORAHOME=/oracle/home/scripts AGENT_USER=oracle email=pvalentino@sysxperts.com start () {

      echo -n $"Starting $prog: "
      # start daemon
      if [ -e "/tmp/orastat" ]
      then
      su - ${AGENT_USER} -c "cd ${ORAHOME}; ./orastart"
      rm -rf /tmp/orastat
      else
      mail -s "`hostname` orastart failed" $email < /tmp/stat
      fi
      RETVAL=$?
      echo
      [ $RETVAL = 0 ] && touch /var/lock/subsys/oracle
      return $RETVAL

} stop () {

      # stop daemon
      echo -n $"Stopping $prog: "
      su - ${AGENT_USER} -c "cd ${ORAHOME};./orastop"
      RETVAL=$?
      if  "$RETVAL" = 0  ;then touch /tmp/orastat;else mail -s "`hostname` orastop failed" $email < /tmp/stat;fi
      echo
      [ $RETVAL = 0 ] && touch /var/lock/subsys/oracle
      return $RETVAL

} restart() {

      stop
      start

} case $1 in

      start)
              start
      ;;
      stop)
              stop
      ;;
      restart|reload)
              restart
      ;;
      condrestart)
              [ -f /var/lock/subsys/ora ] && restart || :
      ;;
      *)
      echo $"Usage: $prog {start|stop|restart|condrestart|reload }"
      exit 1

esac exit $RETVAL

And your orastart and orastop scripts would have all of the startup procedures you would like to run in a custom fashion i.e.

orastart: . /home/oracle/scripts/orastart_TEST lsnrctl start # mail -s “ TEST databases started ***” _DBA@sysxperts.com < /home/oracle/scripts/orastart

orastart_TEST: . /home/oracle/ora10.env ############# This will start Oracle in TEST ###################### export ORACLE_SID=TEST sqlplus '/ as sysdba' «EOF startup EOF #