动态网站制作指南 [  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中使用SQL MODEL定义行间计.
.oracle数据库备份与恢复 a piece.
.深入了解缓冲日志文件I/O重要性能.
.TNS-12500,TNS-12540,TNS-1256.
.软件巨头的合纵连横.
.Oracle9i进程内存占用问题解决方.
.把Oracle数据库移植到Microsoft .
.ORACLE关系数据库管理系统.
.Oracle基本数据类型存储格式浅析.
.存储参数(storage子句)含义及设.
.Oracle导出数据库结构到PowerDes.
.Oracle9i进程的内存占用问题的说.
.Daemon是怎样练成的.
.用GRUB来引导软盘映象——节约软.
.哪些初始化参数最影响Oracle系统.
.甲骨文金色中国大手笔 三年后举家.
.如何在Python下连接Oracle数据库.
.以 spfdisk 分割硬盘的一个范例(.
.exp导出blob, clob字段的表遭遇B.
.理解Oracle10g的SQL正则表达式支.

Oracle数据库操作常见错误及解决方案

发表日期:2008-2-9 |


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

  返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:

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-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=<F> and <B> between block_id and block_id+blocks-1;(<F>和<B>分别是ORA-01578报出的坏块出现的文件号和块号)

  假如坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)):

SQL>Analyze table <table_name> validate strUCture cascade;

  执行该命令后,可能会出现以下的结果:

  ORA-01578:与原先错误信息有相同的参数,为永久性的物理或逻辑坏块;与原先错误信息有不同的参数,可能与内存,page space和I/O设备有关。

  假如用户有此表的最新备份,那么最好是用此备份来恢复此表,或者使用event 10231来取出坏块以外的数据:

  <1>.先关闭数据库

  <2>.编辑init<sid>.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<sid>.ora文件中删掉并重起数据库

  <6>.rename坏表,把临时表rename成坏表的表名

  <7>.创建表上的INDEX等

  假如ORA-01578出错信息提示数据坏块指向的是数据字典或者是回滚段的话,你应该立即与ORACLE公司联系,共同商量一个好的解决办法。

  这里所讲的解决方法只是比较常见的一种,一些更为具体的解决办法可以查看一下ORACLE的故障解决手册,那里面有浞及使用ROWID方法来取出坏块以外的数据的方法,这里就不介绍了。 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的错误。

  上述错误均为我们在使用回滚段时比较常见的问题,ORA-01598指明当前使用的回滚段的状态为“not online”,不能使用,将它改为“online”状态即可使用;ORA-01636指明当前回滚段已经为“online”状态,可以直接使用,不用再集合它。

  ORA-1636 signalled during: alter rollback segment rb00 online

  我们在做统计时还可能碰到下述问题:一个rollback segment的状态为”Needs Recovery”的现象,这是由于ORACLE回退一个事物表中的没有提交的事物时失败所造成的。通常原因为一个datafile或者tablespace是在offline的状态或者一个undo的目标被破坏或者rollback segment被破坏。解决的办法是将所有的tablespace和datafile都置为online状态,假如不能解决则做下面的工作:

  1>.在initsid.ora中加入event=”10015 trace name context forever lever 10”;

  2>.shutdown数据库然后重启;

  3>.在$ORACLE_HOME/rdbms/log下,找到startup时生成的trace file;

  4>.在trace文件中,找到下列信息“error recovery tx(#,#) object #”;

  5>.根据object#(与sys.dba_objects表中的object_id相同)在sys.dba_objects表中查出该object的名字;

  6>.将该object drop掉;

  7>.在init.ora文件中将该rollback segment放回rollback_segments参数中,删除event;8>.shutdown数据库然后重启。
此时”Needs Recovery”的问题应该是完全解决了,否则就是rollback segment被破坏了。

  ORA-01688:unable to extend table name.name partition NAME by NUM in tablespace NAME

  产生原因:指定的tablespace空间已经被占用满,无法扩展。

  解决方法:使用“ALTER TABLESPACE ADD DATAFILE”命令增加文件系统文件和原始分区,或者增加INITIAL的大小(如:alter tablespace CDRS101 default storage(next 500M pctincrease 1))应该能够解决,否则就是有人使用你的表空间上创建了一个比较大的数据文件导致你的表空间不够用。

  一个报错例子如下:

ORA-1688: unable to extend table RMMCDR.LOCAL_CDR partition LOCAL_CDR101 by 460800 in tablespace CDRS101
上一篇:Oracle9i中监视索引的使用 人气:905
下一篇:Oracle与SQL Server在企业应用中的比较 人气:365
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-9-5 AyWeb企业网站管理系统 v2.3 bui
2008-9-5 美女写真小偷程序联盟 v3.0 buil
2008-9-5 老Y文章管理系统 v2.1
2008-9-5 SiteDynamic企业网站管理系统 v1
2008-9-5 MyCOM企业网站管理系统 v1.0 Bui
2008-9-5 乐风CMS影视版 2008
2008-9-5 幻影电影视频系统TvsCms v1.3 伪
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号