ORACLE 临时表空间TEMP 满了怎么办?,sql,sql教程,Oracle基础
最近遇到这样一个问题:前一段时间网页查询ORACLE表正常 ,可最近一直页面无法显示 。打印出SQL放到PL/SQL Devoloper 执行 ,报“无法通过8(在表空间XXX中)扩展 temp 段” ,还有一个页面 ,可以查询出记录 ,但无法统计数据!
经过分析产生原因可能是:ORACLE临时段表空间不足 ,因为ORACLE总是尽量分配连续空间 ,一但没有足够的可分配空间或者分配不连续就会出现上述的现象 。
解决方法:知道由于ORACLE将表空间作为逻辑结构-单元 ,而表空间的物理结构是数据文件 ,数据文件在磁盘上物理地创建 ,表空间的所有对象也存在于磁盘上 ,为了给表空间增加空间 ,就必须增加数据文件 。先查看一下指定表空间的可用空间 ,使用视图SYS.DBA_FREE_SPACE ,视图中每条记录代表可用空间的碎片大?a href="http://www.learners.cn" target="_blank">。?nbsp;
SQL>Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=‘XXX’;
返回的信息可初步确定可用空间的最大块 ,看一下它是否小于错误信息中提到的尺寸 ,再查看一下缺省的表空间参数:
SQL>SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME='XXX';
通过下面的SQL命令修改临时段表空间的缺省存储值:
SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL 64K NEXT 64K);
适当增大缺省值的大小有可能解决出现的错误问题 ,也可以通过修改用户的临时表空间大小来解决这个问题:
SQL>ALTER USER username TEMPORARY TABLESPACE new_tablespace_name;
使用ALTER TABLESPACE命令 ,一但完成 ,所增加的空间就可使用 ,无需退出数据库或使表空间脱机 ,但要注意 ,一旦添加了数据文件 ,就不能再删除它 ,若要删除 ,就要删除表空间 。
不喜欢用命令的朋友 ,也可以通过ORACLE工具 DBA STUDIO 找到出问题库的表空间 ,具体位置在“存储”->“表空间”->”XXX”,右拦“一般信息” ,可以看到 ,数据文件使用情况 ,选择存储 ,可适当修改 ,“初使大小” ,和“下一个大小” ,问题可能会解决 ,然后选种“XXX”点鼠标右键 ,选择“添加数据文件” ,适当修改“一般信息”的“文件大小”和“存储”的“数据文件已满后自动扩展”的“增量”大小 ,问题也可以解决!
最近遇到这样一个问题:前一段时间网页查询ORACLE表正常 ,可最近一直页面无法显示 。打印出SQL放到PL/SQL Devoloper 执行 ,报“无法通过8(在表空间XXX中)扩展 temp 段” ,还有一个页面 ,可以查询出记录 ,但无法统计数据!
经过分析产生原因可能是:ORACLE临时段表空间不足 ,因为ORACLE总是尽量分配连续空间 ,一但没有足够的可分配空间或者分配不连续就会出现上述的现象 。
解决方法:知道由于ORACLE将表空间作为逻辑结构-单元 ,而表空间的物理结构是数据文件 ,数据文件在磁盘上物理地创建 ,表空间的所有对象也存在于磁盘上 ,为了给表空间增加空间 ,就必须增加数据文件 。先查看一下指定表空间的可用空间 ,使用视图SYS.DBA_FREE_SPACE ,视图中每条记录代表可用空间的碎片大?a href="http://www.learners.cn" target="_blank">。?nbsp;
SQL>Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=‘XXX’;
返回的信息可初步确定可用空间的最大块 ,看一下它是否小于错误信息中提到的尺寸 ,再查看一下缺省的表空间参数:
SQL>SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME='XXX';
通过下面的SQL命令修改临时段表空间的缺省存储值:
SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL 64K NEXT 64K);
适当增大缺省值的大小有可能解决出现的错误问题 ,也可以通过修改用户的临时表空间大小来解决这个问题:
SQL>ALTER USER username TEMPORARY TABLESPACE new_tablespace_name;
使用ALTER TABLESPACE命令 ,一但完成 ,所增加的空间就可使用 ,无需退出数据库或使表空间脱机 ,但要注意 ,一旦添加了数据文件 ,就不能再删除它 ,若要删除 ,就要删除表空间 。
不喜欢用命令的朋友 ,也可以通过ORACLE工具 DBA STUDIO 找到出问题库的表空间 ,具体位置在“存储”->“表空间”->”XXX”,右拦“一般信息” ,可以看到 ,数据文件使用情况 ,选择存储 ,可适当修改 ,“初使大小” ,和“下一个大小” ,问题可能会解决 ,然后选种“XXX”点鼠标右键 ,选择“添加数据文件” ,适当修改“一般信息”的“文件大小”和“存储”的“数据文件已满后自动扩展”的“增量”大小 ,问题也可以解决!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-122221/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10294527/viewspace-122221/