分享
 
 
 

一个DBA_Monitor.sql程序

王朝mssql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

set echo on

spool user_DBA_report.txt

set pages 333 lin 96

rem 这是一个DBA_Monitor.sql程序,目的是日常监测分析数据库之用。

rem 使用时服务器并不一定要设置为timed_statistics=true。

rem 我希望在你们这里可以发表一个月后,我收集意见后再修改为正式版。

rem 看过的朋友一定提更改意见噢!

rem 主要参考《Oracle8 DBA Handbook》,《Oracle8 Tuning》。

rem

rem

rem ---------------------------------------------------

rem 执行说明:本程序第一部分需要DBA权限,

rem 第二部分针对实际用户,它们拥有表,索引,Source等。

rem # cat ding92sql

rem sqlplus system/passwd@stamex

rem @dba_monitor.sql

rem connect stamexxx/passwd@stamex

rem @getuser_objects.sql

rem EOFa1

rem exit

rem 数据库性能调整包括三方面的内容OS,DB,App)

rem OS=操作系统,分别从CPU,Memory,Disk,NetWork

rem 查询数据表的:|名称|行数.变化|列数|Initail|Cache|TSpace|

rem 查询数据表索引的:|名称|表名|列数|类型|Initial|

rem 查询数据表约束:|名称|表名|相关性|类型|

rem 查询SQL的频率和效率v_$sqlarea,跟踪到sqls表中

rem 生成并定期执行:index1rebld.sql, index2rebld.sql

rem ORACLE数据库情况统计分析程序, 2001.02--2001.05, Ding Jugang

rem 1、 参数dbwr_io_slave等三个从属进程可以分别设置为 40:12:6

rem 2、 参数process 一般是实际进程数据的1.5倍, 是为限制进程总数.

rem process过大将降低系统的性能,可适当考虑降低该数值到600

rem 3、 当LOG FILE SWITCH时出现等待时,建议加大REDO LOG FILE,一般是30分钟

rem 一次切换。目前是128MB,配合4MB LOG_BUFFER已经可以了(8M也没用).

rem 4、 在整个系统较繁忙时检测SHARED_POOL(一般情况下应该空余1/4)

rem 5、 SGA应该小于整个物理内存的一半,太大会导致内存换页出现(PI/PO)

rem 6、 MTS对于网站应用是理想选择,但在过分繁忙的客户端压力下,MTS会自动失败

rem 而重启专用进程(例如过多的PHP连接),估计是应用类型不兼容。

rem 7、 命令instat,vmstat,top,w 能从OS级评估系统负荷。

rem 监测下面语句的执行结果的变化率,能得出数据库级的硬盘读写流量。

rem select count(FILE#),sum(PHYRDS),sum(PHYWRTS),sum(PHYBLKRD) from sys.V_$filestat;

rem================================================================

rem 创建SQL跟踪表SQLS

rem create table SQLS as select * from sys.v_$sqlarea where disk_reads100;

rem 择机(有性能怀疑时)执行跟踪, 并执行随后的查询:

rem insert into sqls select * from sys.v_$sqlarea where disk_reads10 and executions

rem 1)最高频率的SQL

rem select disk_reads,executions,rows_processed,sql_text from SQLS

rem where executions 99 ;

rem 2)查询性能最差的SQL:

rem select disk_reads,executions,rows_processed,first_load_time,sql_text from SQLS

rem order by first_load_time;

select disk_reads,executions,rows_processed,first_load_time,sql_text

from sys.v_$sqlarea where disk_reads10 and executions

rem ========================================================================

rem 567890123456789_1234567890123456789_1234567890123456789_1234567890123456

rem ==RowCache,LibraryCache 依赖于Shared_pool,参看sys.v_$sgastat ===

rem 此二者当达到95%,现已经达到99%

select (sum(pins - reloads))/ sum(pins) "lib cache" from sys.v_$librarycache;

select (sum(gets-getmisses-usage-fixed)) / sum(gets) from sys.v_$rowcache;

rem ==================== SGA ==============================================

rem ======= sys.v_$sgastat,SGA中详细说明 =====================

rem 剩余共享池: 保留Free Memory 大于25%

column name format A46

column value format 999999,999,999

select * from sys.v_$sgastat where rownum

rem =================== SYS ===============================================

