Oracle 스 크 립 트 (1)

회사 의 라 이브 러 리 안에 모든 시계 공간 이 unlimted 가 아니 기 때문에 메 일 을 보 내 고 시계 공간의 사용률 을 수시로 감시 해 야 합 니 다.다음은 제 가 문 서 를 참고 하여 수정 한 후에 제 업무 에서 사용 한 것 입 니 다.제 데이터베이스 버 전 은 11.2.0.4 이 고 리 눅 스 버 전 은 Centos 6.3 입 니 다.
   
   
   
   
  1. #!/bin/bash  
  2. ORACLE_SID=orcl; export ORACLE_SID  
  3. ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE  
  4. ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1; export ORACLE_HOME  
  5. $ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.;  
  6. export PATH  
  7. DBALIST="[email protected]";export DBALIST  
  8. sqlplus -s '/ as sysdba' <<EOF  
  9. set feed off  
  10. set linesize 100  
  11. set pagesize 200  
  12. column "USED (MB)" format a10  
  13. column "FREE (MB)" format a10  
  14. column "TOTAL (MB)" format a10  
  15. column PER_FREE format a10  
  16. spool tablespace.alert  
  17. SELECT F.TABLESPACE_NAME,  
  18. TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999,999') "USED (MB)",  
  19. TO_CHAR (F.FREE_SPACE, '999,999') "FREE (MB)",  
  20. TO_CHAR (T.TOTAL_SPACE, '999,999') "TOTAL (MB)",  
  21. TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'999')||' %' PER_FREE  
  22. FROM (  
  23. SELECT TABLESPACE_NAME,  
  24. ROUND (SUM (BLOCKS*(SELECT VALUE/1024  
  25. FROM V$PARAMETER  
  26. WHERE NAME = 'db_block_size')/1024)  
  27. ) FREE_SPACE  
  28. FROM DBA_FREE_SPACE  
  29. GROUP BY TABLESPACE_NAME  
  30. ) F,  
  31. (  
  32. SELECT TABLESPACE_NAME,  
  33. ROUND (SUM (BYTES/1048576)) TOTAL_SPACE  
  34. FROM DBA_DATA_FILES  
  35. GROUP BY TABLESPACE_NAME  
  36. ) T  
  37. WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME  
  38. AND (ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)) < 80;  
  39. spool off  
  40. exit  
  41. EOF  
  42. if [cat tablespace.alert|wc -l -gt 0]  
  43. then  
  44. cat tablespace.alert > tablespace.tmp  
  45. mailx -s "TABLESPACE  ALERT  for  PPRD10" $DBALIST < tablespace.tmp  
  46. fi  

좋은 웹페이지 즐겨찾기