Your SlideShare is downloading. ×
0
WebLogic Server勉強会@東京LT
Oracle JDBCドライバプロパティの活用
ソフトウェアサービス本部 ミドルウェアサポート部
山田 貴裕
2013/12/19

Copyright (c)2013 ITOCHU Techno...
はじめに

• 発表する内容は個人の見解であり、所属する組織の公式な見解
ではありません。
• 資料の内容は正確を期するよう注意しておりますが、妥当性や
正確性について保証するものではありません。
• 環境
– 基本的にWebLogic Ser...
アジェンダ

• WLSデータソースでのドライバプロパティ設定
• Oracle JDBC Thin Driverで指定したほうがよいプロパティ
• 補足

3

Copyright (c)2013 ITOCHU Techno-Solution...
アジェンダ

• WLSデータソースでのドライバプロパティ設定
• Oracle JDBC Thin Driverで指定したほうがよいプロパティ
• 補足

4

Copyright (c)2013 ITOCHU Techno-Solution...
管理コンソールからのドライバプロパティ設定

[サービス]→[データソース]→<データソース名>→[構成]→[接続プール]

JDBCドライバごとの固有のプロパティを
<キー>=<値> の形式で指定

上記と同様だが、以下の形式で指定
<キー>...
データソース設定ファイルへの反映のされ方

設定ファイル例 – <WLSドメイン>/config/jdbc/<JDBCデータソース名>-jdbc.xml
<?xml version='1.0' encoding='UTF-8'?>
<jdbc-...
内部的に行われる処理イメージ

String url = "設定ファイルのurl";
String password = "設定ファイルのpasswordを復号化した内容";

Properties info = new Properties(...
アジェンダ

• WLSデータソースでのドライバプロパティ設定
• Oracle JDBC Thin Driverで指定したほうがよいプロパティ
• 補足

8

Copyright (c)2013 ITOCHU Techno-Solution...
指定したほうがよいプロパティ(1) - oracle.net.CONNECT_TIMEOUT

• oracle.net.CONNECT_TIMEOUT=<ミリ秒>
– データベース接続時のタイムアウト
例) タイムアウトを10秒に指定
ora...
[参考] JDBCLoginTimeoutSecondsの設定

• WLST (WebLogic Scripting Tool)で変更
– WLST を起動
$ . <WL_HOME>/server/bin/setWLSEnv.sh
$ ja...
指定したほうがよいプロパティ(2) - oracle.jdbc.ReadTimeout

• oracle.jdbc.ReadTimeout=<ミリ秒>
– ソケット読込時のタイムアウト
例) タイムアウトを60秒に指定
oracle.jdbc...
文タイムアウトとoracle.jdbc.ReadTimeoutの関係

