At Trivadis we do have the TVD-BasEnv™ to standardizes and simplifies the handling of environments for Oracle database and application server landscapes. This inspired me to create something similar for Oracle Unified Directory environments. Although current versions of TVD-BasEnv™ already support OUD and OID environment. I’ve had the situation, where I need some small and slimmed down environment scripts for dedicated OUD test servers. TVD-BasEnv™ is rather complex and brings a lot of nice features for Oracle Database environments with ASM, RAC, DataGuard and more stuff which is in general not required on a simple OUD server.
My OUD Base is basically just the oudenv.sh
script, some configuration files and a bunch of aliases. The directory structure for the OUD binaries, scripts and configuration files is similar to what we use in TVD-BasEnv™ and based on OFA. It is written in bash and tested on my Oracle Linux VM’s and Raspberry Pi’s with Raspbian Jessy. It should also run on any other bash environment. Um, well OUD and Raspberry Pi? Yes I’ll explain this soon in an other blog post.
Setup the Environment
In general I do use a dedicated OS user for my Oracle installations. To keep it simple and clear I name it oracle. The following commands are run on my Raspberry Pi and therefore as OS user pi. Please adjust it accordingly. Create the user and the corresponding OS groups as pi user with sudo.
pi@oud2go:~ $ sudo adduser oracle Adding user oracle ... Adding new group oracle (1001) ... Adding new user oracle (1001) with group oracle ... Creating home directory /home/oracle ... Copying files from /etc/skel ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for oracle Enter the new value, or press ENTER for the default Full Name []: oracle Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@oud2go:~ $ sudo addgroup oinstall Adding group oinstall (GID 1002) ... Done. pi@oud2go:~ $ sudo addgroup osdba Adding group osdba (GID 1003) ... Done. pi@oud2go:~ $ sudo adduser oracle oinstall Adding user oracle to group oinstall ... Adding user oracle to group oinstall Done. pi@oud2go:~ $ sudo adduser oracle osdba Adding user oracle to group osdba ... Adding user oracle to group osdba Done.
Create an ORACLE_BASE directory which is used for OUD and provide access to OS user oracle.
pi@pi2go:~ $ sudo mkdir -p /u00/app/oracle pi@pi2go:~ $ sudo chown -R oracle:oinstall /u00/app/oracle
My OUD Base is available as Bash Install script with an embedded TAR ( oudbase_install.sh) or as plain TAR file ( oudbase_install.tgz). If you use the TAR file a few manuell configuration steps are required.
Install using oudbase_install.sh
This installation is straightforward as you can see in the usage.
2016-10-15_11:41:58 START: Start of oudbase_install.sh (Version 0.1) with 2016-10-15_11:41:58 INFO : Usage, oudbase_install.sh [-hv] [-b <oracle_base>] 2016-10-15_11:41:58 INFO : [-i <oracle_instance_base>] [-m <oracle_home_base>] [-B <oud_backup_base>] 2016-10-15_11:41:58 INFO : 2016-10-15_11:41:58 INFO : -h Usage (this message) 2016-10-15_11:41:58 INFO : -v enable verbose mode 2016-10-15_11:41:58 INFO : -b <oracle_base> ORACLE_BASE Directory. Mandatory argument. 2016-10-15_11:41:58 INFO : -i <oracle_instance_base> Base directory for OUD instances (default $ORACLE_BASE/instances) 2016-10-15_11:41:58 INFO : -m <oracle_home_base> Base directory for OUD binaries (default $ORACLE_BASE/middleware) 2016-10-15_11:41:58 INFO : -B <oud_backup_base> Base directory for OUD backups (default $ORACLE_BASE/backup) 2016-10-15_11:41:58 INFO : 2016-10-15_11:41:58 INFO : Logfile : /u00/app/oracle/local/log/oudbase_install.log 2016-10-15_11:41:58 ERR : Exit Code 1. Wrong amount of arguments. See usage for correct one.
We will just provide the ORACLE_BASE and use the default values for all other settings.
oracle@pi2go:~ $ ./oudbase_install.sh -v -b /u00/app/oracle 2016-10-15_11:44:03 START: Start of oudbase_install.sh (Version 0.1) with -v -b /u00/app/oracle 2016-10-15_11:44:03 INFO : processing commandline parameter 2016-10-15_11:44:03 Installing OUD Environment 2016-10-15_11:44:03 Create required directories in ORACLE_BASE=/u00/app/oracle 2016-10-15_11:44:03 Create Directory /u00/app/oracle/etc 2016-10-15_11:44:03 Create Directory /u00/app/oracle/local 2016-10-15_11:44:03 Create Directory /u00/app/oracle/backup 2016-10-15_11:44:03 Create Directory /u00/app/oracle/middleware 2016-10-15_11:44:03 Create Directory /u00/app/oracle/instances 2016-10-15_11:44:03 Extracting file into /u00/app/oracle/local bin/ bin/oud_export.sh bin/oud_backup.sh bin/oudenv.sh bin/oudbase_install.sh bin/oud_status.sh config/ certificates/ doc/ etc/ etc/oudtab etc/oudenv.conf etc/oud._DEFAULT_.conf lib/ log/ log/oud_status.log log/oud_export.log log/oud_backup.log log/oudbase_install.log templates/ templates/cron.d/ templates/cron.d/oud templates/.bash_profile templates/ldif/ templates/ldif/oud_pi_init.ldif templates/logrotate.d/ templates/logrotate.d/oud 2016-10-15_11:44:03 Please manual adjust your .profile to load / source your OUD Environment 2016-10-15_11:44:03 END : of oudbase_install.sh
You have to change your bash profile to make sure that the environment is loaded. Just add the following lines.
oracle@pi2go:~ $ vi .profile # Check OUD_BASE and load if necessary if [ "${OUD_BASE}" = "" ] then if [ -f "${HOME}/.OUD_BASE" ] then . "${HOME}/.OUD_BASE" else echo "ERROR: Could not load ${HOME}/.OUD_BASE" fi fi # define an oudenv alias alias oud='. ${OUD_BASE}/bin/oudenv.sh' # source oud environment . ${OUD_BASE}/bin/oudenv.sh
During the next logon you have the OUD Base available
Manual installation using oudbase_install.tgz
Ok, it is not really more complex just un-tar the file in a directory. Normally it is $ORACLE_BASE/local. Other directory probably have to be specified in the config file.
oracle@pi2go:~ $ cd /u00/app/oracle/ oracle@pi2go:~ $ mkdir local oracle@pi2go:~ $ cd local oracle@pi2go:~ $ tar zxvf oudbase_install.tgz
You also have to change your bash profile as mentioned above.
Examples
A few example how to use OUD Base to simplify OUD management.
Change environment to OUD instance oud_pi.
oracle@pi2go:~/ [oud_pi] oud_pi Source environment for OUD Instance oud_pi -------------------------------------------------------------- Instance Name : oud_pi Instance Home : /u00/app/oracle/instances/oud_pi Oracle Home : /u00/app/oracle/middleware/oud_11.1.2.3 Instance Status : up LDAP Port : 1389 LDAPS Port : 1636 Admin Port : 4444 Replication Port: 8989 --------------------------------------------------------------
List available / running OUD instances using oudup or via alias u.
oracle@pi2go:~/ [oud_pi] oudup TYPE INSTANCE STATUS PORT HOME ---- ---------- ------ ---- ---------------------------------- OUD oud_pi up 4444 /u00/app/oracle/instances/oud_pi
Configuration and Architecture
Config Files
The OUD Base does have the following configuration files.
File | Description |
---|---|
.OUD_BASE | This is a simple file in the user home directory. It includes the pointer to the OUD Base directory. This file is used to initiate $OUD_BASE. |
oudtab | oudtab is a simple file which includes all OUD instance and there ports eg. default LDAP port, admin port, SSL port and replication port. |
oudenv.conf | This is the main configuration file for environment variables and aliases. It is loaded when an environment is set or changed. Location of oudenv.conf is $ETC_BASE. |
oud._DEFAULT_.conf | This configuration file for custom environment variables. Location of oud._DEFAULT_.conf is $ETC_BASE. |
oud._INSTANCE_.conf | This configuration file for custom environment variables for a dedicated OUD instance eg. oud_pi Location of oud._oud_pi_.conf is $ETC_BASE. |
Directories and its variables
The following directory, environment variables and aliases are defined and used in OUD Base. Most of them are inspired by OFA (Oracle Flexible Architecture) and TVD-BasEnv™.
ENV Variable | Alias | Path | Description |
---|---|---|---|
$ORACLE_BASE, $cdob | cdob | /u00/app/oracle | Base directory for the oracle binaries |
$OUD_BASE, $cdl | cdl | $ORACLE_BASE/local | OUD Base directory with the scripts, config etc |
cdl.bin | $ORACLE_BASE/bin | Scripts directory in OUD_BASE | |
$ETC_BASE, $etc | etc, cdl.etc | $ORACLE_BASE/etc | OUD Base configuration directory |
$LOG_BASE, $log | log, cdl.log | $ORACLE_BASE/log | OUD Base log directory |
$ORACLE_BASE/doc | OUD Base documentation directory | ||
$ORACLE_BASE/config | Local directory for configuration files, LDIF etc to build an OUD instance | ||
$ORACLE_BASE/certificates | Local directory for certificates | ||
$ORACLE_HOME, $cdh | cdh | $ORACLE_BASE/middleware/oud_11.1.2.3 | Oracle Unified Directory binaries eg. 11.1.2.3 |
$JAVA_HOME | /usr/lib/jvm/jre-1.7.0-oracle-1.7.0.101-1jpp.1.el7.x86_64 | Java used for OUD | |
$OUD_INSTANCE_BASE, $cdib | cdib | $ORACLE_BASE/instances | Base directory for the instance homes |
oud_pi | Alias to set environment for OUD instance oud_pi | ||
$OUD_INSTANCE_HOME, $cdih | cdih | $ORACLE_BASE/instances/oud_pi | OUD Instance Home directory for Instance oud_pi |
$cdic | cdic | $OUD_INSTANCE_HOME/OUD/config | Config directory for OUD instance oud_pi |
$cdil | cdil | $OUD_INSTANCE_HOME/OUD/logs | Log directory for OUD instance oud_pi |
Variables
Variable besides the ones mentioned above.
Variable | Description |
---|---|
$OUD_INSTANCE | Name of the current OUD instance |
$OUD_INST_LIST | List of OUD instances taken from $OUDTAB |
$PWD_FILE | Password file for the OUD instance eg. ${ETC_BASE}/$OUD_INSTANCE_pwd.txt or ${ETC_BASE}/pwd.txt |
$PORT | OUD instance port taken from oudtab file |
$PORT_ADMIN | OUD instance admin port taken from oudtab file |
$PORT_REP | OUD instance replication port taken from oudtab file |
$PORT_SSL | OUD instance SSL port taken from oudtab file |
$OUDTAB | oudtab config file eg. ${ETC_BASE}/oudtab |
Aliases
Alias | Description |
---|---|
dsc | dsconfig including hostname, $PORT_ADMIN and $PWD_FILE |
dsrs | dsreplication status |
oud_pi | OUD Base does generate an alias for each OUD instance based on its name. This allows to easily change the environment from one to an other OUD instance. |
oud INSTANCE | Use oud INSTANCE name to change the environment to a particular OUD instance |
taa | tea will do a tail -f on the OUD instance access log |
tae | tea will do a tail -f on the OUD instance error log |
tas | tea will do a tail -f on the OUD instance server.out log |
tarep | tea will do a tail -f on the OUD instance replication log |
task | task does run a manage-tasks with hostname, port etc parameter |
u | u runs oudup to display the current OUD Instances |
vio | vio opens the oudtab file eg. ${ETC_BASE}/oudtab |
Conclusion
Although there is the possibility to use property files for OUD I’m still happy, that I have a bunch of aliases to set or change a few directories. Eg. jump to the log directory, view config files etc. Feel free to use the OUD Base as it is on your OUD environments at your own risk. It simplifies a few settings in particular if you have multiple OUD instance on one system. You may change, modify the scripts as you like. I can not guarantee, that the scripts do not have any errors or bugs. Please test before you start using them on a production environment.
Files and References
Below you find a few references related to Raspberry Pi, USB OTG or Oracle Unified Directory:
- OUD base environment installation script. It’s a bash script including a TAR. oudbase_install.sh
- OUD base environment as TAR archive without installation script. oudbase_install.tgz
- The genuine Trivadis base environment scripts TVD-BasEnv™
Just uploaded a new version of oudbase_install.sh and oudbase_install.tgz. There was a small issue with the LOG_BASE during setup. It now defaults to /tmp if not defined.
Pingback: Oracle Unified Directory to go on Raspberry Pi Zero | OraDBA
Pingback: Install Oracle Unified Directory 12c the smart way | OraDBA
Pingback: Oracle Unified Directory on Docker | OraDBA