Linux上的oracle巡检脚本

摘要:
开始介绍:1.环境sentos67、redhat62.可以将脚本放至/home/oracle/checkdir/ORA_check.sh3.修改脚本文件权限:#chown-Roracle:dba/var/ORA_check.sh#chmodu+xORA_check.sh4.vimORA_check.sh#!

修改自大神博客:http://www.cnblogs.com/jyzhao/p/5364049.html

脚本巡检的优化:自动化,节省时间。

脚本需加强:巡检结果中有大量的sqlplus连接信息,后期考虑用shell只过滤出有用信息,优化查看。

开始介绍:

1.环境sentos67、redhat6

2.可以将脚本放至/home/oracle/checkdir/ORA_check.sh

3.修改脚本文件权限:

# chown -R oracle:dba /var/ORA_check.sh
# chmod u+x ORA_check.sh

4.vimORA_check.sh

#!/usr/bin/ksh
echo ""
echo "ORAWatcher Version:1.0.1"
echo ""#Create Time:2016-04-08#Update Time:2017-12-14######################################################################
#数据库连接设置
######################################################################
read -p "Please input system passwd: "DBApasswd
sqlstr=system/$DBApasswd

######################################################################
# Create log subdirectories if they don't exist
######################################################################
archive=/home/oracle/checkdir/archive
if [ ! -d $archive ]; then
        mkdir$archive
fi

echo "Starting ..."
echo ""######################################################################
hostn=`hostname`
CKtime=`date +%F_%H:%M.log`
echo "CHECK_TIME: $CKtime ">$archive/${hostn}_oracle_$CKtime
######################################################################


