[WLS] Configuring Datasource Fatal Error Codes

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/cofiguring_datasource_fatal_error_codes

JDBCの操作に関するよく知られたエラーコードは、データベースがシャットダウン中もしくはすでに停止しているとか、構成の問題であると解釈されます。このエラーが発生した場合、後続の操作が失敗し、ハングアップするか、完了までに時間がかかるため接続を維持したくありません。こうしたエラーコードは、"fatal-error-codes"という値を接続プールのパラメータで利用しデータソース構成で構成することができます。この値はエラーコードをカンマで区切ったリストです。SQLExceptonがJDBCの操作で見られたり、sqlException.getErrorCode()が構成済みのコードのいずれかに一致したりする場合、接続を接続プールに返さずに接続を閉じます。
以前のOC4Jアプリケーション・サーバー(Oracle Internet Application Server)の場合、任意の接続でこれらのエラーのいずれかが発生した場合には、接続プール中の全ての接続を閉じましていましたが、WebLogic Serverでは、致命的なエラーが発生した接続を閉じるだけにしました。これにより、使用できないデータベースの場合に加え、問題のある接続に固有のエラーコードを追加することができます。
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理 12c (12.2.1.1)
致命的エラー・コードの定義
http://docs.oracle.com/cd/E80149_01/wls/JDBCA/jdbc_datasources.htm#CJAIGEAAOracle® Fusion Middleware Administering JDBC Data Sources for Oracle WebLogic Server 12c (12.2.1.2.0)
Define Fatal Error Codes
http://docs.oracle.com/middleware/12212/wls/JDBCA/jdbc_datasources.htm#JDBCA520
以下のエラーコードは事前構成済みで、無効化することはできません。個々のデータソースについて、これらのドライバや別のドライバに対応したエラーコードを追加することができます。
ドライバの種類デフォルトの致命的エラーコード
Oracle Thin Driver3113, 3114, 1033, 1034, 1089, 1090, 17002
WebLogic or IBM DB2 driver-4498, -4499, -1776, -30108, -30081, -30080, -6036, -1229, -1224, -1035, -1034, -1015, -924, -923, -906, -518, -514, 58004
WebLogic or IBM Informix driver-79735, -79716, -43207, -27002, -25580, -4499, -908, -710, 43012
以下は致命的なエラーコード文字列を既存のデータソースに追加するためのWLSTスクリプトです。
# java weblogic.WLST fatalerrorcodes.py import sys, socket, os hostname = socket.gethostname() datasource="JDBC GridLink Data Source-0" connect("weblogic","welcome1","t3://"+hostname+":7001") edit() startEdit() cd("/JDBCSystemResources/" + datasource ) targets=get("Targets") set("Targets",jarray.array([], ObjectName)) save() activate() startEdit() cd("/JDBCSystemResources/" + datasource + "/JDBCResource/" +  datasource + "/JDBCConnectionPoolParams/" + datasource ) set("FatalErrorCodes","1111,2222") save() activate() startEdit() cd("/JDBCSystemResources/" + datasource ) set("Targets", targets) save() activate()
実験的に、RESTで試してみました。
localhost=localhost
editurl=http://${localhost}:7001/management/weblogic/latest/edit
name="JDBC GridLink Data Source-0"

curl -v --user weblogic:welcome1 -H X-Requested-By:MyClient -H Accept:application/json -X GET ${editurl}/JDBCSystemResources/${name}/JDBCResource/JDBCConnectionPoolParams?links=none"

curl -v --user weblogic:welcome1 -H X-Requested-By:MyClient -H Accept:application/json -H Content-Type:application/json -d "{}" -X POST "${editurl}/changeManager/startEdit"

curl -v --user weblogic:welcome1 -H X-Requested-By:MyClient -H Accept:application/json -H Content-Type:application/json -d "{ targets: [] }" -X POST "${editurl}/JDBCSystemResources/${name}"

curl -v --user weblogic:welcome1 -H X-Requested-By:MyClient -H Accept:application/json -H Content-Type:application/json -d "{ fatalErrorCodes: '1111,2222' }" -X POST "${editurl}/JDBCSystemResources/${name}/JDBCResource/JDBCConnectionPoolParams"

curl -v --user weblogic:welcome1 -H X-Requested-By:MyClient -H Accept:application/json -H Content-Type:application/json -d "{ targets: [ { identity: [ servers, 'myserver' ] } ] }" -X POST "${editurl}/JDBCSystemResources/${name}"

curl -v --user weblogic:welcome1 -H X-Requested-By:MyClient -H Accept:application/json -H Content-Type:application/json -d "{}" -X POST "${editurl}/changeManager/activate"

curl -v --user weblogic:welcome1 -H X-Requested-By:MyClient -H Accept:application/json -X GET "${editurl}/JDBCSystemResources/${name}?links=none"

1 件のコメント: