8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | 23c | Misc | PL/SQL | SQL | RAC | WebLogic | Linux

Home » Articles » 12c » Here

Oracle Data Integrator (ODI) 12c (12.2.1.2.6) Silent Installation on Oracle Linux 6 and 7 (OL6 and OL7)

This article demonstrates how to perform a silent installation of Oracle Data Integrator (ODI) 12c (12.2.1.2.6) 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).

Related articles.

Assumptions

To keep this article as brief as possible I'm going to make the following assumptions.

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.

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 openmotif -y
yum install openmotif22 -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 \
 -memoryMgmtType auto_sga \
 -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

Response Files

The following response files are necessary for the silent installations of ODI shown below. The values we are going to amend during the build are shown in bold.

weblogic.rsp

[ENGINE]

#DO NOT CHANGE THIS.
Response File Version=1.0.0.0.0

[GENERIC]

#Set this to true if you wish to skip software updates
DECLINE_AUTO_UPDATES=true

#My Oracle Support User Name
MOS_USERNAME=

#My Oracle Support Password
MOS_PASSWORD=

#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
AUTO_UPDATES_LOCATION=

#Proxy Server Name to connect to My Oracle Support
SOFTWARE_UPDATES_PROXY_SERVER=

#Proxy Server Port
SOFTWARE_UPDATES_PROXY_PORT=

#Proxy Server Username
SOFTWARE_UPDATES_PROXY_USER=

#Proxy Server Password
SOFTWARE_UPDATES_PROXY_PASSWORD=

#The oracle home location. This can be an existing Oracle Home or a new Oracle Home
ORACLE_HOME=###ORACLE_HOME###

#Set this variable value to the Installation Type selected. e.g. Fusion Middleware Infrastructure, Fusion Middleware Infrastructure With Examples.
INSTALL_TYPE=Fusion Middleware Infrastructure

#Provide the My Oracle Support Username. If you wish to ignore Oracle Configuration Manager configuration provide empty string for user name.
MYORACLESUPPORT_USERNAME=

#Provide the My Oracle Support Password
MYORACLESUPPORT_PASSWORD=

#Set this to true if you wish to decline the security updates. Setting this to true and providing empty string for My Oracle Support username will ignore the Oracle Configuration Manager configuration
DECLINE_SECURITY_UPDATES=true

#Set this to true if My Oracle Support Password is specified
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false

#Provide the Proxy Host
PROXY_HOST=

#Provide the Proxy Port
PROXY_PORT=

#Provide the Proxy Username
PROXY_USER=

#Provide the Proxy Password
PROXY_PWD=

#Type String (URL format) Indicates the OCM Repeater URL which should be of the format [scheme[Http/Https]]://[repeater host]:[repeater port]
COLLECTOR_SUPPORTHUB_URL=

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]

#The oracle home location. This can be an existing Oracle Home or a new Oracle Home
ORACLE_HOME=###ORACLE_HOME###

#Set this variable value to the Installation Type selected. e.g. Standalone Installation, Enterprise Installation.
INSTALL_TYPE=Enterprise Installation

odi_rcu_paramfile.txt

###SYS_PASSWORD###
###ODI_SCHEMA_PASSWORDS###
###SUPERVISOR_PASSWORD###
D
###WORK_REPOSITORY###
###WORK_REPOSITORY_PASSWORD###
###ENCRYPTION###

Prepare Response Files

We have used generic response files containing placeholders for build-specific parameters. Here we will replace the placeholders with the values for our build. If you want to adjust them later, remember to switch back to the original response files before running the commands again.

# Parameter settings.
export ORACLE_HOME=/u01/app/oracle/middleware
export SYS_PASSWORD=SysPasswd1
export PREFIX=ODIDEV
export ODI_SCHEMA_PASSWORDS=OdidevPasswd1
export SUPERVISOR_PASSWORD=SVPasswd1
export WORK_REPOSITORY=WORKREP
export WORK_REPOSITORY_PASSWORD=WRPasswd1
export ENCRYPTION=AES-128

