08+EAS系统部署常见问题FAQ - 图文

更新时间:2024-01-24 23:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

EAS系统部署常见问题FAQ

EAS产品支持部 刘习红

请注意:本文件只作为产品介绍之用,不属于您与金蝶签署的任何协议。本文件仅包括金蝶既定策略、产品及功能方面的信息,不能以本文件作为要求金蝶履行商务条款、产品策略以及开发义务的依据。本文件内容可能随时变更,恕不另行通知。

EAS系统部署常见问题FAQ

前 言

概述

系统安装、部署各种问题的处理。

适用范围

现场实施同事、总部研发。

约定

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号 说明 表示有潜在风险,如果忽视这些文本,可能导致操作错误、数据丢失、设备性能降低或不可预知的结果。 表示可以帮助您获取更多相关信息或提示您通过其它方式也可以获得相同结果。 强调或补充说明所描述的信息。

内容约定

本处对文中通用信息作如下约定

? ?

$EAS_HOME表示EAS服务器安装的根目录,即安装过程中输入的本地路径。 $BOS_HOME表示BOS工具的安装根目录,即安装过程中输入的本地路径。

2 / 44

EAS系统部署常见问题FAQ

目 录

EAS系统部署常见问题FAQ ..................................................................................................................................... 1 概述 ................................................................................................................................................................................ 2 适用范围 ........................................................................................................................................................................ 2 约定 ................................................................................................................................................................................ 2 1 R081129-川化控股EASV5.3 ORACLE 10G数据库无法启动问题 ...................................................................... 5 2 关于温氏ORACLE 10G RAC在压力大的时候出现无响应,只能重启数据库的问题 ............................................. 5 3 R081118-132 APUSIC应用服务器无故自动停止 .................................................................................................... 7 4 关于EAS V5.4版本AIX环境JDK升级的建议 ........................................................................................................ 9 5 R090112-045 中国数码EAS集群实例无法启动 ..................................................................................................... 9 6 R090109-163 重庆九禾EAS V5.9进程消失问题 ....................................................................................................11 7 R090212-081 天正化工EAS V5.4打补丁后整体性能很慢 .....................................................................................12 8 ORACLE数据库优化 ...............................................................................................................................................13 9 关于大连中升EAS管理控制台无法启动的问题 ...................................................................................................14 10 关于交投EAS服务器启动失败的问题 ................................................................................................................15 11 关于R090121-093:核销记录生成凭证问题说明 ..................................................................................................15 12 R090217-026 成都新希望WEBSPHERE进程消失问题 .........................................................................................15 13 建滔化工做账套IMP时ORACLE实例自动停止问题 ..........................................................................................17 14 宁煤EAS V5.9某用户操作功能特别慢 ................................................................................................................17 15 关于湖北电信项目升级问题 ................................................................................................................................18 16 合并元数据后编译出错的处理方法,请参考 ........................................................................................................19 17 关于无法获取服务器列表的问题 ........................................................................................................................19 18 R090219-022 ARG/ENV参数过小导致广州长大EAS V5.4停止后无法再启动问题 ............................................20 19 提单R090312-109的处理 ....................................................................................................................................22 20 合景单点登录日志 ...............................................................................................................................................22 21 管理控制台在群集控制器显示不了当前连接数 .................................................................................................23 22 关于二次开发包与补丁包不一致导致客户端冲突的问题 ..................................................................................23 23 R090511-230 山东六和EAS V5.4经常出现与服务器以外失去联系 ....................................................................24 24 组织保存特别慢 ...................................................................................................................................................25 25 关于管理控制台部署应用时IP映射的应用 ........................................................................................................26 26 ORACLE 数据泵技术 .............................................................................................................................................26 27 内存设置错误导致EAS启动不了 ........................................................................................................................27 28 管理控制台无法启动的解决 ................................................................................................................................27 29 [成都迅捷]R091201-051 ORACLE控制文件损坏导致数据库故障 .......................................................................28 30 补丁脚本执行错误DOMAINEXCEPTION: NULL,DBTYPE=[ORACLE] ......................................................................32

3 / 44

EAS系统部署常见问题FAQ

31 WEBLOGIC环境常见问题 .....................................................................................................................................32 32 启动EAS实例时出现认证失败的提示 ................................................................................................................36 33 标准EAS迁移说明 ...............................................................................................................................................37 34 EAS7安装包RPC默认端口改变问题 ...................................................................................................................38 35 金汉斯应用服务器CPU消耗整体较原来的EAS V5.4高,业务操作响应较慢 ...............................................39 36 六和数据误删除分析 ...........................................................................................................................................40 37 KSQL生成DB2的临时存储过程不唯一 ..............................................................................................................42

4 / 44

EAS系统部署常见问题FAQ

1 R081129-川化控股EASV5.3 Oracle 10g数据库无法启动问题

问题描述: Oracle无法连接,实施反馈重启操作系统仍然无法访问。Windows 2003 32位,Oracle 10.1版本。 原因分析: 解决方案: 连线处理: 1、sqlplus提示protocol adapter error,重启了一下操作系统以后sqlplus可以连接。 2、检查Oracle alert日志,发现提示flash_recovery_area已经100%用尽(检查配置该区设置为2G),归档停止。 3、因此判断是Oracle打开了归档模式,但是又没有配置RMAN备份策略自动清理归档日志,导致空间达到2G上限,数据库停止。 4、随即进行了如下处理: 1)删除flash_recovery_area下若干归档日志目录。 2)执行 rman target / rman> corsscheck archivelog all rman> delete expired archivelog all -有提示是否确定时,输入Yes。 3)进入sqlplus,检查数据库状态 SQL> select instance_name ,status from v$instance; 发现状态是mounted SQL> alter database open; 数据库成功启动。 知会现场配置好RMAN备份,避免归档日志占满空间。 12月1日,实施反馈又无法启动,检查问题类似,做了同样的处理。怀疑配置的rman策略还是有问题,重新配置了一下,发现oracle cpu 100%。只好强行杀掉了oracle进程,实施反馈每天都会做exp备份,可关闭归档模式。随即用如下方式关闭归档: SQL> shutdown immediate; SQL> startup mount; SQL> alter database noarchvielog SQL> alter database open; 后续建议: 1、当前数据库和应用服务器在一台机器上,操作系统是32位的,能支持的并发用户有限,如果客户并发用户数超过50的话,建议分离应用和数据库。数据库应使用64位操作系统。 2、数据库版本还是10.1的,建议升级到10.2.0.4版本。 更多信息: 参考

2 关于温氏Oracle 10g RAC在压力大的时候出现无响应,只能重启数据库的问题

问题描述: 温氏以前出现过多次Oracle RAC停止响应的故障,后来总部做了一些优化和参数调整,一段时间比较稳定,但今天凌晨又出现一次死机情况,希望尽快分析,彻底解决 5 / 44

EAS系统部署常见问题FAQ

原因分析:

这个问题。 分析情况:

通过分析alert日志,查阅metalink等资源,判断应该是Oracle的Bug引起的,请参阅附件描述。该Bug被Oracle认定为重大Bug,Oracle 10.2.0.4已经修复此问题,因此请升级Oracle到10.2.0.4版本以避免此问题的发生。

分析数据:

1、db550a的alert日志,可以看到3:08归档一次后,直到7:55分,数据库报了一个阻塞错误,然后直到重启没有任何日志输出,应该是已经死了。 Thu Nov 20 03:08:55 2008

Thread 1 advanced to log sequence 30621

Current log# 1 seq# 30621 mem# 0: /dev/rdb_redo1_1_1 Current log# 1 seq# 30621 mem# 1: /dev/rdb_redo1_1_2 Thu Nov 20 07:55:03 2008

GES: Potential blocker (pid=1007844) on resource CI-0000001E-00000005;

enqueue info in file /oracle/admin/erpdb/udump/erpdb1_ora_868654.trc and DIAG trace file Thu Nov 20 08:07:02 2008 Shutting down instance (abort) License high water mark = 124

Instance terminated by USER, pid = 893296 Thu Nov 20 08:11:46 2008

2、db570_20的alert日志,出现类似的错误,并发现一个实例已经无响应,然后RAC尝试修复时,发现redo log损坏,又启动了recover动作,然后归档停止,数据库只能重启。

Thu Nov 20 06:34:27 2008

Thread 2 advanced to log sequence 38865

Current log# 10 seq# 38865 mem# 0: /dev/rdb_redo2_5_1 Current log# 10 seq# 38865 mem# 1: /dev/rdb_redo2_5_2 Thu Nov 20 07:52:30 2008

GES: Potential blocker (pid=635178) on resource CI-0000001E-00000002;

enqueue info in file /oracle/admin/erpdb/bdump/erpdb2_lmd0_647562.trc and DIAG trace file Thu Nov 20 08:00:49 2008

PMON failed to acquire latch, see PMON dump Thu Nov 20 08:05:10 2008

Reconfiguration started (old inc 8, new inc 10) List of nodes: 1

Global Resource Directory frozen

* dead instance detected - domain 0 invalid = TRUE Communication channels reestablished

Master broadcasted resource hash value bitmaps Non-local Process blocks cleaned out Thu Nov 20 08:05:10 2008

LMS 1: 0 GCS shadows cancelled, 0 closed Thu Nov 20 08:05:10 2008

LMS 2: 0 GCS shadows cancelled, 0 closed Thu Nov 20 08:05:10 2008

LMS 3: 0 GCS shadows cancelled, 0 closed Thu Nov 20 08:05:10 2008

LMS 0: 0 GCS shadows cancelled, 0 closed Set master node info

Submitted all remote-enqueue requests Dwn-cvts replayed, VALBLKs dubious

6 / 44

EAS系统部署常见问题FAQ