echo "########################  1.数据库版本"
echo "--1.Database Version" >>$archive/${hostn}_oracle_$CKtime
echo "Select version FROM Product_component_version
Where SUBSTR(PRODUCT,1,6)='Oracle';">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  2.控制文件"
echo "--2.Control files" >>$archive/${hostn}_oracle_$CKtime
echo "select name from v$controlfile;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  3.pfile、spfile"
echo "--3.Parameter files" >>$archive/${hostn}_oracle_$CKtime
echo "show parameter pfile;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  4.字符集"
echo "--4.DB Character" >>$archive/${hostn}_oracle_$CKtime
echo "col PARAMETER for a20
col value fora20
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  5.归档状态"
echo "--5.DB Archive Mode" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 333
show parameter log_$archive">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  6.参数设置"
echo "--6.Parameter Config" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 500
set pages 2000show parameter;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  7.回滚段存储位置"
echo "--7.Undo Info" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 500
set pages 2000SELECT SEGMENT_NAME, TABLESPACE_NAME, STATUS FROM DBA_ROLLBACK_SEGS;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  8.redolog"
echo "--8.Redolog Files" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 200
set pages 2000col MEMBER fora50
selecta.member,a.group#,b.thread#,b.bytes,b.members,b.status
from v$logfile a,v$log b
where a.group#=b.group#;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  9.查看表空间大小及利用率"
echo "--9.Tablespace Usage" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 200
set pages 2000col TABLESPACENAME fora30
select substr(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%" from dba_data_files a,(select sum(nvl(bytes,0)) free_space1,file_id from dba_free_space
group by file_id) b where a.file_id = b.file_id(+) group by a.TABLESPACE_NAME
order by "Used_percent%";" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  10.数据文件"
echo "--10.DB Files Info" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 300
SEt pagesize 500col file_name format a80
col TABLESPACE_NAME fora30
select tablespace_name,file_id,status,bytes/1024/1024 FileSizeM,file_name from dba_data_files order by tablespace_name;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  11.查看数据文件的扩展方式"
echo "--11.DB Files Extend" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 300
set pagesize 500col FILE_NAME fora60
col TABLESPACE_NAME fora30
selectfile_id,file_name,tablespace_name,autoextensible
from dba_data_files order by file_id;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  12.查看表空间的扩展方式"
echo "--12.TBS Extend" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 120
selectTABLESPACE_NAME, BLOCK_SIZE, EXTENT_MANAGEMENT, SEGMENT_SPACE_MANAGEMENT
from dba_tablespaces;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  13.临时表空间"
echo "--13.DB Temp TBS" >>$archive/${hostn}_oracle_$CKtime
echo "select FILE_NAME, FILE_ID, TABLESPACE_NAME, BYTES/1024/1024 "BYTES(M)", USER_BYTES/1024/1024 "USER_BYTES(M)", status from dba_temp_files;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  14.用户默认表空间"
echo "--14.User Default TBS" >>$archive/${hostn}_oracle_$CKtime
echo "set lines 200
set pages 2000col username fora20
col default_tablespace fora30
col temporary_tablespace fora30
select username, default_tablespace, temporary_tablespace from dba_users;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  15.数据库缓冲区高速缓存命中率"
echo "--15.DB Cache Hit" >>$archive/${hostn}_oracle_$CKtime
echo "select 1-(phy.value/(cur.value+con.value))
from v$sysstat cur, v$sysstat con, v$sysstat phy
where cur.name = 'db block gets'and con.name = 'consistent gets'and phy.name = 'physical reads';">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  16.重写不等待比率"
echo "--16.Redo nowaits" >>$archive/${hostn}_oracle_$CKtime
echo "select (req.value*5000)/entries.value
from v$sysstat req,v$sysstat entries
where req.name = 'redo log space requests'and entries.name = 'redo entires';">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  17.库高速缓存命中率"
echo "--17.Library Cache Hit" >>$archive/${hostn}_oracle_$CKtime
echo "select namespace,gethitratio from v$librarycache;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  18.数据字典高速缓存Getmisses对gets的目标比例"
echo "--18.DB Dic cache" >>$archive/${hostn}_oracle_$CKtime
echo "select sum(getmisses)/sum(gets) from v$rowcache;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  19.用户对像(表、索引、大小)"
echo "--19.User objects" >>$archive/${hostn}_oracle_$CKtime
echo "col OWNER for a30
col SEGMENT_NAME fora33
col PARTITION_NAME fora22
col SEGMENT_TYPE fora11
col TABLESPACE_NAME fora30
set lines 333set pages 5000
select OWNER ,SEGMENT_NAME,PARTITION_NAME,SEGMENT_TYPE,TABLESPACE_NAME,bytes/1024/1024as table_size_M
from  Dba_Segments where SEGMENT_TYPE='TABLE' order by OWNER;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  20.检查是否有失效的索引"
echo "--20.Check invalid Ind" >>$archive/${hostn}_oracle_$CKtime
echo "set lines 333
set pages 50
selectindex_name, owner, status, tablespace_name
 from dba_indexes
 where owner not in('SYS','SYSTEM')
 and status != 'VALID'and tablespace_name is not nullunion all
selectindex_name, index_owner owner, status, tablespace_name
 from dba_ind_partitions
 where index_owner not in ('SYS','SYSTEM')
 and status <> 'USABLE'and tablespace_name is not null;
select '' as a from dual;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  21.检查数据库会话连接占用率"
echo "--21.Check DB Sessions" >>$archive/${hostn}_oracle_$CKtime
echo "col TOT_SESSIONS for a15
select cur_sessions, tot_sessions, a.cur_sessions/b.tot_sessions*100 "sessions used%"
from (select count(*) cur_sessions from v$session) a,
(select value tot_sessions from v$parameter where name = 'sessions') b;">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime


echo "########################  22.检查数据库会话连接历史最高值"
echo "--22.Highwater of Session" >>$archive/${hostn}_oracle_$CKtime
echo "select HIGHWATER
from dba_high_water_mark_statistics
 where name = 'SESSIONS';">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime

