呼叫中心报表无法访问

发布时间:  2015-02-27 浏览次数:  153 下载次数:  0
问题描述

    某项目报表系统无法访问,影响正常业务。报表人员确定无法连接数据库导致,数据库维护人员确定数据库没有任何问题。

告警信息

    在报表系统中测试数据源,显示无法连接,数据库连接有误。

处理过程

   通过此故障,及时查看报表后台日志,后台日志已经说明是由于密码过期导致。

Caused by: com.huawei.iweb.report.util.ReportException: Not able to connect to device - ICDDB

at com.huawei.iweb.report.util.DbUtil$PoolMaintainer.getConnection(DbUtil.java:1237)

at com.huawei.iweb.report.util.DbUtil.getConnection(DbUtil.java:376)

at com.huawei.iweb.report.util.DbUtil.getConnection(DbUtil.java:416)

at com.huawei.iweb.report.util.DbUtil$1.createDBConnection(DbUtil.java:1707)

at com.huawei.iweb.report.util.DbUtil$JDBCTimeOutThread$1.run(DbUtil.java:1791)

... 1 more

Caused by: java.sql.SQLException: ORA-28001: the password has expired


at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)

at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)

at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:496)

at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:278)

at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)

at com.huawei.iweb.report.util.ExtraConnectionFactory.createConnection(ExtraConnectionFactory.java:133)

at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)

at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:974)

at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)

at com.huawei.iweb.report.util.DbUtil$PoolMaintainer.getConnection(DbUtil.java:1217)

... 5 more

根因

   数据库的profile有限制,默认是90天,如果90天不修改数据库用户名的密码,则会过期,造成无法正常连接数据库。

解决方案

   此种问题只要重新修改数据库用户名的密码即可。

建议与总结

  这种问题需要在安装数据库的时候就注意,如果客户方不具备定期巡检并且数据库操作的能力,尽量将此种定期修改密码的功能禁用,避免此种问题发生。

禁用方法:

alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;

alter profile default limit PASSWORD_GRACE_TIME unlimited

END