- 论坛徽章:
- 0
|
小弟刚刚进出shell,对很多东西还弄不懂。最近系统有个需求,需求是这样的:监控数据库表空间,如果发现表空间有超过90%的就发送email告知维护人员。我在网上搜到了一个脚本,但执行不起来,原因是对里面的一些语句弄不明白,而且直接执行报很多错误,不通过。高手帮忙看一下,另外如果有更好的能推荐给我再好不过了 谢谢!
- #####################################################################
- ## ck_tbsp.sh ##
- #####################################################################
- #!/bin/ksh
- sqlplus -s < oracle/$1@$2 -这个条命令不太明白,执行不通过
- set feed off
- set linesize 100
- set pagesize 200
- spool tablespace.alert -tablespace.alert 是一个文件吗,执行时提示找不到文件
- 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)) < 10;
- spool off
- exit
- !
- if [ `cat tablespace.alert|wc -l` -gt 0 ]
- then
- cat tablespace.alert -l tablespace.alert > tablespace.tmp - tablespace.tmp文件是怎么生成的
- mailx -s "TABLESPACE ALERT for ${2}" $DBALIST < tablespace.tmp
- fi
复制代码 |
|