楼主: bosonmaster

日常维护的SQL(DOC版12月28日更新)

[复制链接]
论坛徽章:
50
2014年世界杯参赛球队: 荷兰
日期:2014-07-11 07:56:59蛋疼蛋
日期:2012-03-06 07:22:542012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-01-04 11:53:29蛋疼蛋
日期:2011-11-11 15:47:00ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
51#
发表于 2007-12-24 09:14 | 只看该作者
非常好的帖子!

使用道具 举报

回复
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
52#
发表于 2007-12-24 09:55 | 只看该作者
先收藏,慢慢消化~

使用道具 举报

回复
论坛徽章:
10
每日论坛发贴之星
日期:2007-09-10 01:02:15金色在线徽章
日期:2007-10-03 04:03:16ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-12-20 01:04:15生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:摔跤
日期:2008-09-04 09:51:27生肖徽章2007版:狗
日期:2009-03-10 21:24:29ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:42
53#
 楼主| 发表于 2007-12-25 16:06 | 只看该作者
继续顶啊。大家都来参加

使用道具 举报

回复
论坛徽章:
0
54#
发表于 2007-12-25 21:10 | 只看该作者
好的,学习

使用道具 举报

回复
论坛徽章:
10
每日论坛发贴之星
日期:2007-09-10 01:02:15金色在线徽章
日期:2007-10-03 04:03:16ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-12-20 01:04:15生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:摔跤
日期:2008-09-04 09:51:27生肖徽章2007版:狗
日期:2009-03-10 21:24:29ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:42
55#
 楼主| 发表于 2007-12-27 18:29 | 只看该作者
在v$session_longops视图中,sofar字段表示已经扫描的块数,totalwork表示总得需要扫描的块数,所以我们即可以对正在运行的长查询进行监控,比如在索引创建时,查看索引创建的进度,也可以查看系统中以往的长查询。。。

col opname format a32
col target_desc format a32
col perwork format a12
set lines 131
select sid,OPNAME,TARGET_DESC,sofar,TOTALWORK,trunc(sofar/totalwork*100,2)||'%' as perwork
from v$session_longops where sofar!=totalwork;

set lines 121
set pages 999
col opname format a29
col target format a29
col target_desc format a12
col perwork format a12
col remain format 99
col start_time format a21
col sofar format 99999999
col totalwork format 99999999
col sql_text format a101
col bufgets format 99999999

select opname,target,to_char(start_time,'yy-mm-dd:hh24:mi:ss') start_time,elapsed_seconds elapsed,
executions execs,buffer_gets/decode(executions,0,1,executions) bufgets,module,sql_text
from v$session_longops sl,v$sqlarea sa
where sl.sql_hash_value = sa.hash_value and upper(substr(module,1,4)) <> 'RMAN' and substr(opname,1,4) <> 'RMAN'
and module <> 'SQL*Plus' and sl.start_time>trunc(sysdate)
order by start_time;

==========================================================