All grantable enqueues granted Post SMON to start 1st pass IR Thu Nov 20 08:05:14 2008 LMS 2: 187306 GCS shadows traversed, 0 replayed Thu Nov 20 08:05:14 2008 LMS 3: 187452 GCS shadows traversed, 0 replayed Thu Nov 20 08:05:14 2008 LMS 1: 187612 GCS shadows traversed, 0 replayed Thu Nov 20 08:05:16 2008 LMS 0: 182132 GCS shadows traversed, 0 replayed Thu Nov 20 08:05:16 2008 Submitted all GCS remote-cache requests Post SMON to start 1st pass IR Fix write in gcs resources Thu Nov 20 08:05:16 2008 Instance recovery: looking for dead threads Thu Nov 20 08:05:16 2008 Beginning instance recovery of 1 threads Reconfiguration complete Thu Nov 20 08:05:22 2008 parallel recovery started with 15 processes Thu Nov 20 08:05:23 2008 Started redo scan Thu Nov 20 08:05:24 2008 Completed redo scan 70 redo blocks read, 28 data blocks need recovery Thu Nov 20 08:05:24 2008 Started redo application at Thread 1: logseq 30621, block 101212 Thu Nov 20 08:05:24 2008 Recovery of Online Redo Log: Thread 1 Group 1 Seq 30621 Reading mem 0 Mem# 0 errs 0: /dev/rdb_redo1_1_1 Mem# 1 errs 0: /dev/rdb_redo1_1_2 Thu Nov 20 08:05:24 2008 Completed redo application Thu Nov 20 08:05:24 2008 Completed instance recovery at Thread 1: logseq 30621, block 101282, scn 7096829270 22 data blocks read, 28 data blocks written, 70 redo blocks read Switch log for thread 1 to sequence 30622 Thu Nov 20 08:05:25 2008 ARC0: Archiving disabled thread 1 sequence 30622 解决方案: 更多信息: 参考

3 R081118-132 Apusic应用服务器无故自动停止

问题描述: 已是第二次发现apusic应用服务器在无人为操作下,无故自动停止。已经收集eassupport日志并上传。 7 / 44

EAS系统部署常见问题FAQ

原因分析:

问题分析:

1、查看Apusic日志,11月17日晚上6:10之后,再没有看到输出,直到今天早上重启。

2008-11-17 18:09:57 信息 [con.out] [2008-11-17 18:09:57,734 INFO RPC-6]clientIp : /192.68.0.218

2008-11-17 18:10:16 信息 [con.out] [2008-11-17 18:10:16,625 INFO RPC-88]Removing user monitor information!

2008-11-18 09:09:31 信息 [con.out] Apusic/Standard 4.0.3 Build 200701110904 IP granted to 192.68.0.10 No time limits

No connection limits

2008-11-18 09:09:32 信息 [apusic.service.ThreadPool.default] 成功启动

2008-11-18 09:09:32 信息 [apusic.service.ThreadPool.MuxHandler] 成功启动

2、查看Windows事件日志,发现11月17日晚上6:10之后连续有二个会话被注销。 2008-11-17 18:14:23 KINGDEE\\kingdee 用户注销: 用户名: kingdee 域: KINGDEE 登录 ID: (0x0,0x1C1E0FB3) 登录类型: 10

2008-11-17 18:10:50 KINGDEE\\kingdee 用户要求的注销: 用户名: kingdee 域: KINGDEE 登录 ID: (0x0,0x1c1e0fb3)

2008-11-17 18:10:45 KINGDEE\\kingdee 用户注销: 用户名: kingdee 域: KINGDEE 登录 ID: (0x0,0x1D5695B5) 登录类型: 10 2008-11-17 18:10:45 KINGDEE\\kingdee 登录成功: 用户

名: kingdee 域: KINGDEE 登录 ID: (0x0,0x1D5695B5) 登录类型: 10 判断:

由于连接服务器的远程会话注销,导致该会话启动的EAS进程被操作系统杀掉。

解决方案: 1、检查远程桌面连接设置是否有超时自动注销之类的设置。

2、远程启动和停止EAS时,连接到控制台会话上,避免第1条可能导致的问题。 mstsc /console serverip

更多信息: 其它可能导致Apusic进程消失的情况:

1、JDK Bug,环境问题引起。

1)请注意检查在eas/server/bin下面是否有hs_err开头的文件,如果有,通常时JDK或者环境问题导致JVM异常关闭。请收集相关文件给我们分析。

2)如果确定启动EAS的远程会话没有注销,进程却会消失,又没有生成hs_err文件,可能是某种环境因素导致。考虑更换IBM JDK,看能否解决。

更换IBM JDK的方法(Windows平台):

1、从ftp://usersupprt:usersupport2007@202.105.139.162/工具/JDK中下载IBMJava150_Win.rar

2、解压缩到服务器上的某个目录中,假定放到E:\\kingdeeserver530\\eas\\ibmjdk 3、验证JDK正常,在命令窗口中执行: cd /d E:\\kingdeeserver530\\eas\\ibmjdk\\bin java -version

能正常输出版本号,并能看到IBM字样,说明安装正常。 4、停止EAS。

5、编辑eas/server/bin/set-server-env.bat

修改JAVA_HOME=E:\\kingdeeserver530\\eas\\ibmjdk 6、启动EAS。

参考

8 / 44

EAS系统部署常见问题FAQ

4 关于EAS V5.4版本AIX环境JDK升级的建议

问题描述: 在EAS V5.4应用过程中,我们发现AIX平台的客户偶有发生EAS服务器进程异常消失或者不响应的情况,此时可以在eas/server/cluster、eas/server/profiles/server*/bin下看到javacore*.txt文件,打开文件,开头会有如下内容: NULL ------------------------------------------------------------------------ 0SECTION TITLE subcomponent dump routine NULL =============================== 1TISIGINFO Dump Event \1TIDATETIME Date: 2008/11/04 at 11:09:29 原因分析: 解决方案: 经过分析和查阅资料,我们认定这时JDK的一个Bug,在EAS服务器压力过大的情况下,JVM GC过程中可能出现Bug,导致进程消失或者不响应的情况。建议5.4 AIX平台的客户尽快升级JDK,避免出现类似问题。 EAS V5.4带的JDK是1.5 SR2的版本,EAS 6.0所带的版本则是1.5 SR7版本,建议升级到1.5 SR7版本。 JDK升级方法(假定EAS安装在/usr/kingdee下): 1、从ftp://usersupport:usersupport2007@202.105.139.162/工具/JDK中下载IBM1.5SR7的JDK ibmjdk15sr7_aix.tar.gz。 2、将ibmjdk15sr7_aix.tar.gz上传到/usr/kingdee/eas 目录下。 3、解压缩JDK。 #cd /usr/kingdee/eas #gunzip ibmjdk15sr7_aix.tar.gz #tar xvf ibmjdk15sr7_aix.tar 4、验证JDK是否可正常运行。 #/usr/kingdee/eas/jdk15/bin/java -version 能正常输出版本号,并能看到SR7字样,说明JDK安装成功。 5、编辑/usr/kingdee/eas/server/bin/set-server-env.sh 修改JAVA_HOME指向新的JDK路径/usr/kingdee/eas/jdk15。 6、重启EAS。 注:请不要安装直接从IBM developeWorks网站下载的JDK,下载安装的版本可能会导致启动EAS的远程会话(如xmanager、telnet等)注销后,EAS进程会跟着消失的问题。 更多信息: 参考 5 R090112-045 中国数码EAS集群实例无法启动

问题描述: 原因分析: 中国数码群集服务启动时,server1可以正常启动,但是在启动server2的时候,没有响应,日志已上传至FTP下的“中国数码”文件夹。 日志分析: 9 / 44

EAS系统部署常见问题FAQ

解决方案:

1、在Apusic启动日志中看到如下错误堆栈。

2009-01-12 10:31:58 INFO [apusic.service.Muxer] Listen on port 6891. 2009-01-12 10:31:58 ERROR [apusic.service.Muxer] Starting failed. java.net.BindException: Address already in use

at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359) at java.net.ServerSocket.bind(ServerSocket.java:319) at java.net.ServerSocket.(ServerSocket.java:185) at java.net.ServerSocket.(ServerSocket.java:141)

at javax.net.ssl.SSLServerSocket.(SSLServerSocket.java:84)

at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.(SSLServerSocketImpl.java:79) at com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl.createServerSocket (SSLServerSocketFactoryImpl.java:64)

at com.apusic.net.Muxer.createSecureServerSocket(Unknown Source) at com.apusic.net.Muxer.startService(Unknown Source) at com.apusic.service.Service.start(Unknown Source)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at com.apusic.jmx.MBeanDescriptor.invoke(Unknown Source)

at com.apusic.jmx.DynamicMBeanSupport.invoke(Unknown Source) at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke (DynamicMetaDataImpl.java:213)

at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor.java:815)

at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784) at com.apusic.server.J2EEServer.start(Unknown Source) at com.apusic.server.J2EEServer.startup(Unknown Source) at com.apusic.server.Main.main(Unknown Source)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585)

at com.kingdee.eas.tools.launcher.Start.main(Start.java:112)

可以确定是在监听6891端口的时候,发现端口已经被占用。

2、实施反馈几个实例的配置端口并没有冲突的情况。

连线分析:

1、启动集群之前,检查相关端口并没有被占用,然后实施操作启动集群。

2、发现在启动到server2时(有时是到server3时报错),会报上述日志中的错误,但相关的端口并没有被占用。

因此,判断可能是Linux操作系统的原因,导致端口相关资源在进程已经退出后还处于被占用的状态。

处理办法:

1、调整操作系统的相关参数,加快端口的回收速度。 方法:

1)修改/etc/sysctl.conf文件,修改(若无则增加)如下选项并保存 net.ipv4.tcp_tw_reuse = 1

10 / 44

EAS系统部署常见问题FAQ

更多信息: 参考 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 2)使参数生效 #sysctl -p 3)确认参数已经生效 #sysctl -a | egrep 'tcp_tw|syncookies' 处理后再启动集群正常。 后续事项: 如果还是偶尔会出现类似问题,建议停止集群后,稍等一会儿,然后再启动。 6 R090109-163 重庆九禾EAS V5.9进程消失问题

