1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

分享一个之前我用来巡检主机和Oracle的脚本,不过输出结果不是很美观,内容还是可以的…

主机巡检脚本:OSWatcher.sh

ps:这里的第10项,普通用户检查/var/log/messages很可能没有读权限,如有需要巡检此系统日志,建议切换root用户执行此脚本。

#!/bin/bash
echo""
######################################################################
#设置命令的路径,防止命令找不到路径
PATH=$PATH:/usr/sbin/
exportPATH
echo"thePATHis:$PATH"
######################################################################
PLATFORM=`/bin/uname`
#
######################################################################
#Createlogsubdirectoriesiftheydon'texist
######################################################################
if[!-darchive];then
mkdirarchive
fi
case$PLATFORMin
Linux)
DF='df-h'
MEMINFO='free-m'
MPSTAT='mpstat13'
TOP='evaltop-b-n1|head-50'
VMSTAT='vmstat13'
IOSTAT='iostat-d-x-k15'
PSELF='ps-elf'
BOOTLOG='tail-500/var/log/boot.log'
SYSLOG='dmesg'
MESSAGE='tail-500/var/log/messages'
;;
esac
hostn=`hostname`
hour=`date+'%m.%d.%y.%H00.dat'`
echo"`date`Collect">archive/${hostn}_$hour
######################################################################
#Testfordiscoveryofosutilities.Notifyifnotfound.
######################################################################
echo""
echo"StartingDataCollection..."
echo""
case$PLATFORMin
Linux)
$DF>/dev/null2>&1
if[$?=0];then
echo"DFfoundonyoursystem."
echo"--1.DF==========================">>archive/${hostn}_$hour
$DF>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...DFnotfoundonyoursystem."
MEMFOUND=0
fi

$MEMINFO>/dev/null2>&1
if[$?=0];then
echo"meminfofoundonyoursystem."
echo"--2.MEMINFO==========================">>archive/${hostn}_$hour
$MEMINFO>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning.../proc/meminfonotfoundonyoursystem."
MEMFOUND=0
fi

$MPSTAT>/dev/null2>&1
if[$?=0];then
echo"MPSTATfoundonyoursystem."
echo"--3.MPSTAT==========================">>archive/${hostn}_$hour
$MPSTAT>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...MPSTATnotfoundonyoursystem."
MEMFOUND=0
fi

$TOP>/dev/null2>&1
if[$?=0];then
echo"TOPfoundonyoursystem."
echo"--4.TOP==========================">>archive/${hostn}_$hour
$TOP>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...TOPnotfoundonyoursystem."
MEMFOUND=0
fi

$VMSTAT>/dev/null2>&1
if[$?=0];then
echo"VMSTATfoundonyoursystem."
echo"--5.VMSTAT==========================">>archive/${hostn}_$hour
$VMSTAT>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...VMSTATnotfoundonyoursystem."
MEMFOUND=0
fi

$IOSTAT>/dev/null2>&1
if[$?=0];then
echo"IOSTATfoundonyoursystem."
echo"--6.IOSTAT==========================">>archive/${hostn}_$hour
$IOSTAT>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...IOSTATnotfoundonyoursystem."
MEMFOUND=0
fi

$PSELF>/dev/null2>&1
if[$?=0];then
echo"PSELFfoundonyoursystem."
echo"--7.PSELF==========================">>archive/${hostn}_$hour
$PSELF>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...PSELFnotfoundonyoursystem."
MEMFOUND=0
fi

$BOOTLOG>/dev/null2>&1
if[$?=0];then
echo"BOOTLOGfoundonyoursystem."
echo"--8.BOOTLOG==========================">>archive/${hostn}_$hour
$BOOTLOG>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...BOOTLOGnotfoundonyoursystem."
MEMFOUND=0
fi

$SYSLOG>/dev/null2>&1
if[$?=0];then
echo"SYSLOGfoundonyoursystem."
echo"--9.SYSLOG==========================">>archive/${hostn}_$hour
$SYSLOG>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...SYSLOGnotfoundonyoursystem."
MEMFOUND=0
fi

$MESSAGE>/dev/null2>&1
if[$?=0];then
echo"MESSAGEfoundonyoursystem."
echo"--10.MESSAGE==========================">>archive/${hostn}_$hour
$MESSAGE>>archive/${hostn}_$hour
MEMFOUND=1
else
echo"Warning...MESSAGEnotfoundonyoursystem."
MEMFOUND=0
fi

