目前以Oracle18c为例,主要是查这个表USER_SEGMENTS。
在 Oracle 18c 数据库中,USER_SEGMENTS 是一个系统表,用于存储当前用户(当前会话)拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位,用于存储表、索引、分区、簇等对象的数据。
USER_SEGMENTS 表包含以下列:
通过查询 USER_SEGMENTS 表,你可以获取当前用户所有段的信息,如表名、大小、扩展信息等。例如,可以使用以下 SQL 查询获取当前用户的所有表和索引的信息:
SELECT SEGMENT_NAME, SEGMENT_TYPE, BYTES, BLOCKS
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE IN ('TABLE', 'INDEX');
这将返回当前用户拥有的所有表和索引的名称、类型、大小和占用的块数。
比如查表目前的空间大小和大小
select sum(BYTES) / 1024 / 1024 as SIZE_M, sum(MAX_SIZE) / 1024 / 1024 as MAX_SIZE_M from user_segments where segment_name = 'XXXX'
查看他的spaceName
select TABLESPACE_NAME from user_segments where segment_name = 'XXXX'
查看这个space_name是否能自增
select file_name,autoextensible,increment_by from dba_data_files where tablespace_name = 'USERS';
根据查询结果中的 AUTOEXTENSIBLE 列的值来判断是否允许自动增加段的大小: