sql >> データベース >  >> RDS >> Oracle

Oracleでテーブルサイズを計算するにはどうすればよいですか

    このクエリに興味があるかもしれません。これは、テーブル上のインデックスとLOBを考慮して、各テーブルに割り当てられるスペースの量を示します。多くの場合、テーブル自体ではなく、「発注書テーブルが取るスペース(インデックスを含む)」を知りたいと思うでしょう。あなたはいつでも詳細を掘り下げることができます。これには、DBA_*ビューへのアクセスが必要であることに注意してください。

    COLUMN TABLE_NAME FORMAT A32
    COLUMN OBJECT_NAME FORMAT A32
    COLUMN OWNER FORMAT A10
    
    SELECT
       owner, 
       table_name, 
       TRUNC(sum(bytes)/1024/1024) Meg,
       ROUND( ratio_to_report( sum(bytes) ) over () * 100) Percent
    FROM
    (SELECT segment_name table_name, owner, bytes
     FROM dba_segments
     WHERE segment_type IN ('TABLE', 'TABLE PARTITION', 'TABLE SUBPARTITION')
     UNION ALL
     SELECT i.table_name, i.owner, s.bytes
     FROM dba_indexes i, dba_segments s
     WHERE s.segment_name = i.index_name
     AND   s.owner = i.owner
     AND   s.segment_type IN ('INDEX', 'INDEX PARTITION', 'INDEX SUBPARTITION')
     UNION ALL
     SELECT l.table_name, l.owner, s.bytes
     FROM dba_lobs l, dba_segments s
     WHERE s.segment_name = l.segment_name
     AND   s.owner = l.owner
     AND   s.segment_type IN ('LOBSEGMENT', 'LOB PARTITION')
     UNION ALL
     SELECT l.table_name, l.owner, s.bytes
     FROM dba_lobs l, dba_segments s
     WHERE s.segment_name = l.index_name
     AND   s.owner = l.owner
     AND   s.segment_type = 'LOBINDEX')
    WHERE owner in UPPER('&owner')
    GROUP BY table_name, owner
    HAVING SUM(bytes)/1024/1024 > 10  /* Ignore really small tables */
    ORDER BY SUM(bytes) desc
    ;
    


    1. 指定された名前の列を含むすべてのテーブルを検索します-MSSQLServer

    2. UnitilsとDBMaintainer-複数のユーザー/スキームでそれらを機能させる方法は?

    3. OracleのSIGN()関数

    4. AccessはODBCデータソースとどのように通信しますか?パート4