Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理の構成と管理 11gリリース1 (10.3.6) B60997-10 |
|
前 |
次 |
この章では、WebLogic Serverリリース10.3.6を構成してOracle 12cデータベースで実行する方法について説明します。
次の各項では、WebLogic Server 10.3.6でOracle 12cデータベースを準備および使用する方法について説明します。
12cデータベースでのWebLogic Server 10.3.6の最も簡単な統合は、WebLogic Server10.3.6配布キットに含まれている11g (特に11.2.0.3)ドライバjarファイルを使用することです。12cデータベースで11gドライバを使用する場合、既知の問題またはアップグレードの問題はありません。以下の点に注意する必要があります。
新しいクライアントjarファイルまたはWebLogic Serverの変更なしでプラガブル・データベース(PDB)機能を使用できます。ただし、クライアントからコンテナを動的に変更するALTER SESSION SET CONTAINER
機能は使用できません。
アプリケーション・コンティニュイティはサポートされません。
データベース常駐接続プール(DRCP)およびONS自動構成はサポートされていません。
Active GridLinkデータ・ソースを使用して、グローバル・データベース・サービス(GDS)を使用できます。
JDBC 4.1メソッドはサポートされていません。
次の各項では、WebLogic Server 10.3.6およびOracle 12cデータベースで実行するために12cドライバを準備および使用する方法について説明します。
この項では、WebLogic Server 10.3.6でOracle 12cドライバを使用するのに必要なファイルをリストします。これらのファイルは、12cデータベース$ORACLE_HOME
ディレクトリの下にインストールされます。クライアント・パッケージまたはデータベース・パッケージをインストールする必要があります。
注意:
|
次のojdbcファイルの1つを選択します。
jdbc/lib/ojdbc7.jar
jdbc/lib/ojdbc7_g.jar
jdbc/lib/ojdbc7dms.jar
jdbc/lib/ojdbc6.jar
jdbc/lib/ojdbc6_g.jar
jdbc/lib/ojdbc6dms.jar
次の表に、追加の必須ドライバ・ファイルをリストします。
表B-1 追加の12cドライバ・ファイル
ファイル | 説明 |
---|---|
|
ユニバーサル接続プール |
|
Oracle Network Serverクライアント |
|
I18Nサポート |
|
I18Nサポート |
|
Oracleウォレット・サポート |
|
Oracleウォレット・サポート |
|
Oracleウォレット・サポート |
次の表に、SQL XMLサポートの追加ファイルをリストします。
12c Oracleデータベースのjarファイルは、本バージョンのWebLogic Serverには同梱されていません。最小インストール用のクライアント・キットのカスタム・インストールを実行することをお薦めします。http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
を参照してください。
Oracle Database 12cリリース1で、使用しているOSプラットフォームのすべて表示リンクを選択します。最小インストールの場合、Oracle Database 12cリリース1クライアントの見出しで、適切なzipファイルを選択してダウンロードします。ファイルを解凍し、インストーラを実行します。「カスタム」を選択し、Oracle JDBC/Thinインタフェース、Oracle Netリスナー、Oracle Advancedセキュリティ・チェック・ボックスの順に選択します。
Oracle 12cデータベースとOracle 12c JDBCドライバを使用するには、WebLogic Server環境のCLASSPATH
を更新する必要があります。「必要なOracle 12cドライバ・ファイル」で指定した必須ファイルをCLASSPATH
(11.2.0.3ドライバのjarファイルの前)に追加します。
次のコード・サンプルに、WebLogic環境のCLASSPATH
を更新する単純なシェル・スクリプトの概要を示します。ORACLE_HOME
が適切に設定されていることを確認します。この例では、SEP
変数がプラットフォームに適切なCLASSPATH
セパレータ(";"または":")に設定されていることを前提としています。
#!/bin/sh # source this file in to add the new 12c jar files at the beginning of the # CLASSPATH case "`uname`" in *CYGWIN*) SEP=";" ;; Windows_NT) SEP=";" ;; *) SEP=":" ;; esac # For external, just use ORACLE_HOME; dir=${ORACLE_HOME:?} # We need one of the following #jdbc/lib/ojdbc7.jar #jdbc/lib/ojdbc7_g.jar #jdbc/lib/ojdbc7dms.jar #jdbc/lib/ojdbc6.jar #jdbc/lib/ojdbc6_g.jar #jdbc/lib/ojdbc6dms.jar if [ "$1" = "" ] then ojdbc=ojdbc7.jar else ojdbc="$1" fi case "$ojdbc" in ojdbc7.jar|ojdbc7_g.jar|ojdbc7dms.jar|ojdbc6.jar|ojdbc6_g.jar|ojdbc6dms.jar) ojdbc=jdbc/lib/$ojdbc ;; *) echo "Invalid argument - must be ojdbc7.jar|ojdbc7_g.jar|ojdbc7dms.jar|ojdbc6.jar|ojdbc6_g.jar|ojdbc6dms.jar" exit 1 ;; esac CLASSPATH="${dir}/${ojdbc}${SEP}$CLASSPATH" CLASSPATH="${dir}/ucp/lib/ucp.jar${SEP}$CLASSPATH" CLASSPATH="${dir}/opmn/lib/ons.jar${SEP}$CLASSPATH" CLASSPATH="${dir}/jlib/orai18n.jar${SEP}$CLASSPATH" CLASSPATH="${dir}/jlib/orai18n-mapping.jar${SEP}$CLASSPATH" CLASSPATH="${dir}/jlib/oraclepki.jar ${SEP}$CLASSPATH" CLASSPATH="${dir}/jlib/osdt_cert.jar ${SEP}$CLASSPATH" CLASSPATH="${dir}/jlib/osdt_core.jar${SEP}$CLASSPATH" # SQL XML support CLASSPATH="${dir}/lib/xmlparserv2_sans_jaxp_services.jar${SEP}$CLASSPATH" CLASSPATH="${dir}/jlib/orai18n-collation.jar${SEP}$CLASSPATH" CLASSPATH="${dir}/rdbms/jlib/xdb.jar${SEP}$CLASSPATH"
たとえば、setdb12c_jars.sh
という名前を使用して環境内でこのスクリプトを保存します。次に、ojdbc6dms.jar
を使用してスクリプトを実行します。
. ./setdb12c_jars.sh ojdbc6dms.jar
この項では、Oracle 12cデータベースでWebLogic Server 10.3.6を使用する方法の追加情報について説明します。
WebLogic Server 10.3.6は、12cデータベース配布キットのaqapi.jar
ファイルの使用をサポートしておらず、12cデータベースでのAQ JMSの使用をサポートしていません。
Active GridLinkデータ・ソースによる12cクライアントjarファイルおよび12cデータベースの両方を使用する場合、WebLogic Server 10.3.6はアプリケーション・コンティニュイティをサポートします。「アプリケーション・コンティニュイティの使用」を参照してください。
11gデータベースでの12cクライアントjarファイルの実行がサポートされています。
Active GridLinkで実行している場合、12cクライアントjarファイルで実行するときに-Doracle.ucp.PreWLS1212Compatible=true
システム・プロパティをサーバー・コマンドラインに追加する必要があります。
12cクライアントjarには、JDBC仕様に準拠するためのローカル・トランザクション処理のいくつかの変更が含まれています。setAutoCommit(true)
がコールされ、ローカル・トランザクションが存在する場合、トランザクションが自動的にコミットされます(以前のリリースでは、アクションが実行されません)。setAutoCommit(true)
が設定され、コミットがコールされる場合、例外がスローされます(以前のリリースでは、アクションが実行されません)。既存のアプリケーションでこれらの状況が発生し、ソフトウェアをすぐに変更できない可能性があります。レガシー動作の既存のアプリケーションを保持するため、-Doracle.jdbc.autoCommitSpecCompliant=false
システム・プロパティをサーバー・コマンドラインに追加します。
ojdbc7*.jar
ファイルで実行する場合、JDBC 4.1メソッドがサポートされます
このリリースのWebLogic Serverでは、環境でJDK 7が使用されており、JDBCドライバがJDBC 4.1準拠である場合に、JDBC 4.1仕様がサポートされます。新しいJDBC 4.1のメソッドをOracleシン・クライアントで使用する場合は、ojdbc7.jar
を使用する必要があります。JDBC 4.1をサポートしていないドライバの場合は、このメソッドが呼び出されると、java.lang.AbstractMethodError
がスローされます。http://download.oracle.com/otndocs/jcp/jdbc-4_1-mrel-spec/index.html
で「JDBC(tm) 4.1仕様」を参照してください。
注意: Java SE 7の |
JDK 7では、http://jcp.org/aboutJava/communityprocess/maintenance/jsr114/114MR2approved.pdf
で定義されたRowset 1.1の軽度の変更もサポートしています。新規RowSetFactory
のWebLogic Serverへの実装をweblogic.jdbc.rowset.JdbcRowSetFactory
といいます。
現在の環境では、基盤になるソフトウェア・レイヤー、ハードウェア・レイヤー、通信レイヤーおよび記憶域レイヤーの停止について、アプリケーション開発者が明確に対処する必要があります。そのため、アプリケーション開発は複雑化し、機能停止はユーザーに対して表面化します。たとえば、ユーザーに対して送信ボタンを2回クリックしないように警告するアプリケーションがあります。その警告を無視したユーザーは、意図しないうちに商品を2回購入したり、同じ請求書に対して複数回の支払を実行してしまうことがあります。
アプリケーション・コンティニュイティ(リプレイとも呼ばれる)は、Active GridLinkデータ・ソースに対応するアプリケーションに依存しない汎用のインフラストラクチャであり、アプリケーション側からの作業の回復を可能にし、多くのシステム障害、通信障害およびハードウェア障害をマスクします。つまり、エンド・ユーザーのトランザクションは、時差なしに1回で実行されるようになります。エンド・ユーザーがサービスの中断を認識するとしても、継続しても意味のない機能停止の場合に限られます。
次に示す各項では、アプリケーション・コンティニュイティの構成方法と使用方法について説明します。
計画済停止か計画外停止かにかかわらず、次に示すデータベース・サービスの損失による停止については、アプリケーション・コンティニュイティによりデータベース・セッションが再構築されます。高速アプリケーション通知またはリカバリ可能なORACLE
エラーで停止が識別されると、Oracleドライバは次のように動作します。
新しいデータベース・セッションを確立して、未処理の状態を解消します。
コールバックが登録されている場合は、コールバックを発行して、そのセッションの初期状態をアプリケーションが再確立できるようにします。
リクエスト中に累積した保存済の履歴を実行します。
Oracleドライバは、リプレイ・コールのタイミングを判断します。コールは、アプリケーションがデータベースの状態を変更する方法に応じて経時的に処理されるか、遅延処理の実装を使用して処理されます。リプレイは、Oracle 12c Database Serverで制御されます。リプレイが承認されるようにするには、リプレイされるコールごとに、元のコールの実行中にアプリケーションで表示されていて潜在的に使用されていたクライアントの表示状態とまったく同じ状態を返す必要があります。
次の項では、WebLogicアプリケーションでアプリケーション・コンティニュイティを使用する際の要件と考慮事項について説明します。
Oracle 12c JDBCドライバとデータベースは必須です。「Oracle 12cデータベースでの12cドライバの使用」を参照してください。
このリリースのアプリケーション・コンティニュイティは、読取りおよび書込みトランザクションのみサポートします。XAトランザクションは、サポートされていません。「アプリケーション・コンティニュイティ対応ドライバの選択」を参照してください。
注意:
|
非推奨のoracle.sql.*
具体クラスはサポートされていません。該当部分は、それに対応するoracle.jdbc.*
インタフェースまたはjava.sql.*
インタフェースのどちらかを使用するように変更する必要があります。標準のjava.sql.*
インタフェースの使用をお薦めします。
アプリケーション・コンティニュイティは、中間結果をメモリーに格納することで動作します。アプリケーションは、この機能なしで実行するよりも実行速度が遅くなり、より大量のメモリーが必要になります。
WebLogicの文キャッシュの使用はサポートされていません。WebLogicの文キャッシュが構成されている場合は、そのキャッシュは接続がクローズされるたびにクリアされます。
アプリケーション・コンティニュイティ機能には、追加の制限事項と例外事項があります。これらは、アプリケーションがリプレイを使用できるかどうかに影響することがあります。詳細は、Oracle® Database JDBC開発者ガイドのJavaのアプリケーション・コンティニュイティに関する項を参照してください。
データソースのURLで指定されるデータベース・サービスは、フェイルオーバー・タイプにTRANSACTION
を設定し、-commit_outcome
パラメータにTRUE
を設定して構成する必要があります。次に例を示します。
srvctl modify service -d mydb -s myservice -e TRANSACTION -commit_outcome TRUE -rlbgoal SERVICE_TIME -clbgoal SHORT
次の各項では、環境内にアプリケーション・コンティニュイティを実装する方法について説明します。
管理コンソールは、リプレイ・ドライバのエントリがありません。JDBCリプレイ・データ・ソースを構成するには、既存のOracleデータ・ソース・クラスをリプレイ・データ・ソース・クラスoracle.jdbc.replay.OracleDataSourceImpl
に手動で置き換える必要があります。
WebLogic Server管理コンソールから、次の手順を実行します:
WebLogic Server管理ホーム・ページから、「GridLink for RACデータ・ソースの構成」を選択します。
「新規」をクリックして、「GridLinkデータ・ソース」を選択します。
「データベース・ドライバ」で、OracleのGridLink Connections用ドライバ(Thin)バージョン: 11以上を選択します。
サーバーをターゲット指定せずにデータ・ソースの作成を終了します。
新しいデータ・ソースを選択および編集します。
「構成」→「接続プール」タブから、「ドライバ・クラス名」属性の値をoracle.jdbc.replay.OracleDataSourceImplに置き換えます。
「保存」をクリックします。
「ターゲット」タブを選択します。
ターゲット・サーバーを選択します。
「保存」をクリックします。
「データベースのタイプ」が「Oracle」であることを確認します。「要件および考慮事項」を参照してください。
次の各項では、接続コールバックの使用方法について説明します。
接続初期化コールバックを作成する場合は、アプリケーションにoracle.ucp.jdbc.ConnectionInitializationCallback
インタフェースのinitialize(java.sql.Connection connection)
メソッドを実装する必要があります。コールバックは、接続プールごとに1つのみ作成できます。
ラベリング・コールバックが接続プールに登録されていると、コールバックは無視されます。それ以外の場合、コールバックはプールから接続がチェックアウトされるたびに実行されます。また、リカバリ可能なエラーに続くリプレイ時に再接続が成功するたびに実行されます。実行時とリプレイ時に同じコールバックを使用することで、リプレイ時には、元のセッションが確立されたときに使用されたものと完全に同じ初期化が使用されるようになります。コールバックの呼出しが失敗すると、その接続についてのリプレイは無効になります。
注意: 接続初期化コールバックは、クライアント(JDBC over RMI)ではサポートされません。 |
次の例では、単純な初期化コールバックの実装を示します。
. . . import oracle.ucp.jdbc.ConnectionInitializationCallback ; . . . class MyConnectionInitializationCallback implements ConnectionInitializationCallback { public MyConnectionInitializationCallback() { } public void initialize(java.sql.Connection connection) throws SQLException { // Re-set the state for the connection, if necessary } }
WLDataSource
インタフェースには、初期化コールバックを登録するためのregisterConnectionInitializationCallback(ConnectionInitializationCallback callback)
メソッドが用意されています。1つの接続プールに登録できるコールバックは1つのみです。次の例は、MyConnectionInitializationCallback
クラスに実装されている初期化コールバックの登録方法を示しています。
. . . import weblogic.jdbc.extensions.WLDataSource; . . . MyConnectionInitializationCallback callback = new MyConnectionInitializationCallback(); ((WLDataSource)ds).registerConnectionInitializationCallback(callback); . . .
また、コールバックは、管理コンソールからデータ・ソースの「Oracle」タブで、「接続初期化コールバック」属性にコールバック・クラスを入力することでも登録できます。
WLDataSource
インタフェースには、ConnectionInitializationCallback
の登録を解除するためのunregisterConnectionInitializationCallback()
メソッドが用意されています。次の例は、初期化コールバックの削除方法を示しています。
. . . import weblogic.jdbc.extensions.WLDataSource; ((WLDataSource)ds).unregisterConnectionInitializationCallback(); . . .
アプリケーション・コンティニュイティは、次のコードを使用することで、接続単位で無効化できます。
. . . if (connection instanceof oracle.jdbc.replay.ReplayableConnection) { ((oracle.jdbc.replay.ReplayableConnection)connection).disableReplay(); } . . .
アプリケーション・コンティニュイティ処理のロギングを有効化するには、次のWebLogicプロパティを使用します。
-Dweblogic.debug.DebugJDBCReplay=true
-Djava.util.logging.config.file=
configfile
を使用して、ログ出力のフォーマットとロギング・レベルを制御します(configfile
は、標準JDKのロギングで使用される構成ファイル・プロパティのパスとファイル名です)。次に、SimplFormatterを使用する構成ファイルの例を示します。この例では、ロギング・レベルをFINEST
に設定しています。
handlers = java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level = ALL java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter #OR - use other formatters like the ones below #java.util.logging.ConsoleHandler.formatter = java.util.logging.XMLFormatter #java.util.logging.ConsoleHandler.formatter = oracle.ucp.util.logging.UCPFormatter #OR - use FileHandler instead of ConsoleHandler #handlers = java.util.logging.FileHandler #java.util.logging.FileHandler.pattern = replay.log #java.util.logging.FileHandler.limit = 3000000000 #java.util.logging.FileHandler.count = 1 #java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter oracle.jdbc.internal.replay.level attribute=FINEST
「Oracle WebLogic Serverアプリケーション・ロギングのためのロギング・サービスの使用」を参照してください。
Global Data Services (GDS)により、分散データベース環境でシームレスな集中管理を提供するグローバル・サービスが使用できるようになります。グローバル・サーバーは、複数のRACおよび単一インスタンスのOracleデータベースをData GuardやGoldenGateなどのレプリケーション技術で相互接続して、それら全体でのロード・バランシング、フォルト・トレランスおよびリソース使用率を自動化します。
次の各項では、WebLogic ServerのGDSに対する要件と構成について説明します。
次の項では、WebLogic ServerでGlobal Database Servicesを使用する際の要件と考慮事項について説明します。
Oracle 12c JDBCドライバとデータベースは必須です。「WebLogic Server 10.3.6でのOracle 12cデータベースの使用」を参照してください。
単一のSCANアドレスを使用して、複数のGlobal Service Manger (GSM)アドレスを置換することはできません。
更新操作が適切に処理されるようにするには、プライマリ・データベースでのみ有効になる更新用のサービスを定義する必要があります。
プライマリ・データベースとセカンダリ・データベースに配置される読取り専用操作のサービスは個別に定義してください。
1つのURLに定義できるサービスは1つに限られ、1つのデータソース構成に定義できるURLは1つになるため、一方のデータソースを更新サービス用に定義し、もう一方のデータソースを読取り専用サービス用に定義する必要があります。
更新操作が更新データソースで処理され、読取り専用操作が読取り専用データソースで処理されるように、アプリケーションを作成する必要があります。
管理コンソールを使用して、GridLinkデータソースを作成します。このデータソースでは、GDS接続を提供するように変更したURLを使用します。Oracle WebLogic Server管理コンソール・ヘルプのJDBC GridLinkデータ・ソースの作成に関する項を参照してください。
GDS URLの接続情報は、RACクラスタの接続情報と類似しています。これには、次の基本情報が含まれています。
サービス名(グローバル・サービス名)
Global Service Managerのアドレス/ポートのペア
CONNECT_DATA
パラメータのGDSリージョン
次に、サンプルURLを示します。
jdbc:oracle:thin:@(DESCRIPTION= (ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON) (ADDRESS=(HOST=myHost1.com)(PORT=1111)(PROTOCOL=tcp)) (ADDRESS=(HOST=myHost2.com)(PORT=2222)(PROTOCOL=tcp))) (CONNECT_DATA=(SERVICE_NAME=my.gds.cloud)(REGION=west)))
コンテナ・データベース(CDB)はOracleデータベース機能の1つであり、多数のデータベースを、単一CDBに含まれる複数のプラガブル・データベース(PDB)を使用して単一データベースに統合することにより、多数のデータベースを持つ場合のオーバーヘッドを最小限に抑えます。『Oracle Database管理者ガイド』のOracleプラガブル・データベースの管理に関する項を参照してください。
PDBへのアクセスは、WebLogic Serverデータ・ソースに対して完全に透過的になります。その他のデータベースと同様に、サービスを含むURLを使用してアクセスします。サービスは、PDBに関連付けられている必要があります。これは、SQLPlusで、セッションをPDBに関連付けて、サービスを作成し、そのサービスを開始することで作成できます。
alter session set container = cdb1_pdb1; -- configure service for each PDB execute dbms_service.create_service('replaytest_cdb1_pdb1.regress.rdbms.dev.us.myCompany.com','replaytest_cdb1_pdb1.regress.rdbms.dev.us.myCompany.com'); execute DBMS_SERVICE.START_SERVICE('replaytest_cdb1_pdb1.regress.rdbms.dev.us.myCompany.com');
アプリケーション・コンティニュイティと併用するようにサービスを設定するには、サービスを適切に構成する必要があります。次に、SQLPlusの例を示します。
declare params dbms_service.svc_parameter_array ; begin params('goal') := 'service_time' ; params('commit_outcome') := 'true' ; params('aq_ha_notifications') := 'true' ; params('failover_method') := 'BASIC' ; params('failover_type') := 'TRANSACTION' ; params('failover_retries') := 60 ; params('failover_delay') := 2 ; dbms_service.modify_service('replaytest_cdb1_pdb1.regress.rdbms.dev.us.myCompany.com', params); end; /
初めてプールの接続を作成するときには、CDB内の特定のPDBに関連付けられたサービスを含むURLを使用して接続を作成します。
ALTER SESSION SET CONTAINER
の実行は、WebLogic Server 10.3.6のJDBCからサポートされていません。
WebLogic Server 10.3.6では、自動ONSリスナーがサポートされていません。ONS構成情報をデータソース用にOracleパラメータで指定する必要があります。
WebLogic Server 10.3.6では、データベース常駐接続プーリング(DRCP)はサポートされていません。