ODI 12c Installation Configuration
description
Transcript of ODI 12c Installation Configuration
ODI12c Installation (from an OWB
developers view!)Posted on December 16, 2013 by Paul Cannon
I’ve been using OWB to build data warehouses for BI reporting for more years than I care
to remember and have never had the need to switch to ODI – I believe the clue is in the
name, you want to build a warehouse?, use warehouse builder!
Now however Oracle have merged OWB and ODI into a single ETL product – ODI12c,
and my first impressions are that they’ve done a pretty good job of it – all the main
features in OWB are in there (such as the oh so important mapping screen) but they’ve
been improved with some of the slicker features of ODI.
But that’s enough of the sales pitch, here is the first of what will be a number blogs on
ODI12c written from the point of view of coming to it from an OWB background – so let’s
start by installing it – later on I’ll cover migrating OWB projects as well.
I performed this install on a Linux x64 vm with an Oracle 11g database (11.2.0.4). Three
files were needed from technet before I started
Weblogic Server: wls_121200.jar
ODI 12c: ofm_odi_generic_12.1.2.0.0_disk1_1of1.zip
Latest Java JDK: jdk-7u45-linux-x64.rpm.bin
ODI can be run stand-alone or within a weblogic server, and as such does not come with
weblogic built into the installer, so if you want to use weblogic you need to install that first
(or deploy it into an existing weblogic server, but I’m not doing that here!)
It also needs an up to date Java JDK – my vm came with 1.6.0.24, which wasn’t good
enough. So the first step was to install the later JDK.
Overview
The whole installation is done in a number of steps:
3sixty-analytics BlogsAll.Things.Oracle
Install the latest JDK (as mentioned above)
Install Weblogic Server
Install ODI 12c
Create the ODI Repositories
Create weblogic domain
Running ODI Studio for the first time & Configure the Agent*
Login to enterprise manager
Create the Start/Stop script
* The Agent being the process that executes the ETL – the equivalent of the control
centre service in OWB.
Installing Weblogic Server
Kicking off the weblogic installer is just a case of running the downloaded jar file with the
new JDK:
/usr/java/jdk1.7.0_45/bin/java -jar wls_121200.jar
After it’s extracted its files, the installer will start up
Just click next.
Specify the location where you want to install ODI. Note for the remainder of this blog
this location will be referred to as the ODI_HOME.
I just wanted a basic weblogic server installation, so I selected that.
All the pre-requisite checks passed ok…
As this isn’t a production install, I skipped on the support emails.
A quick check of the installation I’d asked for and away we go.
Wait for all of the tasks to complete…
On the final screen you get the option to automatically launch the configuration wizard –
although weblogic has been installed, a domain hasn’t been created yet. However you
need to run the weblogic configuration a second time later on to deploy the ODI services,
so you can (and I did) skip the configuration now and do it all in one step later on.
Installing ODI 12c
So now I can install ODI 12c, specifically ODI 12.1.2.0.0. I unzipped the downloaded
ofm_odi_generic_12.1.2.0.0_disk1_1of1.zip file to get odi_121200.jar, then ran it with the
latest version of java.
Note: I didn’t have enough space in my tmp folder to unzip this, so I created a new tmp
folder (/u01/tmp) and used a parameter in java to point to it (Djava.io.tmpdir), you
probably won’t need this, but I included it below as an example of how to…
/usr/java/jdk1.7.0_45/bin/java -Djava.io.tmpdir=/u01/tmp -jar odi_121200.jar
After extracting the files the installer starts…
Click next passed the first screen.
The Oracle Home needs to be the same home as Weblogic above.
I wanted to do an enterprise installation, so that’s what I chose. Just a quick note here…if
you want to do a stand-alone installation the oracle home must NOT contain a weblogic
install (i.e. don’t install weblogic then decide to do a stand-alone ODI install!)
All the pre-requisite checks passed ok.
Check the install summary and go for it.
The installation ran through fine.
Finally I got the completion screen.
Creating the ODI Repositories
ODI requires two repositories – a Master repository, containing global configuration
details, such as security, and a Work repository, containing the actual ETL projects you
build.
The repositories are created with the Repository Creation Utility (RCU)
In a terminal window I changed directory to ODI_HOME/oracle_common/bin, set the
JAVA_HOME and ran rcu:
cd /u01/app/Middleware/Oracle_Home/oracle_common/bin
JAVA_HOME=/usr/java/jdk1.7.0_45
export JAVA_HOME
./rcu
This opens the usual RCU installation:
Click pass the welcome screen.
Select ‘Create Repository’ and ‘System Load and Product Load’ to do it all in one go.
I entered the connection details for my local 11g database.
I got this interesting message…ODI 12c not officially supported on Oracle Database
11.2.0.4…I chose ignore…
Otherwise all the pre-requisite checks passed ok.
I just selected ‘Oracle Data Integrator’, the other dependencies are auto-selected.
More pre-requisite checks…
Used the same password for all schemas…(see the full list of schemas in the select
components screen earlier).
Some additional details are required for the ODI repositories:
Supervisor password (SUPERVISOR is the admin user in ODI)
Work Repository Type – I chose Development (which allows execution as well)
The Work Repository Name
The Work Repository Password
I left the default table-spaces selected.
Let the RCU create the tablespaces.
Finally click Create to build the repositories.
All were created successfully!
Creating the Weblogic domain
Now ODI is installed we can create the weblogic domain and deploy the ODI service at
the same time.
Once again from a terminal window change directory, this time to
ODI_HOME/oracle_common/common/bin, set the java home and run config.sh:
cd /u01/app/Middleware/Oracle_Home/oracle_common/common/bin
JAVA_HOME=/usr/java/jdk1.7.0_45
export JAVA_HOME
./config.sh
The configuration wizard will then begin:
Choose ‘Create a new Domain’. The domain location defaulted to
ODI_HOME/user_projects/domains/base_domain.
Now I can include ODI in the domain configuration. I left ‘Create Domain using Product
Templates’ selected and then from the available templates added:
Oracle Enterprise Manager Plugin for ODI – 12.1.2.0 [em]]
Oracle Data Integrator – Console – 12.1.2.0 [odi]
Oracle Data Integrator – Agent – 12.1.2.0 [odi]
Other dependent templates were automatically selected.
The Application location defaulted to:
ODI_HOME/user_projects/applications/base_domain
Next enter the administrator user-id and password.
Umm, I want to setup a Production environment, but I also want to use boot.properties to
avoid entering the user-id/password every time I start/stop the vm. Fortunately I know
how to setup the boot.properties file manually – I’ll show this later on.
The JDK defaulted to the JAVA_HOME set before running the wizard above.
The wizard now needs to connect to the repository created with the RCU above –
specifically it needs to access the Service tables in the prefix_STB schema (DEV_STB in
this example).
Enter the connection details and click the “Get RCU Configuration” button. If this is
successful carry on.
The JDBC component schema screen should already be populated – this is what the
“Get RCU Configuration” button did.
Click the “Test Selected Connections” button just to make sure all details have loaded
properly before continuing.
Two keys are required for ODI. The SUPERVISOR credential already exists when you
enter this screen, but needs the actual user-name and password entered (as created
earlier when running the RCU). Note the user-name must be entered upper case.
The second key is for the ODI Domain within weblogic, and needs to be the weblogic
administrator user-id & password as entered on page 4 of this wizard above.
Click the Add button and on the new line that opens up enter odidomain as the key-
name, followed by the admin user-name and password and finally choose
oracle.odi.credmap as the store name from the drop down list.
The three options Administration Server, Node Manager and Managed Servers need to be
selected – these open up more screens below to complete the configuration.
In here I left the server name and port as default, however the Listen Address MUST be
changed to the IP address of the server – DO NOT leave this as ‘All Local Addresses’
I don’t have/want any server groups, I this is left as unspecified.
The default ‘Per Domain’ is required (i.e. one node manager per domain, and there is only
one domain). Enter a user-id and password for the node manager.
In the following five screens I need to configure the ODI server, create a cluster (albeit
with just the one server), then create a machine and assign both the ODI server and
weblogic Admin Server to it.
To start with on this screen the ODI_Server1 server name had already been created, but
the Listen Address again defaulted to ‘All Addresses’ which MUST be changed to the IP
Address of the server. The other settings can be left as default.
Use the add button and enter a cluster name. No address is required.
Select the ODI_server1 in the servers window and click the > button to move it to the
cluster.
I’m not using Coherence, so I ignored this screen.
Again I clicked Add to create a machine, entered a name and selected the local IP
address for the listen address.
Then selectede both the Admin Server and the ODI Server1 and clicked > to add it to the
ODI Machine.
Then a rather full looking summary screen displays the settings chosen over the previous
18 screens…
Leave it a while to perform all these tasks.
Finally take a note of the URL for the admin console
Running ODI Studio for the first time
The first time ODI is run a connection to the Master repository needs to be created,
followed by the creation of the Agent.
As this is Linux, ODI is started via terminal window:
cd /u01/app/Middleware/Oracle_Home/odi/studio
./odi.sh
The first time it is run it prompts for the location of Java.
Then the funky splash screen appears…
Again, as this is a first-time run, it asks about importing preferences. I didn’t have
previous installation to import from…
And then we are in ODI studio!
So the first job is to connect to the master repository.
From the menu bar, select File -> New
From the ODI category, click on ‘Create a new ODI Repository Login’
Then enter the connection details to the Repository – the supervisor user/password as
entered when creating the domain, the DEV_ODI_REPO being one of the schemas
created by the RCU above.
It’s also worth selecting the Work Repository to connect to at this point as well –
otherwise you’ll only have to manually select it each time you connect.
Click test just to make sure! Then continue.
ODI uses a wallet to store encrypted connection details – using this means you only need
to enter the wallet password each time you connect rather than individual passwords for
the master & work repositories and other components. So enter a password for the wallet.
The 18,000 days I entered for expiry is probably a little OTT, but this is only a dev vm!
Now back at the main ODI screen, click Connect to Repository….which we’ll be doing
every time we launch ODI.
Enter the new Wallet password.
Then in the ODI login screen the user/password details are pre-filled out for us.
Configure the Agent
In the Topology tab of the navigator window, right click on Agents and select New Agent
In the new tab that opens up enter an Agent Name and the name of the host server. All
other values can be left as default. Click the Test button in the menu bar of the tab.
That’s all that’s needed right now. ODI is up and running and ready to use.
Login to enterprise manager
Just to check that the enterprise manager is up and running correctly, load a browser and
enter the URL:
http://servername:7001/em
Enter the weblogic user-id and password, then one logged in, in the target navigation
window on the left expand Weblogic Domain and click on base_domain. You should see
green pies with both the AdminServer (Weblogic) and ODI_Server1 (ODI) started.
Create boot.properties files
When the weblogic and ODI services are started they prompt for the administrator user-id
and password – we don’t want this happening every time, so we can place these details
in a special file called boot.properties. Both Weblogic and ODI will then pick-up the
details from this file rather than prompting – the first time these files are accessed both
the user-id and password are encrypted for security. We two of these files, one each for
Weblogic and ODI, although they are identical.
cd ODI_HOME/user_projects/domains/base_domain/servers/AdminServer
mkdir security
cd security
vi boot.properties
add the following lines and save.
username=weblogic
password=Password1
Then change to the ODI Server directory and copy this file:
cd ODI_HOME/user_projects/domains/base_domain/servers/ODI_server1
mkdir security
cd security
cp ../../AdminServer/security/boot.properties .
Create start/stop script
With ODI embedded in Weblogic, you need to start three separate components, the node
manager, the weblogic admin server and the ODI server. The following script, suitably
amended for the environment, will perform these tasks as background processes. The
script requires an argument of start, stop or restart and will create a log file in a
subdirectory called logs.
#!/bin/bash
ORACLE_OWNR=oracle # Local Unix user running ODI
MIDDLEWARE_HOME=/u01/app/Middleware/Oracle_Home # Deployment home directory
DOMAIN_NAME=base_domain # Domain name
SERVER_NAME=ODI_server1
WL_DOMAIN_PATH=$MIDDLEWARE_HOME/user_projects/domains/$DOMAIN_NAME/bin
ODI_USER=weblogic # ODI administrator name
ODI_PASSWD=Password1
# ODI administrator password
MANAGED_SERVER_URL=oraclelinux6.localdomain:7001 # Admin server URL (hostname:port)
SUBSYS=ODI
NOW=$(date +"%Y%m%d%H%M")
START_LOG=~/logs/odistart$NOW.log
STOP_LOG=~/logs/odistop$NOW.log
start()
echo "********************************************************************************"
echo "Starting Node Manager on $(date)"
echo "********************************************************************************"
$WL_DOMAIN_PATH/startNodeManager.sh &
wait_for "socket listener started on port"
echo "********************************************************************************"
echo "Starting Weblogic Server on $(date)"
echo "********************************************************************************"
$WL_DOMAIN_PATH/startWebLogic.sh &
wait_for "Server started in RUNNING mode"
echo "********************************************************************************"
echo "Starting ODI Services on $(date)"
echo "********************************************************************************"
$WL_DOMAIN_PATH/startManagedWebLogic.sh $SERVER_NAME &
echo "********************************************************************************"
echo "ODI start sequence completed on $(date)"
echo "********************************************************************************"
stop()
echo "********************************************************************************"
echo "Stopping ODI Services on $(date)"
echo "********************************************************************************"
$WL_DOMAIN_PATH/stopManagedWebLogic.sh $SERVER_NAME t3://$MANAGED_SERVER_URL $ODI_USER $ODI_PASSWD
echo "********************************************************************************"
echo "Starting Weblogic Server on $(date)"
echo "********************************************************************************"
$WL_DOMAIN_PATH/startWebLogic.sh &
wait_for "server started in RUNNING mode"
echo "********************************************************************************"
echo "Starting ODI Services on $(date)"
echo "********************************************************************************"
$WL_DOMAIN_PATH/startManagedWebLogic.sh $SERVER_NAME &
echo "********************************************************************************"
echo "ODI start sequence completed on $(date)"
echo "********************************************************************************"
stop()
echo "********************************************************************************"
echo "Stopping ODI Services on $(date)"
echo "********************************************************************************"
$WL_DOMAIN_PATH/stopManagedWebLogic.sh $SERVER_NAME t3://$MANAGED_SERVER_URL $ODI_USER $ODI_PASSWD
echo "********************************************************************************"
echo "Starting Weblogic Server on $(date)"
echo "********************************************************************************"
$WL_DOMAIN_PATH/stopWebLogic.sh
echo "********************************************************************************"
echo "Stoping Node Manager on $(date)"
echo "********************************************************************************"
pkill TERM u $ORACLE_OWNR f "weblogic\\.NodeManager"
echo "********************************************************************************"
echo "ODI stop sequence completed on $(date)"
echo "********************************************************************************"
wait_for()
res=0
while [[ ! $res gt 0 ]]
do
res=$(tail 5 "$START_LOG" | fgrep c "$1")
sleep 5
done
3 THOUGHTS ON “ODI12C INSTALLATION (FROM AN OWB DEVELOPERS VIEW!)”
case "$1" in
start)
echo "********************************************************************************"
echo "Starting EPM on $(date)"
echo "View Log with: tail f $START_LOG"
echo "********************************************************************************"
start &> $START_LOG &
# touch /var/lock/subsys/$SUBSYS
;;
stop)
echo "********************************************************************************"
echo "Stopping EPM on $(date)"
echo "Logs are sent to $STOP_LOG"
echo "********************************************************************************"
stop &> $STOP_LOG
# rm f /var/lock/subsys/$SUBSYS
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $(basename $0) start|stop|restart"
exit 1
esac
exit 0
This entry was posted in Uncategorized by Paul Cannon. Bookmark the permalink[http://blog.3sixty-analytics.com/?p=577] .
Adi
on February 9, 2014 at 1:37 am said:
Hi,
A newbie in ODI, I’ve installed ODI12c 12.1.2. In the installation, I missed to give
‘odidomain’ credentials in the Credentials screen. So, I ran wlst and gave in these
credentials. my domain name is base_domain so i created credentials with keys
odidomain and base_fomain. Yet, my JEE agent is not starting, its giving this
error:
SEVERE: org.apache.commons.cli.ParseException: ODI-1625: This must be
executed from a domain. System property domain.home cannot be null”
org.apache.commons.cli.ParseException: ODI-1625: This must be executed from
a domain. System property domain.home cannot be null”
There is no agent.bat in the domain\bin, rather its in odi\agent\internal\bin.
Detailed question is here: https://community.oracle.com/thread/3513978
Please let me know where am I going wrong.
Thank you in advance!
-Adi
Paul Cannon
on February 10, 2014 at 8:39 am said:
Adi,
I’ve seen all the additional problems and replies on the oracle community
link and I think you’re just attacking the symptoms rather than fixing the
main problem – which was the install wasn’t carried out properly. As this
is a new installation my advice would be to delete it and start over.
Paul.
OracleAppsDbaGirl
on July 2, 2014 at 1:20 pm said:
This is amazing. Thanks for sharing I appreciate your contributions. Definitely
bookmarking and referring to this as I go through my installation of ODI.