动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.Oracle与Access表之间的导入和导.
.[Oracle]Redo log日志组故障分析.
.ORACLE使用LogMiner分析重做日志.
.Oracle 10g,跨Resetlogs时间点恢.
.Oracle快速入门.
.哈希分区表使用时注意事项.
.关于使用Oracle9i时,无法找到客.
.Oracle9i在线表格重定义来组织表.
.ORACLE里面的数据导入到EXCLE.
.ORACLE Virtual Private Databas.
.巧取指定的记录与巧用外关联查询.
.讲解SQL与Oracle外键约束中的级联.
.Oracle并行服务器(OPS)经典FAQ.
.ORACLE在HP-UX下的系列问题处理(.
.ORACLE之常用FAQ V1.0 (4).
.Oracle9i重建与切换临时表空间.
.Oracle初学点滴-(2).
.Oracle数据库的几个关闭方法与例.
.数据库手册:速查Oracle函数列表.
.ORACLE自带的JDBC源代码解析.

Oracle常见错误代码的分析与解决一

发表日期:2008-2-9 |



  在使用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.
  
  ORA-01578:Oracle data block corrupted(file # num,block # num) 
  
  产生原因:当ORACLE访问一个数据块时,由于1、硬件的I/O错误;2、操作系统的I/O错误或缓冲问题;3、内存或paging问题;4、ORACLE试图访问一个未被格式化的系统块失败;5、数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者物理坏块,这时就会报ORA-01578的错误。

  
  解决方式:由于ORACLE只有在访问到有问题的数据文件时才会报错,所以报错的时间有可能会比实际出错的时间要晚,假如ORA-01578出错信息提示数据坏块指向的是用户自己的数据文件,则用以下方法来解决:
  
  假如通过下面的SQL语句查出的坏块出现有索引上,则只需重建索引即可
  
  SQL>Select owner,segment_name,segment_type from dba_extents where file_id= and between block_id and block_id+blocks-1;
  
  (和分别是ORA-01578报出的坏块出现的文件号和块号)
  
  假如坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)): SQL>Analyze table validate strUCture cascade;
  
  
  执行该命令后,可能会出现以下的结果:
  
  ORA-01578:与原先错误信息有相同的参数,为永久性的物理或逻辑坏块;与原先错误信息有不同的参数,可能与内存,page space和I/O设备有关。
  
  假如用户有此表的最新备份,那么最好是用此备份来恢复此表,或者使用event 10231来取出坏块以外的数据:
  
  <1>.先关闭数据库
  
  <2>.编辑init.ora文件,加入:
  
  event=”10231 trace name context forever,level 10”
  
  <3>.startup restrict
  
  <4>.创建一个临时表:SQL>create table errortemp as select * from error;(error是坏表的表名)
  
  <5>.把event从init.ora文件中删掉并重起数据库
  
  <6>.rename坏表,把临时表rename成坏表的表名
  
  <7>.创建表上的INDEX等
  
  假如ORA-01578出错信息提示数据坏块指向的是数据字典或者是回滚段的话,你应该立即与ORACLE公司联系,共同商量一个好的解决办法。
  
  这里所讲的解决方法只是比较常见的一种,一些更为具体的解决办法可以查看一下ORACLE的故障解决手册,那里面有浞及使用ROWID方法来取出坏块以外的数据的方法,这里就不介绍了。
  
  相应的英文如下:
  
  
  
  Cause:The given data block was corrupted,probably due to program errors
  
  Action:Try to restore the segment containing the given data block,This may involve dropping the segment and recreating it,If there is a trace file,report the messages recorded in it to customer support.
  
  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
  
  相应的英文如下:
  
  
  
  Cause: An attempt was made to extend a rollback segment that already has reached its maximum size or space could not be allocated in the data dictionary to contain the definition of the object.
  
  Action:If possible,increase the value of either the MAXEXTENTS or PCTINCREASE initialization parameters or find the data dictionary table lacking space and alter the storage parameters,as described in the Oracle8 Server Administrator’s Guide.
  
  ORA-00600:internal error code,arguments:[num],[?
],[?],[?],[?] 
  
  产生
上一篇:Linux系统的防病毒方案 人气:346
下一篇:读核日记 ( 七 ) 人气:311
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