Oracle巡检脚本:ORAWatcher.sh
Oracle巡检脚本:ORAWatcher.sh
#!/usr/bin/ksh
echo ""
echo "ORAWatcher Version:1.0.1"
echo ""
#Create Time:--
#Update Time:-- :
######################################################################
#数据库连接设置
######################################################################
sqlstr=$
test $
if [ $? = ]; then
echo
echo "Info...You did not enter a value for sqlstr."
echo "Info...Using default value = system/system"
sqlstr="system/system"
fi ######################################################################
# Create log subdirectories if they don't exist
######################################################################
if [ ! -d archive ]; then
mkdir archive
fi echo "$sqlstr"
echo "Starting Data Collection..."
echo ""
######################################################################
hostn=`hostname`
hour=`date +'%m.%d.%y.%H00.dat'`
echo "`date` collect...">archive/${hostn}_oracle_$hour
######################################################################
echo "######################## 1.数据库版本"
echo "select ' ' as \"--1.Database Version\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
echo "Select version FROM Product_component_version
Where SUBSTR(PRODUCT,,)='Oracle';" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour echo "######################## 2.控制文件"
echo "select ' ' as \"--2.Control files\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
echo "select name from v\$controlfile;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour echo "######################## 3.pfile、spfile"
echo "select ' ' as \"--3.Parameter files\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
echo "show parameter pfile;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour echo "######################## 4.字符集"
echo "select ' ' as \"--4.DB Character\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 5.归档状态"
echo "select ' ' as \"--5.DB Archive Mode\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
echo "set linesize 333
show parameter log_archive" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour echo "######################## 6.参数设置"
echo "select ' ' as \"--6.Parameter Config\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
echo "set linesize 500
set pages
show parameter;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour echo "######################## 7.回滚段存储位置"
echo "select ' ' as \"--7.Undo Info\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 8.redolog"
echo "select ' ' as \"--8.Redolog Files\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 9.查看表空间大小及利用率"
echo "select ' ' as \"--9.Tablespace Usage\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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,)) 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_$hour echo "######################## 10.数据文件"
echo "select ' ' as \"--10.DB Files Info\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 11.查看数据文件的扩展方式"
echo "select ' ' as \"--11.DB Files Extend\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 12.查看表空间的扩展方式"
echo "select ' ' as \"--12.TBS Extend\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 13.临时表空间"
echo "select ' ' as \"--13.DB Temp TBS\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 14.用户默认表空间"
echo "select ' ' as \"--14.User Default TBS\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 15.数据库缓冲区高速缓存命中率"
echo "select ' ' as \"--15.DB Cache Hit\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 16.重写不等待比率"
echo "select ' ' as \"--16.Redo nowaits\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 17.库高速缓存命中率"
echo "select ' ' as \"--17.Library Cache Hit\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
echo "select namespace,gethitratio from v\$librarycache;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour echo "######################## 18.数据字典高速缓存Getmisses对gets的目标比例"
echo "select ' ' as \"--18.DB Dic cache\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
echo "select sum(getmisses)/sum(gets) from v\$rowcache;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour echo "######################## 19.用户对像(表、索引、大小)"
echo "select ' ' as \"--19.User objects\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 20.检查是否有失效的索引"
echo "select ' ' as \"--20.Check invalid Ind\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 21.检查数据库会话连接占用率"
echo "select ' ' as \"--21.Check DB Sessions\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour echo "######################## 22.检查数据库会话连接历史最高值"
echo "select ' ' as \"--22.Highwater of Session\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
echo "select HIGHWATER
from dba_high_water_mark_statistics
where name = 'SESSIONS';" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour echo "######################## 23.检查数据库Job状态"
echo "select ' ' as \"--23.Check Status of Job\" from dual;" >my_sql.sql
sqlplus $sqlstr <my_sql.sql>>archive/${hostn}_oracle_$hour
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_$hour
###################################################################### echo "Collection completed."
echo "The Collected result saved in ./archive/${hostn}_oracle_$hour."
echo ""
Oracle巡检脚本:ORAWatcher.sh的更多相关文章
- Linux上的oracle巡检脚本
修改自大神博客:http://www.cnblogs.com/jyzhao/p/5364049.html 脚本巡检的优化:自动化,节省时间. 脚本需加强:巡检结果中有大量的sqlplus连接信息,后期 ...
- oracle巡检脚本备份
重做日志生成情况,一天生成日志大小:select round(sum(blocks*block_size)/1024/1024/1024,2) BLOCK from v\$archived_log w ...
- 巡检脚本OS+Oracle
巡检脚本 主机巡检脚本:OSWatcher.sh Oracle巡检脚本:ORAWatcher.sh 脚本使用方法 1.建立脚本放置目录 # mkdir /var/collect 2.把脚本ORAWat ...
- Oracle运行脚本:exp,hist 和 err
上一篇我们讲到:首次使用rman备份数据库时,为了安全起见,我们应将整个数据库exp出来. 显而易见,每次都手敲exp代码是不可取的. ----费时费力还不规范! 为此,我们可以写一个exp脚本,之后 ...
- 主机巡检脚本:OSWatcher.sh
主机巡检脚本:OSWatcher.sh 2016-09-26更新,目前该脚本只支持Linux操作系统,后续有需求可以继续完善. 注意: 经测试,普通用户执行脚本可以顺利执行前9项检查: 第10项,普通 ...
- Oracle - 数据库巡检脚本
分享一个oracle数据库巡检脚本,欢迎大家使用,希望大家在用的过程中发现脚本中的错误并提出改进意见. -- 数据库巡检脚本 -- 版本号2.1 -- 该脚本仅对数据库的做一个初步的巡检,具体的优化方 ...
- 小麦苗数据库巡检脚本,支持Oracle、MySQL、SQL Server和PG等数据库
目录 一.巡检脚本简介 二.巡检脚本特点 三.巡检结果展示 1.Oracle数据库 2.MySQL数据库 3.SQL Server数据库 4.PG数据库 5.OS信息 四.脚本运行方式 1.Oracl ...
- Linux/hp unix/AIX日常巡检脚本(转)
以下为Linux/hp unix/AIX日常巡检脚本,大家可以参考着进行改写,用于自己的服务器. #!/usr/bin/ksh syserrdate=`date +"%m/%d"` ...
- linux手动或者自动启动oracle11g的服务 Oracle 自动启动脚本
手动启动: [oracle@localhost ~]$ sqlplus SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 26 23:39:52 2 ...
随机推荐
- String对象方法扩展
/** *字符串-格式化 */ String.prototype.format = function(){ var args = arguments;//获取函数传递参数数组,以便在replace回调 ...
- 浅谈PHP7新特性
1. 运算符(NULL 合并运算符) 把这个放在第一个说是因为我觉得它很有用.用法: $a = $_GET['a'] ?? 1; 它相当于: $a = isset($_GET['a']) ? $_GE ...
- Sort简单排序
List<T> 类型排序: public List<ProductionMaterialModel> OrderBybom(List<ProductionMaterial ...
- java中类的加载情况
当一个类存在继承且与其他类有关联情况时,类中各模块加载顺序如下: 1.首先找到public类,判断该类是否继承其他类,如果没有继承其他类(Object类除外),则加载该类:否则转去加载该类的超类,超类 ...
- c# 元组Tuple
Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢笔放在口袋里,您的口袋是存放各种东西的收集箱.C# 4.0引入的一个新特性 Tuple类型与口袋 ...
- Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016
Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Att ...
- 日志系统实战(一)—AOP静态注入
背景 近期在写日志系统,需要在运行时在函数内注入日志记录,并附带函数信息,这时就想到用Aop注入的方式. AOP分动态注入和静态注入两种注入的方式. 动态注入方式 利用Remoting的Context ...
- 实战JS正则表达式
-正则表达式是一种文本模式的匹配工具. -文章导读: --1.正则对象的属性和方法 --2.字符串对象的方法 --3.使用正则表达式: ---3.1 给字符串加上千分符 ---3.2 字符串中出现次数 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(3)
今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...
- 解决vue与传统jquery插件冲突
比如基于jquery的select2插件,在vue下单独用有很多问题,其实对于这类插件,可以用vue的自定义指令和组件来包装,解决冲突的问题.引用官方vue1.0和2.0的两个例子,学习一下. 例子1 ...