ODI 「Oracle Data Integrator」のジョブ「シナリオとロード計画」には運用上で外部のジョブ管理ツール「JP1」などから実行する要件があるため、本記事でコマンドラインとWebサービスを利用したODIジョブの実行方法を纏めました。
前提条件
- ODIのVirtualbox環境の構築:下記のドキュメントをご参考ください.
Getting Started with Oracle® Data Integrator - Virtualbox環境でシナリオとロード計画の準備:
シナリオ①
シナリオ②
ロード計画
- Virtualbox環境でStandaloneのAgentを構築:下記のドキュメントをご参考ください。
①スタンドアロン・エージェントのドメインの構成
②Creating a Logical Agent
Agentの起動とテスト
下記のコマンドでAgentを起動します。パラメータの設定には下記のドキュメントをご参照ください。
ノード・マネージャなしでのスタンドアロン・エージェントの起動
ディフォルトのAgent、シナリオとロード計画を起動するコマンドのパスが/u01/Middleware/ODI12c/user_projects/domains/base_domain/bin/
です。
[oracle@ODIGettingStarted ~]$ /u01/Middleware/ODI12c/user_projects/domains/base_domain/bin/agent.sh -NAME=OracleDIAgent1
2024-03-19 15:22:36.136 NOTIFICATION New data source: [TEST_ODI_REPO/*******@jdbc:oracle:thin:@//localhost:1521/ORCL]
2024-03-19 15:22:43.591 NOTIFICATION ODI-1128 Agent OracleDIAgent1 is starting. Container: STANDALONE. Agent Version: 12.2.1. Port: 20910. JMX Port: 21910.
Allowing : 127.0.0.1,127.0.0.1,127.0.0.1
省略です。
2024-03-19 15:22:58.013 NOTIFICATION ODI-1111 Agent OracleDIAgent1 started. Agent version: 12.2.1. Port: 20910. JMX Port: 21910.
2024-03-19 15:22:58.025 NOTIFICATION ODI-1136 Starting Schedulers on Agent OracleDIAgent1.
2024-03-19 15:22:59.757 NOTIFICATION ODI-1137 Scheduler started for work repository WORKREP on Agent OracleDIAgent1.
コマンドラインでのシナリオ実行
1. シナリオの実行
下記のコマンドでシナリオを実行します。パラメータの設定には下記のドキュメントをご参照ください。
-INSTANCE=<ODIInstanceName>
<scenario_name>
<scenario_version>
<context_code>
が必須です。[-AGENT_URL=<remote_agent_url>]
ODIの外からODI AgentのURLを指定します。また
-ASYNC=yes
で非同期実行した場合、シナリオのセッションIDが戻されます。
コマンド行からのシナリオの実行
[oracle@ODIGettingStarted ~]$ /u01/Middleware/ODI12c/user_projects/domains/base_domain/bin/startscen.sh -INSTANCE=OracleDIAgent1 DEMO1 001 GLOBAL -SESSION_NAME=RUN1 -AGENT_URL=http://localhost:20910/oraclediagent -ASYNC=yes
2024-03-19 15:42:09.911 NOTIFICATION ODI-1633 OracleDI: Starting scenario DEMO1 001 in context GLOBAL ...
2024-03-19 15:42:14.980 NOTIFICATION ODI-1020 Started session 111, current status is: W(WAITING)
[oracle@ODIGettingStarted ~]$
2. セッションの停止
実行中のシナリオを下記のコマンドで停止することが可能です。パラメータの設定にはシナリオ起動とほぼ同じですが、停止するセッションのIDを指定する必要となります。詳細には下記のドキュメントをご参照ください。
コマンド行からのセッションの停止
/u01/Middleware/ODI12c/user_projects/domains/base_domain/bin/stopsession.sh -INSTANCE=OracleDIAgent1 112 -AGENT_URL=http://localhost:20910/oraclediagent
2024-03-19 15:50:03.332 NOTIFICATION ODI-1632 Session "112" is being stopped (NORMAL)
[oracle@ODIGettingStarted ~]$
ODI Studioでセッション「112」の停止を確認します。
3. セッションの再開
一度停止したセッションを下記のコマンドで再開し、最後まで実行します。詳細には下記のドキュメントをご参照ください。
コマンド行からのセッションの再開
[oracle@ODIGettingStarted ~]$ /u01/Middleware/ODI12c/user_projects/domains/base_domain/bin/restartsession.sh -INSTANCE=OracleDIAgent1 112 -AGENT_URL=http://localhost:20910/oraclediagent
2024-03-19 16:00:07.176 NOTIFICATION ODI-1020 Started session 112, current status is: D(DONE)
[oracle@ODIGettingStarted ~]$
ODI Studioでセッション「112」の再開を確認します。
コマンドラインでのロード計画実行
1. ロード計画の実行
複数のシナリオ一括で実行する場合に、ロード計画を利用します。下記のコマンドでロード計画を実行します。パラメータの設定には下記のドキュメントをご参照ください。
コマンド行からのロード計画の実行
-INSTANCE=<ODIInstanceName>
<load_plan_name>
<context_code>
が必須です。[-AGENT_URL=<remote_agent_url>]
ODIの外からODI AgentのURLを指定します。また
ディフォルト-SYNC=no
で非同期実行するため、特に指定しなくてもロード計画の実行IDが戻されます。
[oracle@ODIGettingStarted ~]$ /u01/Middleware/ODI12c/user_projects/domains/base_domain/bin/startloadplan.sh -INSTANCE=OracleDIAgent1 DEMOLoadPlan GLOBAL -AGENT_URL=http://localhost:20910/oraclediagent
2024-03-19 16:15:34.984 NOTIFICATION ODI-1659 Load plan "DEMOLoadPlan", instance "11", run 1 has started
[oracle@ODIGettingStarted ~]$
2. ロード計画実行の停止
実行中のロード計画を停止することが可能です。詳細には下記のドキュメントをご参照ください。
ロード計画実行の停止
[oracle@ODIGettingStarted ~]$ /u01/Middleware/ODI12c/user_projects/domains/base_domain/bin/stoploadplan.sh -INSTANCE=OracleDIAgent1 12 1 -AGENT_URL=http://localhost:20910/oraclediagent
2024-03-19 16:21:13.053 NOTIFICATION ODI-1662 Load plan instance "12", run 1 has stopped (NORMAL)
[oracle@ODIGettingStarted ~]$
3. ロード計画実行の再開
停止したロード計画を再開します。下記のドキュメントをご参照ください。
ロード計画実行の再開
[oracle@ODIGettingStarted ~]$ /u01/Middleware/ODI12c/user_projects/domains/base_domain/bin/restartloadplan.sh -INSTANCE=OracleDIAgent1 12 -AGENT_URL=http://localhost:20910/oraclediagent
2024-03-19 16:41:26.198 NOTIFICATION ODI-1656 Load plan instance "12", run 2 has restarted
[oracle@ODIGettingStarted ~]$
Webサービスでのシナリオ実行
コマンドラインだけではなく、ODIのWebサービスにもシナリオ実行などの外からのコールをサポートします。今回にはODI内蔵のWebサービスコール機能「OdiInvokeWebService」を利用して資料を作成するが、他のSOAP UIなどのツールでの利用方法も類似です。下記のドキュメントをご参考ください。
Webサービスを使用したシナリオの実行
まず、ODIのパッケージを作成し、「OdiInvokeWebService」を選択して、「HTTP Analyzer」ボタンをクリックします。
ブラウザでODI WebサービスのWSDLが利用できることを確認します。
WSDL:http://localhost:20910/oraclediagent/OdiInvoke?wsdl
「port: 20910、Web application context: oraclediagent」にはAgentの設定内容を参照します。
「HTTP Analyzer」の画面で、「Select WSDL」ボタンをクリックし、上記のWSDLを入力します。
利用可能なWebサービスが表示されて、今回にはシナリオ実行のinvokeStartScen()
を選択します。
コマンドラインのパラメータと同じく、実行するシナリオとODIユーザの情報を入力します。他の情報には自動的に入力されます。最後に「Send Request」をクリックし、シナリオを実行します。
その他のWebサービス
ODIジョブ実行に関する他のWebサービスもあり、利用方法が上記のシナリオ実行と同じであるため、この記事から省略します。下記のドキュメントをご参考ください。
- Webサービスを使用したセッション・ステータスのモニタリング
- Webサービスを使用したセッションの再開
- Webサービスを使用したロード計画の実行
- Webサービスを使用したロード計画実行の停止
- Webサービスを使用したロード計画インスタンスの再開
- Webサービスを使用したロード計画実行ステータスのモニタリング
まとめ
ODIの外部からODIジョブを実行する方法の2つを紹介して、ODIと他のシステムを統合する時にご活用ください。