ora-01650:unable to extend rollback segment name by num intablespace name 产生原因:上述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。
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
ora-00600:internal error code,arguments:[num],[?],[?],[?],[?] 产生原因:这种错误通常为oracle的内部错误,只对oss和oracle开发有用。ora-600的错误经常伴随跟踪文件的状态转储(系统状态和进程状态),系统状态存储将包括oracle rdbms持有的当前对象的信息,进程状态转储则将显示非凡进程持有的对象,当进程符合了某错误条件时,经常是由于一些信息取自它持有的一个块,假如我们知道这些错误进程持有的块,就轻易跟踪问题的来源。
解决方法:一般来说出现这个错误我们本身是无法解决的,只有从提高系统本身各方面来解决这个内部问题,如增加硬件设备,调整系统性能,使用ops(当然ops从某种意义上说并不是一种好的解决方式)等。ora-600错误的第一个变量用于标记代码中错误的位置(代码中的每个部分的第一变量都不一样),从第二个到第五个变量显示附加信息,告诉oss代码在哪里出现了错误。 一个报错例子如下: ora-00600: internal error code, arguments: [1237], [], [], [], [], [], [], []
ora-03113:end-of-file on communication channel 产生原因:通讯不正常结束,从而导致通讯通道终止 解决方法:
1>.检查是否有服进程不正常死机,可从alert.log得知
2>.检查sql*net driver是否连接到oracle可执行程序
3>.检查服务器网络是否正常,如网络不通或不稳定等
4>.检查同一个网上是否有两个同样名字的节点
5>.检查同一个网上是否有重复的ip地址 ora-00942:table or view does not exist 产生原因:这是由于装载的表或视图不存在,多半是catexp.sql还没有运行,无法执行export视图,假如catexp.sql已经运行,则可能是版本错误。
解决方法:因为import和export共享的一些视图是通过运行catexp.sql来装载的(它们具有相同的视图),并不生成单独的catexp.sql,因而造成视图与export代码不同步,较难保持彼此之间的兼容,用户就必须建立自己的export应用,从而避免ora-00942的错误。