ora-27100产生的原因分析(转)

       ora-27100是指oracle共享内存已经存在,事实上是因为在启动ORACLE例程的过程中发生了异常,导致实例没有完全启动成功.所以这时,你要是用SQL PLUS或其它客户端工具去连ORACLE,显然是连不到的.反过来,你要是再发布一次startup命令再次启动实例,因为前一次有启动实例,所以就会抛出这个错误.


        那么,为什么实例会出现没有完全启动成功的情况呢?这主要是因为实例的配置参数不正确或不合理所导致.我仔细回想了我昨天的操作:因为是新装的ORACLE,服务器的物理内存是有加到4G,我把SGA调大到了1.7G,并且将pre_page_sga设为true ,当时调整参数时关闭数据库然后重启没有问题.但是,为什么搬到黎明网络以后就会出问题呢?


       大伙可能会想,这可能是因为改IP的原因.我当时心里虽然明知可能不是这个原因,但是也将这个列为可能原因之一.所以后来我将IP改回来,但是问题依旧.现在我找到了真正的原因:


        改了IP后,我重启了WINDOWS中的ORACLE服务.大家会问,这和在企业管理器重启数据库有什么区别啊?你在OEM中重启数据库都没问题,为什么在windows中重启ORACLE的服务就会出问题呢?要解释这个原因,我们得必须了解在WINDOWS中启动ORACLE服务是做了什么操作:首先,会启动oracle专用进程,如果这个没有问题,则还会启动实例,装载和打开数据库.所以,这就是问题所在了,当你在WINDOWS中启动ORACLE服务的时候,事实上是做了4:start dedicated server process,start instance,mound database,open database. 所以,不管你将启动oracle服务设定为自动还是手动,在你启动服务时它都会做这4个动作(除非你用oradim另外配置).而在OEM中重启数据库,它并不会重启ORACLE在WNIDOWS的进程,它只是重启实例和DB,所以你改了参数以后,重启有可能是不会出现问题的.也就是说用oracle自己的shutdown和startup管理工具重启DB有可能是正常的,但是你借助windows的服务来启db却有可能会报错.


   这听起来好象解释不通对吧?但是我们再来进一步深入分析,我们回过头来看看windows中启动oracle服务时寻找参数文件以启动例程的优先顺序:


&nbp; -spfilesid.ora


  -缺省的spfile


  -initsid.ora


  -缺省的pfile


在启动oracle服务时,首先会在服务端找spfilesid.ora用于启动例程,如果找不到spfilesid.ora,则使用服务端缺省的spfile来启动,如果缺省的spfile也找不到,则使用initsid.ora来启动例程,最后则是使用缺省的pfile.当然你也可以指定pfile来覆盖缺省spfile启动例程,或通过spfile=命令使用指定的spfile来启动例程.


   因为我们的参数修改有问题,所以在windows启动oracle服务时,它总是去找$oracle_homedatabasespfilesid.ora来启动例程(而这个参数文件是有问题的),虽然我们在startup命令中有指定pfile=,但是只要我们在windows中启动了oracle服务,你再发布startup命令就相当于第二次启动,所有自然就会抛出ora-27100(因为前面有启动嘛,只不过没有完全启动成功,它使用了有问题的spfilesid.ora来启动例程).


    找到了原因,要找解决办法就是水到渠成了.以下是我列出的解决办法(经测试都可以成功启动oracle):


1.     创建initsid.ora文件(数据库创建完成后在$oracle_homeadminpfile目录下有一个初始化参数文件,你拷贝然后重命名成initsid.ora),并将$oracle_homedatabase下的spfilesid.ora文件移开,然后重启windows中的oracle服务,这样oracle就可以完全启动


2.     将有问题的spfile移开,启动windows的oracle服务也能成功启动oracle,因为它会自动按顺序去找其它的参数文件


3.     移开有问题的spfilesid.ora,启动windows的oracle服务后,在sqlplus中用pfile=来启动oracle也没有问题


4.     经测试,当你移开所有的spfile,pfile后再启动windows的oracle服务,服务启动不会报错,但windows只是启动了oracle的专用进程,并没有启动实例和数据库.


