3sixty-analytics Blogs All.Things.Oracle
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 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:
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* 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 ed 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 ed ok…
As this isn’t a production install, I skipped on the 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 ed 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 ed 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 ed 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 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 ed on Oracle Database 11.2.0.4…I chose ignore…
Otherwise all the pre-requisite checks ed ok.
I just selected ‘Oracle Data Integrator’, the other dependencies are auto-selected.
More pre-requisite checks…
Used the same 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 (SUPERVISOR is the in ODI) Work Repository Type – I chose Development (which allows execution as well) The Work Repository Name The Work Repository
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/_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/_projects/applications/base_domain
Next enter the -id and .
Umm, I want to setup a Production environment, but I also want to use boot.properties to avoid entering the -id/ 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 -name and entered (as created
earlier when running the RCU). Note the -name must be entered upper case. The second key is for the ODI Domain within weblogic, and needs to be the weblogic -id & 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 keyname, followed by the -name and and finally choose oracle.odi.credmap as the store name from the drop down list.
The three options istration 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 -id and 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 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 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 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 ’
Then enter the connection details to the Repository – the supervisor / 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 each time you connect rather than individual s for the master & work repositories and other components. So enter a 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 .
Then in the ODI screen the / 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. 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 -id and , 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 Server (Weblogic) and ODI_Server1 (ODI) started.
Create boot.properties files When the weblogic and ODI services are started they prompt for the -id and – 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 -id and are encrypted for security. We two of these files, one each for Weblogic and ODI, although they are identical.
cd ODI_HOME/_projects/domains/base_domain/servers/Server mkdir security cd security vi boot.properties
add the following lines and save.
name=weblogic =1
Then change to the ODI Server directory and copy this file:
cd ODI_HOME/_projects/domains/base_domain/servers/ODI_server1 mkdir security cd security ../../Server/security/boot.properties .
Create start/stop script With ODI embedded in Weblogic, you need to start three separate components, the node manager, the weblogic 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 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/_projects/domains/$DOMAIN_NAME/bin ODI_=weblogic # ODI name ODI_WD=1 # ODI MANAGED_SERVER_URL=oraclelinux6.localdomain:7001 # server URL (hostname 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 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 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 }
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] . 3 THOUGHTS ON “ODI12C INSTALLATION (FROM AN OWB DEVELOPERS VIEW!)”
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.