;;
esac
echo""
echo"Discoverycompleted."
echo"Collectioncompleted."
echo"TheCollectedresultsavedin./archive/${hostn}_$hour."
echo""

Oracle巡检脚本:ORAWatcher.sh

这个是用来巡检Oracle数据库的

#!/usr/bin/ksh
echo""
echo"ORAWatcherVersion:1.0.1"
echo""
######################################################################
#数据库连接设置
######################################################################
sqlstr=$1
test$1
if[$?=1];then
echo
echo"Info...Youdidnotenteravalueforsqlstr."
echo"Info...Usingdefaultvalue=system/system"
sqlstr="system/system"
fi
######################################################################
#Createlogsubdirectoriesiftheydon'texist
######################################################################
if[!-darchive];then
mkdirarchive
fi
echo"$sqlstr"
echo"StartingDataCollection..."
echo""
######################################################################
hostn=`hostname`
hour=`date+'%m.%d.%y.%H00.dat'`
echo"`date`collect...">archive/${hostn}_oracle_$hour
######################################################################
echo"########################1.数据库版本"
echo"select''as\"--1.DatabaseVersion\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"SelectversionFROMProduct_component_version
WhereSUBSTR(PRODUCT,1,6)='Oracle';">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################2.控制文件"
echo"select''as\"--2.Controlfiles\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"selectnamefromv\$controlfile;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################3.pfile、spfile"
echo"select''as\"--3.Parameterfiles\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"showparameterpfile;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################4.字符集"
echo"select''as\"--4.DBCharacter\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"colPARAMETERfora20
colvaluefora20
select*fromv\$nls_parameterswhereparameter='NLS_CHARACTERSET';">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################5.归档状态"
echo"select''as\"--5.DBArchiveMode\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize333
showparameterlog_archive">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################6.参数设置"
echo"select''as\"--6.ParameterConfig\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize500
setpages2000
showparameter;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################7.回滚段存储位置"
echo"select''as\"--7.UndoInfo\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize500
setpages2000
SELECTSEGMENT_NAME,TABLESPACE_NAME,STATUSFROMDBA_ROLLBACK_SEGS;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################8.redolog"
echo"select''as\"--8.RedologFiles\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize200
setpages2000
colMEMBERfora50
selecta.member,a.group#,b.thread#,b.bytes,b.members,b.status
fromv\$logfilea,v\$logb
wherea.group#=b.group#;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################9.查看表空间大小及利用率"
echo"select''as\"--9.TablespaceUsage\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize200
setpages2000
colTABLESPACENAMEfora30
selectsubstr(a.TABLESPACE_NAME,1,30)TablespaceName,
sum(a.bytes/1024/1024)as\"Totle_size(M)\",
sum(nvl(b.free_space1/1024/1024,0))as\"Free_space(M)\",
sum(a.bytes/1024/1024)-sum(nvl(b.free_space1/1024/1024,0))as\"Used_space(M)\",
round((sum(a.bytes/1024/1024)-sum(nvl(b.free_space1/1024/1024,0)))
*100/sum(a.bytes/1024/1024),2)as\"Used_percent%\"fromdba_data_filesa,
(selectsum(nvl(bytes,0))free_space1,file_idfromdba_free_space
groupbyfile_id)bwherea.file_id=b.file_id(+)groupbya.TABLESPACE_NAME
orderby\"Used_percent%\";">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################10.数据文件"
echo"select''as\"--10.DBFilesInfo\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize300
setpagesize500
colfile_nameformata80
colTABLESPACE_NAMEfora30
selecttablespace_name,file_id,status,bytes/1024/1024FileSizeM,file_namefromdba_data_filesorderbytablespace_name;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################11.查看数据文件的扩展方式"
echo"select''as\"--11.DBFilesExtend\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize300
setpagesize500
colFILE_NAMEfora60
colTABLESPACE_NAMEfora30
selectfile_id,file_name,tablespace_name,autoextensible
fromdba_data_filesorderbyfile_id;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################12.查看表空间的扩展方式"
echo"select''as\"--12.TBSExtend\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize120
selectTABLESPACE_NAME,BLOCK_SIZE,EXTENT_MANAGEMENT,SEGMENT_SPACE_MANAGEMENT
fromdba_tablespaces;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################13.临时表空间"
echo"select''as\"--13.DBTempTBS\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"selectFILE_NAME,FILE_ID,TABLESPACE_NAME,BYTES/1024/1024\"BYTES(M)\",USER_BYTES/1024/1024\"USER_BYTES(M)\",statusfromdba_temp_files;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################14.用户默认表空间"
echo"select''as\"--14.UserDefaultTBS\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlines200
setpages2000
colusernamefora20
coldefault_tablespacefora30
coltemporary_tablespacefora30
selectusername,default_tablespace,temporary_tablespacefromdba_users;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################15.数据库缓冲区高速缓存命中率"
echo"select''as\"--15.DBCacheHit\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"select1-(phy.value/(cur.value+con.value))
fromv\$sysstatcur,v\$sysstatcon,v\$sysstatphy
wherecur.name='dbblockgets'
andcon.name='consistentgets'
andphy.name='physicalreads';">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################16.重写不等待比率"
echo"select''as\"--16.Redonowaits\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"select(req.value*5000)/entries.value
fromv\$sysstatreq,v\$sysstatentries
wherereq.name='redologspacerequests'
andentries.name='redoentires';">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################17.库高速缓存命中率"
echo"select''as\"--17.LibraryCacheHit\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"selectnamespace,gethitratiofromv\$librarycache;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################18.数据字典高速缓存Getmisses对gets的目标比例"
echo"select''as\"--18.DBDiccache\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"selectsum(getmisses)/sum(gets)fromv\$rowcache;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################19.用户对像(表、索引、大小)"
echo"select''as\"--19.Userobjects\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"colOWNERfora30
colSEGMENT_NAMEfora33
colPARTITION_NAMEfora22
colSEGMENT_TYPEfora11
colTABLESPACE_NAMEfora30
setlines333
setpages5000
selectOWNER,SEGMENT_NAME,PARTITION_NAME,SEGMENT_TYPE,TABLESPACE_NAME,bytes/1024/1024astable_size_M
fromDba_SegmentswhereSEGMENT_TYPE='TABLE'orderbyOWNER;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour

