1
0

ODIシナリオとロード計画の外部から実行の方法

Last updated at Posted at 2024-03-20

ODI 「Oracle Data Integrator」のジョブ「シナリオとロード計画」には運用上で外部のジョブ管理ツール「JP1」などから実行する要件があるため、本記事でコマンドラインとWebサービスを利用したODIジョブの実行方法を纏めました。

前提条件

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.

ODI Studioで起動したAgentをテストします。
image.png

コマンドラインでのシナリオ実行

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 ~]$ 

ODI Studioでシナリオの実行を確認します。
image.png

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」の停止を確認します。
image.png
image.png

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」の再開を確認します。
image.png

コマンドラインでのロード計画実行

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 ~]$ 

ODI Studioでロード計画の実行を確認します。
image.png

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 ~]$ 

ODI Studioでロード計画実行の停止を確認します。
image.png
image.png

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 ~]$ 

ODI Studioでロード計画実行の再開を確認します。
image.png

Webサービスでのシナリオ実行

コマンドラインだけではなく、ODIのWebサービスにもシナリオ実行などの外からのコールをサポートします。今回にはODI内蔵のWebサービスコール機能「OdiInvokeWebService」を利用して資料を作成するが、他のSOAP UIなどのツールでの利用方法も類似です。下記のドキュメントをご参考ください。
Webサービスを使用したシナリオの実行

まず、ODIのパッケージを作成し、「OdiInvokeWebService」を選択して、「HTTP Analyzer」ボタンをクリックします。
image.png

ブラウザでODI WebサービスのWSDLが利用できることを確認します。
WSDL:http://localhost:20910/oraclediagent/OdiInvoke?wsdl
「port: 20910、Web application context: oraclediagent」にはAgentの設定内容を参照します。
image.png
image.png

「HTTP Analyzer」の画面で、「Select WSDL」ボタンをクリックし、上記のWSDLを入力します。
image.png

利用可能なWebサービスが表示されて、今回にはシナリオ実行のinvokeStartScen()を選択します。
image.png

コマンドラインのパラメータと同じく、実行するシナリオとODIユーザの情報を入力します。他の情報には自動的に入力されます。最後に「Send Request」をクリックし、シナリオを実行します。
image.png

シナリオの実行結果を確認します。
image.png
image.png

その他のWebサービス

ODIジョブ実行に関する他のWebサービスもあり、利用方法が上記のシナリオ実行と同じであるため、この記事から省略します。下記のドキュメントをご参考ください。

まとめ

ODIの外部からODIジョブを実行する方法の2つを紹介して、ODIと他のシステムを統合する時にご活用ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0