MYSQL网站制作之ORACLE中一些成绩的办理办法
那时候Sybase已经诞生了6年的时间。至于其他值得关注的开源数据库,PostgreSQL将在2009年达到20岁的生日。虽然MySQL并不是市场上最年轻的数据库,但是却有更多成熟的数据库可供我们选择。oracle|办理|成绩ORACLE中一些成绩的办理办法
在ORACLE办理和使用中,不免呈现一些成绩。一般,ORACLE会显现毛病标号和冗长申明,我们能够依据显现的信息去向理成绩。但偶然显现的信息很少,处置起来有些贫苦。本文会商了如许几个成绩,依据一些材料和履历,提出懂得决办法。
1、ORA-00604erroroccurredatrecursiveSQLlevel
这个信息标明,在数据库实行外部SQL语句时,产生了毛病。好比,要往表中拔出一行数据,但没有可扩大的空间。ORACLE因而往查寻,哪儿能够创建下一个扩大空间,它有多巨细,但没有乐成。一样平常在产生ORA-00604毛病时,还陪伴着别的的毛病,比方:ORA-1547等。
起首,应该反省告诫文件alertSID.log,查找有关ORA-600类的信息。
该毛病最多见的缘故原由是数据库文件initSID.ora中的参数OPEN_CURSORS值太小。能够修正initSID.ora文件,OPEN_CURSORS的值通常是255。修正完后,宕下ORACLE,再从头启动。
还能够设置并启动数据库的事务跟踪功效。在initSID.ora中加上一行:
event="00604tracenameerrorstack"
宕下偏重新启动ORACLE,使这个事务跟踪参数起感化。如许,当再产生ORA-604毛病时,有关信息就保留在TRACE文件中。
形成ORA-604毛病的别的缘故原由大概有:
-initSID.ora中,参数DC_FREE_EXTENTS或ROW_CACHE_ENQUEUES太低。能够依据操纵体系和数据库的情形,得当增添这两个参数的值,宕下偏重新启动ORACLE。
-运转超越空间(陪伴ORA-1547毛病)。这时候,要对表空间增加新文件,即增添表空间的巨细。
-到达了MAX_EXTENTS(陪伴ORA-1556毛病)。假如如许,就要修正表,同意更多的扩大。请从手艺手册中查找MAX_EXTENTS的最年夜值。假如已到达了最年夜值,必需用compressextents选项,把表卸出(export),再导进(import)数据库中。
2、ORA-03106fataltwo-taskcommunicationprotocolerror
这个信息标明,在ORACLE举行收集通讯事情时,产生了毛病。好比,客户使用程序利用SQL*NET会见服务器数据库时,不克不及举行,ORACLE显现ORA-03106毛病。
起首,应该反省客户使用与数据库服务器之间的兼容性,这是ORA-03106毛病中最多见的缘故原由。现已发明,Developer/2000V1.3预版与ORACLEV8.0.5forDigitalUNIX不兼容;ORACLEV7.0.1.6forScoUNIX与ORACLEV8.0.5forDigitalUNIX不兼容,等等。再反省客户使用与数据库服务器之间的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也用来把持用户历程和影子历程之间的双义务通讯。因为该种情形下扳连的成绩对照庞大,能够将全部呆板体系宕下,再从头启动。
3、从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特征的器材卸不出来。详细的情形,能够参考有关的手艺手册,好比《Oracle8Utilities》。
4、ORA-27101SharedMemoryRealmDoesNotExist
在呈现上述毛病信息时,一样平常还伴随毛病信息:ORA-01034:ORACLEnotavailable。缘故原由是在统一个服务器上,利用了分歧的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,依据体系设置情形,大概必要在利用呆板名时,前面增加域名。
这些过程被存储和运行在数据库服务器上,以减少在客户端的处理过程,从而最大限度地提高了处理能力,因为通常情况下数据库服务器会运行地更快。存储过程并不是MySQL独有的功能,但是这个最近新增加的功能使得这个数据库比以前更具吸引力了。 呵呵,这就是偶想说的 学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了! 而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。 SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。) 一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。) 大侠们有推荐的书籍和学习方法写下吧。 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
页:
[1]