问题描述: 系统在早上10点20左右发生过一次重启实例(server4),实例自动恢复运行后,我们作了大量的压力测试,系统登录用户达到240左右,并发用户达到170人左右,在下午4点50左右又发生一次实例停止(SERVER2),EAS系统没有自动重启实例,两次实例停止时,系统的各项指标都正常。 原因分析: 日志分析: 1、检查每个实例的apuisc日志,没有发现有OutOfMemory字样。 2、分析jvm gc日志,没有发现有内存泄漏等异常情况。 3、从server.trace日志可以看到,集群是在1月6日下午4点50分左右重启的。 4、查看jvm gc的最后修改时间,server2是4点44分,其它实例都是4点50分左右。 从以上信息可以得出结论: server2在1月6日下午4点44分发生进程消失的严重故障,而这种故障通常是JDK Bug引起。 解决方案: 升级HP JDK到最新的版本,目前是1.5.0.14 升级方法: 1、从ftp://usersupport:usersupport2007@202.105.139.162/工具/JDK下载hpjdk15014_ia.depot.gz。 2、上传到应用服务器的/tmp路径下。 3、停止EAS 4、在服务器上安装jdk #swinstall -s /tmp/hpjdk15014_ia.depot.gz \\* 5、检查安装的JDK是否正常 #/opt/java1.5/bin/java -version 能输出版本号,且有1.5.0.14字样即正常。 6、修改EAS配置使用新的JDK 修改eas/server/bin/set-server-env.sh 将JAVA_HOME改为/opt/java1.5 7、进入管理控制台,启动EAS。 另外,关于高可用集群,如果需要高可用机制生效(自动重启故障实例),需要管理控制台进程一直在运行的状态,有以下两种方法: 11 / 44

EAS系统部署常见问题FAQ

1)xmanager连上服务器,启动一个管理控制台,不关闭xmanager。 2)启动adminserver后台进程,切换到eas/admin目录,执行adminserver.sh。 注:目前adminserver后台进程在远程会话注销后会退出,原因已经清楚,V5.9还没有出相应的补丁。待补丁发放后,adminserver进程就会一直处于运行的状态。 更多信息: 参考

7 R090212-081 天正化工EAS v5.4打补丁后整体性能很慢

问题描述: 原因分析: EAS5.4 打入pt016912后和及其关联的补丁后,虽然解决了固定资产不能变更的问题,同时使EAS5.4客户端的时候相应延迟变的很高,经常出现假死状态。 连线诊断处理情况: 1、实施操作功能,从登录到功能操作都很慢,停顿时间很长,只有一个人用的时候也慢。 2、查看RPC日志,发现慢在数据库访问上。 3、检查threaddump,发现堆栈会较长时间停留在如下片段: at java.lang.Object.wait(Native Method) at com.apusic.connector.cxmgr.ConnectionPool.getConnection(Unknown Source) at com.apusic.connector.cxmgr.ConnectionManagerImpl.associateConnection(Unknown Source) at com.apusic.jdbc.adapter.ConnectionHandle.checkState(Unknown Source) at com.apusic.jdbc.adapter.ConnectionHandle.getJdbcConnection(Unknown Source) at com.apusic.jdbc.adapter.ConnectionHandle.prepareStatement(Unknown Source) at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.kingdee.bos.framework.ejb.EJBUtils$ConnectionCloseHandler.invoke(EJBUtils.java:195) 可知正在获取数据库连接。 4、jconsole连接EAS服务器,检查JDBC相关运行信息,可以看到连接池的设定存在问题。 1)最小和最大连接数都为0。 2)创建和释放的物理连接相等且不断增加。 说明每次访问数据库都会创建物理连接,导致性能急剧下降。 12 / 44

EAS系统部署常见问题FAQ

解决方案: 更多信息: 参考 5、检查apusic datasources.xml,进一步证实了这一点。 min-spare-connections=\ 进入管理控制台数据中心页签,反部署并重新部署数据中心。 结果: 1、检查datasources.xml已经修正; 2、性能表现恢复正常。 8 oracle数据库优化

问题描述: 原因分析: 解决方案: 步骤:(机器16G内存) alter system set sga_target=0; alter system set sga_max_size=7800m scope=spfile; alter system set db_cache_size=6500m scope=spfile; alter system set shared_pool_size=800m scope=spfile; 13 / 44

EAS系统部署常见问题FAQ

alter system set pga_aggregate_target=1200m scope=spfile; alter system set \alter system set \alter system set processes=300 scope=spfile; alter system set optimizer_index_caching=90 scope=spfile; alter system set optimizer_index_cost_adj=50 scope=spfile;\\ 重启数据库以后, alter system set sga_target=7800m; 然后还有如下几项工作: 1、配置默认采样率100% 2、配置一个统计分析任务,每月20日凌晨1:00自动对EAS schema做一次全采样的统计分析。 3、新建5个redo log group,大小各位100m,删除原有的3个50m的。 更多信息: 参考

9 关于大连中升EAS管理控制台无法启动的问题

问题描述: 原因分析: 解决方案: 更多信息: 参考 从发过来的日志分析,是启动控制台时无法加载图形界面导致的错误。 请通过xmanager连接到服务器,执行以下两个脚本,再启动管理控制台。 export DISPLAY=ip:xPort xhost + //注意上面的的ip为运行xmanager的这台机器的地址,不是服务器的ip地址; xPort为xmanager上标题栏中方括号中冒号后面的数字,一般为0.0或1.0之类的数字。 如果你在192.168.19.204上运行xmanager,连接到192.168.61.20这台服务器,其中xmanager标题栏上显示为 **** -Xmanager 2.0 [:0.0], 那么,上面的脚本应该为 export DISPLAY=192.168.19.204:0.0 ==============发过来的错误日志====================================== Exception in thread \No X11 DISPLAY variable was set, but this program performed an operation which requires it. at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159) at java.awt.Window.(Window.java:318) at java.awt.Frame.(Frame.java:419) at java.awt.Frame.(Frame.java:384) at javax.swing.JFrame.(JFrame.java:150) at com.kingdee.bos.ctrl.swing.KDFrame.(KDFrame.java:45) at com.kingdee.eas.tools.admin.client.ui.swing.MainFrame.(MainFrame.java:40)

14 / 44

EAS系统部署常见问题FAQ

10 关于交投EAS服务器启动失败的问题

从发过来的日志分析,是因为slaver3对应的apusic domain目录下的servers.xml文件有问题。 解决方案: 这是apusic的bug, 直接删除:/kingdee/eas60/apusic/domains/slaver3/servers.xml 这个文件,然后启动就可以了。 后续遇到无法启动的问题,请先检查一下 apusic/domains所有下一级目录中是否存在servers.xml ,删除这个文件就可以了。注意: 是servers.xml,不是server.xml。 ========================================== 2009-02-10 14:26:36 ERROR [apusic.service.Domain] Starting failed. com.apusic.domain.DomainCoreException: file:/kingdee/eas60/apusic /domains/slaver3/servers.xml: line 1: Document must have exactly one root element. at com.apusic.domain.DomainService.loadConfig(Unknown Source) at com.apusic.domain.DomainService.startService(Unknown Source) at com.apusic.service.Service.start(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 更多信息: 参考 问题描述: 原因分析:

11 关于R090121-093:核销记录生成凭证问题说明

问题描述: 原因分析: 解决方案: 更多信息: 参考 Oracle 11.1.0.6 版本下提示错误: ORA-01407:无法更新 (\为 NULL,而实际修改的值并不为空。 研发内部恢复帐套验证,Oracle 10.2.0.3版本不存在该问题,Oracle 11g也报同样错误,因此定位为oracle 11g的bug。 目前EAS还未在Oracle11g版本下进行正式测试验证,通常对Oracle一个大的新版本的支持是从第二版开始。如:10g的第二个版本为10.2 。 因无法确认11g下是否有其它问题,建议现场迁移到Oracle 10.2.0.4,迁移需注意使用10g客户端连接11g数据库exp导出。

12 R090217-026 成都新希望WebSphere进程消失问题

问题描述: 新希望集团采用WebSphere中间件,目前使用测试环境,下属单位大面积登陆、下载的时候出现实例停止的现象,环境为Windows Server 2003 SP2。 15 / 44

EAS系统部署常见问题FAQ

原因分析: 连线诊断情况:

1、可以观察到EAS启动后,过一会儿就无法连接,管理控制台查看实例状态为“已停止”。

2、任务管理器查看进程,WebSphere进程已经消失(java.exe)。 3、重启EAS后问题依旧。

4、检查WebSphere/AppServer/profiles/AppSvr01/logs/server/native_stderr.log,发现有如下错误:

= 6), weak 18, final 2062, phantom 0> **Out of memory, aborting**

*** panic: JVMCL052: Cannot allocate memory in initializeHeap for heap segment

This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. JVMDG217: Dump Handler is Processing Signal 22 - Please Wait.

JVMDG305: Java core not written, unable to allocate memory for print buffer. JVMDG215: Dump Handler has Processed Error Signal 22.

显然,发生了严重的错误,导致无法申请到native内存,发生OOM,堆大小只有500M。

5、执行WebSphere/AppServer/bin/versioninfo.bat,检查WebShpere版本6.0.0.1(最原始的6.0版本)。

6、执行WebSphere/AppServer/java/bin/java -version,检查JDK版本,1.4.2和WebSphere 6.0.0.1配套的最老版本。 结论:

WebSphere以及对应的JDK版本太低,导致WebSphere启动后很快出现进程消失等故障。

解决方案: 处理办法:

该环境为测试环境,为保证系统基本可用,对WebSphere参数进行了一定调整。

1)最大堆内存从1536调整到1024(32位Windows JDK比较旧,JVM内存设置过大容易出现故障)。

2)通用JVM参数增加如下内容:

-Xgcpolicy:optavgpause -Xk50000 -Xp10240k,512k

结果:

调整WebSphere参数后,EAS不再出现进程消失类的故障。

后续要求:

1、当前使用的WebSpehre及其JDK版本都太低,必须升级,建议升级到6.0.2.25版本或以上,才能保证EAS稳定可靠地运行。

2、正式环境请参考上述处理方法增加通用JVM参数,优化JVM内存使用。

(目前了解的情况,现场已经升级WebSphere及其对应的JDK,WebSphere升

16 / 44

EAS系统部署常见问题FAQ

到了6.0.2.25,JDK升级到了1.4.2 SR9。) 更多信息: 参考

13 建滔化工做账套IMP时Oracle实例自动停止问题

问题描述: 客户系统管理员电话反馈,从正式库导出的EAS数据中心在导入测试环境时报ORA-3113错误,多次导入都是如此,都是在倒物料采购信息表(1000万记录)时报错。 原因分析: 分析诊断情况: 1、ORA-3113通常都是Oracle实例发生严重故障,导致进程异常中止或者实例异常关闭。 2、让客户提供Oracle的alert日志,打开发现在停止时出现如下错误: Errors in file /oracle/admin/kbeas/bdump/kbeas_dbw0_262294.trc: ORA-27061: waiting for async I/Os failed IBM AIX RISC System/6000 Error: 22: Invalid argument Mon Feb 16 20:08:49 2009 DBW0: terminating instance due to error 27061 Instance terminated by DBW0, pid = 262294 看提示,是在和操作系统异步IO通讯时发生异常,导致DBW0进程中止,进而导致实例停止。 3、根据错误信息到metalink检索,发现系AIX一个严重Bug,需打操作系统补丁。 详情参见附件《ORA-27061 waiting for async IOs failed on IBM AIX RISC System6000 Error 22 Invalid argument.mht》。 一些操作系统的Bug可能导致Oracle严重故障,需要及时打上这些补丁,请注意参考刘学鹏之前所写关于Oracle配置部署的相关文档。 解决方案: 更多信息: 参考 14 宁煤EAS v5.9某用户操作功能特别慢

问题描述: 昨天客户做了一下同步权限项操作,发现某用户的权限丢失,于是重新进行授权,但重新授权后登录以及操作科目表、付款单等功能非常慢,从点击菜单到弹出界面差不多要2分钟左右。 原因分析: 1、启动jconsole连接本地EAS客户端进程,然后让客户操作变慢的功 17 / 44

EAS系统部署常见问题FAQ

能。 2、跟踪客户端运行线程,发现客户端等待的时候,正在获取有权限的组织,而且堆栈一直停留较长时间。 3、在用户管理中检查授权信息,发现用户在多个组织上被单独授权。 4、进一步检查T_PM_USERORGPERM,有200多万记录。 结论: 1、由于授权数据量过大,导致权限检查相关操作很慢,进而影响功能的响应时间。 2、检查表的数据量来看,应该存在较多直接给用户授权的情况。 解决方案: 让客户删除给用户直接授权的数据,改用给角色授权并给用户分配角色的方法。 结果: 性能表现恢复正常。 后续工作: 梳理现有的授权数据,尽量采用建立多种角色 -> 给角色授权 -> 将角色按组织分配给用户的方式授权,这样可以大大减少授权数据量,提高验权的性能。 更多信息: 参考

15 关于湖北电信项目升级问题

问题描述: 项目现在要将EAS530升级至EAS590,在帐套升级到590的过程中出现错误,但帐套版本在数据中心界面更新为540了。 原因分析: 从现场发过来的日志分析,从EAS5.4升级到EAS5.9时,因为Oracle处理反序索引存在bug(而EAS的 T_BAS_PARAMITEM和T_BAS_PARAM这两个表 正好存在反序索引), 在升级过程中,会发生如下错误: java.sql.SQLException:无法从套接字读取更多的数据 java.sql.SQLException:OALL8 处于不一致状态 解决方案: 有两个解决办法: 1、 升级oracle 到10.0.2.3版本; 2、 将EAS的两个反序索引重建为正常索引, 然后重新执行数据中心升级。重建脚本如 下(可以在EAS管理控制台的【数据库管理】或oracle相关工具中执行以下脚本): drop index \ drop index \ CREATE INDEX \\ CREATE INDEX \ \ 18 / 44

EAS系统部署常见问题FAQ

更多信息: 参考

16 合并元数据后编译出错的处理方法,请参考

问题描述: 在AIX下安装了EAS服务端后,启动服务器、管理控制台,系统报 “0403-027 The parameter list is too long.” 错误。 原因分析: 主要是因为EAS启动路径过长导致,需要调整AIX操作系统参数。 解决方案: 以root身份使用命令: # smitty --> System Environments --> Change / Show Characteristics of Operating System 增大 ARG/ENV list size in 4K byte blocks 项的值(以4KB的块为单位)。缺省为6*4KB=24KB。可以将此值设为12*4KB=48KB,最大值可设为128*4KB=512KB。 更多信息: 参考

17 关于无法获取服务器列表的问题

问题描述: 无法获取服务器列表 原因分析: 从发过来的日志分析,是因为服务器上的 eas/server/lib/common/bos/metadata.jar文件被破坏了,无法打开了,所以导致com/kingdee/bos/BOSRuntimeEnv装载失败,从而导致管理控制台发生错误。 解决方案: 从其他相关版本和补丁的环境(测试环境?)拷贝替换这个文件。 这个文件为什么会发生错误呢? 现场进行了哪些操作导致的?有可能其他jar文件也发生破坏了。彻底的解决方案就是从测试环境拷贝替换服务器上的EAS目录。具体操作可以联系区域工程师处理。 错误原因 =================================================== java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFile.java:203) at java.util.zip.ZipFile.(ZipFile.java:234) ....................... at com.kingdee.eas.tools.admin.client.ui.swing.util.SwingWorker$2.run (SwingWorker.java:96) at java.lang.Thread.run(Thread.java:595) Exception in thread \5\ 更多信息: 参考 19 / 44

EAS系统部署常见问题FAQ

18 R090219-022 ARG/ENV参数过小导致广州长大EAS v5.4停止后无法再启动问题

问题描述:

原因分析及解决方案:

每次EAS在因维护原因停止后,就再也无法启动,包括在管理控制台以及命令行方式都不行,除非重启操作系统后,才能再次启动EAS。AIX操作系统,Apusic应用服务器。

(日志收集分析,再收集分析,加上系统只能晚上很晚重启,不能连线查看无法重启的现象,问题解决周期搞得比较长,抱歉)

1、检查admin.log,发现管理控制台启动EAS后,立即报告进程已经退出。 [2009-03-09 22:32:13,581 INFO] [2009-03-09 22:32:13,581 INFO]************************************************* [2009-03-09 22:32:13,582 INFO] Kingdee EAS Server [2009-03-09 22:32:13,582 INFO] (apusic Edition)

[2009-03-09 22:32:13,583 INFO] Copyright (C) 2006 [2009-03-09 22:32:13,584 INFO] Kingdee Software (China) Co., Ltd. [2009-03-09 22:32:13,584 INFO]************************************************* [2009-03-09 22:32:13,585 INFO][Platform ]:AIX [R:3] [V:5] [ARCH:00C0B1C24C00] [2009-03-09 22:32:13,586 INFO][JavaVendor]:IBM

[2009-03-09 22:32:13,586 INFO][ServerMode]:PRODUCT [2009-03-09 22:32:13,587 INFO] [2009-03-09 22:32:13,587 INFO] [2009-03-09 22:32:13,587 INFO]Lauch server background, and run server in nohup mode ..... [2009-03-09 22:32:14,189 INFO]The Process was terminated normally, wait the server is ready ...

2、此时用telnet 连接服务器的6888,11034等端口,不通。

3、查看client.log,看到如下异常:

Try to test update socket[192.168.100.10:6888]connection ...... java.net.ConnectException: Connection refused: connect 也说明端口无法连通。

4、利用netstat -an检查发现没有监听6888和11034端口。

5、查看server1/logs/server.trace,可以看到 [kill server] 2009-03-09 22:25:29 1236608729261

5b6b696c6c207365727665725d20323030392d30332d30392032323a 32353a32392031323336363038373239323631

[Start]2009-03-09 23:32:13 1236609133 bd29fb99dcc390843ce7ae6f3132f002 23:32:13秒,曾经启动过一次。

6、但查看Apusic日志,没有任何输出,最后输出的时间点是22:24:46,说明Apusic根本没有启动。

2009-03-09 22:24:46 INFO [con.out] [2009-03-

20 / 44

EAS系统部署常见问题FAQ

09 22:24:46,202 INFO at (ORMRPCObjectFactory.java:38)]Can't find user sessionID in ServerSession!

2009-03-09 22:24:46 INFO [con.out] [2009-03-09 22:24:46,208 INFO at (ORMRPCObjectFactory.java:38)]Can't find user sessionID in ServerSession!

7、直接在命令行用脚本启动EAS,出现如下信息后,脚本退出,无任何提示,完整输出请参见附件。 #sh startserver.sh

*************************************************** Kingdee EAS Server (apusic Edition)

Copyright (C) 2006 Kingdee Software (China) Co., Ltd.

*************************************************** [Platform ]:AIX [R:3] [V:5] [ARCH:00C0B1C24C00] [JavaVendor]:IBM

[ServerMode]:PRODUCT

Lauch server background ..... 检查发现EAS进程并未启动。

8、startserver.sh会自动生成一个start.sh,实际EAS启动是这个脚本完成的,随即测试了一下:#sh start.sh

发现EAS可以正常启动,Apusic正常输出日志。(当时EAS还在运行,所以最后会报端口被占用而退出。)

9、至此才开始怀疑可能是ARG/ENV内存不够导致无法启动,随即进行了调整:

#smitty chgsys

将ARG/ENV list size in 4k blocks 由6改成18。

10、再执行startserver.sh,可以启动EAS进程了。 总结分析:

1、这个问题好久没有解决的一个原因就是正常情况下如果ARG/ENV过小,管理控制台日志会输出明确的错误信息,如下: [2009-02-19 17:13:58,097 INFO]Start application server [/eas/kingdee/eas/server/profiles/ server1/bin] cmd[/bin/sh, -C, startserver.sh, nohup].....

