同事反馈在JAVA中用JDBC连接Oracle数据库时返回ora-17410 错误。反映说可能是临时表空间满了原因。于是赶紧检查临时表空间相关内容。
一、查看临时表空间名称
SELECT PROPERTY_NAME, PROPERTY_VALUE,description FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
返回结果:
查看临时表空间信息
select * from v$temp_space_header;
返回结果:
v$temp_space_header显示在空间头部确定的每个局部管理的临时表空间的每个文件的汇总消息,包括空间的使用量(byte为单位)、空闲容量(byte为单位)。
displays aggregate information per file per LOCALLY MANAGED temporary tablespace regarding how much space is currently being used and how much is free as identified in the space header.
查看临时文件信息
select * from v$tempfile;
返回结果:
可以发现:
v$temp_space_header.BYTE_USED+v$temp_space_header.BYTES_FREE=v$tempfile.BYTES
查看临时表空间剩余空间信息
DBA_TEMP_FREE_SPACE视图显示每个临时表空间中分配的总空间和剩余的容量。当一个排序操作在临时表空间中结束时,占用的空间不会重分配,而是标记为可用再利用状态。
select * from dba_temp_free_space;
返回结果:
从结果中可以得到当前的临时表空间中可以利用的空间还有33973862400/1024/1024/1024≈31.06G。
未分配空间为(34358689792-34336669696)/1024/1024=21M。