在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
用于监视数据库性能,数据库性能,性能调整的SQL摘要
1.等待监视案例
选择事件,总和(解码(wait_Time,0,0,1))” Prev”,
sum(decode( wait_Time,0,1,0))” Curr”,计数(*)” Tot”
来自v $ session_Wait
按事件顺序按4分组;
2.回滚段的争用
选择名称,等待,获取,等待/获取”比率”
来自v $ rollstat a,v $ rollname b
其中a。 usn = b.usn;
3.监视表空间I/O比例
选择df.tablespace_name名称,df.file_name” file”,f.phyrds pyr,
f.phyblkrd pbr,f.phywrts pyw,f.phyblkwrt pbw
来自v $ filestat f,dba_data_files df
,其中f.file#= df.file_id
按df.tablespace_name排序;
4.监视文件系统的I/O比
选择substr(a.file#,1,2)”#”,substr(a.name,1,30)” Name”,
a.status,a.bytes ,b.phyrds,b.phywrts
来自v $ datafile a,v $ filestat b
其中a.file#= b.file#;
5.查找某个用户下的所有索引
选择user_indexes.table_name,user_indexes。 index_name,唯一性,column_name
来自user_ind_columns,user_indexes
其中user_ind_columns.index_name = user_indexes。 index_name
和user_ind_columns.table_name = user_indexes.table_name
按user_indexes.table_type,user_indexes的顺序.table_name,
user_indexe s.index_name,column_position;
6.监视SGA的命中率
选择一个。值+ b.value” logical_reads”,c.value” phys_reads”,
舍入(100 *((a.value + b.value)-c。值)/((a.value + b.value))”缓冲区命中率”
来自v $ sysstat a,v $ sysstat b,v $ sysstat c
其中a.statistic#= 38和b.statistic#= 39
和c.statistic#= 40;
7.监视SGA中字典缓冲区的命中率
选择参数,gets,Getmisses,getmisses/(gets + getmisses)* 100″未成年人比率”,
(1-(sum(get(getmisses)/(sum (gets)+ sum(getmisses))))* 100″命中率”
来自v $ rowcache
where gets + getmisss \ lt; \ gt ;; 0
按参数分组,gets,getmisses;
8。监视SGA中共享缓存的命中率,应小于1%
选择总和(引脚)” Total Pins”,总和(重新加载)” Total重新加载”,
总和(重新加载)/总和(引脚)* 100 libcache
从v $ librarycache;
选择总和(pinhits-reloads)/总和(pins)” hit radio”,总和(reload)/总和(pins)” reload percent”
来自v $ librarycache;
9.显示所有数据库对象的类别和大小
选择计数(名称) num_instances,类型,总和(source_size),source_size,
sum(parsed_size)parsed_size,sum(code_size)code_size,sum(error_size)error_size,
sum(source_size)+ sum(parsed_size)+ sum(code_size)+ sum(error_size)size_required
从dba_object_size
按类型分组,顺序为2;
10.监视SGA中重做日志缓冲区的命中率,该命中率应小于1%
SELECT名称,gets,misss,instant_gets,instant_misses,
解码(gets,0,0,misses/gets * 100)ratio1,
解码(immediate_gets + Instant_misses,0,0,
Instant_misses/(immediate_gets + Instant_misses )* 100)ratio2
FROM v $闩锁WHERE name IN(”重做分配”,”重做复制”);
11.监视内存和硬盘的排序比率,最好使其小于.10,增加sort_area_size
选择名称,值FROM v $ sysstat WHERE名称IN(” sorts(内存)”,” sorts(磁盘)”);
12.监视谁在当前数据库中运行什么SQL语句
SELECT osuser,用户名,来自v $会话a的sql_text,来自v $ sqltext b的
其中a.sql_address = b.address的顺序为添加地址,段;
13.监视词典缓冲区
SELECT(SUM(PINS-RELOADS))/SUM (PINS)V $ LIBRARYCACHE中的” LIB CACHE”;
SELECT(总和(GETS-GETMISSES-USAGE-FIXED))/总和(GETS)来自V $ ROWCACHE的” ROW CACHE”;
从V $ LIBRARYCACHE中选择总和(销)” EXECUTIONS”,总和(重新加载)”执行时缓存丢失”;
除前者外,后者小于1%,最好接近0%。
14.查找ORACLE字符集
从sys.props $选择*,其中名称=” NLS_CHARACTERSET”;
15.监视MTS
选择忙/(忙+闲)”共享服务器忙来自v $调度员;
当此值大于0.5时,需要增加参数
选择sum (wait)/sum(totalq)”调度程序从v $队列等待,其中类型为=” dispatcher”;
从v $ dispatcher中选择count(*);
从v $ mts中选择servers_highwater;
接近于mts_max_servers的servers_highwater,需要增加参数
16.碎片
选择表空间名称,按表空间名称从dba_free_space组中计数(tablespace_name)
计数(tablespace_name)\\ gt ;; 10;
alter tablespace name colesce;
alter table name取消分配未使用的;
创建或替换视图ts_blocks_v为
选择tablespace_name,block_id,字节,块, dba_free_space中的可用空间” segment_name
合并所有
选择tablespace_name,block_id,字节,块,来自dba_extents的segment_name;
从ts_blocks_v选择*;
从dba_free_space中选择表空间名称,总和(字节),最大(字节),计数(block_id)
按tablespace_name分组;
查看具有高度碎片化的表
SELECT segment_name table_name,COUNT(*)范围
来自dba_segments所有者不在的所有者(” SYS”,” SYSTEM”)GROUP BY segment_name
拥有COUNT(*)=(从dba_segments GROUP BY segment_name中选择最大(COUNT(*))个);
17.检查表和索引的存储
选择segment_name,总和(字节) ,从dba_extents中计数(*)ext_quan,其中
tablespace_name =” \ tablespace_name”和segment_type =” TABLE”按表空间名称,段名称分组;
选择segment_name,从dba_extents中计数(*),其中segment_type =” INDEX”并且owner =” \ owner”
按segment_name分组;
18.查找具有多个CPU的用户会话
选择.sid,spid,状态,substr(a.program,1,40)prog,a.terminal,osuser,value/60/100 value
来自v $会话a,v $进程b,v $ sesstat c
其中c.statistic#= 12且c.sid = a.sid和a.paddr = b.addr按值排序描述