e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> Oracle教程 >> ORACLE中一些问题的解决方法 >> 教程正文
 
教程搜索
 
 
相关教程
  • 用Oracle 10g列值掩码技术隐藏敏感数据
  • ORACLE常用Script
  • OracleSupport全球解答的最hot的21个问
  • Oracle 中的OOP概念
  • 过程,函数,程序包
  • 异常和游标管理
  • 集合和成员函数
  • Oracle10gR2安裝
  • SQL 的高级应用
  • Install Oracle on Solaris 8/9/10
  • Install Oracle9 on RedHat
  • Start Console on Oracle9i VS Oracle
  • oracle自动imp脚本
  • Oracle9i连接sybase的透明网关的配置
  • 用裸设备来提高Oracle数据库的性能
  • 从Oracle迁移到SQL Server的陷阱
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
ORACLE中一些问题的解决方法
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9
ORACLE中一些问题的解决方法

在ORACLE管理和应用中,难免出现一些问题。通常,ORACLE会显示错误标号和简短说明,我们可以根据显示的信息去处理问题。但有时显示的信息很少,处理起来有些麻烦。本文讨论了这样几个问题,根据一些资料和经验,提出了解决方法。

一、 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,根据系统设置情况,可能需要在使用机器名时,后面添加域名。


  • 上一篇教程: Oracle操作图片
  • 下一篇教程: Oracle9i資料庫管理實務講座(一)
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.