1. 监控事例的等待   
select event,sum(decode(wait_Time,0,0,1)) "Prev",    sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot"   
from v$session_Wait     group by event order by 4;
2. 回滚段的争用情况   
select name, waits, gets, waits/gets "Ratio"     from v$rollstat a, v$rollname b     where a.usn = b.usn;
3. 监控表空间的 I/O 比例   
select df.tablespace_name name,df.file_name "file",f.phyrds pyr,    f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw    from v$filestat f, dba_data_files df    where f.file# = df.file_id    order by df.tablespace_name;
4. 监控文件系统的 I/O 比例  
select substr(a.file#,1,2) "#", substr(a.name,1,30) "Name",     a.status, a.bytes, b.phyrds, b.phywrts     from v$datafile a, v$filestat b     where a.file# = b.file#;
5.在某个用户下找所有的索引   
select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name    from user_ind_columns, user_indexes    where user_ind_columns.index_name = user_indexes.index_name    and user_ind_columns.table_name = user_indexes.table_name     order by user_indexes.table_type, user_indexes.table_name,    user_indexes.index_name, column_position;
6. 监控 SGA 的命中率  
select a.value + b.value "logical_reads", c.value "phys_reads",    round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO"     from v$sysstat a, v$sysstat b, v$sysstat c    where a.statistic# = 38 and b.statistic# = 39     and c.statistic# = 40;
7. 监控 SGA 中字典缓冲区的命中率   
select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio",    (1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio"    from v$rowcache     where gets+getmisses <>0    group by parameter, gets, getmisses;
8. 监控 SGA 中共享缓存区的命中率,应该小于1%
select sum(pins) "Total Pins", sum(reloads) "Total Reloads",    sum(reloads)/sum(pins) *100 libcache    from v$librarycache;    select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent"     from v$librarycache;9. 显示所有数据库对象的类别和大小    select count(name) num_instances ,type ,sum(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     from dba_object_size     group by type order by 2;
10. 监控 SGA 中重做日志缓存区的命中率,应该小于1%    SELECT name, gets, misses, immediate_gets, immediate_misses,    Decode(gets,0,0,misses/gets*100) ratio1,    Decode(immediate_gets+immediate_misses,0,0,    immediate_misses/(immediate_gets+immediate_misses)*100) ratio2    FROM v$latch WHERE name IN ('redo allocation', 'redo copy');
11.  监控内存和硬盘的排序比率,最好使它小于 .10,增加 sort_area_size  
SELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');
12. 监控当前数据库谁在运行什么SQL语句
SELECT osuser, username, sql_text from v$session a, v$sqltext b    where a.sql_address =b.address order by address, piece;
13. 监控字典缓冲区  
SELECT (SUM(PINS - RELOADS)) / SUM(PINS) "LIB CACHE" FROM V$LIBRARYCACHE;    SELECT (SUM(GETS - GETMISSES - USAGE - FIXED)) / SUM(GETS) "ROW CACHE" FROM V$ROWCACHE;    SELECT SUM(PINS) "EXECUTIONS", SUM(RELOADS) "CACHE MISSES WHILE EXECUTING" FROM V$LIBRARYCACHE;     后者除以前者,此比率小于1%,接近0%为好。    SELECT SUM(GETS) "DICTIONARY GETS",SUM(GETMISSES) "DICTIONARY CACHE GET MISSES"    FROM V$ROWCACHE
14. 找ORACLE字符集  
select * from sys.props$ where name='NLS_CHARACTERSET';
15. 监控 MTS   
select busy/(busy+idle) "shared servers busy" from v$dispatcher;    此值大于0.5时,参数需加大    select sum(wait)/sum(totalq) "dispatcher waits" from v$queue where type='dispatcher';    select count(*) from v$dispatcher;    select servers_highwater from v$mts;    servers_highwater接近mts_max_servers时,参数需加大
16. 碎片程度   
select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_name     having count(tablespace_name)>10;    alter tablespace name coalesce;    alter table name deallocate unused;    create or replace view ts_blocks_v as    select tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_space    union all    select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;    select * from ts_blocks_v;    select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space     group by tablespace_name;    查看碎片程度高的表    SELECT segment_name table_name , COUNT(*) extents    FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name    HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);
17. 表、索引的存储情况检查   
select segment_name,sum(bytes),count(*) ext_quan from dba_extents where     tablespace_name='&tablespace_name' and segment_type='TABLE' group by tablespace_name,segment_name;    select segment_name,count(*) from dba_extents where segment_type='INDEX' and owner='&owner'    group by segment_name;18、找使用CPU多的用户session    12是cpu used by this session    select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value    from v$session a,v$process b,v$sesstat c    where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc;

以上来源于xsb

使用道具 举报

回复
论坛徽章:
21
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:兔
日期:2011-01-20 12:58:492011新春纪念徽章
日期:2011-02-18 11:42:47ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:50:44法拉利
日期:2013-09-10 14:11:32本田
日期:2014-02-16 22:57:59奔驰
日期:2014-02-16 23:04:212014年新春福章
日期:2014-02-18 16:41:112011新春纪念徽章
日期:2011-01-04 10:24:58
56#
发表于 2007-12-27 18:49 | 只看该作者
可以整理一个文档,在发出来哦!!!

使用道具 举报

回复
论坛徽章:
10
每日论坛发贴之星
日期:2007-09-10 01:02:15金色在线徽章
日期:2007-10-03 04:03:16ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-12-20 01:04:15生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:摔跤
日期:2008-09-04 09:51:27生肖徽章2007版:狗
日期:2009-03-10 21:24:29ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:42
57#
 楼主| 发表于 2007-12-28 14:13 | 只看该作者
寻找CPU使用过量的session ,找出高CPU利用率的SQL:




SELECT /*+ ORDERED */
sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN
(SELECT decode(sql_hash_value, 0, prev_hash_value, sql_hash_value), decode(sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr = (SELECT addr
FROM v$process c
WHERE c.spid = '&pid'))
ORDER BY piece ASC;

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2007-09-19 14:10:06ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
58#
发表于 2007-12-28 14:21 | 只看该作者
10G表,索引的空间回收(10G新特性,非常实用):
(必须)开启行迁移功能: alter table tablename enable row movement;  
保持HWM: alter table tablename shrink space compact;
回缩表与HWM : alter table tablename shrink space;
回缩表与相关索引:  alter table tablename shrink space cascade;
回缩索引: alter index indexname shrink space;

使用道具 举报

回复
论坛徽章:
10
每日论坛发贴之星
日期:2007-09-10 01:02:15金色在线徽章
日期:2007-10-03 04:03:16ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-12-20 01:04:15生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:摔跤
日期:2008-09-04 09:51:27生肖徽章2007版:狗
日期:2009-03-10 21:24:29ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:42
59#
 楼主| 发表于 2007-12-28 14:29 | 只看该作者
大家热情好像都不怎么高啊

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
25
生肖徽章2007版:龙
日期:2008-05-06 11:07:48咸鸭蛋
日期:2011-10-19 10:09:12ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24
60#
发表于 2007-12-28 14:31 | 只看该作者
感谢。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表