Script:列出数据库中5%以上链式行的表

作者: Maclean Liu , post on June 3rd, 2011 , English Version
【本站文章除注明转载外,均为本站原创编译】
转载请注明:文章转载自: Oracle Clinic – Maclean Liu的个人技术博客 [http://www.oracledatabase12g.com/]
本文标题: Script:列出数据库中5%以上链式行的表
本文永久地址: http://www.oracledatabase12g.com/archives/list-tables-with-5-chained-rows.html

以下脚本用于列出数据库中chained/migrated rows达到5%的表,注意查询结果来源于统计信息,如果数据库长期没有gather_stats则结果不真实:

REM List Tables with > 5 % chained rows and > 500 total rows 

  SELECT owner,
         table_name,
         pct_free,
         ROUND (100 * chain_cnt / num_rows, 0) chain_pct
    FROM sys.dba_all_tables
   WHERE ROUND (100 * chain_cnt / num_rows, 0) > 5
         AND owner NOT IN
                ('SYS',
                 'SYSTEM',
                 'SYSMAN',
                 'EXFSYS',
                 'WMSYS',
                 'OLAPSYS',
                 'OUTLN',
                 'DBSNMP',
                 'ORDSYS',
                 'ORDPLUGINS',
                 'MDSYS',
                 'CTXSYS',
                 'AURORA$ORB$UNAUTHENTICATED',
                 'XDB',
                 'FLOWS_030000',
                 'FLOWS_FILES')
         AND num_rows IS NOT NULL
         AND num_rows > 500
ORDER BY 1, 2
/

REM List Table Partitions with > 5 % chained rows and > 500 total rows 

  SELECT table_owner,
         table_name,
         partition_name,
         pct_free,
         ROUND (100 * chain_cnt / num_rows, 0) chain_pct
    FROM sys.dba_tab_partitions
   WHERE ROUND (100 * chain_cnt / num_rows, 0) > 5
         AND table_owner NOT IN
                ('SYS',
                 'SYSTEM',
                 'SYSMAN',
                 'EXFSYS',
                 'WMSYS',
                 'OLAPSYS',
                 'OUTLN',
                 'DBSNMP',
                 'ORDSYS',
                 'ORDPLUGINS',
                 'MDSYS',
                 'CTXSYS',
                 'AURORA$ORB$UNAUTHENTICATED',
                 'XDB',
                 'FLOWS_030000',
                 'FLOWS_FILES')
         AND num_rows IS NOT NULL
         AND num_rows > 500
ORDER BY 1, 2
/

© 2011, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.

相关文章 | Related posts:

  1. Script:列出没有主键或唯一索引的表
  2. Script:收集数据库安全风险评估信息
  3. Script:列出数据库中子表上没有对应索引的外键
  4. Script:收集RAC性能诊断信息
  5. Script:Tablespace Report
  6. Script:Datafile Report
  7. Script:List Buffer Cache Details
  8. Script:partition table into rowid extent chunks
  9. Script: Computing Table Size
  10. Script:Generate A DDL Script For A Table

3 comments to Script:列出数据库中5%以上链式行的表

  • xs

    第一个查的是sys.dba_tables吧

  • admin
    
    REM find session who fetch continued rows
    
     set linesize 140 pagesize 1400;
    
     SELECT /*+ ordered */
            s.sid || '_' || s.serial# sid_serial,
             s.SID,
             s.serial#,
             NVL (
                DECODE (TYPE,
                        'BACKGROUND', 'SYS (' || b.ksbdpnam || ')',
                        s.username),
                SUBSTR (p.program, INSTR (p.program, '(')))
                username,
             ss.VALUE AS continued_fetch,
             s.status,
             s.server,
             s.osuser,
             s.process,
             s.machine,
             s.program,
             s.TYPE,
             (block_gets + consistent_gets) logical_reads,
             physical_reads,
             sql.sql_text
        FROM v$statname sn,
             v$sesstat ss,
             v$session s,
             v$process p,
             x$ksbdp b,
             v$sess_io sio,
             v$sql SQL
       WHERE     sn.statistic# = ss.statistic#
             AND s.SID = ss.SID
             AND s.SID = sio.SID
             AND s.prev_sql_addr = SQL.address(+)
             AND 0 = SQL.child_number(+)
             AND s.prev_hash_value = SQL.hash_value(+)
             AND sn.NAME = 'table fetch continued row'
             AND ss.VALUE > 200
             AND s.paddr = p.addr
             AND b.inst_id(+) = USERENV ('INSTANCE')
             AND p.addr = b.ksbdppro(+)
    ORDER BY ss.VALUE DESC
    /
    

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>