ORACLE中一些问题的解决方法

原创 2002年08月22日 09:50:00

 ORACLE中一些问题的解决方法

ORACLE管理和应用中,难免出现一些问题。通常,ORACLE会显示错误标号和简短说明,我们可以根据显示的信息去处理问题。但有时显示的信息很少,处理起来有些麻烦。本文讨论了这样几个问题,根据一些资料和经验,提出了解决方法。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

一、             ORA-00604 error occurred at recursive SQL level

这个信息表明,在数据库执行内部SQL语句时,发生了错误。比如,要往表中插入一行数据,但没有可扩展的空间。ORACLE于是去查寻,哪儿可以建立下一个扩展空间,它有多大小,但没有成功。一般在发生ORA-00604错误时,还伴随着其它的错误,例如:ORA-1547等。

首先,应当检查警告文件alertSID.log,查找有关ORA-600类的信息。

该错误最常见的原因是数据库文件initSID.ora中的参数OPEN_CURSORS值太小。可以修改initSID.ora文件,OPEN_CURSORS的值一般为255。修改完后,宕下ORACLE,再重新启动。

还可以设置并启动数据库的事件跟踪功能。在initSID.ora中加上一行:

     event = "00604 trace name errorstack"

宕下并重新启动ORACLE,使这个事件跟踪参数起作用。这样,当再发生ORA-604错误时,有关信息就保存在TRACE文件中。

造成ORA-604错误的其它原因可能有:

- initSID.ora中,参数DC_FREE_EXTENTS或ROW_CACHE_ENQUEUES太低。可以根据操作系统和数据库的情况,适当增加这两个参数的值,宕下并重新启动ORACLE。

- 运行超出空间(伴随ORA-1547错误)。这时,要对表空间添加新文件,即增加表空间的大小。

- 达到了MAX_EXTENTS(伴随ORA-1556错误)。如果这样,就要修改表,允许更多的扩展。请从技术手册中查找MAX_EXTENTS的最大值。如果已经达到了最大值,必须用compress extents选项,把表卸出(export),再导入(import)数据库中。

 

二、ORA-03106 fatal two-task communication protocol error

这个信息表明,在ORACLE进行网络通信工作时,发生了错误。比如,客户应用程序使用SQL*NET访问服务器数据库时,不能进行,ORACLE显示ORA-03106错误。

首先,应当检查客户应用与数据库服务器之间的兼容性,这是ORA-03106错误中最常见的原因。现已发现,Developer/2000 V1.3预版与ORACLE V8.0.5 for Digital UNIX不兼容;ORACLE V7.0.1.6 for ScoUNIX与ORACLE V8.0.5 for Digital UNIX不兼容,等等。再检查客户应用与数据库服务器之间的NLS(字符集)兼容性。前些年计算机上的中文字符集一般设置为ZHS16CGB231280,近几年一般设置为ZHS16GBK,英文操作系统下的设置一般为US7ASCII。最好在系统安装时,把字符集设置为同一种,这样也方便数据库之间数据的卸出和导入。

如果数据库链路一直不通,并显示ORA-03106错误,那么可能是SQL*NET的设置问题。要想使用数据库链路,双方数据库文件InitSID.ora中GLOBAL_NAMES的值应当是FALSE,服务器上的文件TNSNAMES.ORA中要有对方的数据库别名,该别名就是建立数据库链路时使用的别名。尤其在双机等组成的CLUSTER系统中,人们常常在TNSNAMES.ORA中只写入带有机器虚地址的数据库虚别名,而忘记写入带有机器真地址的数据库真别名。应当把实际应用所涉及到的数据库别名都写入TNSNAMES.ORA。

另外,InitSID.ora中OPEN_LINKS的值一般默认为4,在应用程序使用多个数据库链路时,需要适当增加该值。

还可以设置并启动SQL*NET的事件跟踪功能,获得发生ORA-03106错误时产生的有关信息,有针对性地解决问题。

在比较极端的情况下,该问题表明ORACLE所使用的共享内存段崩溃了。可能需要用abort选项宕下数据库,并释放所有的semaphores(UNIX下)。因为ORACLE使用semaphores来控制所有后台进程的同步。Semaphores也用来控制用户进程和影子进程之间的双任务通信。由于该种情况下牵涉的问题比较复杂,可以将整个机器系统宕下,再重新启动。

 

三、ORACLE8卸出数据并导入ORACLE7中

ORACLE7卸出的DMP文件,可以导入ORACLE8中;但从ORACLE8卸出的DMP文件,不能导入ORACLE7中。如果用ORACLE7的实用程序,也不能卸出ORACLE8的数据。这对应用多种版本ORACLE的用户是非常不方便的。

