How to start/stop a Standalone Agent on ODI Marketplace


Introduction
In my previous blogs, I've introduced how to launch an ODI instance from OCI Marketplace. After instance launching, a pre-configured standalone agent is already installed as below, so you don't need to install it by yourself.

If you are familiar with ODI On-P, you know you'll use agent.sh/agentstop.sh (for Linux OS) to start/stop the ODI standalone agent. As for ODI Marketpalce, how can I do it?

Prior to 12.2.1.4.200618 version of ODI Marketplace
12.2.1.4.200618 and later versions of ODI Marketplace

Prior to 12.2.1.4.200618 version of ODI Marketplace

You use service agentodi.service to start/stop the agent.

Check Service Status

sudo systemctl status agentodi.service

Start Agent

sudo systemctl start agentodi.service

Stop Agent

sudo systemctl stop agentodi.service

12.2.1.4.200618 and later versions of ODI Marketplace

I am using ODI Marketplace 12.2.1.4.220112. As you can see as below, agentodi.service does not exist.

[opc@oracle-odi-inst-oqxx ~]$ systemctl list-unit-files --type=service |grep odi
manageappsodi.service                              enabled
mysqlodi.service                                   enabled
opcvncodi.service                                  disabled
oraclevncodi.service                               enabled
[opc@oracle-odi-inst-oqxx ~]$

You need to use manageOdiApps.py to start/stop the agent.
Before running the script, I recommend you to check the service status at first. (This is option.)

Check Service Status
Command: sudo systemctl status manageappsodi.service

[opc@oracle-odi-inst-oqxx ~]$ sudo systemctl status manageappsodi.service
● manageappsodi.service - Multi Apps for ODI - instance
   Loaded: loaded (/usr/lib/systemd/system/manageappsodi.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-03-28 08:47:56 GMT; 1s ago
 Main PID: 6749 (python)
    Tasks: 24
   Memory: 233.7M
   CGroup: /system.slice/manageappsodi.service
           tq6749 /bin/python /u01/oracle/mwh/odi/common/scripts/manageOdiApps.py start
           mq6753 java -Drepo.props=odi-setup.properties -Doracle.jdbc.fanEnabled=FALSE -cp ../../sdk/lib/oracle.odi-sdk-jse.j...

Mar 28 08:47:56 oracle-odi-inst-oqxx systemd[1]: Started Multi Apps for ODI - instance .
Mar 28 08:47:56 oracle-odi-inst-oqxx python[6749]: Mar 28, 2022 8:47:56 AM oracle.security.jps.internal.config.xml.XmlCon...ation
Mar 28 08:47:56 oracle-odi-inst-oqxx python[6749]: INFO: JPS Config: /u01/oracle/mwh/odi/common/scripts/jps-config-jse.xml
Mar 28 08:47:56 oracle-odi-inst-oqxx python[6749]: Mar 28, 2022 8:47:56 AM oracle.security.jps.JpsStartup startWithRetry
Mar 28 08:47:56 oracle-odi-inst-oqxx python[6749]: INFO: Jps initializing.
Mar 28 08:47:57 oracle-odi-inst-oqxx python[6749]: Mar 28, 2022 8:47:57 AM oracle.security.jps.JpsStartup startWithRetry
Mar 28 08:47:57 oracle-odi-inst-oqxx python[6749]: INFO: Jps started.
Mar 28 08:47:57 oracle-odi-inst-oqxx python[6749]: Mar 28, 2022 8:47:57 AM oracle.odi.internal.util.OdiLogger info
Mar 28 08:47:57 oracle-odi-inst-oqxx python[6749]: INFO: New data source: [ODIMP_ODI_REPO/*******@jdbc:oracle:thin:@adw01...DW01]
Hint: Some lines were ellipsized, use -l to show in full.
[opc@oracle-odi-inst-oqxx ~]$

Please Note
There is a TYPO in ODI Marketplace Documentation.
The service name should be manageappsodi.service, not manageodiapps.service

Change to Python scripts Directory
Switch to oracle user and change to the python scripts directory.

[opc@oracle-odi-inst-oqxx ~]$ sudo su - oracle
Last login: Fri Mar 25 03:09:18 GMT 2022 on pts/2
[oracle@oracle-odi-inst-oqxx ~]$ cd /u01/oracle/mwh/odi/common/scripts
[oracle@oracle-odi-inst-oqxx scripts]$ ll manageOdiApps.py
-rw-r-----. 1 oracle oracle 5920 Jan 13 03:26 manageOdiApps.py
[oracle@oracle-odi-inst-oqxx scripts]$

Stop Agent
Command: python manageOdiApps.py shutdown

[oracle@oracle-odi-inst-oqxx scripts]$ python manageOdiApps.py shutdown
Mar 28, 2022 8:43:10 AM oracle.odi.setup.util.ODIMPJettyServerAppsHelper shutdownProcess
INFO: ODI app server shutdown succesfully.
[oracle@oracle-odi-inst-oqxx scripts]$

When you click "Test" button after agent is stopped, you will get a message as below.

Start Agent
Command: python manageOdiApps.py start

[oracle@oracle-odi-inst-oqxx scripts]$ python manageOdiApps.py start
Mar 28, 2022 8:29:23 AM oracle.security.jps.internal.config.xml.XmlConfigurationFactory validateFileLocation
INFO: JPS Config: /u01/oracle/mwh/odi/common/scripts/jps-config-jse.xml
Mar 28, 2022 8:29:24 AM oracle.security.jps.JpsStartup startWithRetry
INFO: Jps initializing.
Mar 28, 2022 8:29:24 AM oracle.security.jps.JpsStartup startWithRetry
INFO: Jps started.
......
2022-03-28 08:29:56.255:INFO:oejs.Server:main: Started @22441ms
2022-03-28 08:29:57.122 NOTIFICATION ODI-1137 Scheduler started for work repository WORKREP on Agent OracleDIAgent1.
2022-03-28 08:30:06.974 NOTIFICATION Inside cleanStaleSessions ::::::::::::::::::::::::::::::::::::
2022-03-28 08:30:07.097 NOTIFICATION Not an InternatlAgent ::::::::::::::::startContinueLoadPlansThread:::::::::::::::

When you click "Test" button after agent is started, you will get a successful message as below.

Restart Agent
Command: python manageOdiApps.py restart

Please Note
You may wonder why the start/restart commands above do not finish and return back, here is the explanation from ODI MP documentation:
"When you execute any of the above python manageOdiApps.py commands, the terminal holds the session to run the jetty sever. Open a new terminal, if you wish to perform any other operations."

So this is expected behavior. You just need to open a new terminal to continue. By the way, the stop command does not hold the terminal.

End


Related Blogs
Personal Blogs on Oracle Cloud Infrastructure
ODI On-P vs ODI Marketplace vs OCI Data Integration
How to launch ODI instance from OCI Marketplace
How to create ODI Repository on Autonomous Database

Documentation
Managing ODI Setup