Oracle中统计数据占用空间大小 1. Oracle统计数据的大小 扩展:Oracle - DBMS_LOB函数和用法

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函数和用法