[2009-02-19 17:13:58,533 ERROR]start.sh[2]: /usr/bin/nohup: arg list too long [2009-02-19 17:13:58,537 INFO][EXE_CMD]/eas/kingdee/eas/jdk/bin/java -Xms1024m -Xmx1536m -Djava.net.preferIPv4Stack=true

但长大的日志中始终没有看到这样的提示,不排除是当前版本操作系统(AIX 5300-08)的一个Bug。

2、调用startserver.sh不行,而start.sh却可以。猜测原因:startsrver中定义并export了一些环境变量,导致ARG/ENV内存区占用增加,刚好超过了限制而无法启动,而start.sh则没有这些内容。

3、第一次startserver启动可以,停止后再次启动就不行了。猜测原因:系统运行若干程序后,ARG/ENV内存区占用增加,导致停止后再次启动失败。

注:ARG/ENV参数默认过小是一个已知问题,所以在EAS系统管理员手册中明确对此进行了描述,并建议调整。

21 / 44

EAS系统部署常见问题FAQ

更多信息: 参考 遗留事项: 操作系统errpt中记录了大量和磁盘相关的错误,集中在hdisk10和hdisk11上,错误为DISK OPERATION ERROR,需要联系客户的系统管理员诊断并解决。(请张振军跟进)

19 提单R090312-109的处理

我在网上找到一个解决办法安装了 libXp-1.0.0.8.1.el5.i386.rmp 问题描述 :/opt/bea/jrockit81sp6_142_10/jre/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory linux 版本 Redhat V5 该文件在linux系统安装盘下Server路径下 安装#rmp -ivh libXp-1.0.0.8.1.el5.i386.rmp 安装完后可以看到在/usr/lib 下libXp.so.6 文件 重新启动admin.sh 部署成功 。 更多信息: 参考 问题描述: 原因分析: 解决方案:

20 合景单点登录日志

你们是AIX操作系统, 只能用ibm jdk,ibmjdk 是不可能有 com.sun.security.auth.module.Krb5LoginModule 这个class的, 只有com.ibm.security.auth.module.Krb5LoginModule。 你们修改 eas/server/properties/login.config 将其中的 com.sun.security.auth.module.Krb5LoginModule 替换为 com.ibm.security.auth.module.Krb5LoginModule。 针对这个问题,任峰注意向管理控制台这边提出需求,在不同的jdk下配置不同的login.config文件。 更多信息: 参考 问题描述: 原因分析: 解决方案:

22 / 44

EAS系统部署常见问题FAQ

21 管理控制台在群集控制器显示不了当前连接数

问题描述: 管理控制台在群集控制器显示不了当前连接数或者在数据中心长时间显示不了部署状态。 原因分析: 1,网络配置问题;管理控制台需要访问EAS的每个实例来获取其状态信息或连接数信息,java程序在访问 时会将一个内部IP地址先解析为主机名称,然后再将主机名称通过DNS解析为IP,在多网卡的情况下,在将主机名称解析为IP时有可能就解析成了一个外部IP,此时访问不了外部IP,hosts的解析是优于DNS的,在hosts文件中将主机名称与内部地址建立映射关系,则将主机名称转化为内部IP。 2,没有导入apusic的license; 解决方案: 问题1的解决方法:对于windows平台,编辑C:\\WINDOWS\\system32\\drivers\\etc\\hosts文件,对于 unix,linux系统,编辑/etc/hosts文件,增加一行内部IP与主机名称的映射关系,如:192.168.19.42(内部IP) klaus(主机名称) klausalias(主机别名,可以不要此属性)。 问题2的解决方法:导入apusic的license。 更多信息: 参考

22 关于二次开发包与补丁包不一致导致客户端冲突的问题

从客户端抛出错误信息看: 错误信息:java.io.InvalidClassException: com.kingdee.eas.basedata.master.aux acct.AbstractAssistantHGInfo; local class incompatible: stream classdesc serialVersionUID = 6991993286868021365, local class serialVersionUID = 3507622401282193336 说明 com.kingdee.eas.basedata.master.auxacct.AbstractAssistantHGInfo这个类不兼容导致的。 从现场的二次开发包hj_stock_acct.jar中看,该二次开发包中包含了 com.kingdee.eas.basedata.master.auxacct.AbstractAssistantHGInfo这个class,说明现场二次开发修改过标准产品中的这个class,但是现场安装补丁后没有进行二次开发合并导致的问题。 解决方案: 让二次开发人员从安装了补丁后的环境上导入EAS解决方案,合并冲突后重新发布二次开发的内容,更新后即可解决该问题。 更多信息: 参考 问题描述: 原因分析:

23 / 44

EAS系统部署常见问题FAQ

23 R090511-230 山东六和EAS v5.4经常出现与服务器以外失去联系

问题描述:

原因分析:

解决方案:

服务器经常出现所有公司单据无法提交,提示“与服务器失去联系”,重启服务器后可以解决。

1、分析收集的服务器日志,发现客户使用的WebSphere服务器。找到server1的native_stderr.log,看到如下异常:

**************************** WARNING ****************************** You are currently running with data limits not set to unlimited.

You may experience out of memory(OOM) conditions. 提示很明确了,操作系统的用户限额不够,警告会很容易出现OOM异常。

In the event of an OOM error, please increase the data limit value. You may use \

******************************************************************* JVMDG217: Dump Handler is Processing OutOfMemory - Please Wait. JVMDG315: JVM Requesting Heap dump file

JVMDG318: Heap dump file written to /websphere/B/WebSphere/AppServer/profiles /AppSrv01/heapdump352572.1241864528.phd JVMDG303: JVM Requesting Java core file

JVMDG304: Java core file written to /websphere/B/WebSphere/AppServer/profiles /AppSrv01/javacore352572.1241864648.txt

JVMDG274: Dump Handler has Processed OutOfMemory.

JVMST109: Insufficient space in Javaheap to satisfy allocation request

果然发生了OOM异常,因此判断操作系统限额应该是导致问题的主要原因。

2、查看SystemOut日志,检查WebSphere和JDK版本。 ************ Start Display Current Environment ************

WebSphere Platform 6.0 [ND 6.0.2.25 cf250801.02] running with process name lpar2b-bootNode03Cell\\serv-appNode01\\server1 and process id 426286 Host Operating System is AIX, version 5.3

Java version = J2RE 1.4.2 IBM AIX 5L for PowerPC (64 bit JVM) build caix64142-20080515 (SR11) (JIT enabled: jitc), Java Compiler = jitc, Java VM name = Classic VM

虽不是最新补丁版本,但已满足EAS对WebSphere和JDK的版本要求。

处理建议:

1、停止WebSphere以及管理控制台台,修改操作系统用户限额。

方法:编辑/etc/security/limits 文件,找到root的配置部分,修改或者增加(没有则增加)data等条目 root: rss = -1 data = -1

修改完成后,需要退出终端或者xmanager并重新进入,用如下命令检查已经生效

#ulimit -d

unlimited ; 输出unlimited则表示已经生效。 然后重新启动EAS。

2、调整WebSphere的相关参数(共三个实例,因此需连接每个实例的控制台分别设置)。

24 / 44

EAS系统部署常见问题FAQ

更多信息: 参考 方法:进入WAS控制台:应用程序服务器 > server1 > 进程定义 > Java 虚拟机 。 将通用JVM参数的内容替换为:-Xgcpolicy:optavgpause -Xk50000 -Xp10240k,512k -Xgcpolicy:optavgpause ,一种并行gc策略,而且会在CPU空闲时间进行GC。 -Xk50000 -Xp10240k,512k ,这两个选项可以使得最大堆大小设置为1536M的时候比较稳定地工作。 此调整需重启WebSphere才会生效。 3、清理之前生成的Dump文件。 请删除WebSphere/AppServer/profiles/<实例名>/下面的javacore*.txt和heapdump*.phd文件。 后续措施: 1、如果还是会出现突然中断的情况,请检查是否有新的dump文件生成;若有,请收集并上传,以便我们进一步分析原因。 2、考虑升级到6.0.2的最新patch版本。 http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg27006876#60233

24 组织保存特别慢

问题描述: 原因分析及解决方案: 这几天一直在分析组织保存慢的问题,为什么你们的环境与我们公司恢复的德邦帐套的测试结果差异非常大?今天终于找到了原因 :组织单元相关的表存储是有一定的特殊.t_org_baseunit,是所有组织的表, 对于每种不同的组织类型有一个表对应,如财务组织表t_org_company。这些表类似于视图,这表的数据经常会被完全删除后再同步t_org_baseunit中的数据,所以不能有外键指向这个表(在pl/sql中选择表其中有foreign by refrence),不能存在对这个表的数据的数据库层面的依赖。 现在财务组织表(t_org_company)、控制单元表(T_org_ctrlunit)都有外键指向它们,需要删除,在测试环境中,以前长时间不能完成的组织保存,在删除外键后不到1分钟就完成了。外键可能在元数据库层面就已经生成了,所以需要从元数据层面修改。直接在数据库上删除这些外键不会产生什么影响,建议删除外键后测试,如果没问题,马上在ERP这个数据中心修复,删除特定组织表的外键 。 下面这些表不能存在外键: 财务组织表(t_org_company), 成本中心表(t_org_costcenter) t_org_admin t_org_ctrlunit t_org_quality t_org_purchase t_org_costcenter T_ORG_ProfitCenter T_ORG_Sale 25 / 44

EAS系统部署常见问题FAQ

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 12月 1 10:39:46 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options

SQL> select instance_name ,status from v$instance;

INSTANCE_NAME STATUS

-------------------------------- ------------------------ eas54 STARTED

实例状态为STARTED,未启动成功。

6、停止并启动数据库,发现有错误。 SQL> startup

ORACLE instance started.

Total System Global Area 1367343104 bytes Fixed Size 1250884 bytes Variable Size 335546812 bytes Database Buffers 1023410176 bytes Redo Buffers 7135232 bytes ORA-00214: control file

'D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\EAS54\\CONTROL02.CTL' version 14018 inconsistent with file

