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=’

 1<user_name>’; 
 2
 3如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。你也可以用以下语句 
 4
 5来检测一下  rollback segment  的竞争状况: 
 6
 7Select class,count from V$waitstat where calss in(‘system undo header’,’system undo block’,’undo 
 8
 9header  ’  ,  ’  undo block  ’  );  和 
10
11Select sum(value) from V$sysstat where name in (‘db_block_gets’,’consistents gets’); 
12
13如果任何一个  class in count/sum(value)  大于  1%  ,就应该考虑增加  rollback segment  。 
14
15相应的英文如下: 
16
17Cause:Failed to allocate extent from the rollback segment in tablespace 
18
19Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified 
20
21tablespace. 
22
23ORA-01652:unable to extend temp segment by num in tablespace name 
24
25产生原因:  ORACLE  临时段表空间不足,因为  ORACLE  总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连 
26
27续就会出现上述的现象。 
28
29解决方法:我们知道由于  ORACLE  将表空间作为逻辑结构  \-  单元,而表空间的物理结构是数据文件,数据文件在磁盘上物 
30
31理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的 
32
33可用空间,使用视图  SYS.DBA_FREE_SPACE  ,视图中每条记录代表可用空间的碎片大小: 
34
35SQL&gt;Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=’<users>’; 
36
37返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参 
38
39数: 
40
41SQL&gt;SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE 
42
43TABLESPACE_NAME=name; 
44
45通过下面的  SQL  命令修改临时段表空间的缺省存储值: 
46
47SQL&gt;ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY); 
48
49适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题: 
50
51SQL&gt;ALTER USER username TEMPORARY TABLESPACE new_tablespace_name; 
52
53使用  ALTER TABLESPACE  命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加 
54
55了数据文件,就不能再删除它,若要删除,就要删除表空间。 
56
57一个报错例子如下: 
58
59ORA-1652:unable to extend temp segment by 207381 in tablespace TEMPSPACE 
60
61相应的英文如下: 
62
63Cause: Failed to allocate extent for temp segment in tablespace 
64
65Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified 
66
67tablespace or create the object in another tablespace.</users></user_name>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus