Oracle数据库维护常用SQL语句集合(3)

来源: 作者:韩东 2008-07-03 出处:pcdog.com

oracle  oracle数据库  
下一页 1 2 

性能相关内容

1、捕捉运行很久的SQL

column username format a12

column opname format a16

column progress format a8

SELECT Username, Sid, Opname,

Round(Sofar * 100 / Totalwork, 0) || '%' AS Progress, Time_Remaining,

Sql_Text

FROM V$session_Longops, V$sql

WHERE Time_Remaining <> 0

AND Sql_Address = Address

AND Sql_Hash_Value = Hash_Value;

2、求DISK READ较多的SQL

SELECT St.Sql_Text

FROM V$sql s, V$sqltext St

WHERE s.Address = St.Address

AND s.Hash_Value = St.Hash_Value

AND s.Disk_Reads > 300;

3、求DISK SORT严重的SQL

SELECT Sess.Username, SQL.Sql_Text, Sort1.Blocks

FROM V$session Sess, V$sqlarea SQL, V$sort_Usage Sort1

WHERE Sess.Serial# = Sort1.Session_Num

AND Sort1.Sqladdr = SQL.Address

AND Sort1.Sqlhash = SQL.Hash_Value

AND Sort1.Blocks > 200;

4、监控索引是否使用

alter index &index_name monitoring usage;

alter index &index_name nomonitoring usage;

select * from v$object_usage where index_name = &index_name;

5、求数据文件的I/O分布

SELECT Df.NAME, Phyrds, Phywrts, Phyblkrd, Phyblkwrt, Singleblkrds, Readtim,

Writetim

FROM V$filestat Fs, V$dbfile Df

WHERE Fs.File# = Df.File#

ORDER BY Df.NAME;

6、查看还没提交的事务

select * from v$locked_object;

select * from v$transaction;

7、回滚段查看

SELECT Rownum, Sys.Dba_Rollback_Segs.Segment_Name NAME,

V$rollstat.Extents Extents, V$rollstat.Rssize Size_In_Bytes,

V$rollstat.Xacts Xacts, V$rollstat.Gets Gets, V$rollstat.Waits Waits,

V$rollstat.Writes Writes, Sys.Dba_Rollback_Segs.Status Status

FROM V$rollstat, Sys.Dba_Rollback_Segs, V$rollname

WHERE V$rollname.NAME(+) = Sys.Dba_Rollback_Segs.Segment_Name

AND V$rollstat.Usn(+) = V$rollname.Usn

ORDER BY Rownum

8、查看系统请求情况

SELECT Decode(NAME, 'summed dirty write queue length', VALUE) /

Decode(NAME, 'write requests', VALUE) "Write Request Length"

FROM V$sysstat

WHERE NAME IN ('summed dirty queue length', 'write requests')

AND VALUE > 0;

9、计算data buffer 命中率

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# = 40

AND b.Statistic# = 41

AND c.Statistic# = 42;

SELECT NAME,

(1 - (Physical_Reads / (Db_Block_Gets + Consistent_Gets))) * 100 h_Ratio

FROM V$buffer_Pool_Statistics;

10、查看内存使用情况

SELECT Least(MAX(b.VALUE) / (1024 * 1024), SUM(a.Bytes) / (1024 * 1024)) Shared_Pool_Used,

MAX(b.VALUE) / (1024 * 1024) Shared_Pool_Size,

Greatest(MAX(b.VALUE) / (1024 * 1024), SUM(a.Bytes) / (1024 * 1024)) -

(SUM(a.Bytes) / (1024 * 1024)) Shared_Pool_Avail,

((SUM(a.Bytes) / (1024 * 1024)) / (MAX(b.VALUE) / (1024 * 1024))) * 100 Avail_Pool_Pct

FROM V$sgastat a, V$parameter b

WHERE (a.Pool = 'shared pool' AND a.NAME NOT IN ('free memory'))

AND b.NAME = 'shared_pool_size';

11、查看用户使用内存情况

SELECT Username, SUM(Sharable_Mem), SUM(Persistent_Mem), SUM(Runtime_Mem)

FROM Sys.v_$sqlarea a, Dba_Users b

WHERE a.Parsing_User_Id = b.User_Id

GROUP BY Username;

12、查看对象的缓存情况

SELECT Owner, Namespace, TYPE, NAME, Sharable_Mem, Loads, Executions, Locks,

Pins, Kept

FROM V$db_Object_Cache

WHERE TYPE NOT IN

('NOT LOADED', 'NON-EXISTENT', 'VIEW', 'TABLE', 'SEQUENCE')

AND Executions > 0

AND Loads > 1

AND Kept = 'NO'

ORDER BY Owner, Namespace, TYPE, Executions DESC;

SELECT TYPE, COUNT(*)

FROM V$db_Object_Cache

GROUP BY TYPE;

13、查看库缓存命中率

SELECT Namespace, Gets, Gethitratio * 100 Gethitratio, Pins,

Pinhitratio * 100 Pinhitratio, Reloads, Invalidations

FROM V$librarycache

14、查看某些用户的hash

SELECT a.Username, COUNT(b.Hash_Value) Total_Hash,

COUNT(b.Hash_Value) - COUNT(UNIQUE(b.Hash_Value)) Same_Hash,

(COUNT(UNIQUE(b.Hash_Value)) / COUNT(b.Hash_Value)) * 100 u_Hash_Ratio

FROM Dba_Users a, V$sqlarea b

WHERE a.User_Id = b.Parsing_User_Id

GROUP BY a.Username;

15、查看字典命中率

SELECT (SUM(Getmisses) / SUM(Gets)) Ratio

FROM V$rowcache;

16、查看undo段的使用情况

SELECT d.Segment_Name, Extents, Optsize, Shrinks, Aveshrink, Aveactive,

d.Status

FROM V$rollname n, V$rollstat s, Dba_Rollback_Segs d

WHERE d.Segment_Id = n.Usn(+)

AND d.Segment_Id = s.Usn(+);


更多内容请看PCdog.com--PL/SQL  数据库体系架构  数据库相关文章专题
下一页 1 2 
上一篇:深入了解Oracle数据恢复/挖掘工具FySafe
下一篇:jdbc方式读取oracle的clob字段实例