'D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\EAS54\\CONTROL01.CTL' version 14016

错误信息表明控制文件出现不一致的情况,估计是昨天晚上的IO故障导致控制文件出现不一致。

CONTROL02.CTL的版本号14018 > CONTROL01.CTL版本号14016

7、将三个控制文件先备份,然后用CONTROL02.CTL覆盖CONTROL01.CTL和CONTROL03.CTL。

8、重启数据库,可以正常启动,系统恢复正常。

9、后检查操作系统事件查看器的日志,发现已经被清除,无法获知是否有IO方面的错误信息。

后续建议:

1、请密切关注服务器的IO状况,并检查磁盘是否有异常,并定时检查操作系统相关日志。

2、确保每天的备份正常,并复制到另外的机器上,以防万一。

更多信息: 参考

31 / 44

EAS系统部署常见问题FAQ

30 补丁脚本执行错误

DomainException: null,DBType=[Oracle]

问题描述: 执行补丁脚本抛出异常,异常中含有以下关键字(不同的数据库DBType有所不同) com.kingdee.eas.tools.admin.domain.DomainException: null,DBType=[Oracle] null,DBType=[Oracle] JDK版本:IBMJDK 原因分析: 补丁SQL脚本文件含有非UTF8格式(开发人员保存了非标准格式)的文件,导致IBMJDK以UTF8格式读取时发生转换错误。 解决方案: 解决办法(两种): 1、 控制台增加虚拟机参数,关掉IBMJDK转换字符集的校验 ,参数名: -Dibm.stream.nio,加入位置admin/adminserver.sh(cmd),找到【bin/java】 关键字,在其后任一 【-D】参数之间加入,然后通过stopserver.sh(cmd)停止控制台,重启控制台。 2、 或者直接打上控制台最新补丁PT031264(20100115)发放。 更多信息: 参考

31 Weblogic环境常见问题

WebLogic部署时,需要注意先通过weblogic命令脚本config.cmd(sh)新建实例,新建实例过程中,需

要选择生产模式,使用sun jdk.

另外,对于使用协同等基于web框架的功能需要注意仅在EAS60版本对weblogic10支持,其他如weblogic814,weblogic815版本中如果需要使用协同,则需要另外部署一个apusic应用。

下面的问题为外部实施反馈的问题,能够在产品层面考虑,消除的问题已经提单,另外的需要指导解决。请参考:

问题1: 问题描述: 系统升级到6.0或新安装6.0,使用WebLogic8.1,不能安装补丁PTM022401,也不能正常登陆系统。 原因分析: 主要错误是安装补丁过程中提示解压包出错,路径过长。后经分析是WebLogic自带的JDK版本过低导致的。 解决方案: EAS6.0 在WebLogic8.1的错误问题及临时解决思路(所有中间件使用WebLogic的都需要关注此问题): 1. 打解耦补丁(PT022208)后,推出管理控制台,将JDK指向EAS自带的JDK目录,修改文件../eas/admin/adminserver.cmd或.sh文件。 在行” if \的前面增加一行 set JAVA_HOME=d:\\kingdee\\eas\\jdk,这里注意EAS的实际目录。 2. 重启管理控制台,打合并补丁(PTM022401),成功后,关闭管理控制台,将上面增加的那行去掉。 32 / 44

EAS系统部署常见问题FAQ

注:以上两步是解决在WebLogic环境下打合并补丁失败的问题。 3. 修改文件eas/server/profiles/server1/bin/startserver.bat在call \后添加了一行 set JAVA_HOME=c:\\bea\\jdk142_05 具体路径随WebLogic的安装路径有变化。 注:第三步最好的方法是客户在新建weblogic的domain时,选择用sun的jdk,不用weblogic的jrocket。 更多信息: 参考

问题2: 问题描述: 客户使用Windows2003SP2 +Weblogic8.15 +Oracle 10g 在部署EAS60+SP1补丁+房地产补丁包,更新完补丁后,重新部署,进行到启动应用服务器一项则抛出异常,异常信息大致为:The WebLogic Server did not start up properly. java.lang.SecurityException: invalid SHA1 signature file digest for com/sun/msv/verifier/identity/PathMatcher$SinglePathMatcher.class ,附件附上Server1实例下的日志文件,已重装过Weblogic测试过,问题照旧。 原因分析: 解决方案: 首先创建weblogicdomain时选择sun jdk; 错误信息提示的类com/sun/msv/verifier/identity/PathMatcher$SinglePathMatcher.class 类所在的包为lib\\common\\trd\\jaxb-libs.jar 找到确定的包,然后: 1、将jaxb-libs.jar 解压到目录jaxb-libs; 2、删除 jaxb-libs\\META-INF\\目录中出mainfest.mf 以外的文件; 3、修改 jaxb-libs\\META-INF\\目录中的mainfest.mf ,保留第一行,其余删除; 4、重新打包:进入jaxb-libs目录,执行:jar cvf jaxb-libs.jar 。 另外部署过程中出现如下错误: unsupportedclassversionerror:com/kingdee/eas/perflog/app/monitor/http/httpfilter 这个是由于编译class中使用的jdk特性,在低版本的jdk中运行不支持。直接去掉此类的引用,修改server\\deploy\\eas.ear\\cp_web.war\\WEB-INF\\web.xml文件,去掉httpfilter相关配置; 更多信息: 参考

问题3: 问题描述: eas60sp1+weblogic部署出错 错误提示: [com.kingdee.eas.tools.admin.framework.appserver.exception.AppServerException: setNativeIOEnabled error! cause by weblogic.rjvm.PeerGoneException: ; nested exception is: java.rmi.UnmarshalException: Incoming message header or abbreviation processing failed ; nested exception is: java.io.InvalidClassException: javax.management.ObjectName; local class incompatible: stream classdesc serialVersionUID = -5467795090068647408, local class serialVersionUID = 1081892073854801359 at weblogic.rjvm.BasicOutboundRequest.sendReceive (BasicOutboundRequest.java:108) 33 / 44

EAS系统部署常见问题FAQ

Weblogic8使用1.4版本的JDK,管理控制台默认使用1.5版本JDK,导致通讯时出现异常。 请将eas/server/bin/set-server-env.bat的JDK路径改为weblogic8对应的JDK目录,然后再部署。 更多信息: 参考 原因分析: 解决方案:

问题4: 问题描述: eas60 weblogic 814无法安装PTM022401 =========================================================== [2009-09-09 22:13:33,640 INFO] Begin install patch [PTM022401]...... [2009-09-09 22:13:33,640 INFO] Patch [PTM022401] is a normal patch , begin unzip it...... [2009-09-09 22:16:01,312 ERROR] Install patch [PTM022401]error java.io.FileNotFoundException: 系统找不到指定的路径。 at java.io.Win32FileSystem.createFileExclusively(Ljava.lang.String;)Z(Unknown Source) at java.io.File.createNewFile()Z(Unknown Source) 原因分析: 解决方案: WINDOWS系统合并元数据时路径过长的问题,请先安装补丁PT023703,然后再安装PTM022401。 更多信息: 参考

问题5: 问题描述: 环境 linux redhat V5 中间件 weblogic816 EAS在部署的时候报错 Caused by: java.lang.UnsatisfiedLinkError: /opt/bea/jrockit81sp6_142_10/jre/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Ljava.lang.String;)V(Native Method) at java.lang.ClassLoader.loadLibrary0(Ljava.lang.Class;Ljava.io.File;)Z(Unknown Source) at java.lang.ClassLoader.loadLibrary(Ljava.lang.Class;Ljava.lang.String;Z)V(Unknown Source) at java.lang.Runtime.loadLibrary0(Runtime.java:788) at java.lang.System.loadLibrary(Ljava.lang.String;)V(Unknown Source) at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50) 原因分析: 解决方案: linux缺少支持图形的包; 安装命令如下: rpm -ivh http://mirror.centos.org/centos-5/5.2/os/x86_64/CentOS/libXp-1.0.0-8.1.el5.x86_64.rpm rpm -ivh http://mirror.centos.org/centos-5/5.2/os/x86_64/CentOS/libXp-1.0.0-8.1.el5.i386.rpm 或者下载后安装。 更多信息: 34 / 44

EAS系统部署常见问题FAQ

