Tuesday, July 7, 2009

Patch and Upgrade DB 11.1.0.6 to 11.1.0.7

Manual patch dan upgrade tanpa dbua 11g:
1. set ORACLE_BASE, ORACLE_HOME, ORACLE_SID
2. matikan
listener (lsnrctl stop),
console (emctl stop dbconsole),
database (shutdown immediate)
3. ./runInstaller
4. check opatch
$ORACLE_HOME/Opatch/opatch lsinventory -detail
5.
SQL> STARTUP UPGRADE
SQL> SPOOL upgrade_info.log
SQL> @?/rdbms/admin/utlu111i.sql
SQL> SPOOL OFF

6.
SQL> STARTUP UPGRADE
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> SPOOL OFF

7. check error di file patch.log
8.
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
9. recompile
SQL> @?/rdbms/admin/utlrp.sql
10. check status registry (harus valid semua)
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;


Script to delete applied archived log on standby

di standby database kadang disk penuh oleh archive log, bagaimana kita memanage nya
1. keep archive log yang belum di applied
2. delete archive yang sudah di applied
kalau kita dalam environtment logical standby database dapat menggunakan package dari
oracle tetapi jika kita dalam lingkungan standby database mau tidak mau harus manual atau bisa saja dengan menggunakan script sebagai berikut :

#!/usr/bin/ksh
ARCH_DIR=/archive/orcl

#take the log number to be applied
LogNo=`tail -30000 /oracle/app/oracle/product/10.2.0/admin/orcl/bdump/alert* | grep "Media Recovery Log" | cut -d " " -f 4 | cut -d "_" -f 5 | tail -1 `
echo "Oracle applied LogNo is $LogNo"

#extract 10
let SecLogNo=${LogNo}-10
echo "new backlog log No: $SecLogNo"

#delete small numbers from this in arch dir
cd $ARCH_DIR
for i in `ls *.arc`
do

Newi=`echo $i | cut -d "_" -f 4`

if [ $Newi -lt $SecLogNo ] ; then
echo "$i to be deleted..."
rm $i
fi
done


Sunday, July 5, 2009

PL/SQL Best Practices

source Quest Knowledge Expert :
1. Iterative Processing BP - Loop Exit
jangan menggunakan exit atau return untuk keluar dari sebuah FOR loop
jangan menggunakan exit untuk statement WHILE loop