zoukankan      html  css  js  c++  java
  • Oracle中统计数据占用空间大小

    1. Oracle统计数据的大小

    1,vsize()
    统计每个字段的实际占用长度,统计的是单条记录的长度

    2,DBMS_LOB.getlength()
    统计BLOBs, CLOBs, and NCLOBs的字段实际占用长度,统计的是单条记录的长度

    3,从聚合统计表里查
    select AVG_ROW_LEN, T.* from DBA_TABLES T where table_name = 'WEB_ISC_DATA';

    范例

    ---查看Oracle中表空间及表数据大小
    SELECT SEGMENT_NAME,
           (SUM(BYTES) / 1024 / 1024 / 1024) || 'GB' AS TABLE_SIZE
      FROM USER_EXTENTS
     GROUP BY SEGMENT_NAME
     ORDER BY TABLE_SIZE DESC
    
    ---查询指定表中clob字段对应的数据库段segment_name
    SELECT * FROM DBA_LOBS WHERE OWNER ='ZSSYS' AND TABLE_NAME ='WEB_ISC_DATA'
    
    ---数据库段segment_name所对应的字段存库占用空间大小
    SELECT ROUND(S.BYTES / 1024 / 1024 / 1024) size_gb, S.* FROM dba_segments S WHERE segment_name='SYS_LOB0000137536C00005$$';
    
    ---范例:按照单日统计数据条数,某个LOB字段占用磁盘的大小
    SELECT C_INTERFACE_ID,
           (SELECT C_BIZ_NAME
              FROM ZSSYS.WEB_ISC_INTERFACE_REG
             WHERE C_PK_ID = C_INTERFACE_ID) C_INTERFACE_ID,
           DD,
           COUNT(*),
           SUM(DBMS_LOB.GETLENGTH(C_DATA)) / 1024 / 1024
      FROM (SELECT C_INTERFACE_ID, TO_CHAR(T_CRT_TM, 'YYYY-MM-DD') AS DD, C_DATA
              FROM ZSSYS.WEB_ISC_DATA D
             WHERE T_CRT_TM > TRUNC(SYSDATE - 90))
     GROUP BY C_INTERFACE_ID, DD ;
    
    

    扩展:Oracle - DBMS_LOB函数和用法

    DBMS_LOB包中主要提供了以下几个过程供用户对内部LOB字段进行维护:

    APPEND:            将源LOB中的内容加到目的LOB中。
    CLOSE:             关闭已经打开的LOB。
    CREATETEMPORARY:   在用户的临时表空间中,建立临时LOB。
    
    FILECLOSE:         关闭打开的BFILE定位符所指向的OS文件。
    FILECLOSEALL:      关闭当前会话已经打开的所有BFILE文件。
    
    FILEEXISTS:        确定file_loc对应的OS文件是否存在,1:存在。0:不存在。
    FILEGETNAME:       获取BFILE定位符所对应的目录别名和文件名。
    FILEISOPEN:        确定BFILE对应的OS文件是否打开。
    FREETEMPORA         释放在默认临时表空间中的临时LOB。
    FILEOPEN:          打开文件。
    
    GETCHUNKSIZE:      当建立包含CLOB/BLOB列的表时,通过指定CHUNK参数可以指定操纵LOB需要分配的字节数(数据库尺寸的整数倍)默认为数据块的尺寸。
    
    COPY:              从源LOB中复制数据到目的LOB。
    
    ERASE:             删除LOB中全部或部分内容。
    
    TRIM:              将LOB值减少到指定的长度。
    
    WRITE:             向LOB中写入数据。
    
    INSTR:             返回特定样式数据从LOB某偏移位置开始出现N次的具体位置。
    
    IDOPEN:            确定LOB是否打开,打开:1,未打开:0。
    
    ISTEMPORARY:       确定定位符是否为临时LOB。
    
    LOADFROMFILE:      将BFILE的部分或全部内容复制到目标LOB变量。
    
    LOADBLOBFROMFILE:  将BFILE数据装载到BLOB中,并且在装载后取得最新的偏移位置。
    
    OPEN:              打开LOB,open_mode(只读:dbms_lob.lob_readonly,写:dbms_lob.lob_readwrite)。
    COMPARE:           比较两个同种数据类型的LOB的部分或全部值是否相同。
    GETLENGTH:         获取LOB的长度。
    READ:              从LOB中读出数据。
    SUBSTR:            与字符处理函数SUBSTR使用方法一样。
    WRITEAPPEND:       将缓冲区数据写到LOB尾部。
    

    参考
    查询oracle clob占用空间脚本
    Oracle统计每条数据的大小
    DBMS_LOB
    Oracle - DBMS_LOB函数和用法

  • 相关阅读:
    C++ STL 介绍
    C++多线程学习笔记 (CreateThread()与 _beginthreadex() )
    Spring轻量级开发---基础知识和初体验
    J2EE面试题
    SSH的优缺点比较
    Qt容器类总结
    Qt Creater使用技巧
    Visual Studio里使用Qt
    Qt的学习之路
    解决Github下载慢和下载失败问题
  • 原文地址:https://www.cnblogs.com/liuyitan/p/13268467.html
Copyright © 2011-2022 走看看