实战集锦_WebLogic_JDBC_故障处理总结.pdf
《实战集锦_WebLogic_JDBC_故障处理总结.pdf》由会员分享,可在线阅读,更多相关《实战集锦_WebLogic_JDBC_故障处理总结.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实战集锦实战集锦_WebLogic JDBC 故障处理总结故障处理总结 問題描述問題描述 設定 JDBC 連結池或使用不推薦的程式設計技術可引發許多與 JDBC 池連結、相關資料庫或 WebLogic Server 事例有關的各類問題。此外,底層資料庫與網路設定和體系結構也可能導致 JDBC 連結問題。故障排除故障排除 本模式提供了針對其中若干主題的故障排除技巧以及如何進一步探查 JDBC 故障的資訊。請注意,並非下面所有工作都需要完成。有些問題僅通過執行幾項工作就可以解決。快速鏈結(及簡短摘要):快速鏈結(及簡短摘要):JDBC 連結池問題 設定和調整 JDBC 連結池是一項非常重要的管理工
2、作,其目的是確保應用程式伺服器及應用程式本身的效能和 穩定性。連結池設定不當可導致許多不同的故障:執行 JDBCDataSource.getConnection()流程中出現 ResourceException(mon.ResourceException:No resources available)RDBMS 或網路效能不佳,向底層資料庫發出的連結請求導致 WebLogic Server 啟動時間漫長由於JDBC 驅動程式設定故障,在建立 JDBC 池連結流程中出現錯誤或例外 資料庫關閉後出現連結更新/重新連結故障 資料庫問題 JDBC 池連結代表底層資料庫中的資料庫會話。JDBC 池設定可
3、導致資料庫本身出現故障。WebLogic Server 和資料庫系統間的網路連結也可引發故障:Oracle 資料庫中打開的游標過多 防火牆會關閉資料庫與 WebLogic Server 間的空閒連結 如果使用 getVendorConnection()來獲得底層物理連結,則應選上屬性 RemoveInfectedConnectionsEnabled 的設定 WebLogic Server 問題 JDBC 池使用 WebLogic Server 資源來執行它們的工作。需對這種情況加以考慮,因為 JDBC 問題可能導致 WebLogic Server 出現以下故障:WebLogic Server
4、因本機 JDBC 驅動程式庫的原因而崩潰 Webogic Server 或應用程式因 JDBC 驅動程式方法或函數而暫停 JDBC 物件記憶體洩漏導致 OutOfMemoryError 或行程大小不斷增加 一般主題 本小節提供以下一般 JDBC 連結池主題的調整和故障排除資訊:通過除錯或追蹤 JDBC 來排除 JDBC 故障 理解 WebLogic Server MultiPool Failover 或負載平衡 如何針對生產環境調整 JDBC 連結池?WebLogic Server 和 Oracle RAC/TAF Oracle ORA-01591 例外 相關閱讀材料 JDBC 連結池問題連結
5、池問題 執行執行 JDBCDataSource.getConnection()流程中出現流程中出現 ResourceException(mon.ResourceException:No resources available)通過 DataSource 向 JDBC 連結池發出的 getConnection()請求未得到滿足時,系統就會拋出 ResourceException。請求未得到滿足的原因不外乎以下兩種:池中沒有連結或沒有可以使用的執行緒來處理連結請求。缺少資源的原因不外乎以下兩種:應用程式中存在連結洩漏應用程式中存在連結洩漏。如果應用程式碼使用的是 JDBC 池中的連結,需要在其使用
6、完畢後將連結關閉。如果未呼叫 close(),連結就得不到釋放,也就無法重複使用連結。Oracle JDBC 連結池連結洩漏的一個可能故障症狀為:顯示 ORA-00020-maximum number of processes(600)exceeded 錯誤資訊。將會單獨設立一個模式來討論此主題,推出該模式時,即會提供更多、更詳細的資訊。WebLogic Server 提供了一種洩漏偵測功能。如果您懷疑應用程式未正確關閉所有 JDBC 池連結,啟用該功能有助於對實際情況進行分析。可以連結池為單位設定該屬性。可登入以下網址來查閱有關 ConnLeakProfilingEnabled 屬性的文件:
7、http:/e- JDBC 池中的資料庫連結數(MaxCapacity)設定為與執行執行緒數相等。該值會限制可同時處於活動狀態(在交易中登記)的資料庫連結的數量,因此進行容量規劃時需要考慮這一因素。儘管應用程式發生了表明池中沒有可用連結的 ResourceException,但同時仍然出現了連結高峰(建立了大量連結)。如果對應用程式的分析表明,保留的連結數比應用程式碼實際使用的連結數要多,並排除了連結洩漏的可能,則最可能的情況是:代表間隔的屬性 RefreshMinutes 的值設定得過小。關閉更新功能:在 WLS 8.1 及以上版本中,將 TestFrequencySeconds 設定為 0
8、;在 WLS 7.0 中,將 RefreshMinutes 設定為 0;在更早的版本中,將 RefreshMinutes 設定為 99999999(此項的最大值為 35791394)。如果設定為 0,將自動恢復到預設值 5 分鐘。背景資訊背景資訊 更新功能專用於使用測試表來測試池中所有當前未使用的連結,並在需要(測試失敗)時更新連結。如果定義了測試表,並在 JDBCConnectionPool 中定義了屬性 RefreshMinutes,便可啟用該功能。在運行上,更新功能與任何用戶端應用程式碼非同步,並會暫時保留所有當前未使用的池連結供測試之用。在整個測試期間,它會一直保留所有這些連結。如果在
9、此期間有新的應用程式連結請求到來,將出現下列情況:如果 InitialCapacity 小於 MaxCapacity,並小於當前打開的 MaxCapacity 連結數,則到來的每個連結請求將打開 CapacityIncrement 個新連結,直至達到池中最多允許的連結數。(這可能導致連結高峰效應,因為打開的連結數可能比實際同時使用的連結數要多。)如果打開的連結數已達最多允許的連結數,就會拋出 ResourceException。應該仔細考慮您的 JDBC 池是否確實需要更新功能。在 WebLogic Server 和資料庫間設有防火牆這種情況下,由於防火牆在實際運行中會關閉空閒的套接字連結,因
10、此非常適合使用更新功能。測試和更新連結的替代方案(如果需要)有:將屬性 TestConnectionsOnReserve 設定為 true。這樣可確保先對從池請求的每個連結進行測試,然後再將它們轉寄給應用程式碼。如果測試失敗,將自動重新打開連結。如果資料庫暫時不可用或停用,可使用 weblogic.Admin RESET_POOL 對連結池進行完整更新。這樣可確保所有連結都得到更新,而更新功能只會更新未使用的連結。RDBMS 或網路效能不佳,向底層資料庫發出的連結請求導致或網路效能不佳,向底層資料庫發出的連結請求導致 WebLogic Server 啟動時間漫長啟動時間漫長 在 WebLogi
11、c Server 啟動流程中,JDBCConnectionPool 中的屬性 InitialCapacity 用於定義將立即建立的連結的數量。如果建立和初始化與資料庫的底層物理連結很耗時,則啟動 WebLogic Server 事例的時間同樣會很漫長。如果向資料庫發出連結請求通常很耗時,而您又不希望 WebLogic Server 啟動時用去如此長的時間,則可以採用替代方案,即將 InitialCapacity 設定為 0。這樣設定後,所建立的池在啟動時將沒有物理連結。如果要在第一個連結請求流程中建立所有連結,請將 CapacityIncrement 設定為池中可用連結的總數。第一個請求將很耗
12、時,但之後連結池將處於完全可用狀態。某些 JDBC 驅動程式(如 WLS 8.1 SP2 及以上版本附帶的 4 類 Oracle 驅動程式)的一些屬性會限制連結請求的最長等待時間。對於這類驅動程式,請在 config.xml 中 JDBCConnectionPool 的 Properties 屬性部分指定 LoginTimeout 屬性。此值將由 WebLogic Server 傳遞給 JDBC 驅動程式。有關詳細資訊,請參閱 S-06615(English)支援解決辦法。因因 JDBC 驅動程式設定問題而在驅動程式設定問題而在 JDBC 池連結建立流程中出現錯誤或例外池連結建立流程中出現錯誤
13、或例外 如前所述,WebLogic Server 將嘗試在啟動時建立 InitialCapacity 個物理連結。如果未正確設定 JDBC 池或在 WebLogic Server 啟動流程中資料庫不可用,物理連結的初始化將不會成功。在 WLS 8.1 之前的版本中,這會導致JDBC 連結池建立不成功,且之後無法使用連結池。對連結池的更新、刪除或重新建立操作也無法進行。針對這一問題的解決方法是,設定一個在啟動時不打開任何連結的 JDBC 池(InitialCapacity=0)。這樣設定後,所建立的連結池將不會有打開的連結,資料庫再次可用後,每個連結請求到達連結池時都將打開 CapacityIn
14、crement 個連結,而如果資料庫仍然停用,則會拋出錯誤資訊。在 WLS 8.1 中,這一行為已發生了變化。如果在 JDBC 池建立流程中發生故障,將建立一個初始連結數為 0 的 JDBC 池。可以在 WebLogic Server 仍處於運行狀態時更改該設定。對池進行了正確設定或資料庫再次可用後,則可建立池連結,並可在應用程式中使用池。有關如何為不同的驅動程式(包括第三方驅動程式)設定 JDBC 連結池的資訊,請登入以下網址:http:/e- JDBC 池設定不正確而產生的典型錯誤資訊如下:如果顯示類似下列資訊的錯誤資訊,請更正所指定的用戶/密碼:Connection Pool myPoo
15、l deployment failed with the following error:0:Could not connect to oracle.jdbc.driver.OracleDriver.The returned message is:ORA-01017:invalid username/password;logon denied 可能是帳號或密碼無效。也可能是設定中的其他項無效或資料庫不可用。如果顯示類似下列資訊的錯誤資訊,請更正資料庫名稱:如果顯示類似下列資訊的錯誤資訊,請檢查 tns 條目或 PATH、LD_LIBRARY_PATH 等環境設定。在 Windows 系統中,P
16、ATH 需指向用戶端和 OCI 庫,而在 Unix 環境下,LD_LIBRARY_PATH 需指向用戶端安裝複製用戶端和 oci 庫的目錄。#Cannot startup connection pool myPool mon.ResourceException:mon.ResourceException:Could not create pool connection.The DBMS driver exception was:java.sql.SQLException:Io exception:The Network Adapter could not establish the conne
17、ction 如果 tnsnames.ora 檔案或 ORACLE_HOME 設定得不正確,將拋出以下 Oracle 錯誤:ORA-12154:TNS could not resolve service name 請確保 ORACLE_HOME 環境變數所指向的目錄正確,且 tnsnames.ora 檔案儲存在正確的目錄中。請通過 sql-plus 驗證是否可以成功連結到此資料庫。S-08804(English)支援解決辦法中提供了有關 ORA-12154 和相關 Oracle SQL 錯誤的更多資訊。與此相關的錯誤資訊為 ORA-24327-設定故障引發該錯誤資訊的可能性最大:LOGIN ER
18、ROR CODE:24327 Cannot startup connection pool xxxPool mon.ResourceException:Could not create pool connection.The DBMS driver exception was:java.sql.SQLException:ORA-24327:need explicit attach before authenticating a user.S-08804(English)支援解決辦法中提供了有關 ORA-24327 和相關 Oracle SQL 錯誤的更多資訊。語言環境設定不正確可能引發類似下列
19、資訊的錯誤資訊:weblogic.management.DeploymentException:Error creating connection pool myConnectionPool:0:Unable to load locale categories 在啟動 WebLogic Server 前,請確保設定了正確的語言環境。在同一環境中啟動資料庫用戶端來進行復核,並檢查您的語言環境在其中是否有效。資料庫停用後的連結更新資料庫停用後的連結更新/重新連結故障重新連結故障 如果在資料庫處於間歇性停用狀態時將屬性 TestConnectionsOnReserve 設定為 true,且連結測試查
20、詢失敗,就會發生連結重設或更新。您會在 WebLogic Server 日誌檔案中找到類似於下列資訊的相關資訊:ORA-03113 end-of-file on communication channel 和/或 ORA-01012 not logged on:java.sql.SQL Exception:ORA-03113:end-of-file on communication channel at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:240)at weblogic.jdbc.oci.Statement.exec
21、ute(Statement.java:534)at mon.internal.ConnectionEnv.test(ConnectionEnv.java:961)at mon.internal.ResourceAllocator.reserve(ResourceAllocator.java:651)at mon.internal.ResourceAllocator.reserveUnused(ResourceAllocator.java:575)at mon.internal.ResourceAllocator.trigger(ResourceAllocator.java:1296)at mo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实战 集锦 _WebLogic_JDBC_ 故障 处理 总结
限制150内