MYSQL网页编程之ORA-03113毛病剖析
由于MySQL数据库已经如此普及,对企业来说它无疑是一个更好的选择。毛病Fenng(Fenng@itpub.net)
版权声明:转载请说明作者及出处
媒介
每个DBA在举行数据库办理的过程当中不成制止的要碰到五花八门的毛病(ORA-xxxx).有些毛病因为频仍呈现、缘故原由庞大而被DBA们戏称之为"典范的毛病".个中ORA-3113"endoffileoncommunicationchannel"就是如许的一个.
我们能够复杂的把这个毛病了解为Oracle客户端历程和数据库背景历程毗连中止.不外,招致这个毛病的缘故原由实践上有良多种,对数据库设置不妥、任何能招致数据库背景历程溃散的举动都大概发生这个毛病.这个毛病的呈现还常常陪伴着别的毛病,好比说:ORA-1034ORACLEnotavailable.
别的,该毛病呈现的场景庞大,大概呈现在:
启动的Oracle的时侯;试图创立数据库的时侯;试图对数据库举行毗连的时侯;在客户正直在运转SQL/PL/SQL的时侯;备份/恢单数据库的时侯;别的一些情形下......
在论坛上也经常能够看到低级DBA对这个成绩的求救.在这里复杂的对该成绩举行一下收拾.不妥的地方,请多指教!
毛病缘故原由各种
依据收集上人人反应的情形来看,毛病缘故原由约莫有这些:
Unix中心参数设置不妥Oracle实行文件权限不准确/情况变量成绩客户端通讯不克不及准确处置数据库服务器溃散/操纵体系溃散/历程被killOracle外部毛病特定SQL、PL/SQL引发的毛病空间不敷防火墙的成绩别的缘故原由
在入手下手办理成绩之前,作以下几件事变:
1、回想一下在呈现毛病之前你都做了甚么操纵,越具体越好;
2、检察background_dump_dest目次中的alertSID.log文件也是你要做的事变;
3、Google一下,在互联网上有良多信息等着你往发明,不要甚么都问他人.固然,假如你找到了一些对你十分有匡助的器材DD这篇文档就不必看了,别延误你的工夫,呵呵.
Unix中心参数设置不妥/init参数设置不妥
假如数据库在安装过程当中没有设定准确的操纵体系中心变量,大概在安装数据库文件的时侯
没什么成绩,在创立数据库的时侯经常会呈现03113毛病.和此有关的另外一个缘故原由是init.ora
参数文件中的processes参数指定了分歧理的值,启动数据库招致毛病呈现(固然这个回根到
底也是中心参数的成绩).
这个毛病信息一样平常以下:
ORA-03113:end-of-fileoncommunicationchannel
ORA-01034:ORACLEnotavailable
ORA-27101:sharedmemoryrealmdoesnotexist
办理举措有两个:
1修正中心参数,加年夜响应中心参数的值(保举);
2减小init.ora参数的Processes的值.
必要注重的是:
SEMMSL必需设定为最少要10+ 历程数的最年夜值.
SEMMNS也依附于每一个数据库上的历程参数值.
-------------------------------------------------------------------------------
注:
这个毛病范例只在Unix平台上呈现.在Windows上假如processes的值过年夜,则会呈现:
ORA-00068:invalidvalue24200001forparametermax_rollback_segments,mustbe
between2and65535/*此时指定的参数值凌驾了65535*/
大概
ORA-27102:outofmemory /*小于65535的一个年夜参数值*/
我的软件情况:
Windows2000Version5.0ServicePack3,CPUtype586
ORACLERDBMSVersion:8.1.7.0.0.
-------------------------------------------------------------------------------
在特定平台上变动中心参数大概会有不同,请参考OracleTechnet(http://otn.oracle.com)上的安装文档.对特定Unix平台的安装文档也有对中心参数意义的注释.
Init.ora中的参数假如设置不妥,会发生该毛病.有履历标明:shared_pool_size设置太小会呈现毛病,别的timed_statistics=true的设置也会带来成绩.
Oracle实行文件权限不准确/情况变量成绩
这个成绩只呈现在Unix平台上.罕见情形是有的时侯办理员为了便利而利用Unix
的tar命令处置过的紧缩包举行的安装,大概是体系办理员指定了分外的OS用户也能够办理数
据库却没有指定准确的情况变量.
Oracle实行文件在$ORACLE_HOME/bin目次下,假如呈现成绩,应当用以下Unix相似命令来改正:
chmod7755$ORACLE_HOME/bin/oracle
有的时侯要对Oracle举行relink操纵.
在Unix上经由过程cp拷贝安装的时分,经常会呈现情况变量的成绩,和一般实行程序毗连成绩.LD_
LIBRARY_PATH假如设置的不准确会招致成绩,在这类情形下,必要对Oracle举行relink.假如
可实行文件oralcle被损坏,也要对其relink.
假如安装了并行服务器选项而DistributedLockManager没有安装或准确运转也会招致毛病.
客户端通讯不克不及准确处置
SQL*Net驱动器的成绩:
假如利用的版本对照低的驱动器,请改换到新版本的驱动.SQL*Net
的驱动没有毗连到Oracle可实行文件会招致毛病.
反省收集是不是畅达
Windows平台的罕见成绩:
在Windows平台创立数据库的时侯,假如呈现该成绩能够思索用以下的办法:
起首反省当地收集设置.检察收集上是不是有同名的结点或有抵触的IP.假如成绩仍旧,能够保
守的用上面的办法:
1.禁用网卡:将当地毗连形态改成禁用;
2.将sqlnet.ora文件翻开(以记事本情势)将nts考证正文失落:
#SQLNET.AUTHENTICATION_SERVICES=(NTS).
3.创立数据库;
4.创立乐成后,恢复当地毗连.
数据库服务器溃散/操纵体系溃散/历程被Kill
在毗连过程当中,假如Oracle数据库的服务器溃散大概数据库地点的操纵体系溃散,就会呈现这
个毛病.OracleServer溃散的缘故原由大概由于次要背景历程逝世失落.被毛病的举行了Kill操纵.假如是这个缘故原由仍是对照简单办理的.别的,和OS有关的使用程序存在内存泄露(大概有病毒)的时侯也会招致Oracle背景程序成绩.
保举排错举措:
1、检察使用软件相干历程是不是一般运转;
2、检察有没有内存泄露;
3、查杀病毒;
4、断定体系办理员没有举行误操纵;
5、断定无黑客进侵举动.
6、别的不断定要素......
Oracle外部毛病/Bug
假如检察background_dump_dest目次中的alert.log发明有没有ora-600等毛病,能够到Metalin
k站点上检察详细信息及其办理计划.一样平常情形下要打软件补钉.
特定SQL、PL/SQL引发的毛病
实验把SQL举行分隔实行,也能够用SQL_TRACE来举行跟踪,找到招致成绩的SQL语句:
在SQLPlus下:
ALTERSESSIONSETSQL_TRACETRUE;
SQL语句中的不法字符和分歧理的处置了局偶然会带来成绩.
体系空间不敷
任什么时候侯都要确保数据库体系有充足的空间.假如USER_DUMP_DEST
和BACKGROUND_DUMP_DEST没有残剩空间的话,会招致此成绩.别的,假如翻开了审计,AUDIT目次要由充足的空间.假如激活了Trace的话,Trace目次要由充足的空间.
DaveWotton的文档标明,在对表举行拔出数据的时侯,假如文件凌驾了2G(而文件体系有2G限定),会招致该成绩.
防火墙的成绩
假如数据要经由过程防火墙,请接洽体系办理员,扣问是不是对数据库数据举行了过滤大概是俄然禁
止了通行端口.如当地安装有团体防火墙,请反省当地设置.
别的方面申明
招致这个毛病的缘故原由有良多种,下面列到的只是一些典范情形.常常往一些数据库手艺论坛可
能会有匡助.好比说ITPUB(http://www.itpub.net)、CNOUG(http://www.cnoug.org)等.
参考信息/更多浏览
http://Metalink.oracle.com
Oracle的手艺撑持站点,要有CSI号码才能够登录.
参考Note编号:
Note:17613.1
ORA-3113onUnix-WhatInformationtoCollect
NOTE:131207.1
HowtoSetUNIXEnvironmentVariables
Note:131321.1
HowtoRelinkOracleDatabaseSoftwareonUNIX
Note:22080.1
http://www.google.com/grphp?hl=zh-CN
Google旧事组
http://www.jlcomp.demon.co.uk/faq/ORA-3113.html
手艺专家JonathanLewis的站点上的一个FAQ
http://home.clara.net/dwotton/dba/ora3113.htm
DaveWotton总结的一个很典范的文档.
解决方案提供商应记住DBaaS通常仅仅是解决方案的一部分。客户之所以与他们的解决方案提供商协同工作,不仅是因为他们出售的产品,而且还因为他们所提供的服务。 同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。 分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。 而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~ where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。 这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片? 如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
页:
[1]