ORACLE常见错误代码的分析与解决(一)

 更新时间:2007年03月06日 00:00:00   作者:  
正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决(一)。 在使用ORACLE的过程过,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可
能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个
合理解决这些错误的方法,同时也希望你能够提出你的不同看法。毕竟作为一种交流的手段,个人意见难免过于偏颇,而
且也必定存在着不足,出错之处在所难免。写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步。

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。

相应的英文如下:

Cause:Failed to allocate extent from the rollback segment in tablespace

Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified
tablespace.

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

相应的英文如下:

Cause: Failed to allocate extent for temp segment in tablespace

Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified
tablespace or create the object in another tablespace.

<

相关文章

  • Windows Oracle常见服务介绍

    Windows Oracle常见服务介绍

    注:SID - 数据库标识 HOME_NAME - Oracle Home名称,如OraHome92、OraHome81
    2009-05-05
  • Oracle出现超出打开游标最大数的两种解决方法

    Oracle出现超出打开游标最大数的两种解决方法

    当Oracle数据库中打开的游标数超过了数据库的最大游标数限制时,就会出现“超出打开游标最大数”的错误,本文给大家介绍了几种常见的解决方法,需要的朋友可以参考下
    2024-02-02
  • Oracle实现查询前N条记录的两种方法

    Oracle实现查询前N条记录的两种方法

    在 Oracle 数据库中,查询表中的前 N 条记录是一个常见的需求,无论你是需要获取最新的几条数据,还是进行分页查询,掌握这一技巧都至关重要,本文将介绍两种常用的方法来检索 Oracle 表中的前 N 条记录,需要的朋友可以参考下
    2024-12-12
  • Oracle批量投入数据方法总结

    Oracle批量投入数据方法总结

    这篇文章主要介绍了Oracle批量投入数据方法总结,文中通过代码示例讲解的非常详细,对大家的学习或工作有的一定的帮助,需要的朋友可以参考下
    2025-01-01
  • 12类Oracle日期函数超全面总结

    12类Oracle日期函数超全面总结

    日期时间函数用于处理时间类型的数据,Oracle以7位数字格式来存放日期数据,下面这篇文章主要给大家介绍了关于12类Oracle日期函数超全面总结的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • ORACLE数据库空间整理心得

    ORACLE数据库空间整理心得

    ORACLE数据库空间整理心得...
    2007-03-03
  • oracle 12c创建可插拔数据库(PDB)与用户详解

    oracle 12c创建可插拔数据库(PDB)与用户详解

    Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。下面这篇文章主要给大家介绍了利用oracle 12c创建可插拔数据库(PDB)与用户的相关资料,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • 解析一个通过添加本地分区索引提高SQL性能的案例

    解析一个通过添加本地分区索引提高SQL性能的案例

    今天接到同事求助,说有一个select query,在Oracle上要跑一分多钟,他希望能在5s内出结果,以下就是解决这个问题的方法,需要的朋友可以参考下
    2013-07-07
  • Oracle数据库中建立索引的基本方法讲解

    Oracle数据库中建立索引的基本方法讲解

    这篇文章主要介绍了Oracle数据库中建立索引的基本方法,包括对性能方面进行衡量而给出的一些索引的设计和使用建议,需要的朋友可以参考下
    2016-01-01
  • Oracle Form中COMMIT的概述及使用技巧

    Oracle Form中COMMIT的概述及使用技巧

    针对form上面的数据变动提交到后台数据库,同时数据库提交数据,接下来将详细介绍下Form中COMMIT的使用,感兴趣的你可以参考下本文
    2013-03-03

最新评论