定时监控数据库表空间使用率发送到邮箱
时间:2006-08-17 来源:zhen917
天天去数据库看表空的使用率很烦,写了这个脚本定时发到我的邮箱。爽多了!
/*服务器必须支持发送邮件*/
***************************************************************
Ora_TableSpace_Mon.sh内容为:
sqlplus "/as sysdba" <<EOF
@/home/oracle/scripts/monitor/Ora_TableSpace_Mon.sql
exit;
EOF
#send Email
cat /home/oracle/scripts/monitor/Ora_TableSpace_Mon.log|mailx -s "Ora_TableSpace_Mon" -c "[email protected]" -b "[email protected],[email protected]" [email protected],[email protected]
/* -c表示抄送 -b表示密送*/ Ora_TableSpace_Mon.sql内容为: set pagesize 50
spool /home/oracle/scripts/monitor/Ora_TableSpace_Mon.log
prompt
prompt**************************************
prompt* Show TABLESPACE information *
prompt**************************************
SELECT
d.tablespace_name TableSpace_Name,
TO_CHAR(NVL(a.bytes, 0),'99,999,990.900') "Total_Size(M)",
NVL((a.bytes - NVL(f.bytes, 0)), 0) "Used_Size(M)",
trunc(f.bytes,0) "Free_Size(M)",
TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0))/a.bytes * 100, 0), '990.00') "Used%"
FROM
dba_tablespaces d,
(select tablespace_name,
sum(bytes/1024/1024) bytes
from
dba_data_files
group by
tablespace_name) a,
(select tablespace_name,
sum(bytes/1024/1024) bytes
from
dba_free_space
group by
tablespace_name) f
WHERE
d.tablespace_name = a.tablespace_name(+)
AND
d.tablespace_name = f.tablespace_name(+)
AND
d.tablespace_name <> 'TEMP';
spool off; ****************************************************************** 只要在crontab中设定执行时间就可以了。下面顺便说一下crontab的使用方法。 参数名称 含义 -l 显示用户的Crontab文件的内容
-v 显示用户的Crontab文件的内容及其提交的时间,只适用于Compaq系列
-r 从Crontab目录中删除用户的Crontab文件
-e 编辑用户的Crontab文件
格式如下:* * * * *<command>
其时间段的含义:
段 含义 取值范围
第一段 代表分钟 0—59
第二段 代表小时 0—23
第三段 代表日期 1—31
第四段 代表月份 1—12
第五段 代表星期几,0代表星期日 0—6
* * * * * //代表每分钟
1 * * * * //代表每小时第1分钟
17 09 * * * //代表每天12点第2分钟(每天09:17)
0-59/2 * * * * //代表每2分钟执行一次任务
@/home/oracle/scripts/monitor/Ora_TableSpace_Mon.sql
exit;
EOF
#send Email
cat /home/oracle/scripts/monitor/Ora_TableSpace_Mon.log|mailx -s "Ora_TableSpace_Mon" -c "[email protected]" -b "[email protected],[email protected]" [email protected],[email protected]
/* -c表示抄送 -b表示密送*/ Ora_TableSpace_Mon.sql内容为: set pagesize 50
spool /home/oracle/scripts/monitor/Ora_TableSpace_Mon.log
prompt
prompt**************************************
prompt* Show TABLESPACE information *
prompt**************************************
SELECT
d.tablespace_name TableSpace_Name,
TO_CHAR(NVL(a.bytes, 0),'99,999,990.900') "Total_Size(M)",
NVL((a.bytes - NVL(f.bytes, 0)), 0) "Used_Size(M)",
trunc(f.bytes,0) "Free_Size(M)",
TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0))/a.bytes * 100, 0), '990.00') "Used%"
FROM
dba_tablespaces d,
(select tablespace_name,
sum(bytes/1024/1024) bytes
from
dba_data_files
group by
tablespace_name) a,
(select tablespace_name,
sum(bytes/1024/1024) bytes
from
dba_free_space
group by
tablespace_name) f
WHERE
d.tablespace_name = a.tablespace_name(+)
AND
d.tablespace_name = f.tablespace_name(+)
AND
d.tablespace_name <> 'TEMP';
spool off; ****************************************************************** 只要在crontab中设定执行时间就可以了。下面顺便说一下crontab的使用方法。 参数名称 含义 -l 显示用户的Crontab文件的内容
-v 显示用户的Crontab文件的内容及其提交的时间,只适用于Compaq系列
-r 从Crontab目录中删除用户的Crontab文件
-e 编辑用户的Crontab文件
格式如下:* * * * *<command>
其时间段的含义:
段 含义 取值范围
第一段 代表分钟 0—59
第二段 代表小时 0—23
第三段 代表日期 1—31
第四段 代表月份 1—12
第五段 代表星期几,0代表星期日 0—6
* * * * * //代表每分钟
1 * * * * //代表每小时第1分钟
17 09 * * * //代表每天12点第2分钟(每天09:17)
0-59/2 * * * * //代表每2分钟执行一次任务
相关阅读 更多 +