参考 问题6: 问题描述: 关于EAS6.0使用Weblogic无法创建实例问题 [2010-03-16 14:09:11,738 INFO]Find weblogic[/opt/bea/registry.xml] product version[8.1] [2010-03-16 14:09:11,739 WARN]Can't find user_projects from [/opt/bea]! [2010-03-16 14:09:11,740 ERROR]Get weblogic domain list from [/opt/bea/weblogic81/server] failed! java.lang.RuntimeException: Can't find user_projects from [/opt/bea]! at com.kingdee.eas.tools.admin.framework.appserver.impl.WebLogic. getWebLogicDomainList() [Ljava/lang/String;(WebLogic.java:241) 原因分析: 错误原因是因为E:\\bea目录下没有user_projects目录。 解决方案: 请参考EAS管理员手册新建weblogic的domain,然后才能在管理控制台中部署EAS。 EAS5.9和6.0的管理员操作手册有详细的操作步骤(包含建库、部署等),按照文档一步步操作。 ============================================== [2010-03-16 14:09:11,740 ERROR]Get weblogic domain list from [/opt/bea/weblogic81/server] failed! java.lang.RuntimeException: Can't find user_projects from [/opt/bea]! 此问题将优化管理控制台相关处理,界面友好提示客户需要新建WEBLOGIC DOMAIN。 更多信息: 参考

问题7: 问题描述: 没有从管理控制塔启动和停止weblogic 原因分析: 解决方案: 从发过来的日志分析,启动weblogic不是通过eas/server/profiles/server*/bin/startserver.sh 操作的吧? 必须通过EAS下的脚本或者EAS管理控制台启动和停止weblogic。否则会导致相关class加载问题。 ================= { Module Name: ejb_tx.jar, Error: Exception preparing module: EJBModule(ejb_tx.jar,status=NEW) Unable to deploy EJB: /kingdee/eas/server/deploy/eas.ear/ejb_tx.jar from ejb_tx.jar: weblogic.ejb20.deployer.DeploymentDescriptorException: Unable to load a class specified in your ejb-jar.xml: com.kingdee.bos.transaction.EJBTxFacade.TxInvokerBean at 更多信息: 参考

问题8:

35 / 44

EAS系统部署常见问题FAQ

问题描述: 关于群集中协同需要部署Apusic实例 原因分析: 解决方案: 自金蝶EAS6.0开始,同一个金蝶EAS安装目录下的多个金蝶EAS实例可以分别采用不同类型的应用服务器,如:server1用apusic,server2用websphere,server3用apusic。 这一场景主要应用于采用WebSphere或者WebLogic中间件的客户,因为金蝶EAS6.0开始采用Apusic的AOM web框架开发部分web应用(协同平台、供应链web单据等等),这些web应用暂时只能运行在Apusic中间件上,因此针对WebSphere和WebLogic的客户,必须同时也部署Apusic,通过Apusic来访问对应的web应用。 请参考《EAS6.0系统管理员指导手册.doc》-第七章 多应用服务器配置 。 如果需要在群集中,同时存在websphere的应用server1,server2,server3,Apusic应用server4,现需要群集控制器CC将来自协同平台的请求转发到Apusic,EAS6.0版本目前部署支持但没有通过严格的业务测试,不建议使用此方法,我们会在后续EAS60Sp3会提供此功能,目前建议采用以下方案: 方案一、在应用服务器页新建类型为Apusic应用server4(可以是其它命名),将server4部署,启动后直接通过portal访问server4。缺点:server4单实例模式,不能通过群集启动停止。 方案二、将server4配置到群集中,作为一条成员,在群集向导中将server4的【负载/权重】设置为0,使群集控制器CC不能将正常的访问转发到Apusic,需要访问server4时,启动群集后直接通过portal访问server4。 推荐使用方案二。 更多信息: 参考

问题9: 问题描述: 使用了weblogic中间件自身的群集后,部署EAS群集出错。错误信息如下: Caused by: java.rmi.UnmarshalException 。。。。。 Caused by: java.io.NotSerializableException: org.apache.log4j.Logger at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1059) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1337) 原因分析: 解决方案: 这是weblogic群集同步调用错误。请在取消weblogic群集后,重新部署EAS (EAS群集是不依赖中间件的群集,不需要配置weblogic群集)。 更多信息: 参考

32 启动EAS实例时出现认证失败的提示

问题描述: 此问题的主要表现为认证失败,即使通过apusic的web管理控制台也不能登录。 原因分析: 现场验证,仅仅启动apusic服务后,通过IE连接apusicweb管理控制台,也会 36 / 44

EAS系统部署常见问题FAQ

认证失败,不能登录; 通过检查,是由于双网卡情况下apusic存在某种问题(apusic还未找到原因)导致认证失败。 解决方案: 解决方法是绑定IP。修改apusic/domains/server(n)/config/apusic.conf文件 ,在服务Muxer中增加属性Address ,值为应用服务器对外提供服务的IP : 修改完成后重新应用后问题应该可以解决。 更多信息: 参考 33 标准EAS迁移说明

问题描述: 如何快速搭建和正式环境一致的EAS应用服务器环境? 原因分析: 需求场景: 1、需要快速搭建和正式环境一模一样的EAS测试环境。 2、希望能快速搭建跨多台物理机器的EAS集群。 3、其它需要搭建一致环境的场景。 可能的约束: 1、源环境和目标环境操作系统类型可能时不一致,比如从AIX复制到Windows。 2、源环境和目标环境应用服务器类型可能不一致,比如从WebSphere换成Apusic。 3、源环境和目标环境硬件配置差别可能比较大,比如CPU能力、内存大小等。 解决方案: 搭建步骤: 1、对原始EAS环境做必要的清理,清理内容包括: 1)检查server/bin、server/profiles/*/bin下是否有core、javacore*.txt、Snap*.trc、heapdump*等文件,这些文件建议直接删除。 2)日志文件清理:eas/server/profiles/*/logs/*、eas/admin/logs/*、eas/server/cluster/logs/* ,建议删除一周前的所有日志。 3)补丁文件清理:eas/admin/patch/pathlist下的文件可能会很大,可考虑删除。 2、将原始EAS环境打包。 1)Windows环境:可以直接用WinRAR,7Zip,jar等工具打包。 2)Linux、Unix:用tar命令将整个EAS安装目录打包。 如:tar cvf eas.tar eas540 可能需要较长时间才能打包完成,不建议用ftp直接拉目录,会非常慢,而且无法跨平台复制文件的属性。 3、将打包的文件利用ftp等方式传到目的服务器上,并解包。 1)如果是Linux、Unix,建议用同样的目录结构,这样可减少配置工作量。 4、更换合适的JDK以及perl运行环境。 1)JDK都是操作系统相关的,因此不同类型的操作系统之间迁移环境的时候,必须更换特定环境的JDK。 方法:删除eas/jdk目录,在目标系统中安装一套EAS,并将其中的jdk目 37 / 44

EAS系统部署常见问题FAQ

录复制过来。 2)perl环境,如果是从Unix、Linux迁移到Windows,还需要删除eas/server/perl目录,并将Windows上新安装的EAS的相应目录复制过来。 5、调整EAS配置文件。 1)修改eas/server/bin/set-server-env.sh(bat),调整如下和路径相关的变量 EAS_HOME、JAVA_HOME、*_SERVER_HOME等指向正确的路径。 2)修改每个实例eas/server/profiles/*/bin/set-server-env.sh(bat),调整如下变量 JVM_INITIAL_HEAP_SIZE、JVM_MAX_HEAPSIZE,如果迁移到Windows平台,内存最大不能超过1280m。相同平台之间迁移可不变。 JVM_CUSTOM_PARAMS,平台变化后,这个参数的值可能无法使用,如果你不知道如何修改,建议删除此参数的设定。相同平台之间迁移可不变。 PROFILE_PATH、APP_SERVER_HOME等路径变量指向正确的路径。 6、清理多余的实例,如果目标机器配置较低,可能需要删除一些实例。 1)删除eas/server/profiles/下的多余实例,server1必须要保留。 2)删除apusic/domains下多余实例,server1必须保留。 7、进入管理控制台,做必要的配置和部署。 1)点击“服务器设置”按钮,设置正确的应用服务器路径。 2)删除不需要的数据中心,并注册正确的数据中心。 3)导入和目标机器IP地址匹配的Apusic License和EAS License文件。 4)部署每个EAS实例,并进行集群配置(若有集群),过程中根据需要调整应用服务器类型、端口号等信息。 8、验证两边的环境完全一致。 1)在目标服务器启动管理控制台,进入企业应用页签,点击“查看组件版本”,并确定包含客户端组件,扫描完毕后,保存为一个xml文件。 2)将文件复制到原始EAS服务器上,并同样进入查看组件版本功能,并点击“打开XML比对”,比对结果完全一致则说明两个环境是一致的。 9、升级数据中心。 1)确定应用环境完全一样以后,如果两边注册的数据中心版本有差异,需要执行数据库升级(若大版本有差异),并执行所有补丁脚本。 10、启动目标EAS,并测试验证功能正常。 更多信息: 注:上述迁移步骤适用EAS v5.4及后续等版本。5.3及之前版本方法类似,但由于目录结构差异较大,加上用户已经较少,不再特别说明。 参考

34 EAS7安装包RPC默认端口改变问题

问题描述: 需打开RPC开关分析RPC性能日志,发现EAS7中RPC默认端口11030无法打开,后又重新安装了EAS7,发现默认的RPC的11030的确变成了11029。如下: 服务端:eas\\server\\profiles\\server1\\config\\jmxconnector.properties文件中默认RPC端口不是11030,而是11029!(http.port=11029) 客户端:RPC开关eas\\client\\deploy\\client\\PerfLog_Client.properties中默认rpc=off,原来应该是开启的吧? 原因分析: 解决方案: 服务端:建立第一个实例server1后就修改11029为11030,后续建立 38 / 44

EAS系统部署常见问题FAQ

server2、server3…就会依次递减。 客户端:需要手工开启eas\\client\\deploy\\client\\PerfLog_Client.properties中默认rpc=on。默认开启没有必要,会影响性能。需要时请人工打开。 更多信息: 参考

35 金汉斯应用服务器CPU消耗整体较原来的EAS v5.4高,业务操作响应

较慢

问题描述: 应用服务器CPU消耗整体较原来的EAS v5.4高,业务操作响应较慢。 原因分析: 昨天对日志进行分析并连线分析了一下,发现CPU消耗高的原因主要有: 1、实例内存会出现持续泄露的情况,导致可用内存逐步减少,GC时间和频度增加,响应时间变慢。 2、GC分代回收策略设置没有生效,导致GC消耗过高。 上述原因导致GC频繁,CPU消耗高以及响应时间变慢。 附分析: 1、GC日志分析可以发现,GC频度较高(每3-5s一次),每次GC时间过长(平均超过1.5s)。且存在明显的内存泄露趋势。 2、ps -ef 检查发现命令中没有 -Xgcpolicy:gencon 字样。GC日志中的类型全部是 tenured,确定没有打开分代垃圾回收。

EAS系统部署常见问题FAQ

重启后,现场测试发现性能相对重启前有明显提升。 待继续跟踪项: 1、手工收集dump文件分析泄露原因。 传回来的dump今天无法打开,需再传文件分析。 2、继续观察几天运行情况,如果实例内存消耗和负荷整体较大,考虑部署EAS集群。 更多信息: 参考 36 六和数据误删除分析

问题描述: 问题场景:

1、EAS环境有两个:A表示EAS正式环境、B表示EAS测试环境,它们分属两台机服务器上;A在EAS正式服务器H上,B在EAS测试服务器I上;

数据库有两个:C表示EAS正式库名字、D表示EAS测试库名字,它们为同一台机器G上的两个DB;

