zach14c icon

Untitled

zach14c | PRO | 11/28/18 01:36:05 PM UTC | 0 ⭐ | 7233 👁️ | Never ⏰ | []
PL/SQL |

1.5 KB

|

None

|

0 👍

/

0 👎

 
    
Counting Rows
BY Jonathan Lewis
Here's another little utility I use from time to time (usually for small tables) to check how many rows there are in each block of the table, and which blocks are used. It doesn't DO anything clever, just call routines IN the DBMS_ROWID PACKAGE FOR each ROWID IN the TABLE:
 
 
rem
rem     Rowid_count.SQL
rem     Generic code TO COUNT rows per block IN a TABLE
rem     Ordered BY file AND block
rem
 
define m_table = '&1'
 
spool rowid_count
 
SELECT 
        DBMS_ROWID.rowid_relative_fno(ROWID)    rel_file_no, 
        DBMS_ROWID.rowid_block_number(ROWID)    block_no,
        COUNT(*)                                rows_starting_in_block
FROM 
        &m_table        t1
GROUP BY 
        DBMS_ROWID.rowid_relative_fno(ROWID), 
        DBMS_ROWID.rowid_block_number(ROWID) 
ORDER BY 
        DBMS_ROWID.rowid_relative_fno(ROWID), 
        DBMS_ROWID.rowid_block_number(ROWID)
;
 
 
SELECT
        rows_starting_in_block,
        COUNT(*)        blocks
FROM
        (
        SELECT 
                DBMS_ROWID.rowid_relative_fno(ROWID), 
                DBMS_ROWID.rowid_block_number(ROWID),
                COUNT(*)                                rows_starting_in_block
        FROM 
                &m_table        t1
        GROUP BY 
                DBMS_ROWID.rowid_relative_fno(ROWID), 
                DBMS_ROWID.rowid_block_number(ROWID) 
        )
GROUP BY
        rows_starting_in_block
ORDER BY
        rows_starting_in_block
;
 
spool off

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