实际上,ORACLE8已经考虑到这一点。在服务器目录$ORACLE_HOME/rdbms/admin 中,有个文件catexp7.sql,就是用来解决这个问题的。首先,在ORACLE8的服务器中,以SYS帐户登入ORACLE,接着运行这个catexp7.sql文件。ORACLE系统于是建立一些卸出视图,从而使得在卸出时,ORACLE8数据库仿佛是ORACLE7数据库。这时,就可以用ORACLE7实用程序直接卸出ORACLE8的数据,然后便可以顺利地导入ORACLE7中。

ORACLE7实用程序直接卸出ORACLE8的数据时,有些属于ORACLE8特性的东西卸不出来。具体的情况,可以参考有关的技术手册,比如《Oracle8 Utilities》。

 

四、ORA-27101 Shared Memory Realm Does Not Exist

在出现上述错误信息时,一般还伴有错误信息:ORA-01034: ORACLE not available。原因是在同一个服务器上,使用了不同的ORACLE_HOME。该问题常常是在ORACLE8.1.7服务器版上出现的。

首先检查文件initSID.ora和listener.ora等,看ORACLE_SID和ORACLE_HOME设置的正确与否,ORACLE8.1.7是否用该参数值启动并运行。在UNIX环境中,字母大小写的意义是不一样的,这一点应当注意。如果ORACLE_HOME指向8.1.7版,而数据库是用8.1.6版或8.1.5版建立的,也可能出现该种错误信息。

WINDOWS系统中,如果修改了机器名或IP地址,ORACLE8.1.7启动时使用的机器名或IP地址就不是真正的机器名或IP地址,就会出现该种错误。可以查看目录database下的文件oradim.log,根据内容确定原因。

在涉及到域(DOMAIN)的服务器上,包括WINDOWS和UNIX,根据系统设置情况,可能需要在使用机器名时,后面添加域名。

安卓开发中所遇到的一些问题及解决办法,不断更新中

Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE[字面意思:安装失败,不够贮存]
  • sz19900617
  • sz19900617
  • 2014年10月28日 13:54
  • 1279

Linux下的一些问题收集及解决方法(一)

这篇博客主要是针对博主在学习Linux的过程中遇到的一些问题,对这些问题进行记录和解决的过程。所以此文会一直更新下去。...
  • u013761665
  • u013761665
  • 2015年02月11日 15:35
  • 3793

使用@ResponseBody的一些问题以及解决方法

@ResponseBody 中文乱码 @RequestBody
  • qq_36461632
  • qq_36461632
  • 2017年05月26日 17:14
  • 2123

Memcache 的一些问题及解决方法

为了规避内存碎片问题,Memcached采用了名为SlabAllocator的内存分配机制。内存以Page为单位来分配,每个Page分给一个特定长度的Slab来使用,每个Slab包含若干个特定长度的C...
  • babydavic
  • babydavic
  • 2013年02月06日 10:04
  • 1437

CDH安装中的一些问题及解决方法

导读: 本文对一些遇到异常总结,如果遇到了,能解决更好,如果还没有遇到,可以备用。 1.yarn无法启动,可能原因是什么? 2.Host Monitor和Service Monitor服...
  • nysyxxg
  • nysyxxg
  • 2016年06月02日 14:21
  • 914

Linuv下一些问题的解决方法

说在前面的话: 这篇博客主要是针对博主在学习Linux的过程中遇到的一些问题,对这些问题进行记录和解决的过程。所以此文会一直更新下去。 在VMware下打开ubuntu的时...
  • lvdepeng123
  • lvdepeng123
  • 2017年11月12日 10:57
  • 90

操作系统nachoes一些问题与解决方法

操作系统nachoes一些问题与解决方法山东大学操作系统课设,自己做的过程中的遇到的一些问题,如果有参考价值可以使用: 一些粗略的问题和感想 详细project1思路与解决 详细project2思路和...
  • qq_26919935
  • qq_26919935
  • 2016年11月13日 16:24
  • 452

win7下 Tiny6410一些问题的解决方法

最近从有了个友善之臂tiny6410的板子,按照教程刚开始做就遇到了不少问题 问题一 板子自带的4G金士顿内存卡不能用sd-flasher进行烧写 解决办法 刚开始按照网上教程先把内存卡给格式为F...
  • wllw7176
  • wllw7176
  • 2013年10月05日 15:32
  • 752

Linux下的一些问题收集及解决方法(一)

转载至 http://blog.csdn.net/lemon_tree12138/article/details/43734331 说在前面的话: 这篇博客主要是针对博主在学习Linux的...
  • qq_33826977
  • qq_33826977
  • 2016年11月16日 12:30
  • 109

Ubuntu14.04使用中的一些问题及解决方法

1.内核出现问题时解决方法 该问题困扰我很久,因为dpkg时程序安装命令,该命令出问题导致新的软件不能安装,非常烦,查了很多资料,终于找到解决方法。 错误提示:  dpkg: 在处理时有错误发生:...
  • xunan003
  • xunan003
  • 2017年05月04日 11:12
  • 1019
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE中一些问题的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)