====== 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' <