首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> PLSQL >> 正文

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

        性能相关内容

        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';

[1] [2] [3] 下一页

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Oracle频道相关导航