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

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

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

开始介绍:

1.环境sentos6\7、redhat6

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

3.修改脚本文件权限:

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

4.vim ORA_check.sh

#!/usr/bin/ksh
echo ""
echo "ORAWatcher Version:1.0.1"
echo ""
#Create Time:--
#Update Time:--
######################################################################
#数据库连接设置
######################################################################
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,,)='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 for a20
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
show 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
SELECT 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
col MEMBER for a50
select a.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
col TABLESPACENAME for a30
select substr(a.TABLESPACE_NAME,,) TablespaceName,
sum(a.bytes//) as \"Totle_size(M)\",
sum(nvl(b.free_space1//,)) as \"Free_space(M)\",
sum(a.bytes//)-sum(nvl(b.free_space1//,)) as \"Used_space(M)\",
round((sum(a.bytes//)-sum(nvl(b.free_space1//,)))
*/sum(a.bytes//),) 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
col file_name format a80
col TABLESPACE_NAME for a30
select tablespace_name,file_id,status,bytes// 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
col FILE_NAME for a60
col TABLESPACE_NAME for a30
select file_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
select TABLESPACE_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
col username for a20
col default_tablespace for a30
col temporary_tablespace for a30
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 for a33
col PARTITION_NAME for a22
col SEGMENT_TYPE for a11
col TABLESPACE_NAME for a30
set lines
set pages
select OWNER ,SEGMENT_NAME,PARTITION_NAME,SEGMENT_TYPE,TABLESPACE_NAME,bytes// as 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
select index_name, owner, status, tablespace_name
from dba_indexes
where owner not in('SYS','SYSTEM')
and status != 'VALID'
and tablespace_name is not null
union all
select index_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* \"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 for a30
col NEXT_DATE for a30
col INTERVAL for a30
select job, 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.

Please input system passwd: ipii314
Starting ... ######################## .数据库版本
######################## .控制文件
######################## .pfile、spfile
######################## .字符集
######################## .归档状态
######################## .参数设置
######################## .回滚段存储位置
######################## .redolog
######################## .查看表空间大小及利用率
######################## .数据文件
######################## .查看数据文件的扩展方式
######################## .查看表空间的扩展方式
######################## .临时表空间
######################## .用户默认表空间
######################## .数据库缓冲区高速缓存命中率
######################## .重写不等待比率
######################## .库高速缓存命中率
######################## .数据字典高速缓存Getmisses对gets的目标比例
######################## .用户对像(表、索引、大小)
######################## .检查是否有失效的索引
######################## .检查数据库会话连接占用率
######################## .检查数据库会话连接历史最高值
######################## .检查数据库Job状态
Check completed.
The Collected result saved in /home/oracle/checkdir/archive/rac2_oracle_2017--14_22:.log. //巡检结果保存位置
 

Linux上的oracle巡检脚本的更多相关文章

  1. 在 linux 上运行 oracle sql脚本

    方法一 su - oracle  //切换到oracle用户模式下 sqlplus /nolog  //登录sqlplus connect /as sysdba; //连接orcale @sql脚本路 ...

  2. 数据库系统入门 | Oracle Linux上部署Oracle 11g服务,并实现SSH远程登录管理

    文章目录 写在前面 一.实验内容 二.实验前期准备 1.软件目录 2.准备一些配置文件.脚本文件 三.实验方案(具体步骤) (一)在虚拟机上安装Oracle Linux (二)在Linux上安装Ora ...

  3. Oracle巡检脚本:ORAWatcher.sh

    Oracle巡检脚本:ORAWatcher.sh #!/usr/bin/ksh echo "" echo "ORAWatcher Version:1.0.1" ...

  4. linux上备份Oracle时EXP-00091的错误解决方法

    unix/linux上备份Oracle时EXP-00091的错误解决方法 unix/linux上备份数据时的错误解决方法 EXP-00091: Exporting questionable stati ...

  5. linux上安装oracle

    Linux上安装Oracle 10g:  http://69520.blog.51cto.com/59520/91156

  6. [转载]linux上安装oracle

    原文地址:linux上安装oracle作者:天涯恨客 1.创建oinstall组 [root@xieqing ~]# groupadd oinstall 创建dba组 [root@xieqing ~] ...

  7. DBA_在Linux上安装Oracle Database11g数据库(案例)

    2014-08-08 Created By BaoXinjian

  8. 在Linux上安装Oracle RAC 12 c(12.1) 虚拟机,一步一步向导

    Oracle RAC 12 c(12.1)在Linux上安装虚拟机,一步一步向导 今天我们将看到如何安装 12 c版本1 RAC(真正的应用程序集群)数据库2 Linux 64位的虚拟机 使用VMWa ...

  9. Linux上安装Oracle的教程-centos7

    一.安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组   [humf@localhost ~]$ su root #切换到root   Password:   [root@lo ...

随机推荐

  1. iOS 聊天表情键盘

    具体思路 通过UIKeyboardWillChangeFrameNotification通知,监听键盘的改变,同时可以得到键盘的Frame和动画的持续时间, 新建键盘顶部工具条YSComposeToo ...

  2. iOS 设计模式-NSNotificationCenter 通知中心

    通知介绍 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以向通知中心发布通知(NSNotification),描述 ...

  3. 记录一则ORA-600 [13011]错误

    环境:Solaris 10 + Oracle 11.2.0.1 现象:alert告警日志定期出现ORA-600 [13011]错误 1.故障现象 2.初步分析 3.匹配MOS 4.定位解决 1.故障现 ...

  4. 大数据项目(MTDAP)随想

    Spark MLlib进行example测试的时候,总是编译不通过,报少包<Spark MLlib NoClassDefFoundError: org/apache/spark/ml/param ...

  5. windows Server2012 IIS8.0配置安装完整教程

    IIS8.0是windows Server2012自带的服务器管理系统,和以往不同,IIS8.0安装和操作都比较简单,界面很简洁,安装也很迅速.今天我们重点完整的演示下Internet Informa ...

  6. jar包的读取1

    ---恢复内容开始--- 昨天在做项目插件的时候,因为会用到jar包中的一个文件来初始化程序.并且以后还是会访问这个文件,所以就想到干脆吧文件拷贝到指定目录.在拷贝的时候也费了好一会时间,这里涉及到了 ...

  7. 环形数组 最大子段和 dp

    题目链接:https://nanti.jisuanke.com/t/36118 环形数组的连续最大子段和,有两种情况. 1.最大和的这个子段没有包含头尾.所以直接dp[i] = max(dp[i-1] ...

  8. 未能正确加载“EditorPackage”包(转)

    打开vs2012加载项目的时候报如下的错误: 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包.此问题可能是由配置 ...

  9. jQuery筛选--first()和last()

       first() 概述 获取匹配的第一个元素    last() 概述 获取匹配的最后个元素 <!DOCTYPE html> <html> <head> < ...

  10. django中orm的批量操作

    ORM批量操作 数据模型定义 from django.db import models class Product(models.Model): name = models.CharField(max ...