[WLS] Migrating from Multi Data Source to Active GridLink - Take 2

原文はこちら。
https://blogs.oracle.com/weblogicserver/migrating-from-multi-data-source-to-active-gridlink-take-2

このトピックに関するオリジナルのブログエントリで、マルチデータソース(MDS)を削除し、Active GridLinkデータソース(AGL)に置き換えることを提案しました。
Migrating from Multi Data Source to Active GridLink
https://blogs.oracle.com/weblogicserver/migrating-from-multi-data-source-to-active-gridlink
https://orablogs-jp.blogspot.jp/2013/04/migrating-from-multi-data-source-to.html
実際には、マルチデータソースはJDCストアのように別のオブジェクトから参照される可能性が高く、マルチデータソースを削除すると無効な構成が作成されてしまいます。さらに、マルチデータソースからの接続を使うオブジェクトが再構成中、ならびに再構成後に失敗するでしょう。これはつまり、こうした類の操作では、関連するサーバーをシャットダウンし、構成をオフラインWLSTで更新し、サーバーを再起動する必要があり、管理コンソールを使うことはできません。ただし、コンソールを利用する説明をしている部分を除いては、以前のエントリの別の情報はこのプロセスでも対応しています。JNDI名は変更していないので、構成だけを変更します。アプリケーションに対して変更する必要はありません。
以下は、オフラインWLSTスクリプトのサンプルで、これをパラメータ化し、複数のデータソースを扱えるように柔軟性をあげることもできるでしょう。
# java weblogic.WLST file.py
import sys, socket, os
# Application values
dsName='myds'
memberds1='ds1'
memberds2='ds2'
domain='/domaindir
onsNodeList=host1:6200,host2:6200'
url='jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=' \
 + '(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1521))' \
 + '(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)))' \
 + '(CONNECT_DATA=(SERVICE_NAME=servicename)))'
user='user1'
password='password1'
readDomain(domain)
# change type from MDS to AGL
# The following is for WLS 12.1.2 and 12.1.3 if not setting
# FanEnabled true, which is not recommended
# set('ActiveGridlink','true')
# The following is for WLS 12.2.1 and later
# cd('/JDBCSystemResources/' + dsName + '/JdbcResource/' + dsName )
# set('DatasourceType', 'AGL')
# set the AGL parameters
cd('/JDBCSystemResources/' + dsName + '/JdbcResource/' + dsName)
create('myJdbcOracleParams','JDBCOracleParams')
cd('JDBCOracleParams/NO_NAME_0')
set('FanEnabled','true')
set('OnsNodeList',onsNodeList)
# Set the data source parameters
cd('/JDBCSystemResources/' + dsName + '/JdbcResource/' + dsName + '/JDBCDataSourceParams/NO_NAME_0')
set('GlobalTransactionsProtocol','None')
unSet('DataSourceList')
unSet('AlgorithmType')
# Set the driver parameters
cd('/JDBCSystemResources/' + dsName + '/JdbcResource/' + dsName)
create('myJdbcDriverParams','JDBCDriverParams')
cd('JDBCDriverParams/NO_NAME_0')
set('Url',url)
set('DriverName','oracle.jdbc.OracleDriver')
set('PasswordEncrypted',password)
create('myProps','Properties')
cd('Properties/NO_NAME_0')
create('user', 'Property')
cd('Property')
cd('user')
set('Value', user)
# Set the connection pool parameters
cd('/JDBCSystemResources/' + dsName + '/JdbcResource/' + dsName)
create('myJdbcConnectionPoolParams','JDBCConnectionPoolParams')
cd('/JDBCSystemResources/' + dsName + '/JdbcResource/' + dsName + '/JDBCConnectionPoolParams/NO_NAME_0')
set('TestTableName','SQL ISVALID')
# remove member data sources if they are not needed
cd('/')
delete(memberds1, 'JDBCSystemResource')
delete(memberds2, 'JDBCSystemResource')
updateDomain()
closeDomain()
exit()
WLS 12.1.2および12.1.3では、FanEnabledがtrue(推奨されていません)に設定されておらず、auto-ONS(12.1.2 がauto-ONSをサポートする最初のリリースです)が使用されている場合でも、Active GridLinkデータソースを識別するために使用可能な明示的なActiveGridlinkフラグがあります上記のスクリプトで、FanEnabledとOnsNodeListが設定されていない場合にのみ、コメントを解除して設定してください。
WLS 12.2.1以降、JDBCResourceレベルで明示的なデータソースタイプがあります。 これがGENERICに設定されている場合は、set("DatasourceType", "AGL") を使って再設定する必要があります。上記のスクリプトでは、行のコメントを解除して設定します。この場合、ActiveGridlinkフラグは必要ありません。
ONSでOracle walletを使っている場合、JDBCOracleParamsオブジェクトにも追加する必要があります。WLS 12.2.1より前のリリースでは、ONSの情報は明示的に指定する必要がありますが、WLS 12.2.1以後ではONSの情報を指定する必要はなく、データベースが正しい情報を判断しようとします。より複雑なONSトポロジーについては、以下のドキュメントで説明しているフォーマットを使って構成を指定することができます。
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理 12c (12.2.1.2.0)
ONSホストおよびポートの構成
https://docs.oracle.com/cd/E84527_01/wls/JDBCA/gridlink_datasources.htm#GUID-A4965575-6753-4443-A2D5-58EFC7812B1C
Oracle® Fusion Middleware Administering JDBC Data Sources for Oracle WebLogic Server 12c (12.2.1)
Configure ONS Host and Port
http://docs.oracle.com/middleware/1221/wls/JDBCA/gridlink_datasources.htm#BABGJBIC

0 件のコメント:

コメントを投稿