• 文タイムアウト
– Oracle JDBC Thin Driverでは、実行中のSQLをキャンセルする
– 前提として、ネットワークとDBが正しく機能していること
[S...
アジェンダ

• WLSデータソースでのドライバプロパティ設定
• Oracle JDBC Thin Driverで指定したほうがよいプロパティ
• 補足

13

Copyright (c)2013 ITOCHU Techno-Solutio...
補足

• oracle.net.CONNECT_TIMEOUTやoracle.jdbc.ReadTimeout
は、WLSのマニュアルにも記載
[Oracle RACでのマルチ・データ・ソースの使用 - 構成の追加考慮]
http://doc...
まとめ

• WLSデータソースでは、ドライバ固有プロパティを設定可能
• Oracle JDBC Thin Driverでは以下のタイムアウトを設定すべし
– oracle.net.CONNECT_TIMEOUT
• データベース接続時のタイ...
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
Upcoming SlideShare
Loading in...5
×

Oracle JDBCドライバプロパティの活用

4,354

Published on

2013年12月19日に開催されたWebLogic Server勉強会@東京のLTセッションでCTC (OracleACE) 山田 貴裕氏が使用した「Oracle JDBCドライバプロパティの活用」資料です。

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,354
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
41
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "Oracle JDBCドライバプロパティの活用"

  1. 1. WebLogic Server勉強会@東京LT Oracle JDBCドライバプロパティの活用 ソフトウェアサービス本部 ミドルウェアサポート部 山田 貴裕 2013/12/19 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  2. 2. はじめに • 発表する内容は個人の見解であり、所属する組織の公式な見解 ではありません。 • 資料の内容は正確を期するよう注意しておりますが、妥当性や 正確性について保証するものではありません。 • 環境 – 基本的にWebLogic Server (WLS) のバージョンには依存しません。 • WLS 9.x ~ WLS 12c – Oracle JDBC Thin Driverのみ • 10g以降のドライバ (11g以降の最新を推奨) • OCI Driverは対象外 2 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  3. 3. アジェンダ • WLSデータソースでのドライバプロパティ設定 • Oracle JDBC Thin Driverで指定したほうがよいプロパティ • 補足 3 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  4. 4. アジェンダ • WLSデータソースでのドライバプロパティ設定 • Oracle JDBC Thin Driverで指定したほうがよいプロパティ • 補足 4 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  5. 5. 管理コンソールからのドライバプロパティ設定 [サービス]→[データソース]→<データソース名>→[構成]→[接続プール] JDBCドライバごとの固有のプロパティを <キー>=<値> の形式で指定 上記と同様だが、以下の形式で指定 <キー>=<システムプロパティ名> ※WLS10.3.4以降で利用可能 例) user=app.db.user ↓ java -Dapp.db.user=user1 ~ weblogic.Server 5 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  6. 6. データソース設定ファイルへの反映のされ方 設定ファイル例 – <WLSドメイン>/config/jdbc/<JDBCデータソース名>-jdbc.xml <?xml version='1.0' encoding='UTF-8'?> <jdbc-data-source xmlns=...> <name>sampleDS</name> <jdbc-driver-params> <url>jdbc:oracle:thin:@localhost:1521:XE</url> <driver-name>oracle.jdbc.OracleDriver</driver-name> <properties> <property> <name>user</name> <value>user1</value> </property> </properties> <password-encrypted>{AES}…</password-encrypted> </jdbc-driver-params> <jdbc-connection-pool-params> <initial-capacity>5</initial-capacity> <max-capacity>5</max-capacity> <test-table-name>SQL SELECT 1 FROM DUAL</test-table-name> </jdbc-connection-pool-params> <jdbc-data-source-params> <jndi-name>jdbc/sampleDS</jndi-name> <global-transactions-protocol>OnePhaseCommit</global-transactions-protocol> </jdbc-data-source-params> </jdbc-data-source> JDBCドライバに渡される情報 JDBC接続URL JDBCドライバ JDBCドライバプロパティ パスワード(WLS内で暗号化) WLSデータソース・接続プールとしての設定情報 6 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  7. 7. 内部的に行われる処理イメージ String url = "設定ファイルのurl"; String password = "設定ファイルのpasswordを復号化した内容"; Properties info = new Properties(); info.setProperty("password", password); for (DriverProperty property : "設定ファイルのproperties") { info.setProperty(property.getName(), property.getValue()); } Connection conn = DriverManager.getConnection(url, info); 作成されたコネクションは接続プールに格納され、 WLSのデータソース経由で利用可能になる 7 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  8. 8. アジェンダ • WLSデータソースでのドライバプロパティ設定 • Oracle JDBC Thin Driverで指定したほうがよいプロパティ • 補足 8 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  9. 9. 指定したほうがよいプロパティ(1) - oracle.net.CONNECT_TIMEOUT • oracle.net.CONNECT_TIMEOUT=<ミリ秒> – データベース接続時のタイムアウト 例) タイムアウトを10秒に指定 oracle.net.CONNECT_TIMEOUT=10000 – 以下のような状況で有効 • DBリスナーに負荷がかかる場合 例) 接続プールの容量確保により、リスナーに大量の接続要求が一度にかかる • ネットワーク的な問題で接続時に時間がかかる場合 例) WLS起動時にDBサーバーに接続できない 例) Oracle RACでのフェイルオーバー • 代替手段 – java.sql.DriverManager.setLoginTimeoutを利用 – WLSではServerMBeanのJDBCLoginTimeoutSecondsにより設定 [応答しないデータベースによって生じるサーバー起動時のハングの最小化] http://docs.oracle.com/cd/E28613_01/web.1211/b65892/ds_deploy.htm#i1203054 9 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  10. 10. [参考] JDBCLoginTimeoutSecondsの設定 • WLST (WebLogic Scripting Tool)で変更 – WLST を起動 $ . <WL_HOME>/server/bin/setWLSEnv.sh $ java weblogic.WLST – WLST での変更 connect('weblogic', 'welcome1', 't3://localhost:7001') edit() startEdit() cd('/Servers/ManagedServer_1') # サーバーごとに指定 cmo.setJDBCLoginTimeoutSeconds(10) # 単位は秒 save() validate() showChanges() activate() exit() – 設定を有効化するには、WLSを再起動 10 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  11. 11. 指定したほうがよいプロパティ(2) - oracle.jdbc.ReadTimeout • oracle.jdbc.ReadTimeout=<ミリ秒> – ソケット読込時のタイムアウト 例) タイムアウトを60秒に指定 oracle.jdbc.ReadTimeout=60000 – 以下のような状況で有効 • DBからの応答が極端に遅延する場合 例) DBがハングアップ 例) SQL実行が遅すぎたり、ロック待ちになってしまう (注意点あり) • 代替手段? – [接続プール]→[詳細]→[文タイムアウト] – java.sql.Statement#setQueryTimeoutを呼び出し • 単位は秒 11 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  12. 12. 文タイムアウトとoracle.jdbc.ReadTimeoutの関係 • 文タイムアウト – Oracle JDBC Thin Driverでは、実行中のSQLをキャンセルする – 前提として、ネットワークとDBが正しく機能していること [Statement.cancelの使用] http://docs.oracle.com/cd/E16338_01/java.112/b56281/apxtblsh.htm#BACDAICJ • oracle.jdbc.ReadTimeout – 読込待ちのソケットを切断するだけなので、SQLはキャンセルされない – Oracle DB側でEXPIRE_TIMEも指定するとよい • 文タイムアウトを基本的には利用し、oracle.jdbc.ReadTimeoutを 保険として併用するとベター – 文タイムアウト(単位:秒) < oracle.jdbc.ReadTimeout(単位:ミリ秒) 12 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  13. 13. アジェンダ • WLSデータソースでのドライバプロパティ設定 • Oracle JDBC Thin Driverで指定したほうがよいプロパティ • 補足 13 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  14. 14. 補足 • oracle.net.CONNECT_TIMEOUTやoracle.jdbc.ReadTimeout は、WLSのマニュアルにも記載 [Oracle RACでのマルチ・データ・ソースの使用 - 構成の追加考慮] http://docs.oracle.com/cd/E28613_01/web.1211/b65892/generic_oracle _rac.htm#BHCFCEAC – RAC環境以外でも有用 • 11g以降のドライバではシステムプロパティでも指定可能 例) -Doracle.net.CONNECT_TIMEOUT=10000 -Doracle.jdbc.ReadTimeout=60000 • 他に指定できそうなプロパティ – JDBCドライバのJavadocを参照 OracleConnectionのField Summary「CONNECTION_PROPERTY_THIN_*」 http://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleCon nection.html#field_summary 14 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  15. 15. まとめ • WLSデータソースでは、ドライバ固有プロパティを設定可能 • Oracle JDBC Thin Driverでは以下のタイムアウトを設定すべし – oracle.net.CONNECT_TIMEOUT • データベース接続時のタイムアウト – oracle.jdbc.ReadTimeout • ソケット読込時のタイムアウト 設定例 15 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  16. 16. Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×