5.     当你要在sql plus中启动oracle数据库时(或连接数据库时),一定要在windows的服务中启动2个服务:TNSlistener和OracleService.Listener是负责监听ORACLE服务进程及负责接收来自客户端的连接请求,相当于是一个中介服务程序一样.而OracleService是启动ORACLE专用服务器进程,如果没有启动,你在SQLPLUS中连接不到ORACLE空例程,会抛出:产生的原因分析:


ora-27100是指oracle共享内存已经存在,事实上是因为在启动ORACLE例程的过程中发生了异常,导致实例没有完全启动成功.所以这时,你要是用SQL PLUS或其它客户端工具去连ORACLE,显然是连不到的.反过来,你要是再发布一次startup命令再次启动实例,因为前一次有启动实例,所以就会抛出这个错误.


    那么,为什么实例会出现没有完全启动成功的情况呢?这主要是因为实例的配置参数不正确或不合理所导致.我仔细回想了我昨天的操作:因为是新装的ORACLE,服务器的物理内存是有加到4G,我把SGA调大到了1.7G,并且将pre_page_sga设为true ,当时调整参数时关闭数据库然后重启没有问题.但是,为什么搬到黎明网络以后就会出问题呢?


    大伙可能会想,这可能是因为改IP的原因.我当时心里虽然明知可能不是这个原因,但是也将这个列为可能原因之一.所以后来我将IP改回来,但是问题依旧.现在我找到了真正的原因:


    改了IP后,我重启了WINDOWS中的ORACLE服务.大家会问,这和在企业管理器重启数据库有什么区别啊?你在OEM中重启数据库都没问题,为什么在windows中重启ORACLE的服务就会出问题呢?要解释这个原因,我们得必须了解在WINDOWS中启动ORACLE服务是做了什么操作:首先,会启动oracle专用进程,如果这个没有问题,则还会启动实例,装载和打开数据库.所以,这就是问题所在了,当你在WINDOWS中启动ORACLE服务的时候,事实上是做了4:start dedicated server process,start instance,mound database,open database. 所以,不管你将启动oracle服务设定为自动还是手动,在你启动服务时它都会做这4个动作(除非你用oradim另外配置).而在OEM中重启数据库,它并不会重启ORACLE在WNIDOWS的进程,它只是重启实例和DB,所以你改了参数以后,重启有可能是不会出现问题的.也就是说用oracle自己的shutdown和startup管理工具重启DB有可能是正常的,但是你借助windows的服务来启db却有可能会报错.


   这听起来好象解释不通对吧?但是我们再来进一步深入分析,我们回过头来看看windows中启动oracle服务时寻找参数文件以启动例程的优先顺序:


&nbp; -spfilesid.ora


  -缺省的spfile


  -initsid.ora


  -缺省的pfile


在启动oracle服务时,首先会在服务端找spfilesid.ora用于启动例程,如果找不到spfilesid.ora,则使用服务端缺省的spfile来启动,如果缺省的spfile也找不到,则使用initsid.ora来启动例程,最后则是使用缺省的pfile.当然你也可以指定pfile来覆盖缺省spfile启动例程,或通过spfile=命令使用指定的spfile来启动例程.


   因为我们的参数修改有问题,所以在windows启动oracle服务时,它总是去找$oracle_homedatabasespfilesid.ora来启动例程(而这个参数文件是有问题的),虽然我们在startup命令中有指定pfile=,但是只要我们在windows中启动了oracle服务,你再发布startup命令就相当于第二次启动,所有自然就会抛出ora-27100(因为前面有启动嘛,只不过没有完全启动成功,它使用了有问题的spfilesid.ora来启动例程).


    找到了原因,要找解决办法就是水到渠成了.以下是我列出的解决办法(经测试都可以成功启动oracle):


1.     创建initsid.ora文件(数据库创建完成后在$oracle_homeadminpfile目录下有一个初始化参数文件,你拷贝然后重命名成initsid.ora),并将$oracle_homedatabase下的spfilesid.ora文件移开,然后重启windows中的oracle服务,这样oracle就可以完全启动


2.     将有问题的spfile移开,启动windows的oracle服务也能成功启动oracle,因为它会自动按顺序去找其它的参数文件


3.     移开有问题的spfilesid.ora,启动windows的oracle服务后,在sqlplus中用pfile=来启动oracle也没有问题


