讲解Oracle操作中常见的错误及解决方法(1)

日期: 2008-06-14 来源:TechTarget中国

  1.ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME


  错误的产生原因:上述ORACLE错误为回滚段表空间不足引起的,这也是ORACLE数据管理员最常见的ORACLE错误信息。当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。


  解决方法:使用“alter TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意的增加回滚段表空间的大小,可使用下列的语句先查询一下剩余的tablespace空间有多少:







select user_name,sql_text from V$open_cursor 
where user_name=’’;
 


  如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。你也可以用以下语句来检测一下rollback segment的竞争状况:







select class,count from V$waitstat where calss in(‘system undo header’,’
system undo block’,’undo header’,’undo block’);
 
  和







select sum(value) from V$sysstat where name in 
(‘db_block_gets’,’consistents gets’);

 
  如果任何一个class in count/sum(value)大于1%,就应该考虑增加rollback segment。


  ORA-01652:unable to extend temp segment by num in tablespace name


  错误产生的具体原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。


  解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:







SQL>select file_id,block_id,
blocks,bytes from sys.dba_free_space 
where tablespace_name=’’;
 


  返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:







SQL>select INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,
PCT_INCREASE FROM SYS.DBA_TABLESPACES where 
TABLESPACE_NAME=name;
 


  通过下面的SQL命令修改临时段表空间的缺省存储值:







SQL>alter TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY);
 
  适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:  






SQL>alter USER username TEMPORARY TABLESPACE new_tablespace_name;

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