一、
组网:
说明:
IMC UAM服务器正常接入网络即可;
二、 问题描述:
Linux操作系统下部署UAM组件时报错,错误截图如下
三、 过程分析:
对于IMC平台及各组件部署失败问题,首先打开iMC/deploy/log/dmalog.txt文件,里面一般会有如下报错
2015-03-31 19:35:41 [WARN ] [Thread-1] [com.h3c.imc.deploy.DMALauncher::a(536)] Deploy component iMC-UAM failed, return: ERROR, batch deploy interrupted.
2015-03-31 19:35:41 [ERROR] [Thread-26][com.h3c.imc.deploy.dma.wizard.DeployingPanelDescriptor$c::run(432)] Open taskLogFile error
java.io.IOException: Failed to show URI:file:
/etc/iMC-Reserved/log/dbresult_201503311935140.log
at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:75)
at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:43)
at java.awt.Desktop.open(Desktop.java:254)
at com.h3c.imc.deploy.dma.wizard.DeployingPanelDescriptor$c.run(DeployingPanelDescriptor.java:430)
2015-03-31 19:53:18 [ERROR] [SwingWorker-pool-1-thread-3] [com.h3c.imc.deploy.tasks.BuildDatabaseTask$a::a(918)] Execute database script error! return value: 220. For details, see log file:
/etc/iMC-Reserved/log/dbresult_201503311952480.log
2015-03-31 19:53:19 [ERROR] [Thread-24] [com.h3c.imc.deploy.dma.wizard.DeployingPanelDescriptor$c::run(346)] Task execute failed
日志里面提示需要查看/etc/IMC-Reserved/下的日志文件,此时我们打开两个中的任意一个比如dbresult_201503311952480.log文件,里面一般会有如下报错
:
insert into TBL_SAFE_CONTROL_GROUP(ID, NAME, TYPE, STRATEGY_MODEL, SERVICE_GROUP_ID, IF_LOCAL_DATA, GROUP_TYPE)
*
ERROR at line 1:
ORA-00001: unique constraint (EAD.IND_SAFE_CONTROL_GROUP) violated
此时可以看到部署失败原因为ORA-00001(oracle报错:违反唯一约束条件),对于这种报错,原因只有一个即客户端字符集NLS_LANG设置不正确(即使是集中式部署情况下没有安装oracle客户端也要设置该环境变量)。
四、 解决方法:
重新设置正确的客户端字符集NLS_LANG环境变量即可,相关配置命令如下
以root用户登录系统打开profile配置文件
vi etc/profile
增加如下配置
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG
保存配置后重启服务器即可
五、 注意事项
1:集中式部署没有安装oracle客户端情况下也要配置该环境变量;
2:该配置需要重启服务器生效;
3:需要以root用户修改该配置文件;
4:NLS_LNAG设置错误的情况下不仅会导致UAM部署失败,同时也会造成告警信息乱码,修改NLS_LANG正确后,由于之前的告警乱码信息已经写入数据库,所以无法恢复成正常显示,但是之后产生的告警信息都已经恢复正常;
5:导致UAM部署失败的原因不仅限于文中所列,比如安装文件损坏等,对于其他情况导致的安装失败,日志里面不会出现ORA-00001报错的。