echo "########################  23.检查数据库Job状态"
echo "--23.Check Status of Job" >>$archive/${hostn}_oracle_$CKtime
echo "set linesize 333
col what fora30
col NEXT_DATE fora30
col INTERVAL fora30
selectjob, what, next_date, INTERVAL, BROKEN
 from dba_jobs
 where BROKEN != 'N';">my_sql.sql
sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
echo "">>$archive/${hostn}_oracle_$CKtime
#####################################################################

echo "Check completed."
echo "The Collected result saved in $archive/${hostn}_oracle_$CKtime."
echo ""

执行过程:

[oracle@rac2 checkdir]$ sh ORA_check.sh
ORAWatcher Version:1.0.1
Please input system passwd: ipii314
Starting ...

########################  1.数据库版本
########################  2.控制文件
########################  3.pfile、spfile
########################  4.字符集
########################  5.归档状态
########################  6.参数设置
########################  7.回滚段存储位置
########################  8.redolog
########################  9.查看表空间大小及利用率
########################  10.数据文件
########################  11.查看数据文件的扩展方式
########################  12.查看表空间的扩展方式
########################  13.临时表空间
########################  14.用户默认表空间
########################  15.数据库缓冲区高速缓存命中率
########################  16.重写不等待比率
########################  17.库高速缓存命中率
########################  18.数据字典高速缓存Getmisses对gets的目标比例
########################  19.用户对像(表、索引、大小)
########################  20.检查是否有失效的索引
########################  21.检查数据库会话连接占用率
########################  22.检查数据库会话连接历史最高值
########################  23.检查数据库Job状态
Check completed.
The Collected result saved in /home/oracle/checkdir/archive/rac2_oracle_2017-12-14_22:56.log.     //巡检结果保存位置

免责声明:文章转载自《Linux上的oracle巡检脚本》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇电子词典的服务器端程序ubuntu字符界面怎么设置中文显示和中文输入下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

thinkphp数据查询方法总结select ,find,getField,query

thinkphp已经封装好了常用的查询方法,且都比较实用,对于不常用的查询框架也保留了原始查询方法query。 1 2 $Model=newModel()//实例化一个model对象没有对应任何数据表 $Model->query("select*fromthink_userwherestatus=1"); 如果刚学Thinkph...

Linux系统glibc库版本信息查看

有时我们经常需要查看当前系统的glibc版本,可以这样查看: /lib/libc.so.6 有时:/lib/x86-64-linux/libc.so.6 把这个文件当命令执行一下   为什么这个库可以直接run呢? 原来在libc的代码中有一点小手脚: Makerules:586:LDFLAGS-c.so += -e __libc_main  cs...

【转】oracle odp.net 32位/64位版本的问题

参考资料:http://www.cnblogs.com/yjmyzz/archive/2011/04/19/2020793.html 如果你的机器上安装了odp.net,且确信machine.config也有类似以下结节:(64位+.net 4.0环境下,machine.config可能会有4份,分别对应于.net2.0/4.0的32/64位版本,要每个...

kvm虚拟化介绍(1)

一、什么是虚拟化 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。 虚拟化,也就是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个...

Linux Tips: 使用dd制作Ubuntu系统的安装盘

找到U盘的分区 sudo fdisk -l 卸载U盘 # 假设U盘的挂载是/dev/sdc1 sudo umount /dev/sdc1 格式化U盘 # 假设U盘是/dev/sdc,注意这里是“sdc”不带“1” sudo mkfs.vfat -I /dev/sdc 写入镜像 # 注意这里也是“sdc”不带“1” sudo dd if...

LInux下修改 ~/.bashrc 文件source ~/.bashrc 后 shell 命令 失效 任何命令都显示 “ bash XX :未找到命令”

原因:在java安装后进行环境变量配置其中 exportJAVA_HOME="/opt/java/jdk1.8" export PATH=$JAVA_HOME 即结束 错误原因:export PATH=$JAVA_HOME 正确: export PATH=$PATH:$JAVA_HOME $PATH 表示linux系统自带的命令参数路径,丢失。即出现:未找...