4 ワークフローの構成と監視
この章では、管理対象サーバーをパッチが適用されたOracleホームに移動、管理対象サーバーのJavaバージョンを更新、管理対象サーバーのアプリケーションを更新、またはこれらの更新タスクを組み合せた、パッチ適用ワークフローの構成と監視方法について説明します。
ノート:
更新プロセスを開始する前に、ダウンタイムなしのパッチ適用の準備に従って、実行中の更新のタイプに応じた適切な準備ステップをすべて完了しておく必要があります。
Windowsベースのドメインの場合、Oracleホームを更新するワークフローを開始する前に、各ノードで、更新されるOracleホームにロックされているディレクトリまたはファイルがないことを確認します。これがあると、指定したバックアップ・ディレクトリにOracleホームを移動できない可能性があるためです。ディレクトリはDOSコマンド・ウィンドウをそのディレクトリで開くという程度の簡単なことでロックできます。ファイルはそのファイルをアプリケーションで開くことによってロックできます。
- パッチが適用されたOracleホームのロールアウトの手法
ターゲット・クラスタにロールアウトする前に、パッチが適用されたOracleホームを最初に管理サーバーにロールアウトする必要があります。2つの順次ワークフローを使用して、または1つのワークフローを使用してこれを実行できます。 - 管理サーバーの起動
ロールアウト操作を開始する前に、ノード・マネージャを使用して管理サーバーを起動することが重要です。管理サーバーについて構成されたノード・マネージャがない場合は、startWebLogic
スクリプトを使用することで管理サーバーを起動できます。 - WLSTを使用したワークフローの起動と監視
WLSTには、パッチが適用されたOracleホーム、新しいJavaバージョンまたは両方の組合せ、あるいは新しいアプリケーション・バージョンをロールアウトするために使用できる一連のZDTパッチ適用コマンドが含まれます。
パッチが適用されたOracleホームのロールアウトの手法
ターゲット・クラスタにロールアウトする前に、パッチが適用されたOracleホームを最初に管理サーバーにロールアウトする必要があります。2つの順次ワークフローを使用して、または1つのワークフローを使用してこれを実行できます。
WLSTを使用して新しいOracleホームをロールアウトする場合、パッチを適用したOracleホームをまず管理サーバーにロールアウトする必要があります。これを行うには2つの方法があります。
-
1つのワークフローを使用してパッチ適用済Oracleホームを管理サーバーにロールアウトし、次に2つ目のワークフローを使用してパッチ適用済Oracleホームをクラスタにロールアウトします。この手法の使用をお薦めしますが、必須ではありません。
このシナリオでは、WLSTを使用して、
rolloutOracleHome
またはrolloutUpdate
コマンドを実行し、ターゲットとして管理サーバー名を指定します。次にrolloutOracleHome
またはrolloutUpdate
を再度実行し、クラスタ・ターゲットを指定します。 -
1つのワークフローのみを使用してパッチ適用済Oracleホームをドメイン全体にロールアウトします。ワークフローは、パッチが適用されたOracleホームを、ターゲット・クラスタにロールアウトする前に、まず管理サーバーにロールアウトします。
このシナリオでは、WLSTを使用して、
rolloutOracleHome
またはrolloutUpdate
コマンドのいずれかを実行し、ターゲットとしてドメイン名を指定します。
親トピック: ワークフローの構成と監視
管理サーバーの起動に関する項
ロールアウト操作を開始する前に、ノード・マネージャを使用して管理サーバーを起動することが重要です。管理サーバーについて構成されたノード・マネージャがない場合は、startWebLogic
スクリプトを使用することで管理サーバーを起動できます。
管理サーバーがワークフローに含まれる場合、startWebLogic
スクリプトまたはノード・マネージャを使用して管理サーバーを起動できます。ロールアウトのために指定したターゲットがドメインである場合、管理サーバーは、ロールアウト操作の間に自動的に再起動されます。ただし、ロールアウト操作によって管理サーバーが再起動されるときに、WLSTに接続できないと、短いダウンタイムが発生する場合があります。
ロールアウト操作を開始する前に管理サーバーを起動するには、次のいずれかの方法で管理サーバーを起動します。
-
startWebLogic
スクリプトの使用管理サーバーについて構成されたノード・マネージャがない場合は、
startWebLogic
スクリプトを使用することで管理サーバーを起動できます。このスクリプトを使用して管理サーバーを起動するには、『Oracle WebLogic Serverサーバーの起動と停止の管理』の起動スクリプトによる管理サーバーの起動を参照してください。 -
ノード・マネージャの使用
ノード・マネージャが管理サーバーのために構成されている場合は、ノード・マネージャを使用して管理サーバーを起動する必要があります。ノード・マネージャを使用して管理サーバーを起動するには、次のステップを実行します。
『Oracle WebLogic Serverノード・マネージャの管理』のノード・マネージャを使用した管理サーバーの起動に関する項を参照してください。
親トピック: ワークフローの構成と監視
WLSTを使用したワークフローの起動と監視
WLSTには、パッチが適用されたOracleホーム、新しいJavaバージョンまたは両方の組合せ、あるいは新しいアプリケーション・バージョンをロールアウトするために使用できる一連のZDTパッチ適用コマンドが含まれます。
この項では、ワークフローを起動して管理対象サーバーを更新するのに使用できるWLSTコマンドについて説明し、様々なワークフロー(ロールアウト)シナリオを示すサンプルのWLSTスクリプトを提供します。
ノート:
WLST rolloutOracleHome
またはrolloutUpdate
コマンドを使用して、Windowsベースのドメインの新しいOracleホームのロールアウトを起動する場合、ワークフローの一部として更新されるOracleホームからWLSTを実行することはできません。「ZDTパッチ適用の制限」を参照してください。
次のWLSTコマンドを使用して、サーバーの自動ローリング更新を実行します。これらのコマンドは、ターゲット・ドメインの管理サーバーから実行する必要があります。
-
rolloutOracleHome
— パッチが適用されたOracleホームを管理対象サーバーにロールアウトするか、管理対象サーバーを前のOracleホームに回復します。このコマンドで使用するパッチ適用済Oracleホームのアーカイブは、copyBinary
およびpasteBinary
コマンドを使用して作成されたものである可能性があります。 -
rolloutJavaHome
— 新しいJavaバージョンを使用するように管理サーバーを更新します。 -
rolloutUpdate
— パッチが適用されたOracleホームと新しいJavaバージョンを使用するように管理サーバーを更新します。このコマンドで使用するパッチ適用済Oracleホームのアーカイブは、copyBinary
およびpasteBinary
コマンドを使用して作成されたものである可能性があります。 -
rolloutApplications
—管理対象サーバーで実行している指定したアプリケーションを更新します。
ノート:
ロールアウトのコマンドでWindowsのパスを指定する場合、スラッシュのかわりにバックスラッシュを使用する必要があります。不要なエラーを避けるため、必ずバックスラッシュをエスケープするようにしてください。(たとえば、C:\\myhome\\files\\apps.json
)。詳細は、WebLogic Scripting Toolの理解のWLSTコマンドの構文を参照してください。
これらのいずれかのWLSTコマンドを実行するときには、コマンドによって、更新する必要のあるサーバー、およびその順序が決定され、それらを安全に更新するパッチ適用ワークフローが作成されます。このワークフローには、次のことが含まれます。
-
管理対象サーバーを1つずつ正常にシャットダウン。これには、現在ADMINまたはSTANDBYモードの管理対象サーバーは含まれません。
migrationProperties
オプションがロールアウト・コマンドに含まれている場合、これにはシングルトン・サービスの移行が含まれます。 -
Oracleホーム・ディレクトリの置換(必要な場合)
-
Javaホーム・ディレクトリの置換(必要な場合)
-
アプリケーション・ディレクトリの置換(必要な場合)
-
ノードでのノード・マネージャの再起動
-
ノードでの管理対象サーバーの再起動
表4-1では、WLSTrollout
コマンドで使用可能なパラメータを示します。
表4-1 WLSTロールアウト・コマンドの引数
引数 | 説明 |
---|---|
|
すべての 更新に含まれる管理対象サーバーを指定します。
ノート: 通常、管理サーバーの更新時にのみ、サーバー・ターゲットを指定する必要があります。個々の管理対象サーバーの更新は、セッションが維持されずに、ユーザーの停止時間を回避できない可能性があるため、ほとんどの場合でお薦めできません。ただし、1つ以上の新しい管理対象サーバーを追加してあり、それらがその他の管理対象サーバーと同じJavaバージョンではない場合、安全に管理対象サーバー・ターゲットを指定できます。 |
|
ロールアウトするOracleホームのアーカイブ(JARファイル)またはローカルのOracleホーム・ディレクトリを指定し、その結果、既存のOracleホームを置き換えます。 |
|
既存のOracleホームの移動先となるディレクトリのフルパスを指定します。これにより、元のOracleホームの名前が効率的に変更されます。たとえば、元のOracleホームが |
|
オプション。 |
|
使用する新しいJavaホームの場所を指定します。 |
|
1つ以上のアプリケーション名、アプリケーション・アーカイブの場所およびアプリケーション・バックアップの場所を定義するJSONファイルへのフルパスを指定します。 |
|
次のオプションのうち1つ以上を
|
WLSTを使用してワークフローの進行状況を監視することもできます。「ワークフローの進行状況の監視」を参照してください。
- 新しいOracleホームのロールアウト
- Javaバージョンの更新
- OracleホームおよびJavaバージョンの両方の更新
- 更新されたアプリケーションのロールアウト
- 前のOracleホーム、Javaホームまたはアプリケーションへの回復
- サーバーのローリング再起動の起動
- ワークフローの進行状況の監視
- 停止したワークフローの実行、元に戻す、再開
- ワークフローに役立つWLSTコマンド
- サンプルのWLSTスクリプト
親トピック: ワークフローの構成と監視
新しいOracleホームのロールアウト
次のタスクのいずれかを実行するだけの場合は、rolloutOracleHome
コマンドを使用します。
-
パッチが適用されたOracleホームを使用するように管理サーバーを更新します。
-
パッチが適用されたOracleホームを使用するようにドメイン全体(管理サーバーおよびクラスタ化された管理対象サーバー)を更新します。
-
パッチが適用されたOracleホームを使用するように、クラスタ化された管理対象サーバーを更新します。
-
以前のパッチ未適用のOracleホームを使用するように管理サーバー、クラスタ化された管理対象サーバーまたはドメインの更新を取り消します。
rolloutOracleHome
の構文は次のとおりです。
rolloutOracleHome(target, rolloutOracleHome, backupOracleHome, [isRollback], [options=options])
このコマンドはisDryRun
、isAutoRevertOnFailure
およびisSessionCompatible
オプションをサポートします。このコマンドには、1つ以上のオプションのカンマ区切りリストを含めることができます。これらのオプションの詳細は、WLSTを使用したワークフローの起動と監視を参照してください。
次の例では、新しいOracleホームをドメインmydomain
にロールアウトする方法を示します。パッチ適用済のOracleホームのJARファイルは、/net/wls/wls_patched.jar
にあります。元のOracleホームは/u01/Oracle_Home_backup
に移動(名前変更)されます。このプロセスは失敗しても自動的に回復されません。
connect('adminname', 'adminpassword', 't3://hostname:port')
domain='/domains/mydomain'
progress=rolloutOracleHome(domain, '/net/wls/wls_patched.jar',
'/u01/Oracle_Home_backup', options='isAutoRevertOnFailure=FALSE')
ノート:
新しいOracleホームのロールアウト時は、rolloutOracleHome
コマンドでのローカルOracleホーム・ディレクトリの指定はサポートされていません。「ZDTパッチ適用の制限」を参照してください。
親トピック: WLSTを使用したワークフローの起動と監視
Javaバージョンの更新
次のタスクのいずれかを実行するだけの場合は、rolloutJavaHome
コマンドを使用します。
-
新しいJavaバージョンを使用するように管理サーバーを更新します。
-
新しいJavaバージョンを使用するようにドメイン全体(管理サーバーおよび管理対象サーバー)を更新します。
-
新しいJavaバージョンを使用するように管理対象サーバーを更新します。
-
以前のJavaバージョンを使用するように管理サーバー、管理対象サーバーまたはドメインを回復します。
rolloutJavaHome
の構文は次のとおりです。
rolloutJavaHome(target, javaHome, [options=options])
このコマンドはisDryRun
およびisAutoRevertOnFailure
オプションをサポートします。このコマンドでは、1つ以上のオプションをカンマ区切りリストに含めることができます。これらのオプションの詳細は、WLSTを使用したワークフローの起動と監視を参照してください。
次の例では、新しいJavaホームをクラスタCluster1
、Cluster2
、Cluster3
にロールアウトする方法を示します。新しいJavaホームの場所は/u01/jdk1.8.0_50
です。この例ではisAutoRevertOnFailure
オプションは含まれていないため、ワークフローはプロセスが失敗すると自動的に回復します。
connect('adminname', 'adminpassword', 't3://hostname:port')
clusters='Cluster1,Cluster2,Cluster3'
progress=rolloutJavaHome(clusters, '/u01/jdk1.8.0_50')
親トピック: WLSTを使用したワークフローの起動と監視
OracleホームおよびJavaバージョンの両方の更新
次のタスクのいずれかを実行するだけの場合は、rolloutUpdate
コマンドを使用します。
-
パッチが適用されたOracleホームと新しいJavaバージョンの両方を使用するように管理サーバーを更新します。
-
パッチが適用されたOracleホームと新しいJavaバージョンの両方を使用するようにドメイン全体(管理サーバーおよびクラスタ化された管理対象サーバー)を更新します。
-
パッチが適用されたOracleホームと新しいJavaバージョンの両方を使用するように管理対象サーバーを更新します。
-
以前のOracleホームおよび以前のJavaバージョンに管理サーバー、管理対象サーバーまたはドメインを回復します。
rolloutUpdate
の構文は次のとおりです。
rolloutUpdate(target, rolloutOracleHome, backupOracleHome, [isRollback], [javaHome], [options=options])
このコマンドはisDryRun
、isAutoRevertOnFailure
およびisSessionCompatible
オプションをサポートします。このコマンドでは、1つ以上のオプションをカンマ区切りリストに含めることができます。これらのオプションの詳細は、WLSTを使用したワークフローの起動と監視を参照してください。
次の例では、新しいOracleホームおよび新しいJavaホームを管理サーバーにロールアウトする方法を示します。パッチ適用済のOracleホームのJARファイルは、/net/wls/wls_patched.jar
にあります。元のOracleホームは/u01/Oracle_Home_backup
に移動(名前変更)されます。新しいJavaホームの場所は/u01/jdk1.8.0_50です。この例ではisAutoRevertOnFailure
オプションは含まれていないため、ワークフローはプロセスが失敗すると自動的に回復します。
connect('adminname', 'adminpassword', 't3://hostname:port')
server='AdminServer'
progress=rolloutUpdate(server, '/net/wls/wls_patched.jar',
'/u01/Oracle_Home_backup', '/u01/jdk1.8.0_50')
親トピック: WLSTを使用したワークフローの起動と監視
更新されたアプリケーションのロールアウト
次のタスクのいずれかを実行する場合は、rolloutApplications
コマンドを使用します。
-
1つ以上のアプリケーションの新しいバージョンを使用するように管理対象サーバーを更新します
-
1つ以上のアプリケーションについて以前のバージョンに管理対象サーバーを回復します。
rolloutApplications
の構文は次のとおりです。
rolloutApplications(target, applicationProperties, [options=options])
このコマンドはisDryRun
、isAutoRevertOnFailure
およびisSessionCompatible
オプションをサポートします。このコマンドでは、1つ以上のオプションをカンマ区切りリストに含めることができます。これらのオプションの詳細は、WLSTを使用したワークフローの起動と監視を参照してください。
次の例では、JSON形式のアプリケーション・プロパティ・ファイル/u01/scratch/app_update.json
に定義されたアプリケーションをUNIXシステム上のすべてのクラスタCluster1
、Cluster2
、Cluster3
にロールアウトする方法を示します。
connect('adminname', 'adminpassword', 't3://hostname:port')
clusters='Cluster1,Cluster2,Cluster3'
progress=rolloutApplications(clusters, '/u01/scratch/app_update.json')
親トピック: WLSTを使用したワークフローの起動と監視
前のOracleホーム、Javaホームまたはアプリケーションへの回復
ロールアウトが正常に完了した後に、前のOracleホーム、Javaホームまたはアプリケーション・バージョンにロールバックする場合は、次の2つのステップを実行してロールバック操作を完了する必要があります。
-
rolloutUpdate
コマンドを使用して、前のOracleホームおよびJavaホームにロールバックします。ただし、rolloutUpdate
コマンドを実行してロールバックする前に、次の制限事項に留意する必要があります:-
ロールアウトするOracleホーム・ディレクトリとしてバックアップ済Oracleホームを指定する必要があります。このディレクトリは、前のロールアウトからのバックアップ・ディレクトリである必要があります。
-
ロールバック先のOracleホーム・ディレクトリとしてバックアップ済Oracleホーム・ディレクトリを指定した後は、そのコマンドで新しいJavaホームを指定しないでください。Javaホームは、ロールバック先として指定した前のOracleホームで使用されていた、元のJavaホームに自動的にロールバックされます。
-
-
。rolloutApplications
コマンドを使用して、jsonファイルで古いアプリケーション・アーカイブを指定することで、前のアプリケーション・バージョンにロールバックします。このコマンドの使用の詳細は、更新されたアプリケーションのロールアウトを参照してください
次の例では、前のOracleホーム、Javaホームおよびアプリケーションにロールバックする方法を示します。この例では、myDomain
はロールバック先となるドメインの名前、/pathto/unpatchedOracleHomeBackup/
は前のロールアウトからのバックアップOracleホーム・ディレクトリの場所、/pathto/unpatchedOracleHomeBackup1/
は既存Oracleホームの移動先となるディレクトリのパスです。ロールバック操作を可能にするには、例で示すように、isRollback
パラメータをtrue
に設定する必要があります。
rolloutUpdate('myDomain', '/pathto/unpatchedOracleHomeBackup/', '/pathto/unpatchedOracleHomeBackup1/', 'true')
親トピック: WLSTを使用したワークフローの起動と監視
サーバーのローリング再起動の起動
次のタスクのいずれかを実行する場合は、rollingRestart
コマンドを使用します。
-
ドメイン内のすべてのサーバーのローリング再起動の開始
-
特定のクラスタ(1つまたは複数)内のすべてのサーバーのローリング再起動の開始
rollingRestart
の構文は次のとおりです。
rolloutRestart(target, [options=options])
このコマンドでは、1つ以上のオプションをカンマ区切りリストに含めることができます。
次の例では、Cluster1
およびCluster2
内のすべてのサーバーのローリング再起動を実行する方法を示します。
connect('adminname', 'adminpassword', 't3://hostname:port')
clusters='Cluster1,Cluster2'
progress=rollingRestart(clusters)
親トピック: WLSTを使用したワークフローの起動と監視
ワークフローの進行状況の監視
各ロールアウト
・コマンドは、ワークフローの現在のステータスをポーリングするのに使用できるWorkFlowTaskRuntimeMBean
を返します。ロールアウトの進行状況を監視するには、rollout
コマンドを次の形式で使用します。
progress=rollout_command
たとえば、新しいOracleホームのロールアウトの場合は、このコマンドを使用します。
progress=rolloutOracleHome(DomainA, '/net/patched/wls1221p.jar', '/net/backups/wls1221', options='isAutoRevertOnFailure=FALSE')
次に、WorkflowTaskRuntimeMBean
のメソッドを使用してワークフローに関する情報を返すことができます。Oracle WebLogic Server MBeanリファレンスのWorkflowTaskRuntimeMBeanに関する項
を参照してください。いくつか例を挙げます。
progress.getWorkflowId()
ワークフローのIDを返します。
progress.getProgressString()
'Workflow wf0011 Running: 13/36'
現在のワークフローの進行状況に関する情報を含む判読可能なメッセージを返します。この例では、ワークフローwf0011
が現在実行中であり、36個のワークフロー・コマンドのうち13個が完了しています。
progress.getStatus()
STARTED
ワークフローの現在のステータスを返します。これはSTARTED
、SUCCESS
、RETRY
、REVERTING
、FAIL
、REVERTED
、REVERT_FAIL
、CANCELED
またはREVERT_CANCELED
のいずれかです。
次のPythonスクリプト・セグメントは、進行状況オブジェクトを使用して、ワークフローを監視し、ロールアウト・タスクの進行状況を出力する1つの方法を示します。スクリプト後のサンプルの出力を示します。
# Print the starting information
rolloutName = progress.getName()
startTime = progress.getStartTime()
print "Started rollout task \"" + rolloutName + "\" at " + str(startTime)
# Check the state every 2 minutes
domainRuntime()
cd('RolloutService/rollout-service/ActiveWorkflows')
cd(progress.getWorkflowId())
while(get('Running')==1):
progressString = progress.getProgressString()
print progressString
time.sleep(120)
# Print the ending information
endTime = progress.getEndTime()
state = progress.getState()
print "rollout \"" + rolloutName + "\" finished with state
Output
Started rollout task "Domain1Rollout" at 2014-07-22 07:29:06.528971
Running step 1 of 9
Running step 2 of 9
Running step 3 of 9
Running step 4 of 9
Running step 5 of 9
Running step 6 of 9
Running step 7 of 9
Running step 8 of 9
Running step 9 of 9
rollout "Domain1Rollout" finished with state "SUCCESS" at
2014-07-22 07:47:15.538299
親トピック: WLSTを使用したワークフローの起動と監視
停止したワークフローの実行、元に戻す、再開
ワークフローは次の理由で実行または元に戻す方向で停止することがあります:
-
isAutoRevertOnFailure
オプションがFALSE
に設定されている状態で、ワークフローが実行中に失敗した。 -
ワークフローが手動でキャンセルされた
-
回復操作中にリカバリ不能エラーが発生した。
ワークフローが停止した場合は、手動でエラーを解決できます。その後、RolloutServiceRuntimeMBean
で次のメソッドを使用して、実行を継続するか元に戻すようワークフローを設定できます:
メソッド | 説明 |
---|---|
|
再開できる進行状況オブジェクトを取得し、実行方向で再開します。ワークフローで最後の正常な操作が実行だった場合、実行は次の実行ステップから再開されます。ワークフローで最後の正常な操作が元に戻す操作だった場合、実行はその元に戻すステップを実行することにより再開されます。 |
|
再開できる進行状況オブジェクトを取得し、回復方向で再開します。ワークフローで最後の正常な操作が実行だった場合、回復はそのステップから再開されます。ワークフローで最後の正常な操作が回復だった場合、回復は回復シーケンスでその次のステップを回復することにより再開されます。 |
|
ワークフローが完了する前に停止し、いずれの方向にも現在実行中ではない場合、 |
親トピック: WLSTを使用したワークフローの起動と監視
ワークフローに役立つWLSTコマンド
この項では、役に立つ可能性のあるWLSTコマンドをいくつか説明します。
-
完了したワークフローのリストを取得するには:
wls:/domain_name/domainRuntime/RolloutService/rollout-service> completeWfs= cmo.getCompleteWorkflows()
-
アクティブなワークフローのリストを取得するには:
wls:/domain_name/domainRuntime/RolloutService/rollout-service> activeWfs = cmo.getActiveWorkflows()
-
IDでワークフローを検索しその状態を取得するには:
wls:/domain_name/domainRuntime/RolloutService/rollout-service> progress=cmo.getWorkflowTask('workflow_id') wls:/Domain1221/domainRuntime/RolloutService/rollout-service> progress.getStatus()
-
実行中のワークフローを取り消すには:
wls:/domain_name/domainRuntime/RolloutService/rollout-service> progress=cmo.getWorkflowTask('workflow_id') wls:/domain_name/domainRuntime/RolloutService/rollout-service> progress.cancel()
-
完了したワークフローを削除するには:
wls:/domain_name/domainRuntime/RolloutService/rollout-service> cmo.deleteWorkflow('workflow_id')
親トピック: WLSTを使用したワークフローの起動と監視
サンプルのWLSTスクリプト
この項には、1つのサービス移行でcluster1
という名前のクラスタ内のすべてのサーバーのローリング再起動を実行する方法を示すサンプルのWLSTスクリプトが含まれます。このスクリプトでは、次の引数が定義されています。
-
username
— WebLogic Server管理者のユーザー名 -
password
— WebLogic Server管理者のパスワード -
adminURL
— ドメインの管理サーバーのホスト名とポート番号。 -
target
— 操作のターゲット。表4-1を参照してください。 -
options
— 操作のロールアウト・オプション。表4-1を参照してください。
次の例では、ロールアウト操作のためのサンプルWLSTスクリプトを示します。
import sys, socket
import os
import time
from java.util import Date
from java.text import SimpleDateFormat
argUsername = sys.argv[1]
argPassword = sys.argv[2]
argAdminURL = sys.argv[3]
argTarget = sys.argv[4]
argOptions = sys.argv[5]
try:
connect(argUsername, argPassword, argAdminURL)
progress = rollingRestart(argTarget, argOptions)
lastProgressString = ""
progressString=progress.getProgressString()
# for testing progressString="12 / 12"
steps=progressString.split('/')
while not (steps[0].strip() == steps[1].strip()):
if not (progressString == lastProgressString):
print "Completed step " + steps[0].strip() + " of " + steps[1].strip()
lastProgressString = progressString
java.lang.Thread.sleep(1000)
progressString=progress.getProgressString()
steps=progressString.split('/')
if(len(steps) == 1):
print steps[0]
break;
if(len(steps) == 2):
print "Completed step " + steps[0].strip() + " of " + steps[1].strip()
t = Date()
endTime=SimpleDateFormat("hh:mm:ss").format(t)
print ""
print "RolloutDirectory task finished at " + endTime
print ""
state = progress.getStatus()
error = progress.getError()
stateString = '%s' % state
if stateString != 'SUCCESS':
#msg = 'State is %s and error is: %s' % (state,error)
msg = "State is: " + state
raise(msg)
elif error is not None:
msg = "Error not null for state: " + state
print msg
#raise("Error not null for state: %s and error is: %s" + (state,error))
raise(error)
except Exception, e:
e.printStackTrace()
dumpStack()
raise("Rollout failed")
exit()
このスクリプトを実行するには、Python (.py
)ファイルとして保存してから、次のようなコマンドを入力します。WindowsでWLSTを実行している場合は、WindowsでのWLSTの使用に関する重要な情報について、ZDTパッチ適用の制限を参照してください。
$ORACLE_HOME/oracle_common/common/bin/wlst.sh /u01/scripts/rollout/RollingRestart.py username password t3://hostname:port cluster1 "migrationProperties=/u01/json/mig.txt"
親トピック: WLSTを使用したワークフローの起動と監視