我根据下面的脚本,能输出数据,MAILS命令能发到我的邮件服务器上面,但是如果只跑脚本只能输出结果,而不能吧结果发到我邮件服务器上面~!请各位帮帮我~!谢谢~!
6. 检查表空间的使用
以下的脚本检测表空间的使用。假如表空间只剩下10%,它将会发送一个警告email。
#####################################################################
## ck_tbsp.sh ##
#####################################################################
#!/bin/ksh EDITOR=vi; export EDITOR
ORACLE_SID=PPRD10; export ORACLE_SID
ORACLE_BASE=/data/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/10.2.0; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
TNS_ADMIN=/var/opt/oracle;export TNS_ADMIN
NLS_LANG=american; export NLS_LANG
NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'; export NLS_DATE_FORMAT
ORATAB=/var/opt/oracle/oratab;export ORATAB
PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.; export PATH
DBALIST="[email protected],[email protected]";export DBALIST
sqlplus -s '/ as sysdba' <<EOF
set feed off
set linesize 100
set pagesize 200
column "USED (MB)" format a10
column "FREE (MB)" format a10
column "TOTAL (MB)" format a10
column PER_FREE format a10
spool 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)) < 80;
spool off
exit
EOF
if [ `cat tablespace.alert|wc -l` -gt 0 ]
then
cat tablespace.alert > tablespace.tmp
mailx -s "TABLESPACE ALERT for PPRD10" $DBALIST < tablespace.tmp
fi
6. 检查表空间的使用
以下的脚本检测表空间的使用。假如表空间只剩下10%,它将会发送一个警告email。
#####################################################################
## ck_tbsp.sh ##
#####################################################################
#!/bin/ksh EDITOR=vi; export EDITOR
ORACLE_SID=PPRD10; export ORACLE_SID
ORACLE_BASE=/data/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/10.2.0; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
TNS_ADMIN=/var/opt/oracle;export TNS_ADMIN
NLS_LANG=american; export NLS_LANG
NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'; export NLS_DATE_FORMAT
ORATAB=/var/opt/oracle/oratab;export ORATAB
PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.; export PATH
DBALIST="[email protected],[email protected]";export DBALIST
sqlplus -s '/ as sysdba' <<EOF
set feed off
set linesize 100
set pagesize 200
column "USED (MB)" format a10
column "FREE (MB)" format a10
column "TOTAL (MB)" format a10
column PER_FREE format a10
spool 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)) < 80;
spool off
exit
EOF
if [ `cat tablespace.alert|wc -l` -gt 0 ]
then
cat tablespace.alert > tablespace.tmp
mailx -s "TABLESPACE ALERT for PPRD10" $DBALIST < tablespace.tmp
fi
解决方案 »
- oracle序列的应用
- 安装oracle8i出现问题
- 关于流复制技术-表空间级复制
- AIX+ORA,通过PID无法找到对应的SESSION
- 请介绍关于linux下安装Oracle的资料
- 在ORACLE中我执行了这个语句 alter table nametable drop column s 提示我缺少关键字为什么阿
- 有什么函数分别取得当年的年、月、日??
- Oracle中时间如何连接问题?不能用 || 那该用什么呢?
- oracle exp计划任务报错
- 求解IMPDP导入时报错不存在的属性
- dbms_output.put_line问题
- windows 2003+Oracle9i如何配置才能利用8G内存?急!!!
then
cat tablespace.alert > tablespace.tmp ;
mailx -s "TABLESPACE ALERT for PPRD10" $DBALIST < tablespace.tmp
fi 补2个;试试
汗,这是我整理的脚本,脚本是没有问题的。 里面还是我的邮箱,肯定是sendmail 服务器没有配好。 默认是只能发内网邮箱地址。 发外网需要单独配置。
可以成功发送是吗?那就是这部分的问题嘛:
if [ `cat tablespace.alert|wc -l` -gt 0 ]
then
cat tablespace.alert > tablespace.tmp
mailx -s "TABLESPACE ALERT for PPRD10" $DBALIST < tablespace.tmp
fi 可能我给你多加了个分号,只在if[ ]加一个试试:
if [ `cat tablespace.alert|wc -l` -gt 0 ];
then
cat tablespace.alert > tablespace.tmp
mailx -s "TABLESPACE ALERT for PPRD10" $DBALIST < tablespace.tmp
fi
if [ `cat tablespace.alert|wc -l` -gt 0 ]
then
cat tablespace.alert > tablespace.tmp
mailx -s "TABLESPACE ALERT for PPRD10" $DBALIST < tablespace.tmp
fi
if [ `cat tablespace.alert|wc -l` -gt 0 ]
then
cat tablespace.alert > tablespace.tmp
对啊~!就是奇怪~!是不是SH脚本FOR操作系统不一样呢?我的是SUNOS脚本FOR LINUX
if [ `cat tablespace.alert|wc -l` -gt 0 ]
then
cat tablespace.alert > tablespace.tmp
mailx -s "TABLESPACE ALERT for PPRD10" $DBALIST < tablespace.tmp
fi
if [ `cat tablespace.alert|wc -l` -gt 0 ]
then
cat tablespace.alert > tablespace.tmp
fi
和单独
if [ `cat tablespace.alert|wc -l` -gt 0 ]
then
mailx -s "TABLESPACE ALERT for PPRD10" $DBALIST < tablespace.tmp
fi 都是成功的吗