Script for Monitoring Oracle Database
Script for Monitoring Oracle databases.
Script to monitor sessionlocks,current session and tablespace usage details on RAC database
Main script calls 3 SQL queries and sends the output in a mail .
## Main Script RAC_monitor_queries.sh Start ## #Script Name: /u01/app/oracle/scripts/RAC_monitor_queries.sh # . /u01/app/oracle/.SetEnv19c LOGPATH=/u01/app/oracle/scripts/output TODAY=`date +’%Y%m%d%H:%M:%S’` OUTPUT_FILE=$LOGPATH/output-$TODAY.log ALERT_FILE=$LOGPATH/alert–$TODAY.log touch $OUTPUT_FILE cp /u01/app/oracle/diag/rdbms/orclp1/ORCLP1/trace/alert_ORCLP1.log $ALERT_FILE $ORACLE_HOME/bin/sqlplus -s ‘/as sysdba’ << EOF cd $LOGPATH echo MonitoringQueries |mailx -s ” Monitoring report every two hours – ALERT LOG – Node 1 – ” -r “oracle_Node1@ajara.tech” -a $ALERT_FILE dba@ajara.tech echo MonitoringQueries |mailx -s ” Monitoring report every two hours” -r “oracle_Node1@ajara.tech” -a $OUTPUT_FILE dba@ajara.tech ##Script RAC_monitor_queries.sh End## |
Sub script1 : /u01/app/oracle/scripts/sessionlock.sql
— SQL Query start –Script Name: /u01/app/oracle/scripts/sessionlock.sql break on BLOKING select l2.sid BLOKING, ‘ –> ‘, l1.sid BLOCKED from v$lock l1, v$lock l2 where l1.block =1 and l2.request > 0 and l1.id1=l2.id1 and l1.id2=l2.id2 order by 1,3; — SQL Query sessionlock.sql end |
Sub script2: /u01/app/oracle/scripts/currentsession.sql
–SQL Query Start
–SQL Query Name: /u01/app/oracle/scripts/currentsession.sql |
Sub script 3: /u01/app/oracle/scripts/tablespace.sql
–SQL Query Start — To Get the tablespace Sizes –SQL Query Name: /u01/app/oracle/scripts/tablespace.sql set linesize 100 set pagesize 100 select –SQL Query tablespace.sql End |
shell Sub script .SetEnv19c
#Script name /u01/app/oracle/.SetEnv19c # export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 export PATH=$ORACLE_HOME/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin export LD_LIBRARY_PATH=$ORACLE_HOME/lib export ORACLE_SID=ORCLP1 . $HOME/.bash_profile # .SetEnv19c End # |
Content of .bash_profile
# Bash $HOME/.bash_profile Start# #!/bin/bash stty erase ^? unset LC_CTYPE export ORACLE_BASE=/u01/app/oracle |
How to run Manually?
sh /u01/app/oracle/scripts/RAC_monitor_queries.sh |
crontab entry
## Monitoring every two hours 00 0,2,4,6,8,10,12,14,16,18,20,22 * * * /u01/app/oracle/scripts/RAC_monitor_queries.sh 2>/dev/null # |
Sample Output
INSTANCE_NAME
—————-
ORCLP1
Checking Locks:
no rows selected
Checking current session:
INST_ID RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE
———- ————————– ——————- ————— ————-
1 processes 1015 1405 3000
1 sessions 1066 1604 6016
2 processes 1005 1421 3000
2 sessions 1055 1528 6016
Checking Tablespaces:
TABLESPACE_NAME CURRENT_GB MAX_GB USED_GB FREE_GB USED_PCT
—————————— ———- ———- ———- ———- ———-
PROD_JOB 103 153 23.7109375 129.29 15
BACX 118 131 111.610291 19.39 85
SYSAUX 53 122 34.9189453 87.08 29
SYSTEM 3 5 2.41796875 2.58 48
ARC 14 32 3.4140625 28.59 11
UNDOTBS1 49 61 3.15039063 57.85 5
UNDOTBS2 38 72 4.04882813 67.95 6
USERS 1 5 1.3671875 3.63 27
See Also: