Oracle
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 #