echo"########################20.检查是否有失效的索引"
echo"select''as\"--20.CheckinvalidInd\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlines333
setpages50
selectindex_name,owner,status,tablespace_name
fromdba_indexes
whereownernotin('SYS','SYSTEM')
andstatus!='VALID'
andtablespace_nameisnotnull
unionall
selectindex_name,index_ownerowner,status,tablespace_name
fromdba_ind_partitions
whereindex_ownernotin('SYS','SYSTEM')
andstatus<>'USABLE'
andtablespace_nameisnotnull;
select''asafromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################21.检查数据库会话连接占用率"
echo"select''as\"--21.CheckDBSessions\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"colTOT_SESSIONSfora15
selectcur_sessions,tot_sessions,a.cur_sessions/b.tot_sessions*100\"sessionsused%\"
from(selectcount(*)cur_sessionsfromv\$session)a,
(selectvaluetot_sessionsfromv\$parameterwherename='sessions')b;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################22.检查数据库会话连接历史最高值"
echo"select''as\"--22.HighwaterofSession\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"selectHIGHWATER
fromdba_high_water_mark_statistics
wherename='SESSIONS';">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"########################23.检查数据库Job状态"
echo"select''as\"--23.CheckStatusofJob\"fromdual;">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
echo"setlinesize333
colwhatfora30
colNEXT_DATEfora30
colINTERVALfora30
selectjob,what,next_date,INTERVAL,BROKEN
fromdba_jobs
whereBROKEN!='N';">my_sql.sql
sqlplus$sqlstr<my_sql.sql>>archive/${hostn}_oracle_$hour
######################################################################
echo"Collectioncompleted."
echo"TheCollectedresultsavedin./archive/${hostn}_oracle_$hour."
echo""

脚本使用

1. 创建目录并授权

#mkdir-p/home/oracle/scripts
#chown-Roracle.oinstall/home/oracle/scripts/
#chmod-R755/home/oracle/scripts/

分析两个主机和Oracle数据库巡检脚本,值得收藏

分析两个主机和Oracle数据库巡检脚本,值得收藏

2. 两脚本都用oracle用户执行

切换到oracle用户,执行两个脚本:

$./OSWatcher.sh
$./ORAWatcher.sh

分析两个主机和Oracle数据库巡检脚本,值得收藏

分析两个主机和Oracle数据库巡检脚本,值得收藏

3. 查看巡检内容

分析两个主机和Oracle数据库巡检脚本,值得收藏

分析两个主机和Oracle数据库巡检脚本,值得收藏

注意:ORAWatcher.sh脚本中数据库的默认连接串是:system/system,如果system密码不是这个,可以这样执行:./ORAWatcher.sh system/password

本文来源:1818IP

本文地址:https://www.1818ip.com/post/10879.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。