# You will need these later.
export HOST_NAME=ol7-odi.localdomain
export WEBLOGIC_PASSWORD=Admin123
export DOMAIN_NAME=odiDomain
export JDBC_URL=jdbc:oracle:thin:@ol7-odi.localdomain:1521/repdev
export JDBC_URL_RCU=ol7-odi.localdomain:1521:repdev
export STB_USER=${PREFIX}_STB
export STB_PASSWORD=$ODI_SCHEMA_PASSWORDS
export SUPERVISOR_USER=SUPERVISOR
export SUPERVISOR_PASSWORD=SVPasswd1

# Replace placeholders
cd /u01/software
sed -i -e "s|###ORACLE_HOME###|$ORACLE_HOME|g"                        ./odi.rsp
sed -i -e "s|###ORACLE_HOME###|$ORACLE_HOME|g"                        ./weblogic.rsp

sed -i -e "s|###SYS_PASSWORD###|$SYS_PASSWORD|g"                          ./odi_rcu_paramfile.txt
sed -i -e "s|###ODI_SCHEMA_PASSWORDS###|$ODI_SCHEMA_PASSWORDS|g"          ./odi_rcu_paramfile.txt
sed -i -e "s|###SUPERVISOR_PASSWORD###|$SUPERVISOR_PASSWORD|g"            ./odi_rcu_paramfile.txt
sed -i -e "s|###WORK_REPOSITORY###|$WORK_REPOSITORY|g"                    ./odi_rcu_paramfile.txt
sed -i -e "s|###WORK_REPOSITORY_PASSWORD###|$WORK_REPOSITORY_PASSWORD|g"  ./odi_rcu_paramfile.txt
sed -i -e "s|###ENCRYPTION###|$ENCRYPTION|g"                              ./odi_rcu_paramfile.txt

WebLogic Installation

Set the required environment variables.

export MW_HOME=/u01/app/oracle/middleware
export WLS_HOME=$MW_HOME/wlserver
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.8.0_121
export PATH=$JAVA_HOME/bin:$PATH

Install JDK8.

cd /u01/app/oracle/
tar -xvzf /u01/software/jdk-8u121-linux-x64.tar.gz

Create the middleware location.

mkdir -p /u01/app/oracle/middleware

Unzip the WebLogic software.

cd /u01/software
unzip -o fmw_12.2.1.2.0_infrastructure_Disk1_1of1.zip

Install WebLogic in silent mode.

$JAVA_HOME/bin/java -Xmx1024m -jar /u01/software/fmw_12.2.1.2.0_infrastructure.jar \
  -silent -responseFile /u01/software/weblogic.rsp \
  -invPtrLoc /u01/software/oraInst.loc

ODI Installation

Unzip the software.

cd /u01/software
unzip -o fmw_12.2.1.2.6_odi_Disk1_1of2.zip
unzip -o fmw_12.2.1.2.6_odi_Disk1_2of2.zip

Install the ODI software in silent mode.

$JAVA_HOME/bin/java -jar fmw_12.2.1.2.6_odi.jar -silent -responseFile /u01/software/odi.rsp \
  -invPtrLoc /u01/software/oraInst.loc

Repository Configuration Utility (RCU)

Use the following command to run the RCU in silent mode.

$MW_HOME/oracle_common/bin/rcu -silent -createRepository \
  -connectString ol7-odi.localdomain:1521/repdev -dbUser SYS -dbRole SYSDBA \
  -useSamePasswordForAllSchemaUsers true \
  -schemaPrefix ODIDEV \
  -component ODI -component IAU -component IAU_APPEND \
  -component IAU_VIEWER -component OPSS < /u01/software/odi_rcu_paramfile.txt

ODI Configuration

Create a file called "create_odi_domain.py" in the "/u01/software" directory with the following contents. This is a generic file that uses placeholders which we will replace later.

#!/usr/bin/python