4.     经测试,当你移开所有的spfile,pfile后再启动windows的oracle服务,服务启动不会报错,但windows只是启动了oracle的专用进程,并没有启动实例和数据库.


5.     当你要在sql plus中启动oracle数据库时(或连接数据库时),一定要在windows的服务中启动2个服务:TNSlistener和OracleService.Listener是负责监听ORACLE服务进程及负责接收来自客户端的连接请求,相当于是一个中介服务程序一样.而OracleService是启动ORACLE专用服务器进程,如果没有启动,你在SQLPLUS中连接不到ORACLE空例程,会抛出:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9537053/viewspace-721260/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9537053/viewspace-721260/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ORA-03114: 未连接到Oracle。 这个错误通常是由于连接到Oracle数据库的会话已经断开或失效导致的。可能的原因包括网络故障、数据库服务器故障、会话超时或管理员强制终止会话等。 要解决这个问题,您可以尝试重新连接到数据库,或者检查网络连接是否正常。如果问题仍然存在,您可能需要联系数据库管理员以获取更多帮助。 ### 回答2: ORA-03114: Not Connected to Oracle是一种Oracle数据库的错误,表示数据库与应用程序之间的连接已经断开。当这种错误出现时,用户将无法继续正常访问数据库,无法读取或修改数据。 通常情况下,这个错误发生的原因是因为连接失效或因为数据库出现了故障。以下是一些导致ORA-03114错误的原因: 1. 网络故障 若连接在传输过程中出现了异常,就会导致ORA-03114错误。 建议检查网络连接是否稳定,或考虑使用更稳定的网络环境。 2. 数据库关闭 如果数据库已从服务器上卸载,或者数据库服务已被关闭,则无法继续进行对该数据库的访问,这种情况下会出现ORA-03114的错误。 3. 登录超时 当用户连接数据库超过指定的时间后,将会导致用户已经不再处于连接状态,从而发生ORA-03114的错误。 4. 连接被意外中断 如果在应用程序尝试连接数据库的过程中,连接被意外中断,该错误也可能产生。 针对ORA-03114错误,可以采取以下解决办法: 1. 确保网络稳定 在网络稳定的前提下进行数据库连接,确保数据传输过程中不会出现异常。 2. 重新连接数据库 如果数据库连接断开,可以尝试重新连接,确保可以正常连接并访问数据库。 3. 检查数据库服务 检查数据库服务是否已经启动,并保持运行状态,确认可以通过网络连接到该数据库服务。 4. 增加登录超时时间 在应用程序连接数据库时,可以通过增加登录超时时间来避免因超时而导致的连接断开。 总之,ORA-03114错误可能会由多种原因引起,例如网络故障或数据库故障等。一旦检测到该错误,则必须深入分析并采取必要的解决方案,以确保数据库可以正常连接并运行。 ### 回答3: ora-03114: not connected to oracle是Oracle数据库的一个常见错误,它表示客户端应用程序和Oracle数据库之间的链接断开了,通常是由于网络问题或数据库服务器故障导致的。这个错误通常会使应用程序无法继续执行,因此必须及时解决这个问题。 要解决ORA-03114错误,需要先确认数据库服务器是否能够响应请求,也就是检查数据库服务器是否正常工作。如果服务器无法响应请求,就需要确认是否存在错误日志来获取更多细节,确认问题的根本原因。如果是由于网络问题导致的连接问题,可以通过检查网络连接的状态来解决。网络通常是导致ORA-03114错误的常见原因之一,所以需要确保网络连接稳定并且没有丢包或延迟。 在数据库服务器无任何问题的情况下,可能需要检查客户端应用程序和数据库之间的连接设置。如果连接设置不正确,也可能导致ORA-03114错误。检查连接设置的最佳方法是开启客户端应用程序的日志记录功能,从日志中查看该错误的更多详细信息,确认连接参数是否正确设置。 最后,还需要确认用户是否有访问数据库服务器的权限。如果权限不足,客户端应用程序无法连接到数据库服务器,也会触发ORA-03114错误。确认用户的权限并授权相应访问权限,可以解决这个问题。 总之,ORA-03114错误是Oracle数据库的一个常见错误,需要通过检查数据库服务器状态、网络连接、连接设置和用户权限等方面来查找原因,并采取相应的措施加以解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值