今天客户反映,创建表失败,临时表空间使用率100%。
查看数据库,发现有一个临时表空间使用率100%,但数据库目前没有用户使用它。
Status Name Type Extent Size (M) Used (M) Used %
--------- ------------------------------ --------- ---------- --------------- --------------- ---------------
ONLINE TEMP3 TEMPORARY LOCAL 409,600 31,976 7.81
ONLINE TEMP TEMPORARY LOCAL 153,600 153,599 100.00
ONLINE TEMP2 TEMPORARY LOCAL 160,000 113,702 71.06
TEMPORARY_TABLESPACE
--------------------
TEMP3
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
TEMP2
查看后台日志,发现是永久表空间报错。ORA-1652: unable to extend temp segment by xxx in tablespace XXXXX
ORA-1652: unable to extend temp segment by xxx in tablespace由于表空间容量不足而导致的创建表/索引等段对象的时候经常会出现ORA-1652错误,但是提供的信息确实unable to extend temp segment by 1024 in tablespace。 这让很多的人感到不解。提示的表空间并不是存放temp segment的临时表空间,而是永久表空间。
其实在ORACLE进行空间分配的时候首先分配的空间是TEMPORARY SEGMENT在各项操作都完成的最后,在将这个TEMPORARY SEGMENT转变为PERMANENT SEGMENT。 知道了这个过程我们就可以理解为什么在空间不足时创建段为什么提示的是临时段表空间了, 因为最先分配的都是临时段空间,在之后才将其转换为永久段对象。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24996904/viewspace-1062881/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24996904/viewspace-1062881/