分享整理的sql脚本

mac2022-06-30  128

1. 表空间使用率

SQL> select  a.tablespace_name,  2          round(a.total_size) "total_size M",    3          round(a.total_size)-round(b.free_size,3) "used M",  4          round(b.free_size ,3)  "free_size M",  5          round(b.free_size/total_size *100,2) ||'%' free_rate  6        from  (select  tablespace_name,sum(bytes) /1024/1024 total_size   7               from dba_data_files  group  by  tablespace_name) a,  8              (select  tablespace_name,sum(bytes)/1024/1024 free_size   9               from  dba_free_space group by  tablespace_name)  b 10  where   a.tablespace_name=b.tablespace_name(+);TABLESPACE_NAME                total_size M     used M free_size M FREE_RATE------------------------------ ------------ ---------- ----------- -----------------------------------------SYSAUX                                  530    494.312      35.688 6.73%UNDOTBS1                                195     67.625     127.375 65.32%USERS                                   114    108.562       5.438 4.78%SYSTEM                                 1060   1002.187      57.813 5.45%EXAMPLE                                 127    103.562      23.438 18.47%TEST01                                  300          1         299 99.67%

 

2. 检查监听程序的配置

#!/bin/bashexport TMP=/tmpexport TMPDIR=$TMPexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;export ORACLE_SID=prodexport ORACLE_TERM=xtermexport PATH=/usr/sbin:$PATHexport PATH=$ORACLE_HOME/bin:$PATH; export PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;lsn=`netstat -an |grep :1521 |head -1 |awk '{print $4}'|cut -c9-12`if [ "$lsn" = '1521' ] ;then echo  "Current  Listener  Port is :  $lsn" echo   'listener is up !'else echo "This   `hostname`   listener  is   down !" echo "Starting listener ...." lsnrctl   startfi3. 检查失效对象

#######################################################################invalid_object_alert.sh######################################################################!/bin/kshEDITOR=vi; export EDITORORACLE_SID=prod; export ORACLE_SIDORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOMELD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATHTNS_ADMIN=/var/opt/oracle;export TNS_ADMINNLS_LANG=american; export NLS_LANGNLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'; export NLS_DATE_FORMATORATAB=/etc/oratab;export ORATABPATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.; export PATHDBALIST="oracle,root";export DBALISTsqlplus -s '/ as sysdba' <<EOFset feed offset heading offcolumn OWNER format a10column OBJECT_NAME format a35column OBJECT_TYPE format a10column STATUS format a10spool invalid_object.alertSELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS FROM DBA_OBJECTS WHERE STATUS = 'INVALID' ORDER BY OWNER, OBJECT_TYPE, OBJECT_NAME;spool offexitEOFif [ `cat invalid_object.alert | wc -l` -gt 0 ] thenmailx -s "INVALID OBJECTS for prod" $DBALIST < invalid_object.alertfi

4. 检查实例是否启动

#!/bin/bash#chkinst.sh##################################################################### ckinstance.ksh #####################################################################ORATAB=/etc/oratabecho "`date` "echo "Oracle Database(s) Status `hostname`"db=`egrep -i ":Y|:N" $ORATAB | cut -d":" -f1 | grep -v "^#" | grep  -v "^*"`pslist="`ps -ef | grep pmon`"for i in $dbdoecho "$pslist" | grep "ora_pmon_$i" > /dev/null 2>&1if (( $? )); thenecho "Oracle Instance - $i: Down"elseecho "Oracle Instance - $i: Up"fidone

5.检查死锁

##################################################################### deadlock_alert.sh ######################################################################!/bin/kshEDITOR=vi; export EDITORORACLE_SID=prod; export ORACLE_SIDORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOMELD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATHTNS_ADMIN=/var/opt/oracle;export TNS_ADMINNLS_LANG=american; export NLS_LANGNLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'; export NLS_DATE_FORMATORATAB=/etc/oratab;export ORATABPATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.; export PATHDBALIST="oracle,root";export DBALISTsqlplus -s '/ as sysdba' <<EOFset feed offset heading offspool deadlock.alertSELECT SID, DECODE(BLOCK, 0, 'NO', 'YES' ) BLOCKER,DECODE(REQUEST, 0, 'NO','YES' ) WAITERFROM V\$LOCKWHERE REQUEST > 0 OR BLOCK > 0ORDER BY block DESC;spool offexitEOFif [ `cat deadlock.alert | wc -l` -gt 0 ]thenmailx -s "DEADLOCK ALERT for prod" $DBALIST < deadlock.alertfi5.检查表空间使用率的 shell脚本

#!/bin/bashsqlplus -s  '/as sysdba' <<EOFset feedback offset echo onset linesize 100set pagesize 200column "USED (MB)" format a10column "FREE (MB)" format a10column "TOTAL (MB)" format a10column PER_FREE format a10spool /home/oracle/tablespace.more    append        select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "TIME:" from dual;select a.name "DB_NAME",b.instance_name "INSTANCE_NAME"  from v\$database a,v\$instance b ;  SELECT F.TABLESPACE_NAME,  TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999,999') "USED (MB)",  TO_CHAR (F.FREE_SPACE, '999,999') "FREE (MB)",  TO_CHAR (T.TOTAL_SPACE, '999,999') "TOTAL (MB)",  TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'999')||' %' PER_FREE  FROM (  SELECT TABLESPACE_NAME,  ROUND (SUM (BLOCKS*(SELECT   VALUE/1024  FROM V\$PARAMETER              WHERE NAME = 'db_block_size')/1024)  ) FREE_SPACE  FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME ) F,  (  SELECT TABLESPACE_NAME,  ROUND (SUM (BYTES/1048576)) TOTAL_SPACE  FROM DBA_DATA_FILES  GROUP BY TABLESPACE_NAME  ) T  WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME  AND (ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)) < 80;spool offexit;EOF6.取样分析对象set heading offset feedback offset pagesize 200set linesize 100set echo offset time offset timing offset term offset trimspool onspool analyze_table.sqlselect 'ANALYZE TABLE ' || owner || '.' || segment_name || ' ESTIMATE STATISTICS SAMPLE 10 PERCENT;' from dba_segments  where segment_type = 'TABLE' and owner not in ('SYS', 'SYSTEM');spool off

 

转载于:https://www.cnblogs.com/iyoume2008/p/4824207.html

相关资源:sql跟踪语句整理工具
最新回复(0)