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

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

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

开始介绍:

1.环境sentos6\7、redhat6

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

3.修改脚本文件权限:

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

4.vim ORA_check.sh

  1. #!/usr/bin/ksh
  2. echo ""
  3. echo "ORAWatcher Version:1.0.1"
  4. echo ""
  5. #Create Time:--
  6. #Update Time:--
  7. ######################################################################
  8. #数据库连接设置
  9. ######################################################################
  10. read -p "Please input system passwd: " DBApasswd
  11. sqlstr=system/$DBApasswd
  12.  
  13. ######################################################################
  14. # Create log subdirectories if they don't exist
  15. ######################################################################
  16. archive=/home/oracle/checkdir/archive
  17. if [ ! -d $archive ]; then
  18. mkdir $archive
  19. fi
  20.  
  21. echo "Starting ..."
  22. echo ""
  23. ######################################################################
  24. hostn=`hostname`
  25. CKtime=`date +%F_%H:%M.log`
  26. echo "CHECK_TIME: $CKtime ">$archive/${hostn}_oracle_$CKtime
  27. ######################################################################
  28.  
  29. echo "######################## 1.数据库版本"
  30. echo "--1.Database Version" >>$archive/${hostn}_oracle_$CKtime
  31. echo "Select version FROM Product_component_version
  32. Where SUBSTR(PRODUCT,,)='Oracle';" >my_sql.sql
  33. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  34. echo "" >>$archive/${hostn}_oracle_$CKtime
  35.  
  36. echo "######################## 2.控制文件"
  37. echo "--2.Control files" >>$archive/${hostn}_oracle_$CKtime
  38. echo "select name from v\$controlfile;" >my_sql.sql
  39. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  40. echo "" >>$archive/${hostn}_oracle_$CKtime
  41.  
  42. echo "######################## 3.pfile、spfile"
  43. echo "--3.Parameter files" >>$archive/${hostn}_oracle_$CKtime
  44. echo "show parameter pfile;" >my_sql.sql
  45. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  46. echo "" >>$archive/${hostn}_oracle_$CKtime
  47.  
  48. echo "######################## 4.字符集"
  49. echo "--4.DB Character" >>$archive/${hostn}_oracle_$CKtime
  50. echo "col PARAMETER for a20
  51. col value for a20
  52. select * from v\$nls_parameters where parameter='NLS_CHARACTERSET';" >my_sql.sql
  53. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  54. echo "" >>$archive/${hostn}_oracle_$CKtime
  55.  
  56. echo "######################## 5.归档状态"
  57. echo "--5.DB Archive Mode" >>$archive/${hostn}_oracle_$CKtime
  58. echo "set linesize 333
  59. show parameter log_$archive" >my_sql.sql
  60. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  61. echo "" >>$archive/${hostn}_oracle_$CKtime
  62.  
  63. echo "######################## 6.参数设置"
  64. echo "--6.Parameter Config" >>$archive/${hostn}_oracle_$CKtime
  65. echo "set linesize 500
  66. set pages
  67. show parameter;" >my_sql.sql
  68. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  69. echo "" >>$archive/${hostn}_oracle_$CKtime
  70.  
  71. echo "######################## 7.回滚段存储位置"
  72. echo "--7.Undo Info" >>$archive/${hostn}_oracle_$CKtime
  73. echo "set linesize 500
  74. set pages
  75. SELECT SEGMENT_NAME, TABLESPACE_NAME, STATUS FROM DBA_ROLLBACK_SEGS;" >my_sql.sql
  76. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  77. echo "" >>$archive/${hostn}_oracle_$CKtime
  78.  
  79. echo "######################## 8.redolog"
  80. echo "--8.Redolog Files" >>$archive/${hostn}_oracle_$CKtime
  81. echo "set linesize 200
  82. set pages
  83. col MEMBER for a50
  84. select a.member,a.group#,b.thread#,b.bytes,b.members,b.status
  85. from v\$logfile a,v\$log b
  86. where a.group#=b.group#;" >my_sql.sql
  87. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  88. echo "" >>$archive/${hostn}_oracle_$CKtime
  89.  
  90. echo "######################## 9.查看表空间大小及利用率"
  91. echo "--9.Tablespace Usage" >>$archive/${hostn}_oracle_$CKtime
  92. echo "set linesize 200
  93. set pages
  94. col TABLESPACENAME for a30
  95. select substr(a.TABLESPACE_NAME,,) TablespaceName,
  96. sum(a.bytes//) as \"Totle_size(M)\",
  97. sum(nvl(b.free_space1//,)) as \"Free_space(M)\",
  98. sum(a.bytes//)-sum(nvl(b.free_space1//,)) as \"Used_space(M)\",
  99. round((sum(a.bytes//)-sum(nvl(b.free_space1//,)))
  100. */sum(a.bytes//),) as \"Used_percent%\" from dba_data_files a,(select sum(nvl(bytes,0)) free_space1,file_id from dba_free_space
  101. group by file_id) b where a.file_id = b.file_id(+) group by a.TABLESPACE_NAME
  102. order by \"Used_percent%\";" >my_sql.sql
  103. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  104. echo "" >>$archive/${hostn}_oracle_$CKtime
  105.  
  106. echo "######################## 10.数据文件"
  107. echo "--10.DB Files Info" >>$archive/${hostn}_oracle_$CKtime
  108. echo "set linesize 300
  109. SEt pagesize
  110. col file_name format a80
  111. col TABLESPACE_NAME for a30
  112. select tablespace_name,file_id,status,bytes// FileSizeM,file_name from dba_data_files order by tablespace_name;" >my_sql.sql
  113. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  114. echo "" >>$archive/${hostn}_oracle_$CKtime
  115.  
  116. echo "######################## 11.查看数据文件的扩展方式"
  117. echo "--11.DB Files Extend" >>$archive/${hostn}_oracle_$CKtime
  118. echo "set linesize 300
  119. set pagesize
  120. col FILE_NAME for a60
  121. col TABLESPACE_NAME for a30
  122. select file_id,file_name,tablespace_name,autoextensible
  123. from dba_data_files order by file_id;" >my_sql.sql
  124. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  125. echo "" >>$archive/${hostn}_oracle_$CKtime
  126.  
  127. echo "######################## 12.查看表空间的扩展方式"
  128. echo "--12.TBS Extend" >>$archive/${hostn}_oracle_$CKtime
  129. echo "set linesize 120
  130. select TABLESPACE_NAME, BLOCK_SIZE, EXTENT_MANAGEMENT, SEGMENT_SPACE_MANAGEMENT
  131. from dba_tablespaces;" >my_sql.sql
  132. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  133. echo "" >>$archive/${hostn}_oracle_$CKtime
  134.  
  135. echo "######################## 13.临时表空间"
  136. echo "--13.DB Temp TBS" >>$archive/${hostn}_oracle_$CKtime
  137. 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
  138. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  139. echo "" >>$archive/${hostn}_oracle_$CKtime
  140.  
  141. echo "######################## 14.用户默认表空间"
  142. echo "--14.User Default TBS" >>$archive/${hostn}_oracle_$CKtime
  143. echo "set lines 200
  144. set pages
  145. col username for a20
  146. col default_tablespace for a30
  147. col temporary_tablespace for a30
  148. select username, default_tablespace, temporary_tablespace from dba_users;" >my_sql.sql
  149. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  150. echo "" >>$archive/${hostn}_oracle_$CKtime
  151.  
  152. echo "######################## 15.数据库缓冲区高速缓存命中率"
  153. echo "--15.DB Cache Hit" >>$archive/${hostn}_oracle_$CKtime
  154. echo "select 1-(phy.value/(cur.value+con.value))
  155. from v\$sysstat cur, v\$sysstat con, v\$sysstat phy
  156. where cur.name = 'db block gets'
  157. and con.name = 'consistent gets'
  158. and phy.name = 'physical reads';" >my_sql.sql
  159. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  160. echo "" >>$archive/${hostn}_oracle_$CKtime
  161.  
  162. echo "######################## 16.重写不等待比率"
  163. echo "--16.Redo nowaits" >>$archive/${hostn}_oracle_$CKtime
  164. echo "select (req.value*5000)/entries.value
  165. from v\$sysstat req,v\$sysstat entries
  166. where req.name = 'redo log space requests'
  167. and entries.name = 'redo entires';" >my_sql.sql
  168. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  169. echo "" >>$archive/${hostn}_oracle_$CKtime
  170.  
  171. echo "######################## 17.库高速缓存命中率"
  172. echo "--17.Library Cache Hit" >>$archive/${hostn}_oracle_$CKtime
  173. echo "select namespace,gethitratio from v\$librarycache;" >my_sql.sql
  174. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  175. echo "" >>$archive/${hostn}_oracle_$CKtime
  176.  
  177. echo "######################## 18.数据字典高速缓存Getmisses对gets的目标比例"
  178. echo "--18.DB Dic cache" >>$archive/${hostn}_oracle_$CKtime
  179. echo "select sum(getmisses)/sum(gets) from v\$rowcache;" >my_sql.sql
  180. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  181. echo "" >>$archive/${hostn}_oracle_$CKtime
  182.  
  183. echo "######################## 19.用户对像(表、索引、大小)"
  184. echo "--19.User objects" >>$archive/${hostn}_oracle_$CKtime
  185. echo "col OWNER for a30
  186. col SEGMENT_NAME for a33
  187. col PARTITION_NAME for a22
  188. col SEGMENT_TYPE for a11
  189. col TABLESPACE_NAME for a30
  190. set lines
  191. set pages
  192. select OWNER ,SEGMENT_NAME,PARTITION_NAME,SEGMENT_TYPE,TABLESPACE_NAME,bytes// as table_size_M
  193. from Dba_Segments where SEGMENT_TYPE='TABLE' order by OWNER;" >my_sql.sql
  194. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  195. echo "" >>$archive/${hostn}_oracle_$CKtime
  196.  
  197. echo "######################## 20.检查是否有失效的索引"
  198. echo "--20.Check invalid Ind" >>$archive/${hostn}_oracle_$CKtime
  199. echo "set lines 333
  200. set pages
  201. select index_name, owner, status, tablespace_name
  202. from dba_indexes
  203. where owner not in('SYS','SYSTEM')
  204. and status != 'VALID'
  205. and tablespace_name is not null
  206. union all
  207. select index_name, index_owner owner, status, tablespace_name
  208. from dba_ind_partitions
  209. where index_owner not in ('SYS','SYSTEM')
  210. and status <> 'USABLE'
  211. and tablespace_name is not null;
  212. select '' as a from dual;" >my_sql.sql
  213. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  214. echo "" >>$archive/${hostn}_oracle_$CKtime
  215.  
  216. echo "######################## 21.检查数据库会话连接占用率"
  217. echo "--21.Check DB Sessions" >>$archive/${hostn}_oracle_$CKtime
  218. echo "col TOT_SESSIONS for a15
  219. select cur_sessions, tot_sessions, a.cur_sessions/b.tot_sessions* \"sessions used%\"
  220. from (select count(*) cur_sessions from v\$session) a,
  221. (select value tot_sessions from v\$parameter where name = 'sessions') b;" >my_sql.sql
  222. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  223. echo "" >>$archive/${hostn}_oracle_$CKtime
  224.  
  225. echo "######################## 22.检查数据库会话连接历史最高值"
  226. echo "--22.Highwater of Session" >>$archive/${hostn}_oracle_$CKtime
  227. echo "select HIGHWATER
  228. from dba_high_water_mark_statistics
  229. where name = 'SESSIONS';" >my_sql.sql
  230. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  231. echo "" >>$archive/${hostn}_oracle_$CKtime
  232.  
  233. echo "######################## 23.检查数据库Job状态"
  234. echo "--23.Check Status of Job" >>$archive/${hostn}_oracle_$CKtime
  235. echo "set linesize 333
  236. col what for a30
  237. col NEXT_DATE for a30
  238. col INTERVAL for a30
  239. select job, what, next_date, INTERVAL, BROKEN
  240. from dba_jobs
  241. where BROKEN != 'N';" >my_sql.sql
  242. sqlplus $sqlstr <my_sql.sql>>$archive/${hostn}_oracle_$CKtime
  243. echo "" >>$archive/${hostn}_oracle_$CKtime
  244. #####################################################################
  245.  
  246. echo "Check completed."
  247. echo "The Collected result saved in $archive/${hostn}_oracle_$CKtime."
  248. echo ""

执行过程:

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

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. cocos2d JS 设置字幕循环滚动(背景图滚动亦可)

    var dong = ccs.load("res/Login.json"); this.addChild(dong.node); this.cShamNotice = ccui.h ...

  2. programmatically detect whenever test run is in debug mode

    if (System.Diagnostics.Debugger.IsAttached)    // code or timeout value when running tests in debug ...

  3. SQLGetStmtAttr

    SQLGetStmtAttr 函数定义: SQLRETURN SQLGetStmtAttr( SQLHSTMT     StatementHandle, SQLINTEGER     Attribut ...

  4. 《大话设计模式》c++实现 模版方法模式

    模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 角色: (1)AbstractClass:是抽象类,其实也 ...

  5. 记一次CentOS5.7更新glibc导致libc.so.6失效,系统无法启动

      以下是错误示范,错误过程还原,请勿模仿!!! wkhtmltopdf 启动,提示/lib64/libc.so.6版本过低 $ ./wkhtmltopdf http:www.baidu.com 1. ...

  6. Python -- print(dataframe)时,省略部分列。

    import pandas as pd # 导入后加入以下列,再显示时显示完全. pd.set_option('display.max_rows',500) pd.set_option('displa ...

  7. 【转】ETL介绍与ETL工具比较

    本文转载自:http://blog.csdn.net/u013412535/article/details/43462537 ETL,是英文 Extract-Transform-Load 的缩写,用来 ...

  8. 网站图标 favicon.ico

    默认情况下,浏览器访问一个网站的时候,同时还会向服务器请求“/favicon.ico”这个URL,目的是获取网站的图标. 若没有配置的话,Django就会返回一个404错误,并且浏览器接收到这个404 ...

  9. python小练习:读入一个考试得分,判断这个分数是哪个等级,并输出,考虑异常场景

    读入一个考试得分,判断这个分数是哪个等级,并输出. 等级:>=90 优 ,>=80且小于90 良,>=70 且小于80,中,>=60且<70及格  <60 不及格 ...

  10. SpringMVC常用注解的规则(用法)

    SpringMVC注解 @RequestMapping用法:    a. 用在controller方法上:        标记url到请求方法的映射, 其实就是通过一段url地址, 找到对应需要执行的 ...