8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | 23c | Misc | PL/SQL | SQL | RAC | WebLogic | Linux
Oracle Data Integrator (ODI) 11g Silent Installation on Oracle Linux 6 and 7 (OL6 and OL7)
Work In Progress
This article demonstrates how to perform a silent installation of Oracle Data Integrator (ODI) 11g on Oracle Linux 6 and 7 (OL6 and OL7) using Oracle Database 12c Release 1 (12.1) for the repository created by the Repository Creation Utility (RCU).
- Assumptions
- Downloads
- Response Files
- Additional OS Packages
- Database Software Installation
- Database Creation
- WebLogic Installation
- Repository Configuration Utility (RCU) Installation
- Repository Configuration Utility (RCU)
- ODI Installation
- ODI Configuration
- ODI Agent Config
- Startup/Shutdown
- ODI URLs
- Domain Cleanup
Related articles.
Assumptions
To keep this article as brief as possible I'm going to make the following assumptions.
- You already have a server (Virtual or Physical) with Oracle Linux 6 or 7 (OL6 or OL7) installed (described here OL6 or OL7).
- The prerequisites for an Oracle Database 12c Release 1 (12.1) installation have been completed (described here OL6 or OL7).
- You are somewhat familiar with the concept of silent installations (described here).
- To keep things simple we will install both the database and ODI on a single machine. This is not a recommendation. As a result of this, some of the paths may look a little odd, as it will be a mix of OFA for the database and my typical paths for WebLogic installations.
- All the software listed below will be placed in the "/u01/software" directory.
- All the response files listed below are placed in the "/u01/software" directory and adjusted to suite your purposes.
I don't work with ODI, but I do have to provide basic support of some infrastructure that runs it (database and WebLogic).
Downloads
There is a lot of software to download before you can begin. I've purposely not included the latest critical updates.
- Oracle Database 12c Release 1 (12.1.0.2) (linuxamd64_12102_database_1of2.zip and linuxamd64_12102_database_2of2.zip)
- JDK7 Update 80 (jdk-7u80-linux-x64.tar.gz)
- Weblogic Server 11g (10.3.6)
- Oracle Data Integrator 11gR1 (Linux x86-64-bit 2 files plus Repository Creation Utility)
Response Files
The following response files are necessary for the silent installations shown below. The values you may need to amend are shown in bold.
weblogic-silent.xml
<?xml version="1.0" encoding="UTF-8"?> <bea-installer> <input-fields> <data-value name="BEAHOME" value="/u01/app/oracle/middleware" /> <data-value name="WLS_INSTALL_DIR" value="/u01/app/oracle/middleware/wlserver_10.3" /> <data-value name="COMPONENT_PATHS" value="WebLogic Server/Core Application Server|WebLogic Server/Administration Console|WebLogic Server/Configuration Wizard and Upgrade Framework|WebLogic Server/Web 2.0 HTTP Pub-Sub Server|WebLogic Server/WebLogic JDBC Drivers|WebLogic Server/Third Party JDBC Drivers|WebLogic Server/WebLogic Server Clients|WebLogic Server/WebLogic Web Server Plugins|WebLogic Server/UDDI and Xquery Support|Oracle Coherence/Coherence Product Files" /> <data-value name="INSTALL_NODE_MANAGER_SERVICE" value="yes" /> <data-value name="NODEMGR_PORT" value="5556" /> <data-value name="INSTALL_SHORTCUT_IN_ALL_USERS_FOLDER" value="no"/> <data-value name="LOCAL_JVMS" value="/u01/app/oracle/jdk1.7.0_80"/> </input-fields> </bea-installer>
oraInst.loc
inventory_loc=/u01/app/oraInventory inst_group=oinstall
odi.rsp
[ENGINE] #DO NOT CHANGE THIS. Response File Version=1.0.0.0.0 [GENERIC] #Set this to true if you wish to specify a directory where latest updates are downloaded. This option would use the software updates from the specified directory SPECIFY_DOWNLOAD_LOCATION=false # SKIP_SOFTWARE_UPDATES=true #If the Software updates are already downloaded and available on your local system, then specify the path to the directory where these patches are available and set SPECIFY_DOWNLOAD_LOCATION to true SOFTWARE_UPDATES_DOWNLOAD_LOCATION= #Provide the Oracle Home location. The location has to be the immediate child under the specified Middleware Home location ( Applicable only if any of the J2EE Server Components are selected ). The Oracle Home directory name may only contain alphanumeric , hyphen (-) , dot (.) and underscore (_) characters, and it must begin with an alphanumeric character. The total length has to be less than or equal to 128 characters. The location has to be an empty directory or a valid ODI Oracle Home. ORACLE_HOME=/u01/app/oracle/middleware/Oracle_ODI1 #Provide existing Middleware Home location. MIDDLEWARE_HOME=/u01/app/oracle/middleware #Application Server choices are WLS, WAS, JBoss APPSERVER_TYPE=WLS #Enter true if existing Master and Work repositories needs to be configured USE EXISTING REPOSITORY=false #Enter true if Repository Configuration needs to be skipped SKIP REPOSITORY CREATION=true [APPLICATIONS] #Enter true if STUDIO component needs to be installed ODI_STUDIO=true #Enter true if SDK component needs to be installed ODI_SDK=true #Enter true if Server components needs to be installed and configured. The standalone agent will be configued STANDALONE_AGENT=false #Enter true if J2EE Agent needs to be installed. The user has to configured this component using Weblogic Configuration Wizard. ORACLE_DATA_INTEGRATOR_J2EE_AGENT=true #Enter true if ODI Console needs to be installed. The user has to configured this component using Weblogic Configuration Wizard. ORACLE_DATA_INTEGRATOR_CONSOLE=true #Enter true if Public Webservices needs to be installed. The user has to configured this component using Weblogic Configuration Wizard. ORACLE_DATA_INTEGRATOR_PUBLIC_WEB_SERVICE=true
odi_rcu_paramfile.txt
SysPasswd1 OdidevPasswd1 001 SVPasswd1 D 001 WORKREP WRPasswd1
Additional OS Packages
Install the following package for the Fusion Middleware prerequisites to be met. Many of them will already be present because of the database prerequisites.
# OL6 and OL7. yum install binutils -y yum install compat-libcap1 -y yum install compat-libstdc++-33 -y yum install compat-libstdc++-33.i686 -y yum install gcc -y yum install gcc-c++ -y yum install glibc -y yum install glibc.i686 -y yum install glibc-devel -y yum install libaio -y yum install libaio-devel -y yum install libgcc -y yum install libgcc.i686 -y yum install libstdc++ -y yum install libstdc++.i686 -y yum install libstdc++-devel -y yum install ksh -y yum install make -y yum install sysstat -y yum install numactl -y yum install numactl-devel -y # OL7 Only. yum install motif -y yum install motif-devel -y # OL6 Only. yum install libXext.i686 -y yum install libXtst.i686 -y yum install libXi.i686 -y yum install openmotif -y yum install openmotif22 -y yum install redhat-lsb -y
Database Software Installation
Assuming you have completed all the OS prerequisites for a database installation, you can install the database software as follows.
Unzip the software.
cd /u01/software unzip -o linuxamd64_12102_database_1of2.zip unzip -o linuxamd64_12102_database_2of2.zip
Install the database software in silent mode.
cd database ./runInstaller -ignoreSysPrereqs -showProgress -silent \ -responseFile /u01/software/database/response/db_install.rsp \ oracle.install.option=INSTALL_DB_SWONLY \ ORACLE_HOSTNAME=ol7-odi.localdomain \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/u01/app/oraInventory \ SELECTED_LANGUAGES=en,en_GB \ ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1 \ ORACLE_BASE=/u01/app/oracle \ oracle.install.db.InstallEdition=EE \ oracle.install.db.DBA_GROUP=dba \ oracle.install.db.BACKUPDBA_GROUP=dba \ oracle.install.db.DGDBA_GROUP=dba \ oracle.install.db.KMDBA_GROUP=dba \ SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \ DECLINE_SECURITY_UPDATES=true
When prompted, run the root scripts.
# Run root scripts as directed. # # As a root user, execute the following script(s): # 1. /u01/app/oraInventory/orainstRoot.sh # 2. /u01/app/oracle/product/12.1.0.2/db_1/root.sh
Database Creation
Start the listener.
lsnrctl start
Create the database using the Database Creation Assistant (DBCA) in silent mode.
#dbca -silent -deleteDatabase -sourceDB repdevcdb -sysDBAUserName sys -sysDBAPassword SysPasswd1 dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname repdevcdb -sid repdevcdb -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword SysPasswd1 \ -systemPassword SysPasswd1 \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName repdev \ -pdbAdminPassword PdbPasswd1 \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -totalMemory 1536 \ -storageType FS \ -datafileDestination "/u01/app/oracle/oradata/" \ -redoLogFileSize 500 \ -emConfiguration NONE \ -ignorePreReqs
Set minimum parameter levels and make sure the pluggable database starts when the instance starts.
sqlplus / as sysdba <<EOF ALTER SYSTEM SET shared_pool_size=150M SCOPE=SPFILE; --ALTER SYSTEM SET sga_target 150M SCOPE=SPFILE; ALTER SYSTEM SET session_cached_cursors=100 SCOPE=SPFILE; ALTER SYSTEM SET processes=500 SCOPE=SPFILE; ALTER SYSTEM SET open_cursors=800 SCOPE=SPFILE; ALTER SYSTEM SET db_files=600 SCOPE=SPFILE; ALTER SESSION SET CONTAINER = repdev; ALTER PLUGGABLE DATABASE SAVE STATE; CONN / AS SYSDBA SHUTDOWN IMMEDIATE; STARTUP; EXIT; EOF
WebLogic Installation
Set the required environment variables.
export MW_HOME=/u01/app/oracle/middleware export WLS_HOME=$MW_HOME/wlserver_10.3 export WL_HOME=$WLS_HOME export DOMAIN_HOME=$MW_HOME/user_projects/domains/odiDomain # Set to the appropriate JAVA_HOME. export JAVA_HOME=/u01/app/oracle/jdk1.7.0_80 export PATH=$JAVA_HOME/bin:$PATH
Install JDK7.
cd /u01/app/oracle/ tar -xvzf /u01/software/jdk-7u80-linux-x64.tar.gz
Create the middleware location.
mkdir -p /u01/app/oracle/middleware
Install WebLogic in silent mode.
$JAVA_HOME/bin/java -Xmx1024m -jar /u01/software/wls1036_generic.jar -mode=silent -silent_xml=/u01/software/weblogic-silent.xml
Repository Configuration Utility (RCU) Installation
Install the BI RCU in a temporary location.
mkdir -p $MW_HOME/odi_rcu cd $MW_HOME/odi_rcu unzip /u01/software/ofm_rcu_linux_11.1.1.9.0_64_disk1_1of1.zip
Repository Configuration Utility (RCU)
Use the following command to run the RCU in silent mode.
$MW_HOME/odi_rcu/rcuHome/bin/rcu -silent -createRepository \ -connectString ol7-odi.localdomain:1521/repdev -dbUser SYS -dbRole SYSDBA \ -useSamePasswordForAllSchemaUsers true \ -schemaPrefix ODIDEV \ -component ODI -component IAU \ -component OPSS < /u01/software/odi_rcu_paramfile.txt
ODI Installation
Unzip the software.
cd /u01/software unzip -o ofm_odi_generic_11.1.1.9.0_disk1_1of2.zip unzip -o ofm_odi_generic_11.1.1.9.0_disk1_2of2.zip
Install the ODI software in silent mode.
cd /u01/software/Disk1 ./runInstaller -silent -responseFile /u01/software/odi.rsp -invPtrLoc /u01/software/oraInst.loc
Enter the Java home (/u01/app/oracle/jdk1.7.0_80) when prompted.
ODI Configuration
Work In Progress
Create a file called "create_odi_domain.py" in the "/u01/software" directory with the following contents. Remember to adjust the variables at the start of the script to suit your installation.
#!/usr/bin/python print('Set variables.') host_name = 'ol7-odi.localdomain' admin_user = 'weblogic' admin_password = 'Admin123' admin_port = '7001' mw_home = '/u01/app/oracle/middleware' domain_name = 'odiDomain' domain_home = mw_home + '/user_projects/domains/' + domain_name # Check path is correct. wl_home = mw_home + '/wlserver_10.3' db_url = 'jdbc:oracle:thin:@ol7-odi.localdomain:1521/repdev' db_user = 'ODIDEV_ODI_REPO' db_password = 'OdidevPasswd1' db_driver = 'oracle.jdbc.OracleDriver' odi_port = '8001' nm_name = 'LocalODIMachine' nm_port = 5556 ds_name = 'LocalSvcTblDataSource' print('Create domain (' + domain_name + ').') print('Load templates.') readTemplate(wl_home + '/common/templates/domains/wls.jar') addTemplate(mw_home + '/oracle_common/common/templates/applications/jrf_template_11.1.1.jar') addTemplate(mw_home + '/oracle_common/common/templates/applications/oracle.em_11_1_1_0_0_template.jar') addTemplate(mw_home + '/Oracle_ODI1/common/templates/applications/odi_base_template.jar') addTemplate(mw_home + '/Oracle_ODI1/common/templates/applications/odi_sdk_template.jar') addTemplate(mw_home + '/Oracle_ODI1/common/templates/applications/odi_webservices_template.jar') addTemplate(mw_home + '/Oracle_ODI1/common/templates/applications/agent_template.jar') addTemplate(mw_home + '/Oracle_ODI1/common/templates/applications/jrfws_template.jar') addTemplate(mw_home + '/Oracle_ODI1/common/templates/applications/repository_explorer_template.jar') addTemplate(mw_home + '/Oracle_ODI1/common/templates/applications/oracle.emai_odi_template_11.1.1.jar') print('AdminServer settings.') cd('/Security/base_domain/User/' + admin_user) cmo.setPassword(admin_password) cd('/Server/AdminServer') cmo.setName('AdminServer') cmo.setListenPort(int(admin_port)) cmo.setListenAddress(host_name) print('Create data source.') cd('/') create(ds_name,'JDBCSystemResource'); cd('/JDBCSystemResource/' + ds_name + '/JdbcResource/' + ds_name + '/JDBCDriverParams/NO_NAME_0') create('NO_NAME_0', 'JDBCDriverParams') cd('JDBCDriverParams/NO_NAME_0') cmo.setPasswordEncrypted(db_password) cmo.setUrl(db_url) cmo.setDriverName(db_driver) create('NO_NAME_0', 'Properties') cd('Properties/NO_NAME_0') create('user', 'Property') cd('Property/user') cmo.setValue(db_user) print('Amend template data sources.') cd('/JDBCSystemResource/odiMasterRepository/JdbcResource/odiMasterRepository/JDBCDriverParams/NO_NAME_0') cmo.setPasswordEncrypted(db_password) cmo.setUrl(db_url) cmo.setDriverName(db_driver) cd('Properties/NO_NAME_0/Property/user') cmo.setValue(db_user) cd('/JDBCSystemResource/odiWorkRepository/JdbcResource/odiWorkRepository/JDBCDriverParams/NO_NAME_0') cmo.setPasswordEncrypted(db_password) cmo.setUrl(db_url) cmo.setDriverName(db_driver) cd('Properties/NO_NAME_0/Property/user') cmo.setValue(db_user) print('Create node manager.') cd('/') machine = create(nm_name, 'UnixMachine') cd('Machines/' + nm_name) create(nm_name, 'NodeManager') cd('NodeManager/' + nm_name) set('ListenAddress', host_name) set('ListenPort', int(nm_port)) print('Associate Node Manager with servers.') cd('/Servers/AdminServer') cmo.setMachine(machine) cd('/Servers/odi_server1') cmo.setMachine(machine) print('odi_server1 settings') cd('/Servers/odi_server1') cmo.setListenAddress(host_name) cmo.setListenPort(int(odi_port)) #getDatabaseDefaults() print('Run in production mode.') setOption('ServerStartMode','prod') print('Write the domain and close the template.') setOption('OverwriteDomain', 'true') writeDomain(domain_home) closeTemplate() exit()
The following command creates a new ODI domain.
cd $MW_HOME/oracle_common/common/bin ./wlst.sh /u01/software/create_odi_domain.py
Make sure the "AdminServer" and "ODI_Server1" servers can start/stop without credentials by creating "boot.properties" files.
mkdir -p $DOMAIN_HOME/servers/AdminServer/security/ echo "username=weblogic" > $DOMAIN_HOME/servers/AdminServer/security/boot.properties echo "password=Admin123" >> $DOMAIN_HOME/servers/AdminServer/security/boot.properties mkdir -p $DOMAIN_HOME/servers/odi_server1/security/ cp $DOMAIN_HOME/servers/AdminServer/security/boot.properties $DOMAIN_HOME/servers/odi_server1/security/
Start the AdminServer. It's going to take a few minutes to start.
export MW_HOME=/u01/app/oracle/middleware export WLS_HOME=$MW_HOME/wlserver_10.3 export WL_HOME=$WLS_HOME export DOMAIN_HOME=$MW_HOME/user_projects/domains/odiDomain # Set to the appropriate JAVA_HOME. export JAVA_HOME=/u01/app/oracle/jdk1.7.0_80 export PATH=$JAVA_HOME/bin:$PATH nohup $DOMAIN_HOME/bin/startWebLogic.sh > /dev/null 2>&1 &
Create a file called "set_odi_supervisor.py" in the "/u01/software" directory with the following contents. Remember to adjust the variables at the start of the script to suit your installation.
#!/usr/bin/python print('Set variables.') host_name = 'ol7-odi.localdomain' admin_port = '7001' admin_user = 'weblogic' admin_password = 'Admin123' domain_name = 'odiDomain' supervisor_user = 'SUPERVISOR' supervisor_password = 'SVPasswd1' connect(admin_user,admin_password,'t3://' + host_name + ':' + admin_port) createCred(map="oracle.odi.credmap", key=supervisor_user, user=supervisor_user, password=supervisor_password, desc="Key for Supervisor") disconnect() exit()
The following command creates a supervisor password.
cd $MW_HOME/oracle_common/common/bin ./wlst.sh /u01/software/set_odi_supervisor.py
The installation is now complete, but the agent definition must be created in the Master Repository, which must be done using the ODI Studio GUI tool. This can be done on the server using X, or from your client PC client, connecting to the repository database. The example in the next section is done using X on the server.
ODI Agent Config
If we started the "ODI_server1" managed server now we would see the following type of error in the "ODI_server1.log" file.
<BEA-149231> <Unable to set the activation state to true for the application "oraclediagent". weblogic.application.ModuleException: ODI-1405: Agent OracleDIAgent start failure: the agent is not defined in the topology for master repository.
We have created the physical agent, but we need to create the agent in the Master Repository using the ODI Studio.
$MW_HOME/Oracle_ODI1/oracledi/client/odi.sh
Click the "Connect to Repository..." link.
Click the "+" button.
Enter the connection information and click the "Test" button. If successful, click the "OK" button.
Enter a wallet password and click the "OK" button.
The credentials should now be set, so click the "OK".
Click on the "Topology" tab. Right-click on the "Agents" node and select the "New Agent" menu option.
Set the agent name to "OracleDIAgent", not "OracleDIAgent1" that may be shown by default. Set the host (ol7-odi.localdomain) host and port (8001) values to be consistent with the physical agent definition in the domain. Click the "Save All" icon in the top toolbar.
The agent will now be visible in the tree.
Now the agent topology matches the physical agent definition in the domain, we can start the domain components as described below.
Startup/Shutdown
The database is started and stopped in the normal way.
export ORAENV_ASK=NO export ORACLE_SID=repdevcdb . oraenv export ORAENV_ASK=YES dbstart $ORACLE_HOME dbshut $ORACLE_HOME
Make sure you have the environment set correctly.
export MW_HOME=/u01/app/oracle/middleware export WLS_HOME=$MW_HOME/wlserver_10.3 export WL_HOME=$WLS_HOME export DOMAIN_HOME=$MW_HOME/user_projects/domains/odiDomain # Set to the appropriate JAVA_HOME. export JAVA_HOME=/u01/app/oracle/jdk1.7.0_80 export PATH=$JAVA_HOME/bin:$PATH
With then environment in place we can start, check the status and stop OBIEE using the following commands.
# Start nohup $WLS_HOME/server/bin/startNodeManager.sh > /dev/null 2>&1 & sleep 10 nohup $DOMAIN_HOME/bin/startWebLogic.sh > /dev/null 2>&1 & sleep 120 nohup $DOMAIN_HOME/bin/startManagedWebLogic.sh odi_server1 > /dev/null 2>&1 & # Stop $DOMAIN_HOME/bin/stopManagedWebLogic.sh odi_server1 $DOMAIN_HOME/bin/stopWebLogic.sh
Check out the log files here.
tail -f $DOMAIN_HOME/nodemanager/nodemanager.log tail -f $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log tail -f $DOMAIN_HOME/servers/odi_server1/logs/odi_server1.log
ODI URLs
Once the domain is running the main URLs you will need on the server are as follows.
- WebLogic Console : http://ol7-odi.localdomain:7001/console
- WebLogic Enterprise Manager: http://ol7-odi.localdomain:7001/em
- ODI Console: http://ol7-odi.localdomain:8001/odiconsole
Domain Cleanup
During the process of working out the WLST build of the domain I had to recreate the domain several times. This is how I cleaned up between attempts.
# If the domain processed are running, stop them. $DOMAIN_HOME/bin/stopManagedWebLogic.sh odi_server1 $DOMAIN_HOME/bin/stopWebLogic.sh # Remove the domain entry in the "domain-registry.xml" file. sed '/odiDomain/d' $MW_HOME/domain-registry.xml > $MW_HOME/domain-registry.xml2 mv $MW_HOME/domain-registry.xml2 $MW_HOME/domain-registry.xml # Remove the domain and application files. rm -Rf /u01/app/oracle/middleware/user_projects/domains/odiDomain rm -Rf /u01/app/oracle/middleware/user_projects/applications/odiDomain # Uninstall the repository using the RCU. $MW_HOME/odi_rcu/rcuHome/bin/rcu -silent -dropRepository \ -connectString ol7-odi.localdomain:1521/repdev -dbUser SYS -dbRole SYSDBA \ -schemaPrefix ODIDEV -component ODI -component IAU \ -component OPSS < /u01/software/odi_rcu_paramfile.txt
Now repeat the process from running the RCU onward.
For more information see:
- Oracle Fusion Middleware Documentation
- Oracle Fusion Middleware Installation Guide for Oracle Data Integrator
- Oracle Fusion Middleware System Requirements and Specifications
- Silent Installation and Configuration : OUI, DBCA, WebLogic
Hope this helps. Regards Tim...