print('Set variables.')
host_name = '###HOST_NAME###'
admin_user = 'weblogic'
admin_password = '###WEBLOGIC_PASSWORD###'
admin_port = '7001'
mw_home = '###ORACLE_HOME###'
domain_name = '###DOMAIN_NAME###'
domain_home = mw_home + '/user_projects/domains/' + domain_name   # Check path is correct.
wl_home = mw_home + '/wlserver'
db_url = '###JDBC_URL###'
db_user = '###STB_USER###'   
db_password = '###STB_PASSWORD###'
db_driver = 'oracle.jdbc.OracleDriver'
odi_port = '8001'
supervisor_user = '###SUPERVISOR_USER###'
supervisor_password = '###SUPERVISOR_PASSWORD###'
nm_name = 'LocalODIMachine'
nm_port = 5556

print('Create domain (' + domain_name + ').')
print('Load templates.')
selectTemplate('Basic WebLogic Server Domain')
selectTemplate('Oracle Enterprise Manager Plugin for ODI')
selectTemplate('Oracle Data Integrator - Agent')
selectTemplate('Oracle Data Integrator - Console')
selectTemplate('Oracle Data Integrator - JRF Async Web Services')
loadTemplates()

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 supervisor credential.')
cd('/SecurityConfiguration/base_domain')
cmo.setUseKSSForDemo(false)
cd('/Credential/TargetStore/oracle.odi.credmap/TargetKey/SUPERVISOR')
create('c','Credential')
cd('Credential')
cmo.setUsername(supervisor_user)
cmo.setPassword(supervisor_password)

print('Create data source.')
cd('/JDBCSystemResource/LocalSvcTblDataSource/JdbcResource/LocalSvcTblDataSource/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 Nanager 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()

Replace the placeholders with the settings we defined earlier.

# Replace placeholders
sed -i -e "s|###HOST_NAME###|$HOST_NAME|g"                        ./create_odi_domain.py
sed -i -e "s|###WEBLOGIC_PASSWORD###|$WEBLOGIC_PASSWORD|g"        ./create_odi_domain.py
sed -i -e "s|###ORACLE_HOME###|$ORACLE_HOME|g"                    ./create_odi_domain.py
sed -i -e "s|###DOMAIN_NAME###|$DOMAIN_NAME|g"                    ./create_odi_domain.py
sed -i -e "s|###JDBC_URL###|$JDBC_URL|g"                          ./create_odi_domain.py
sed -i -e "s|###STB_USER###|$STB_USER|g"                          ./create_odi_domain.py
sed -i -e "s|###STB_PASSWORD###|$STB_PASSWORD|g"                  ./create_odi_domain.py
sed -i -e "s|###SUPERVISOR_USER###|$SUPERVISOR_USER|g"            ./create_odi_domain.py
sed -i -e "s|###SUPERVISOR_PASSWORD###|$SUPERVISOR_PASSWORD|g"    ./create_odi_domain.py

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/
echo "username=weblogic" > $DOMAIN_HOME/servers/ODI_server1/security/boot.properties
echo "password=Admin123" >> $DOMAIN_HOME/servers/ODI_server1/security/boot.properties

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/odi/studio/odi.sh

Click the "Connect to Repository..." link.

ODI Studio

Click the "+" button.

ODI Studio

Enter the connection information and click the "Test" button. If successful, click the "OK" button.

ODI Studio

Enter a wallet password and click the "OK" button.

ODI Studio

The credentials should now be set, so click the "OK".

ODI Studio

Click on the "Topology" tab. Right-click on the "Agents" node and select the "New Agent" menu option.

ODI Studio

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.

ODI Studio

The agent will now be visible in the tree.

ODI Studio

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
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.8.0_121
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 $DOMAIN_HOME/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
$DOMAIN_HOME/bin/stopNodeManager.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.

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
$DOMAIN_HOME/bin/stopNodeManager.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/oracle_common/bin/rcu -silent -dropRepository \
  -connectString ol7-odi.localdomain:1521/repdev -dbUser SYS -dbRole SYSDBA \
  -schemaPrefix ODIDEV -component ODI -component IAU  -component IAU_APPEND \
  -component IAU_VIEWER -component OPSS < /u01/software/odi_rcu_paramfile.txt

Now repeat the process from running the RCU onward.

For more information see:

Hope this helps. Regards Tim...

Back to the Top.