用友股份-LE服务支持部技术方案--《NC常见环境问题之数据库篇》建立日期:2013-01-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-00092/13文档控制创建记录审阅人姓名所属部门职位审阅签字发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-01-01V1.03目录1:HACMP双机热备无法正常切换问题................................................................42:NC连接DB2方式不正确造成系统效率低........................................................43:Oracle中重建控制文件造成的问题:..............................................................54:SGA的大小造成的问题:.................................................................................65:ORACLE10用户秘码无效..................................................................................76:SQLServer数据库需要注意连接参数.............................................................87:ORA-12560:TNS:协议适配器错误.................................................................88:Db2导入过程遇到的问题汇总......................................................................99:DB2导入时,最后一行的表没有导入.........................................................1110:DB2导入报错:SQL0964C数据库的事务日志已满.....................................1141:HACMP双机热备无法正常切换问题问题现象:双机配置正常后,两台服务器,一台配置为数据库主服务器,一台配置为应用主服务器。来进行双机热备。当关闭一台服务器,使应用切换到一台服务器,应用能够正常启动。但是当关闭的服务器启动后,服务再切换回来时候无法正常切换回来,服务出现异常现象导致两台机器死机。查看双机日志,发现当正相切换双机的时候,日志能够顺利的执行相应脚本停止服务并启动服务,当恢复切换的时候,后台的停止服务和启动服务进程出现混乱,进行了多次的关闭启动,最后报资源占用,导致死机。分析:可能是HACMP双机配置错误导致,查看配置发现bootIP(192.168.1.*)和serviceIP(192.168.1.*)配置为一个网段,心跳IP(10.1.1.*),怀疑boot与serviceIP设置为一个网段,导致进程服务错乱。解决:设置bootIP与serviceIP为不同网段,进程运行正常。2:NC连接DB2方式不正确造成系统效率低问题分析:通过对比PC应用服务器和小型机应用服务器的NC前后台日志,发现小型机上的NC后台日志中SQL语句的执行时间比PC服务器还要长;小型机应用服务器和数据库服务器同在一台千兆光纤交换机上,而PC应用服务器通过普通百兆交换机连接到数据库服务器上的,网络方面并没有什么问题;最后对比两台应用服务器的NC配置文件,发现连接数据库的驱动不一样,分别如下:PC服务器:COM.ibm.db2.jdbc.app.DB2Driverjdbc:db2:AIXSXZYAIX小型机:jdbc:db2:10.155.1.13:8888/sxzy5COM.ibm.db2.jdbc.net.DB2Driver解决办法:修改小型机应用服务器上的NC数据库连接方式,修改后测试,访问小型机要快得多。3:Oracle中重建控制文件造成的问题:问题表现:数据库宕机后,通过oracle的日志发现控制文件有问题,对控制文件进行了重建,oracle可以正常启动了,但是有些查询时出问题了。NC可以正常登陆,基本的制单等操作可以完成。在对科目余额表等查询时出现白屏现象。还有一些是进行查询操作时报错。问题分析:对科目余额表进行查询时,捕捉后台日志,报如下信息:nc.vo.glcom.exception.GLBusinessException:ORA-25153:TemporaryTablespaceisEmptyatnc.bs.glcom.balance.GlBalanceBO.getBalance(GlBalanceBO.java:1353)atnc.impl.gl.glcom.ImpCommAccBook.getBalance(ImpCommAccBook.java:116)问题解决办法:SQL>selecttablespace_name,file_namefromdba_temp_files;norowsselectedSQL>altertablespacetempaddtempfile'/oradata/temp01.dbf'6在查看一下:SQL>selectFILE_NAME,TABLESPACE_NAME,STATUSfromdba_temp_files;FILE_NAMETABLESPACE_NAMESTATUS--------------------------------------------------------------------------/oradata/temp01.dbfTEMPAVAILABLE问题解决!4:SGA的大小造成的问题:问题表现:NC登录正常,基本的操作可以进行。在进行三栏式总账查询时报“ORA-04030”,在尝试分配123404字节时进程内存不足。问题分析:在后台执行;SELECT*FROMv$resource_limitWHEREresource_nameIN('processes','sessions')RESOURCE_NAMECURRENT_UTILIZATIONMAX_UTILIZATION----------------------------------------------------------------INITIAL_ALLOCATIONLIMIT_VALUE7----------------------------------------processes160200200200sessions181225225225发现现在的连接数已经达到了oralce所规定的最大值。问题解决办法:修改processes的值:Altersystemsetprocesses=600scopes=pfile;5:ORACLE10用户秘码无效某项目ORACLE10G,用户的秘码修改后,原来的秘码仍可以进去,甚至使用任意一个秘码都可以登录oracle。解决办法:sqlnet.ora文件注释掉带有NTS那行如:原文如下:#Thisfileisactuallygeneratedbynetca.Butifcustomerschooseto#install"SoftwareOnly",thisfilewontexistandwithoutthenative8#authentication,theywillnotbeabletoconnecttothedatabaseonNT.SQLNET.AUTHENTICATION_SERVICES=(NTS)更改为:#Thisfileisactuallygeneratedbynetca.Butifcustomerschooseto#install"SoftwareOnly",thisfilewontexistandwithoutthenative#authentication,theywillnotbeabletoconnecttothedatabaseonNT.#SQLNET.AUTHENTICATION_SERVICES=(NTS)6:SQLServer数据库需要注意连接参数表现:某NCV5项目经常出现数据库锁过多导致出现锁等待及死锁等情况,严重影响应用效率分析:如果是使用WAS+SqlServer数据库的话,在was数据源属性中需要修改某一个默认参数解决办法:在WAS管理控制台中对应数据源配置部分:添加参数添加sendStringParametersAsUnicode=false参数设置7:ORA-12560:TNS:协议适配器错误造成ORA-12560:TNS:协议适配器错误的问题的原因有三个:1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。2.databaseinstance没有起起来。windows平台如下操作:9开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的databaseSID.3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX是你的databaseSID.或者右击我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX是你的databaseSID.或者进入sqlplus前,在commandline下输setoracle_sid=XXXX,XXXX是你的databaseSID.经过以上步骤,一般可以解决问题。8:Db2导入过程遇到的问题汇总1.最常遇见的错误:***Table"NC0"."GL_DETAIL":ERROR-3306.Checkmessagefiletab191.msg!***SQLCODE:-3306-SQLSTATE:***SQL3306N当将一行插入到表中时发生SQL错误"-289"。这种SQL3306N返回错误”-289”的错误是表空间不足需要扩充表所在的表空间。2.如果表足够大的情况下还会报下面的错误:***Table"NC0"."SM_APPUSERPOWER":ERROR-3321.Checkmessagefiletab352.msg!***SQLCODE:-3321-SQLSTATE:10***SQL3321C数据未被导入数据库,因为日志已满。恢复不成功。返回了SQLCODE"-964"。这种SQL3321C返回”-964”的错误是日志数量太少,导致没有日志可以写入可以设置下面的参数解决:日志文件的大小(logfilsiz)(4K)updatedatabaseconfigurationforDLYCNCusinglogfilsiz5120;主日志文件数目(logprimary)updatedatabaseconfigurationforDLYCNCusinglogprimary15;辅助日志文件数目(LOGSECOND)updatedatabaseconfigurationforDLYCNCusinglogsecond100;3.如果数据库所在文件系统磁盘空间满了会报如下错误:***Table"NC0"."GL_DETAIL":ERROR-3306.Checkmessagefiletab191.msg!***SQLCODE:-3306-SQLSTATE:***SQL3306N当将一行插入到表中时发生SQL错误"-968"。这种SQL3306N返回错误"-968"的错误在前台和db2日志没有详细的说明,只是说明了执行sql的时候出错,在windows系统的事件查看器里面的错误里面看见如:日志已满,活动应用程序被挂起等提示。日志报错也是日志已满,执行sql被rollback,查看表空间和临时表空间,磁盘空间正常。查看数据库所在目录表空间磁盘空间已满。在数据库所在目录下的11SQLOGDIR目录下的日志生成了70多个20M的log文件,占了1.4G的磁盘空间。把这个磁盘下的其他文件删除空出3G的磁盘空间,导入成功。9:DB2导入时,最后一行的表没有导入现象:db2move.lst中内容如下:!"NC30"."NTB_SD_CELLMODEL_NEW"!tab407.ixf!tab407.msg!!"NC30"."PUB_BILLTEMPLET_B"!tab619.ixf!tab619.msg!!"NC30"."NTB_SD_CELLMODEL"!tab786.ixf!tab786.msg!但是,在导入正常完毕后,检查,最后一个表的数据"NTB_SD_CELLMODEL没有导入到库中.分析:DB2导入时,db2move.lst表中的最后必须多出一个空行.否则,最后一行没有执行导入.解决办法:在db2move.lst的最后增加一个空行即可.10:DB2导入报错:SQL0964C数据库的事务日志已满现象:DB2导入时报错:SQL0964C数据库的事务日志已满12导入db2move.lst中!"NC30"."DAP_FININDEX"!tab67.ixf!tab67.msg!文件时,报错:***Table"NC30"."DAP_FININDEX":ERROR-3306.Checkmessagefiletab67.msg!***SQLCODE:-3306-SQLSTATE:***SQL3306N当将一行插入到表中时发生SQL错误"-964"。到tab67.msg中查看为:SQL3109N实用程序开始装入文件"tab67.ixf"中的数据。SQL3306N当将一行插入到表中时发生SQL错误"-964"。SQL0964C数据库的事务日志已满。SQLSTATE=57011SQL3110N实用程序已完成处理。从输入文件读取了"3794"行。分析:根据SQL0964C数据库的事务日志已满。可以看出,数据库的日志文件需要增大.解决:在NC30的安装盘中,有DB2参数的详细配置:--17日志文件的大小(logfilsiz)(4K)updatedatabaseconfigurationforDLYCNCusinglogfilsiz5120;13--18.主日志文件数目(logprimary)updatedatabaseconfigurationforDLYCNCusinglogprimary15;--19.辅助日志文件数目(LOGSECOND)updatedatabaseconfigurationforDLYCNCusinglogsecond100;一般情况下,先使用主日志文件.主日志文件使用完毕.再使用辅助日志文件.因此,出现上面的情况,一般是辅助日志文件也已经使用完毕.所以,增加辅助日志文件数目即可.如:db2“updatedatabaseconfigurationforDLYCNCusinglogsecond200”