1. 使用DBA_SEGMENTS
视图
DBA_SEGMENTS
视图包含了数据库中所有段的信息,包括表所占用的空间。你可以通过查询这个视图来获取特定表的空间使用情况。例如:
SELECT segment_name, segment_type, bytes/1024/1024 AS size_in_mb
FROM dba_segments
WHERE segment_name = '你的表名' AND owner = '表的所有者';
请确保将'你的表名'
和'表的所有者'
替换为实际的表名和所有者名。
2. 使用USER_SEGMENTS
视图
如果你有权限访问当前用户的对象,可以使用USER_SEGMENTS
视图:
SELECT segment_name, segment_type, bytes/1024/1024 AS size_in_mb
FROM user_segments
WHERE segment_name = '你的表名';
3. 使用DBMS_SPACE
包
Oracle的DBMS_SPACE
包提供了一些函数来计算特定对象(如表)的空间使用情况。例如,使用UNUSED_SPACE
函数可以查看未使用的空间:
SELECT DBMS_SPACE.SPACE_USAGE(USER, '你的表名') FROM dual;
4. 使用DBA_DATA_FILES
和DBA_FREE_SPACE
视图
如果你想查看表所在的表空间以及其文件的空间使用情况,可以结合使用DBA_DATA_FILES
和DBA_FREE_SPACE
视图:
SELECT f.tablespace_name, f.bytes/1024/1024 AS total_size_in_mb,
fs.bytes/1024/1024 AS free_size_in_mb,
(f.bytes - fs.bytes)/1024/1024 AS used_size_in_mb
FROM dba_data_files f, dba_free_space fs
WHERE f.tablespace_name = fs.tablespace_name
AND f.file_id = fs.file_id;
5. 使用V$SEGMENT_STATISTICS
视图(Oracle 12c及以上)
从Oracle 12c开始,可以使用V$SEGMENT_STATISTICS
视图来获取更详细的段统计信息,包括空间使用情况:
SELECT owner, segment_name, SUM(blocks) * datafile_blocks_per_segment AS bytes
FROM v$segment_statistics
WHERE owner = '表的所有者' AND segment_name = '你的表名'
GROUP BY owner, segment_name;