單個指令碼監控主機上所有例項的表空間利用率
藉助一個檔案,存放ps –ef | grep pmon的輸出
[test]:/orasw/dba>more /orasw/dba/scripts/ db_running.log
oracle 8922 1 0 Dec 17 ? 10:48 ora_pmon_spw2005p
oracle 13535 1 0 Dec 17 ? 10:00 ora_pmon_mstrmd1p
oracle 28599 1 0 Dec 19 ? 10:39 ora_pmon_tsr2008p
oracle 7561 1 0 Dec 17 ? 11:57 ora_pmon_asa2p
oracle 6756 1 0 Dec 17 ? 11:53 ora_pmon_tsr2009p
oracle 12041 1 0 Dec 17 ? 11:01 ora_pmon_spw06p
oracle 6737 1 0 Dec 17 ? 10:57 ora_pmon_spw2003p
oracle 16046 1 0 Dec 17 ? 12:32 ora_pmon_crs2007t
oracle 5002 1 0 Dec 19 ? 10:04 ora_pmon_smart3p
shell指令碼
1 遍歷該檔案,將sid取出
2 遍歷sid 列表,分別執行檢查表空間sql指令碼,並將結果傳送給相關人員
#!/bin/ksh
db_name=`cat /orasw/dba/scripts/ db_running.log|awk 'BEGIN { FS = "_" } ; { print $3 }'|sed '/^$/d'`
echo $db_name
for k in $db_name
do
h=`ps -ef | grep pmon | grep -c $k`
echo $k
ORACLE_SID=$k; export ORACLE_SID
ORAENV_ASK=NO
. oraenv
#. oraenv
export ORACLE_HOME
# Set threshhold limit for tablespace to send alert
#
export threshold=70
export script_dir=/orasw/dba/scripts/
rm -rf $script_dir/${k}_ts.rpt
rm -rf $script_dir/${k}_chk_ts.out
cut_of_pt=$threshold
tmp_file=$script_dir/${k}_chk_ts.out
ts_stat_rpt=$script_dir/${k}_ts.rpt
sqlplus -s '/ as sysdba' @$script_dir/chk_ts.sql >> $ts_stat_rpt <<-EOF
exit
EOF
echo "TABLESPACE_NAME PCT_USED(%)" > $tmp_file
echo "-----------------------------" >> $tmp_file
cat $ts_stat_rpt | awk '{
if (int($2) > int("'$cut_of_pt'"))
print $0
}' >> $tmp_file
echo "----------------------------------" >> $ts_stat_rpt
if test -s $tmp_file
then
subject="Below TableSpaces crossed threshold limits of $cut_of_pt in $k. Please take immediate action."
echo $subject
mailx -s "$subject" < $tmp_file
fi
done
相應sql指令碼
bash-3.2$ more chk_ts.sql
set lines 120
set pages 100
set echo off
set feedback off
set head off
col PCT_USED format a10
col tablespace_name format a20
(select t.tablespace_name tablespace_name,TO_CHAR((1 - DECODE(tsf.bytes, NULL, tsa.bytes, tsf.bytes) / tsa.bytes) * 100, '990') PCT_USED
from sys.dba_tablespaces t, sys.sm$ts_avail tsa, sys.sm$ts_free tsf
where t.tablespace_name = tsa.tablespace_name and t.tablespace_name = tsf.tablespace_name (+)
)
union
(SELECT D.TABLESPACE_NAME TABLESPACE_NAME, TO_CHAR(DECODE(A.SUM_ALLOCATE, NULL, 0, NVL(T.SUM_USED, 0) / A.SUM_ALLOCATE * 100), '990') PCT_USED
FROM DBA_TABLESPACES D,
(SELECT TABLESPACE_NAME, SUM(BYTES) SUM_ALLOCATE FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME) A,
(SELECT TABLESPACE_NAME, SUM(BYTES_CACHED) SUM_USED FROM V$TEMP_EXTENT_POOL GROUP BY TABLESPACE_NAME) T
WHERE D.TABLESPACE_NAME = A.TABLESPACE_NAME(+)
AND D.TABLESPACE_NAME = T.TABLESPACE_NAME(+)
AND D.EXTENT_MANAGEMENT = 'LOCAL' AND D.CONTENTS = 'TEMPORARY'
)
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2148914/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 監控oracle表空間指令碼Oracle指令碼
- 監控硬碟空間指令碼硬碟指令碼
- oracle空間使用監控指令碼Oracle指令碼
- 常用的主機監控shell指令碼指令碼
- LINUX主機監控指令碼Linux指令碼
- 我常用的主機監控Shell指令碼指令碼
- TenSunS監控REDIS:使用一個redis_exporter監控所有的Redis例項RedisExport
- 自動監控Oracle 表空間資訊併傳送郵件指令碼Oracle指令碼
- oracle表空間增加監控Oracle
- nagios監控linux主機監控記憶體指令碼iOSLinux記憶體指令碼
- zabbix監控單例項redis單例Redis
- 表空間監控(三)tablespace detailAI
- Sybase空間監控指令碼 btmbfe_sybase_space_use.sh指令碼
- mysql 的一個監控指令碼,監控heartbeatMySql指令碼
- TenSunS監控Mysql:如何優雅的使用一個mysqld_exporter監控所有的MySQL例項MySqlExport
- oracle sql 表空間利用率OracleSQL
- 移動表空間的指令碼指令碼
- 表空間監控(二)datafile size detailAI
- mysql mon 的一個監控指令碼,監控heartbeatMySql指令碼
- 單例項和RAC下建立表空間的小區別單例
- js驗證表單項是否為空例項程式碼JS
- 監控和管理Oracle UNDO表空間的使用Oracle
- python監控mysql主從指令碼PythonMySql指令碼
- javascript名稱空間使用簡單程式碼例項JavaScript
- 備份表空間並上傳磁帶庫的指令碼指令碼
- oracle監控表空間,JOB,rman備份Oracle
- linux監控,單行指令碼Linux指令碼
- nagios監控例項 -- PostgreSQL監控iOSSQL
- Shell指令碼監控MySQL主從狀態指令碼MySql
- 指令碼建立表空間、使用者、表指令碼
- 2 Day DBA-管理Oracle例項-修改表空間-刪除表空間Oracle
- 監控指令碼指令碼
- 透過xtts遷移單例項檔案系統表空間到RAC ASM儲存表空間TTS單例ASM
- 通過xtts遷移單例項檔案系統表空間到RAC ASM儲存表空間TTS單例ASM
- 雲監控最佳實踐之-容器所有例項的熱力圖
- 【SQL監控】SQL完全監控的指令碼SQL指令碼
- 根據源庫表空間實際使用建立表空間指令碼指令碼
- 2 Day DBA-管理Oracle例項-修改表空間-使表空間離線Oracle