rem ========= sys.v_$SYSstat 详细列表,下面是几个指标的算法=======

rem 数据缓冲命中率:1- 40#/(39#+38#) = 99.8% 95%

rem 内存排序成功率:1- 162#/(161#) = 99.4% 92%

rem 脏缓冲区平均长度(oracle8i已废除之): 41#/42#=0.06

rem 应用效率:全表扫描

column class format 99999

column value format 999999,999,999

select * from sys.v_$sysstat

where STATISTIC# in (38,39,40,41,42,43,139,140,141,106,161,162,163);

rem 日志缓存要满足空间请求极小,每日300,还可更小:

rem LOG_BUFFER=4MB,还可再大。

rem select * from sys.v_$sysstat where name like 'redo%';

rem

rem ==================回滚段1==============================================

rem 回滚段有效率:waits/gets

rem 回滚段数据量在4---100个,同样规格大小,尽可能稳定不变。

rem alter TABLESPACE RBS DEFAULT STORAGE

rem (INITIAL 1M NEXT 1M MINEXTENTS 8 PCTINCREASE 0);

rem CREATE PUBLIC ROLLBACK SEGMENT RB21 TABLESPACE RBS;

rem ALTER ROLLBACK SEGMENT RB21 storage( minextents 4 optimal 8M);

rem CREATE PUBLIC ROLLBACK SEGMENT RB55 TABLESPACE RBS2 storage(minextents 8 optimal 8M);

column Ratios? format 99.9999

select count(*), sum(waits)/sum(gets) from sys.v_$rollstat;

rem rssize=最优保留值optimal,shrinks是动态收缩次数,每小时2次是允许的。

rem 例如,统计信息:rssize=8M,extents=8, waits和shrinks 小于每天2次

select usn,extents,gets,writes,rssize,waits,shrinks

from sys.v_$rollstat;

rem =======****** 回滚段2 ****===========

rem 这里是回滚段的汇总统计,分析其扩展段之定义。其命中率统计见v_$roolstat

rem dba_rollback_segs 下面验证一致性。

select owner,initial_extent,NEXT_EXTENT,Min_EXTENTS,MAX_EXTENTS,count(*),

TABLESPACE_NAME,STATUS

from dba_rollback_segs

group by owner,initial_extent,NEXT_EXTENT,min_extents,

MAX_EXTENTS,TABLESPACE_NAME,STATUS;

rem dba_rollback_segs -- detail 定义

column SEGMENT_name format a6

column TABLESPACE_NAME format a12

select SEGMENT_name,owner,initial_extent,NEXT_EXTENT,Min_EXTENTS,MAX_EXTENTS,

TABLESPACE_NAME,STATUS from dba_rollback_segs;

rem ======================== 闩 ===========================================

rem 闩-Oracle内部锁,无等待命中率NoWait_Hit_Ratio接近于1

column name format A30

select name, immediate_gets "Imme_gets", immediate_misses "Imme_Mis",

round(immediate_gets/(immediate_gets+immediate_misses),3) "nowait_hit_ratio"

from sys.v_$latch where immediate_gets+immediate_misses != 0 order by name;

rem 闩-Oracle内部锁,命中率HITRATIO(即misses/gets)接近于0

rem sleeps, immediate_gets "Imme_gets", 为了易于阅览,不要换行

column Mis/Get? format 99.999;

select name, gets, misses, misses/gets "Mis/Get?",

immediate_misses "Imme_Mis"

from sys.v_$latch where gets 0 order by name;

rem ================== 系统等待 ===========================================

rem 系统等待累计次数和累计时间

column class format A30

select * from sys.v_$waitstat ;

column event format A28

select * from sys.v_$system_event order by TOTAL_WAITS;

rem ==============================================================

rem ================ v_$session_wait ======================================

rem 会话正在等待的累计时间seconds

select event,sum(SECONDS_IN_WAIT),count(*)

from sys.v_$session_wait group by event ;

rem rdbms ipc message 3648 6

rem slave wait 31501 41 太大?

rem===================================================================rem 会话等待的累计次数和累计时间

column event format A32

select event,type, sum(total_waits) "Waits",

sum(time_waited) "SumTime",count(*) "Count"

from sys.v_$session s, sys.v_$session_event e

where s.sid = e.sid

group by event,type

order by type ;

rem =================================================================

rem 这里是日志文件和控制

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有