Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

19

积分

0

好友

0

主题
1#
发表于 2012-5-8 22:11:21 | 查看: 9774| 回复: 4
oracle 怎样查询含blob字段的表TEST所占空间的大小,我自己用以下语句测试不知道是否正确,请刘大指点,谢谢
select a.table_name,a.segment_name,b.tablespace_name, b.bytes --b.bytes 为lob字段总大小?
from user_lobs a, user_segments b where a.segment_name=b.segment_name  and a.TABLE_NAME='TEST'
2#
发表于 2012-5-8 22:18:59
请参考以下脚本:
  1. col segment_name format a30
  2. set pagesize 10000
  3. select a.owner, a.segment_name, a.segment_type,
  4. sum(a.bytes)/1024/1024 Bytes_MB
  5. from dba_segments a, all_lobs b
  6. where a.segment_name = b.segment_name
  7. group by a.owner, a.segment_name, a.segment_type;
复制代码

回复 只看该作者 道具 举报

3#
发表于 2012-5-8 22:24:46
好的,谢谢 刘大。。。

回复 只看该作者 道具 举报

4#
发表于 2017-6-7 18:19:16
How to Compute the Size of a Table containing Outline CLOBs and BLOBs (文档 ID 118531.1)
参考这个

回复 只看该作者 道具 举报

5#
发表于 2017-7-10 15:40:32
在DBA_SEGMENTS的BYTES列中显示的表大小并不包括LOB(CLOB或BLOB)段大小。
因为为了对那些包含有LOB的表进行总体大小计算,我们就必须考虑:

表的字节大小 => 值取自dba_segments
+
LOB段的字节大小 => 值取自dba_lobs和dba_segments,其segment_type为LOBSEGMENT
+
LOB索引的字节大小 => 值取自dba_indexes和dba_segments, 其segment_type为LOBINDEX
  1. ACCEPT SCHEMA PROMPT 'Table Owner: '
  2. ACCEPT TABNAME PROMPT 'Table Name:  '
  3. SELECT
  4. (SELECT SUM(S.BYTES)                                                                                                 -- The Table Segment size
  5.   FROM DBA_SEGMENTS S
  6.   WHERE S.OWNER = UPPER('&SCHEMA') AND
  7.        (S.SEGMENT_NAME = UPPER('&TABNAME'))) +
  8. (SELECT SUM(S.BYTES)                                                                                                 -- The Lob Segment Size
  9.   FROM DBA_SEGMENTS S, DBA_LOBS L
  10.   WHERE S.OWNER = UPPER('&SCHEMA') AND
  11.        (L.SEGMENT_NAME = S.SEGMENT_NAME AND L.TABLE_NAME = UPPER('&TABNAME') AND L.OWNER = UPPER('&SCHEMA'))) +
  12. (SELECT SUM(S.BYTES)                                                                                                 -- The Lob Index size
  13.   FROM DBA_SEGMENTS S, DBA_INDEXES I
  14.   WHERE S.OWNER = UPPER('&SCHEMA') AND
  15.        (I.INDEX_NAME = S.SEGMENT_NAME AND I.TABLE_NAME = UPPER('&TABNAME') AND INDEX_TYPE = 'LOB' AND I.OWNER = UPPER('&SCHEMA')))
  16.   "TOTAL TABLE SIZE"
  17. FROM DUAL;
复制代码

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-6-14 21:54 , Processed in 0.052194 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569