重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、Oracle如果UNDO(撤销)表空间满了,直接导致DML操作等待UNDO释放空间。
专注于为中小企业提供网站建设、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业郊区免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
2、Oracle如果TEMP满了会出现两种情况:
a. 出现ORA-1652 unable to extend temp segment by 256 in tablespace错误,回滚事务。
b. ORACLE会提早重用temp空间,可能对闪回操作带来影响。
移动到另外一个位置的话需要修改数据库的控制文件,这种操作都比较危险,不建议在没有经验的情况下进行尝试,磁盘快满了的话 可以定期清理各种日志文件比如$ORACLE_BASE/admin/$ORACLE_SID/ 路径下的各种dump日志,还有$ORACLE_HOME/network/log里面的监听日志,另外再进行表空间的创建或数据文件的添加时,另外指定一个路径即可。
说明表空间不够,添加数据文件吧,不然导入会挂起的。后台alert日志也会提示。
另外导入也会写归档,也需要关注归档空间
打印出SQL放到PL/SQL Devoloper 执行,报无法通过8(在表空间XXX中)扩展 temp 段,还有一个页面,可以查询出记录,但无法统计数据!
经过分析产生原因可能是:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。
解决方法:知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:
SQLSelect file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=‘XXX’;
返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:
SQLSELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME='XXX';
通过下面的SQL命令修改临时段表空间的缺省存储值:
SQLALTER TABLESPACE name DEFAULT STORAGE (INITIAL64K NEXT 64K);适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:
SQLALTER USER username TEMPORARY TABLESPACE new_tablespace_name;
使用ALTER TABLESPACE命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。
不喜欢用命令的朋友,也可以通过ORACLE工具 DBA STUDIO 找到出问题库的表空间,具体位置在存储-表空间-XXX,右拦一般信息,可以看到,数据文件使用情况,选择存储,可适当修改,初使大小,和下一个大小,问题可能会解决,然后选种XXX点鼠标右键,选择添加数据文件,适当修改一般信息的文件大小和存储的数据文件已满后自动扩展的增量大小,问题也可以解决!
Oracle的表空间本来就是自动增长的,你何苦不用稳定的子增长设置,自己来设计方案。
还有过期不用的数据归档到备份数据库,这样表空间就够用了。
重新建一个临时表空间,把默认temp设为新的表空间,等旧的表空间查询做完就可以删除了