WAS叢集系列(2):資料庫連接低級錯誤——網路連接問題,was叢集
環境
項目點 |
指標 |
WAS版本 |
7.0 |
應用伺服器作業系統 |
Windows 2008 |
應用伺服器系統位元 |
64bit |
資料庫伺服器作業系統 |
CentOS 5.6 |
資料庫版本 |
Oracle 11.0.2.1 |
今天搭建WAS叢集後,發布應用程式套件組合及啟動均成功,但在測試資料庫連接時提示,不成功,建議查看KVM日誌。
於是到日誌路徑下查看相關日誌(此處參考為D:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\SystemOut.log),資訊如下:
[14-9-3 16:34:08:609 CST] 0000001d DataSourceCon E DSRA8040I: 無法串連到 DataSource。遇到 "":java.sql.SQLException: The Network Adapter could not establish the connectionDSRA0010E: SQL 狀態:61000,錯誤碼:20。at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:139)at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:88)at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:70)at com.ibm.ws.rsadapter.DSConfigurationHelper$2.run(DSConfigurationHelper.java:1704)at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5263)at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5441)at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)at com.ibm.ws.rsadapter.DSConfigurationHelper$3.run(DSConfigurationHelper.java:1720)at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)at com.ibm.ws.rsadapter.DSConfigurationHelper.getPooledConnection(DSConfigurationHelper.java:1732)at com.ibm.ws.rsadapter.DSConfigurationHelper.getPooledConnection(DSConfigurationHelper.java:1627)at com.ibm.ws.rsadapter.DSConfigurationHelper.getConnectionFromDSOrPooledDS(DSConfigurationHelper.java:3370)at com.ibm.ws.rsadapter.DSConfigurationHelper.getConnectionFromDSOrPooledDS(DSConfigurationHelper.java:3245)at com.ibm.ws.rsadapter.DSConfigurationHelper.testConnectionForGUI(DSConfigurationHelper.java:4105)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:600)at com.ibm.ws.management.DataSourceConfigHelperMBean.testConnectionToDataSource2(DataSourceConfigHelperMBean.java:556)at com.ibm.ws.management.DataSourceConfigHelperMBean.testConnection(DataSourceConfigHelperMBean.java:484)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:600)at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:37)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:600)at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1074)at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955)at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1331)at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:1224)at com.ibm.ws.management.connector.AdminServiceDelegator.invoke(AdminServiceDelegator.java:181)at com.ibm.ws.management.connector.ipc.CallRouter.route(CallRouter.java:242)at com.ibm.ws.management.connector.ipc.IPCConnectorInboundLink.doWork(IPCConnectorInboundLink.java:353)at com.ibm.ws.management.connector.ipc.IPCConnectorInboundLink$IPCConnectorReadCallback.complete(IPCConnectorInboundLink.java:595)at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connectionat oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:359)at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422)at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672)at oracle.net.ns.NSProtocol.connect(NSProtocol.java:237)at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)... 55 moreCaused by: java.net.ConnectException: Connection refused: connectat java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:370)at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:232)at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:219)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)at java.net.Socket.connect(Socket.java:528)at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:141)at oracle.net.nt.ConnOption.connect(ConnOption.java:123)at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:337)... 60 more。[14-9-2 16:34:27:921 CST] 0000005f NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:35:27:921 CST] 00000060 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:36:27:921 CST] 00000061 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:37:27:937 CST] 00000062 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:38:27:937 CST] 00000063 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:39:27:937 CST] 00000064 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:40:27:921 CST] 00000065 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:41:27:953 CST] 00000066 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:42:27:921 CST] 00000067 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:43:27:937 CST] 00000068 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:44:27:937 CST] 00000069 NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:45:27:921 CST] 0000006a NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:46:27:937 CST] 0000006b NodeSyncTask A ADMS0003I: 配置同步成功完成。[14-9-2 16:47:27:921 CST] 0000006c NodeSyncTask A ADMS0003I: 配置同步成功完成。
雖然這麼冗長的日誌資訊,但問題鎖定到第一行,“The Network Adapter could not establish the connectionDSRA0010E”,這個問題按理說是常規問題,但由於進行了一個下午的各種配置設定,腦袋有些暈了。看到這個問題後,整個思路都跑偏了。現在將其記錄,引以為戒。
錯誤的思考:
1、看到“The Network Adapter”,肯定是網路問題,想到是不是WAS叢集兩台伺服器網卡問題,進行對資料庫伺服器及叢集伺服器互相ping通測試,ping通狀態正常;
2、查看WAS資料來源配置資訊,開始檢查各節點服務,重啟各節點服務及HTTP服務等等,有些碰運氣的胡亂嘗試了,這個結果就是我的思路被自己徹底弄亂了;
3、於是接下來,做了更可笑的事,查看WAS叢集下配置資訊,懷疑資料來源串連問題,對資料來源格式由原來的“jdbc:oracle:thin:@10.53.105.64:1521:hyl”改為“jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.53.105.64)(PORT =1521)))(CONNECT_DATA = (SERVICE_NAME =hyl)))”。這裡想的是因為網路連接問題,懷疑可能是叢集伺服器無法完成串連,可能是解析出問題了,於是修改成完整格式。測試資料庫連接,依舊不成功。這裡問題就出現了,忽略了簡單的問題,把問題越想越複雜化了。
更正後的思考:
其實由上面第一點開始,就有些跑偏了,ping通測試後,應該最先想到的就是去看下資料庫監聽起來沒有。而我完全忽略了這點,原因很簡單,因為這台資料庫伺服器之前串連著單節點的WAS,串連測試沒有問題,也就篤定了監聽沒有問題。就這麼小的地方,自己有沒有親自去驗證,而引發問題的複雜化。當探索資料庫監聽沒有起來時才意識到,問題出在了這裡,原來是當停止單一實例WAS時,資料庫伺服器被重啟過,而且該伺服器上的監聽並沒有設定自動啟動。說來是如此的簡單。於是我啟動監聽,將之前改動過的測試恢複回剛剛配置完成後的常規設定狀態,WAS資料來源測試連接,結果兩節點測試連接通過。
小結:
1、處理問題時,正確的思路比胡亂的嘗試重要,只有方向對了才會“藥到病除”,否則可能會“火上澆油”,把自己思路都弄亂了。
2、在技術上,記住了“The Network Adapter couldnot establish…”出現時,切記ping測試後,檢查監聽狀態,確認後再做進一步分析。
***********************************************聲明************************************************
原創作品,出自 “深藍的blog” 部落格,歡迎轉載,轉載時請務必註明出處(http://blog.csdn.net/huangyanlong)。
表述有錯誤之處,請您留言或郵件(hyldba@163.com)指明,不勝感激。
*****************************************************************************************************
discuz x25 資料庫連接錯誤
一般情況是作業系統有防火牆,並且阻擋了指定的連接埠,聯絡伺服器接入商給你解決。
提示:資料庫連接錯誤
密碼是md5加密的
程式思路不錯,還+了隨機的密碼。提高了安全性
你登陸的提示是密碼錯誤嗎?
如果你正確登陸應該不會有什麼問題。