客户端有两个:E表示连接了正式库C和EAS正式环境A的客户端环境、F表示连接了测试库D和EAS测试环境B的客户端环境。E、F不在同一台机器上。 2、A、B都做了集群,B是从A拷来的环境。 3、A上只注册/部署了C,B上只注册/部署了D。 4、E、F所在机器小助手显示配置都是正确的。 问题症状:

症状1:F+D+B:修改数据库中数据后,发现:C中数据发生了变化,D中数据无变化;

症状2:E+C+A:修改数据库中数据后,发现:C中数据发生了变化,D中数据无变化。

原因分析: 一,在EAS测试服务器I上:

1.在apusic\\domains\\server1\\config\\ datasources.xml文件中:

.

driver-class=\/ICk+4DfyB60msTGl9ELbWQ2pHX5NesSkClLRmTO1cnRf8RDx9k0OBnZ7 G1eyXrX4DRNftU0n5ZW2s1TakWmbzUgHX0ALic3EaZ

/zKNt9EOKXgwbr4W3zmdl+2tTQ29URchAySNeVMGqfJTBoDfpY7IFr2muVCZ +EbpADP3CSw==\connections=\

value=\

2.在apusic\\domains\\server2\\config\\ datasources.xml文件中:

.

driver-class=\

40 / 44

EAS系统部署常见问题FAQ

/ICk+4DfyB60msTGl9ELbWQ2pHX5NesSkClLRmTO1cnRf8RDx9k 0OBnZ7G1eyXrX4DRNftU0n5ZW2s1TakWmbzUgHX0ALic3EaZ

/zKNt9EOKXgwbr4W3zmdl+2tTQ29URchAySNeVMGqfJTBoDfpY7IFr2muVCZ +EbpADP3CSw==\

min-spare-connections=\

value=\

二,在EAS正式服务器I上:

1.在apusic\\domains\\server1\\config\\ datasources.xml文件中:

driver-class=\/ICk+4DfyB60msTGl9ELbWQ2pHX5NesSkClLRmTO1cnRf8RDx9k0OBnZ7 G1eyXrX4DRNftU0n5ZW2s1TakWmbzUgHX0ALic3EaZ

/zKNt9EOKXgwbr4W3zmdl+2tTQ29URchAySNeVMGqfJTBoDfpY7IFr2muVCZ +EbpADP3CSw==\connections=\

value=\

2.在apusic\\domains\\server2\\config\\ datasources.xml文件中:

.

driver-class=\/ICk+4DfyB60msTGl9ELbWQ2pHX5NesSkClLRmTO1cnRf8RDx9k0OBnZ7 G1eyXrX4DRNftU0n5ZW2s1TakWmbzUgHX0ALic3EaZ

/zKNt9EOKXgwbr4W3zmdl+2tTQ29URchAySNeVMGqfJTBoDfpY7IFr2muVCZ +EbpADP3CSw==\connections=\

value=\

发现:

1、 在EAS测试服务器I上,apusic\\domains\\server2\\config\\ datasources.xml文件中,存

在:“name=\C\情况。

2、 说明:现场在搭建测试环境的方法是:把EAS正式环境直接拷到EAS测试机上经过

简单修改能用(即确保EAS服务启动正常、注册/部署测试DB成功、测试客户端能进去),只对实例server1上的测试数据库进行了反部署/反注册/注册/部署的操作,而没有对实例server2上的测试数据库进行了反部署/反注册/注册/部署的操作。这就导致:实例server2上(apusic\\domains\\server2\\config\\ datasources.xml)文件中

41 / 44

EAS系统部署常见问题FAQ

“name=\C\没有修正过来。 解决方案: 把EAS测试服务器I上,apusic\\domains\\server2\\config\\ datasources.xml文件中 “name=\C\改为:“name=\D\。 具体说明: 反部署数据中心时,如果server1 and server2中datasources.xml内信息是不一样的,即使全部选中反部署数据中心,也只有server1中datasources.xml内信息没清除,server2中datasources.xml内信息仍不会被清除。 清除办法:进server2中datasources.xml,把原来不一样的信息手工清除,通过反部署/部署是清除,更新不了的。 即:通过控制台,反部署/部署一个数据库,只能对本机当前环境上部署过的数据库进行操作,才能改变server2中datasources.xml中的信息。 EAS环境改进建议: 1、 反部署时建议不要进行实例的选择,因为数据中心反部署了,部分实例不进行反部署没有任何意义,只会遗留下非常大的风险! 2、 群集配置时,取消群集部署时是否部署数据中心的选项,必须重新部署; 3、 实例启动时进行判断注册的数据中心是否和配置文件中的配置信息一致。 更多信息: 参考 37 KSQL生成db2的临时存储过程不唯一

问题描述: 问题场景: 基于eas7.0sp3开发过程中,项目组在通过web页面(http://192.168.13.67/sql/index.htm)验证数据库升级脚本,sqlserver,oracle验证成功,但是db2却偶尔成功,偶尔失败(十有八九),现象非常诡异。测试sql脚本如下: If not exists (select * from KSQL_USERTABLES where KSQL_TABNAME ='T_CRM_OpAssociatedUser') Create Table T_CRM_OpAssociatedUser ( FParentID VARCHAR(44),FUserID VARCHAR(44),FRoleID VARCHAR(44),FNote NVARCHAR(254),FSeq INT,FID VARCHAR(44) DEFAULT '' NOT NULL ,CONSTRAINT PK_OpAssociatedUse PRIMARY KEY (FID)); 问题症状: 如果db2验证失败,其页面报告错误如下: ---------------------------------------------------------------------------------------------------------------------- db2下验证不通过,以下是出错详细信息: DB2 SQL error: SQLCODE: -454, SQLSTATE: 42723, SQLERRMC: DB2ADMIN.KSQL_TEMP_PROCEDURE_3740 at com.ibm.db2.jcc.a.rf(rf.java:1680) at com.ibm.db2.jcc.a.rf(rf.java:1207) at com.ibm.db2.jcc.b.jb(jb.java:224) at com.ibm.db2.jcc.b.jb(jb.java:50) at com.ibm.db2.jcc.b.w(w.java:36) 42 / 44

EAS系统部署常见问题FAQ

at com.ibm.db2.jcc.b.cc(cc.java:149) at com.ibm.db2.jcc.a.rf(rf.java:1204) at com.ibm.db2.jcc.a.rf(rf.java:1984) at com.ibm.db2.jcc.a.rf(rf.java:809) at com.ibm.db2.jcc.a.rf(rf.java:793)

at org.apache.commons.dbcp.DelegatingStatement(DelegatingStatement.java:261) at org.apache.jsp.receive_jsp(receive_jsp.java:109) at org.apache.jsp.receive_jsp(receive_jsp.java:374) ….(略)

db2下的翻译结果:

CREATE PROCEDURE DB2ADMIN. .KSQL_TEMP_PROCEDURE_1805() BEGIN DECLARE SQL_STR VARCHAR(32672);IF NOT EXISTS (SELECT * FROM

SYSIBM.SYSTABLES WHERE NAME = 'T_CRM_OPASSOCIATEDUSER') THEN SET SQL_STR = 'CREATE TABLE T_CRM_OpAssociatedUser (FParentID VARCHAR (44),

FUserID VARCHAR (44), FRoleID VARCHAR (44), FNote VARGRAPHIC (254), FSeq INT, FID VARCHAR (44) NOT NULL DEFAULT '''', CONSTRAINT PK_OpAssociatedUse PRIMARY KEY (FID))'; EXECUTE IMMEDIATE SQL_STR; END IF; END; CALL DB2ADMIN. KSQL_TEMP_PROCEDURE_1805 ();

DROP PROCEDURE DB2ADMIN. .KSQL_TEMP_PROCEDURE_1805;

----------------------------------------------------------------------------------------------------------------------

原因分析: 分析:

上述症状说明升级脚本是正确的,而失败的时候报sqlcode=-454,表示执行的

procedure名称已经存在。那么这个procedure是由ksql.jar翻译过程中临时产生的。那产生procedure名称重复的有两种可能:

第一种可能:每次drop procedure没有成功

如果每次执行过程中生成的临时procedure执行成功了,而drop的时候没有成功,那么db2可能就存在大量的垃圾procedure。那如果该次ksql.jar生成的临时procedure名称和那些垃圾procedure重名了,就会存在上述现象,一下成功,一下失败。

第二种可能:多用户并发产生的procedure重名

如果多个用户都在该web页面上通过该ksql.jar来通过临时存储过程来执行数据库升级脚本,那很可能在多用户环境下,同时生成的procedure是重名的。这样也可能产生上述的现象。

目前的ksql生成临时procedure的名称规则是:ksql_temp_procedure_四位流水号 鉴于发生的频率非常高,基本达到50%以上,则表示第一种可能性比较大。

解决方案: 解决方法:

通过修改ksql的代码来解决,也就是确保ksql.jar中生成db2的临时存储过程名称确保不唯一。

修改该名称的规则如下:

KTP_时间戳(毫秒级)+四位随机号,如KTP_12838418723976819227 实现代码如下:

DB2SQLFormater.java

long randomNum = Math.round(Math.random() * 9999999.0D); String randomNumStr = randomNum;

if (randomNum < 10L) randomNumStr = \if (randomNum < 100L) randomNumStr = \if (randomNum < 1000L) randomNumStr = \if (randomNum < 10000L) randomNumStr = \if (randomNum < 100000L) randomNumStr = \

43 / 44

EAS系统部署常见问题FAQ

if (randomNum < 1000000L) randomNumStr = \String tempProcedureName = \经过验证,在web页面验证升级数据库脚本后,就不会再出现不确定的现象了。 补充说明: 截止到目前为止(2010-9-8),bos已经修改了该ksql的代码实现,但是尚未发布该升级补丁,目前web验证脚本页面,只是采取临时处理办法,将新的DB2SQLFormater.class覆盖ksql.jar来解决问题的。 更多信息: 参考

44 / 44

本文来源:https://www.bwwdw.com/article/2xyw.html

Top