度量快速开发平台-业界最好的全功能软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 122|回复: 5

[分享] Oracle常见ORA错误及解决办法

[复制链接]

514

主题

5611

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
12997
发表于 2017-12-14 14:15:23 | 显示全部楼层 |阅读模式
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;
  使用ALTER TABLESPACE命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。
  一个报错例子如下:
  ORA-1652:unable to extend temp segment by 207381 in tablespace TEMPSPACE
  ORA-01628: max # of extents num reached for rollback segment num
  产生原因:
  这种错误通常为一个回滚段和一个表空间已经达到MAXEXTENTS参数设置的极限。要注意的是这个MAXEXTENTS不是该回滚段或表空间的硬件极限,硬件极限取决于数据库创建时在init.ora文件中指定的DB_BLOCK_SIZE参数的值。
  解决方法:
  使用SQL命令ALTER TABLESPACE…STORAGE(MAXEXTENTS XXXX)来增加 MAXEXTENTS,其中“XXXX”值必须大于错误信息中所指的数值,但不能大于LARGEST MAXEXTENT的值,如果已经达到了LARGEST MAXEXTENT VALUE,解决的办法就是重新创建较大的范围尺寸,使用带有选项COMPRESS=Y的Export工具导出表,如果表空间有可用空间,先给表做一个备份,用alter tablespace tablespace_name更改其名字,然后再装载表回数据库。
  查看其错误出现的地方,如果出现在回滚段或索引上,那么必须将其删除并重建,如果出现在临时表空间,修改临时表空间的存储字段,便可解决这个问题。
  一个报错例子如下:
  ORA-1628:max # extents 50 reached for rollback segment RBS_1

回复

使用道具 举报

514

主题

5611

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
12997
 楼主| 发表于 2017-12-14 14:15:49 | 显示全部楼层
回复

使用道具 举报

328

主题

3738

帖子

8565

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8565
QQ
发表于 2017-12-15 13:52:18 | 显示全部楼层
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8565

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8565
QQ
发表于 2017-12-15 13:53:04 | 显示全部楼层
{:soso__6657261416950704919_q4:}
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8565

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8565
QQ
发表于 2017-12-15 13:53:32 | 显示全部楼层
回复 支持 反对

使用道具 举报

514

主题

5611

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
12997
 楼主| 发表于 2017-12-19 13:50:34 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-1-18 10:17 , Processed in 0.318419 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表