“Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. As a result, IT can ship faster and run the same app, unchanged, on laptops, data center VMs, and any cloud.” For additional information about Docker, please visit the Docker website.

Oracle has made it clear that the support for Docker in Oracle Linux 6 and 7 is limited at this time. Please refer to the Doc ID – 1921163.1: Limited Support for Docker Running on Oracle Linux Announced: Docker in Addons Channel Now

  • Oracle support is limited to the version of Docker built by and downloaded from Oracle. Support is not provided for the upstream binary packages downloaded from the upstream Docker site.
  • Oracle support for Docker is limited to customers with either Basic or Premier Oracle Linux Support Subscriptions.
  • Oracle only provides Docker server binary packages for Oracle Linux 6 and Oracle Linux 7 (x86_64).
  • Oracle support is limited to severity 2 service requests and lower. Severity 1 service requests will not be accepted for Docker.
  • Support is limited to assistance with the initial installation of Docker and subsequent configuration of Docker to enable downloading, creation and running of Dockerized applications.
  • Use of the btrfs storage engine is only supported on the Unbreakable Enterprise Kernel Release 3 on both Oracle Linux 6 and Oracle Linux 7.
  • Oracle Linux support does not include support for any Oracle or 3rd-party applications running within a Docker container on Oracle Linux.
  • Oracle will periodically release updates from the upstream project in the addons channel. Interim patching and bug fixing will not be available.

This blog article focuses on configuring VirtualBox to create a new VM for Oracle Linux 7 and installing Oracle Linux 7 from the ISO image as a guest operating system. The Oracle Linux 7 ISO image can be downloaded from edelivery.oracle.com – Oracle Software Delivery Cloud. You must have a valid Oracle Account (free) to download the Linux ISO.

Look in the near future for a VMware Fusion and RedHat 7 version of this post. For some reason when this post went out, the latest version of VMware Fusion did not recognize the virtual disk or the network interface assigned to the VM with RedHat 7 (Oracle Linux 7 worked fine). Stay tuned as that problem will probably be resolved soon.

As far as this blog post is concerned, the follow-up for this post will be on setting up docker for Oracle Linux 6 and Oracle Linux 7.

Configuring VirtualBox


To create a VM, click on the New button on the top left corner and provide a descriptive name for the VM, location of the VM and select the type of OS. The name that is specified will be used to identify the VM configuration:

2014 09 01 01 51 04

On a side note, here’s the list of flavors of Linux supported by VirtualBox. We will choose Oracle (64Bit) for this VM.
2014 09 01 10 31 57

Once the required information is provided, click on the Continue button

2014 09 01 01 51 18

Next configure the amount of memory allocated for this VM. We will allocate 4GB for this VM and click on the Continue button.

2014 09 01 01 51 35
We can modify the virtual disk in another screen later in the configuration process. Take the default and click on the Continue button go to the “Hard drive file type” screen.

2014 09 01 01 51 50
Unless you are planning for this virtual disk to be compatible with VMware or other virtualization technology, select the VDI (VirtualBox disk format) and click on the Continue button.

2014 09 01 01 52 01
Leave the Dynamically allocated option to choose a thinly provisioned virtual disk. If you want better performance for RAC ASM disks, you can choose the option for Fixed size. For the Fixed size disk, VirtualBox will pre-allocate all the space up front. Click on the Continue button to proceed with the configuration.

2014 09 01 01 52 14
For this installation, we will allocate 64GB for the root and /u01 file systems. You may opt to create multiple virtual disks, one for the root file system and another one for the /u01 file system. Click on Create. If you chose earlier for Fixed size, when you click on the Create button, you will be waiting here for a while.

2014 09 01 01 52 27
Once the VDI disk is created with the specified size (thin for dynamically allocated or thick for fixed size provisioned), you will be re-directed back to the main screen.

2014 09 01 01 53 38
Now, let’s configure our VM, in particular, the CD/DVD Drive. Click on the Settings button on the top left corner next to the New button.

2014 09 01 01 53 53
Click on the Storage button on the top (in the middle). On the left side of the screen, choose the IDE controller and Click on the Empty CD icon. Then on the right of the screen, click on the CD image icon for the CD/DVD drive and click on the “Choose a virtual CD/DVD disk file …”. Find your ISO image for Oracle Linux 7 from the file previewer and select the ISO. From the Storage screen, click on the OK button to go back to the main Oracle VM VirtualBox Manager screen.

Installing Oracle Linux 7


From the Oralce VM VirtualBox Manager screen, select your VM that you just created and click on the green Start icon on the top of the screen.
2014 09 01 01 54 51
Hit the arrow key up once and choose the option to Install Oracle Linux 7 and hit the Enter key

2014 09 01 01 55 29
Keep the default English language for United States and click on Continue

2014 09 01 01 56 01
As you can see, the installation process looks significantly different from Oracle Linux 6. Click on the INSTALLATION DESTINATION button.

2014 09 01 12 23 03
Select the “I will configure partitioning.” radio button and click on the Done button on the top left hand corner.

2014 09 01 12 23 54
In the MANUAL PARTITIONING screen, click on the “Click here to create them automatically” URL.

2014 09 01 12 19 22
In our example, we will remove the /home file system and just let the root file system house all the file systems, /home and /u01. To remove the /home file system, click on the /home file system and click on the – sign on the bottom corner of the screen.

CAVEAT: You do NOT want to do this outside your lab. Even in your DEV or non-PROD environment, you will want to carve out a separate file system for the /home file system. You ALWAYS want to carve out a separate /u01 file system for all your Oracle binaries. Click on the Done button on the top left corner.

* Notice that the default file system is XFS (not EXT4 in Oracle or RedHat Linux 6)

2014 09 01 02 07 41
You will be presented with a warning screen just to confirm and Accept the Changes that we made to remove the /home file system. Click on the Accept Changes button.

2014 09 01 02 08 02
You will be routed back to the main Installation Summary screen. By default, the minimal installation option is the installation method of choice for Oracle and Red Hat Linux. If you want a GUI installation, you will want to select the SOFTWARE SELECTION button and choose the KDE desktop. For security purposes, we only recommend the minimal installation option.

To configure the network and hostname, you should click on the NETWORK & HOSTNAME button. The first thing that you need to do is the specify a new Hostname on the bottom left corner.

2014 09 01 12 30 16
Turn on the Network interface by sliding the switch to the on position.

In our case, we will want to assign a static IP address and DNS Servers. Click on the Configure button on the bottom right corner.

2014 09 01 12 32 54
Add all the specifics for your IP address, gateway, subnet and DNS servers. Click on the Save button to save the network settings. You will be re-directed to the NETWORK & HOSTNAME screen. Click on the Done button to go back to the INSTALLATION SUMMARY screen.

Optionally, you may want to choose to install a GUI desktop. This is never recommended for a production environment. For ease of maintenance, you can click on the SOFTWARE SELECTION button and choose to install a “Server with GUI” option and choose the KDE desktop. Click on the Done button after you select all the options that you want installed.

2014 09 01 12 41 08
Once all the configuration is complete, you can click on the Begin Installation button.

2014 09 01 02 08 47
As the installation is progressing, you will see 2 red warnings indicating that the root password is not set and no users are created. At a minimum, click on the Root Password icon to supply a password for the root account to administer the system. Provide the secure password and click on the Done button on the top left corner.

Note: If the root password is insecure, you will be prompted to click on the Done button again to proceed with the insecure password.

2014 09 01 02 10 59

From the Configuration screen, click on the Reboot button.

2014 09 01 02 11 35
Once the VM reboots, you will be directed to the login prompt. Since we did a bare minimal installation, we will not enter into a GUI mode.

2014 09 01 02 11 59

Once we login, we can check /etc/oracle-release file and confirm that we are running an Oracle Linux Server 7 distribution of Linux.

Chose KDE GUI DESKTOP


If you chose the GUI Desktop option earlier, when the system reboots, you will be directed to perform the initial setup.

2014 09 01 13 12 22
Click on the LICENSE INFORMATION icon

2014 09 01 13 12 38
Click on the checkbox to accept the license agreement and click on the Done button on the top left corner. You will be re-directed to the INITIAL SETUP screen. Click on the FINISH CONFIGURATION button to proceed.

2014 09 01 13 17 11
For a production environment, you will always want to enable KDUMP for system crash debugging. Click on the Forward button on the bottom right to continue.

2014 09 01 13 18 51
You can configure your system for software updates by providing credentials to Oracle’s Unbreakable Linux Network. We do not want to setup our system for software updates at this time. Click on the Forward button on the bottom right to continue.

2014 09 01 13 20 55
Click on the button “No thanks, I’ll connect later.”

2014 09 01 13 21 54
Click on the Forward button again

2014 09 01 13 23 03
Select English (United States) and Click on Next

2014 09 01 13 23 58
Click on English (US) and Click on Next

2014 09 01 13 25 25
You will need to create a local account and click on Next

2014 09 01 13 26 50
Choose your location from the big list of cities and click on Next

2014 09 01 13 27 35
For Oracle installations, we do not care for online accounts. You can skip this step and click on the Next button to proceed.

2014 09 01 13 33 40
Click on the “Start using Oracle Linux Server” button and enjoy the GUI desktop.

Posted by Charles Kim, Oracle ACE Director


Lot of our customers seem to be confused about the licensing of Oracle management packs. As we install and configure OEM for our customers, we tell them to be careful to leverage only the features that they are licensed for. To clarify for our customers and others, I decided to detail out when you need to pay for certain licenses and what you are allowed to execute for free if you do not want to pay (or cannot afford to pay) for licenses of Oracle management packs. To start, here’s what you are allowed to monitor without paying for licenses:

• Histograms
• Metrics
• OS statistics
• Optimizer statistics
• SQL Traces
• SQL statistics
• Service statistics
• Statspack
• System statistics
• Time model
• Wait model

Starting in Oracle Database 11g, you can cautiously leverage the CONTROL_MANAGEMENT_PACK_ACCESS initialization parameter to control access or disable the packs. This parameters accepts the following parameters:

• NONE
• DIAGNOSTIC
• DIAGNOSTIC+TUNING

In Oracle 12c Release 1 (12.1), the default value for the CONTROL_MANAGEMENT_PACK_ACCESS parameter for Oracle Enterprise Edition is “DIAGNOSTIC+TUNING”. For Standard edition, the default value is set to NONE.

Nowadays, most of Oracle Sales folks are trained to sell the Diagnostic and Tuning pack as part of every database. You should expect this from experienced Oracle Sales folks. You may even get a response for a sales person indicating how can you successfully support or maintain a business critical database without leveraging these features.

Let’s continue our discussion to talk about the Database Diagnostic Pack. Usage of the following feature require licensing the Database Diagnostics Pack:

• Active Session History (ASH)
• Automatic Database Diagnostic Monitor (ADDM)
• Automatic Workload Repository
• Blackouts
• Dynamic metric baselines
• Event history and metric history (database and host)
• Event notifications: notification methods, rules, and schedules
• Monitoring templates
• Performance monitoring (database and host)

You will also have to pay for the database diagnostic pack if you leverage any of the following database stored procedures and packages:

• DBMS_ADDM
• DBMS_ADVISOR
• DBMS_WORKLOAD_REPOSITORY

If you leverage the following view, you will also end up paying for the diagnostic pack:

• V$ACTIVE_SESSION_HISTORY view
• Views with DBA_ADVISOR_ prefix
• Views with DBA_ADDM_ prefix
• Views with DBA_HIST_ prefix

If you leverage any of the SQL scripts from the $ORACLE_HOME/rdbms/admin directory, you will be liable for the diagnostic pack:

• aawrload.sql
• addmrpti.sql
• addmrtp.sql
• ashrpt.sql
• ashrpti.sql
• awrddrpi.sql
• awrddrpt.sql
• awrextr.sql
• awrextr.sql
• awrinfo.sql
• awrload.sql
• awrrpt.sql
• awrrpti.sql
• awrsqrpi.sql
• awrsqrpt.sql
• spawrrac.sql

Usage of the following feature require the Database Tuning Pack:

• Automatic Plan Evolution of SQL Plan Management
• Automatic SQL Tuning
• Reorganize objects
• SQL Access Advisor
• SQL Monitoring
• SQL Profiles
• SQL Tuning Advisor
• SQL Tuning Sets

The Tuning Pack has a direct dependency on the Diagnostic Pack. Stated in another way, if you license the Tuning Pack, you will have to also license the Diagnostic Pack.

Similarly, the usage of any of the stored procedures or packages, views or SQL scripts will incur license of the Database Tuning Pack:

• DBMS_ADVISOR package
• DBMS_SQLTUNE package
• V$SQL_MONITOR view
• V$SQL_PLAN_MONITOR view
• sqltrpt.sql report found in the $ORACLE_HOME/rdbms/admin/ directory

Usage of the following feature require the Database Configuration Management Pack:

• Clone Database
• Clone Oracle Home
• Compare configuration
• Database and Host Configuration
• Deployments
• Patch Database and View Patch Cache
• Patch staging
• Policies
• Search configuration

If you are concerned about a potential Oracle license violation or wandering if you may be using a feature/option that you should not be, you can execute the following SQL code against your database and confirm that you have or have not used licensable features or options:


col name for a45
col description for a40 word wrapped
col feature_info for a35
set lines 266
set pages 66
select name, description, version, detected_usages,
       currently_used, first_usage_date, last_usage_date,
       feature_info
from DBA_FEATURE_USAGE_STATISTICS
where detected_usages > 0
/


Lot of my customers migrate databases from Solaris or AIX to Red Hat or Oracle Linux. I see more AIX databases being migrated to Linux than Solaris but this is probably just a reflection of the customers that I am involved with. Here’s a simple diagram that I created for a customer in the financial sector (of course, all confidential information is removed) who migrated from AIX to Red Hat Linux.

Shareplex Zero Downtime Database Migration Strategy

This same strategy can be leveraged to migrate customers from AIX/Solaris to Linux on a virtualized infrastructure or even AIX/Solaris to Exadata depending on the target platform. We do see more VMware customers than Oracle VM customers who want to migrate from a big endianness platform to a little endianness platform. I’ve got this entire transportable tablespace (TTS) migration almost automated. It is definitely scripted all the way through and have thoroughly tested the scripts in several customers. I guess I need to “put that lipstick on the pig” and GUI-ize it and productize the scripts to provide an additional value to my customers.

In this blog, everything starts with Shareplex. We need to plan for Shareplex installation on the production database servers (both source and target) couple of weeks prior to the final production cut-over date. We ask for couple of weeks as we are likely to encounter firewall ports that need to be opened between the AIX/Solaris database server to the new Linux servers. We will install Shareplex on both AIX and Linux and start Shareplex on both environments. On the Linux side, the skeleton database should also be pre-created and all the Oracle software installed and patched. Also on the Linux side, we will need to stop the post process (we will define what the post process is later).

On the source system (in our example AIX database), we will define the Sharplex configuration which identifies all the schemas or schema.tables that need to be replicated from the source database to the target database (in our example Linux database). I have a script that I can share which will generate the configuration file depending on which approach you choose. Once we define and activate the configuration, the capture process will start reading the redo logs or archive logs on the source system for changes to objects listed in the configuration. The Export process runs on the source system and reads data from the export queue and sends it across the network to the target system. The import process works directly with the export process. The import process runs on the target system to receive data and build a post queue. We may have more than one export and import process; they are always paired so if we have 2 export processes, we will have 2 import processes. By default, we have one of each. The post process also runs on the target system and reads the post queue, constructs SQL statements, and applies the SQL statements to replicated objects. We may have one or more post processes depending on performance design and considerations.

Depending on the size of the database and the approach that we take (RMAN image copy, datapump, export/import, CTAS over network, etc), the database cloning process can take 1 hours, 1/2 day, 1 day, 1 week or longer. We need to architect our zero downtime migration so that with any of these cloning options, the business perceives a zero downtime or a near zero downtime database migration. So how do we do that? We defined all the processes involved with Shareplex at a high-level. Let’s see how we can leverage our knowledge to start the zero downtime migration efforts. Earlier we discussed that we have a configuration file which defines the objects that need to be replicated. We need to activate our configuration so that the capture process will start reading redo logs/archivelogs and generating Shareplex queues. Once we activate our configuration, changes on the source system will be captures, exported and imported to the target system. Remember earlier, we stopped our post process as part of our high-level installation overview. All the changes from the source system will be sent to the target system (as we stopped the post process) and will accumulate for the entire duration of the migration window until we start the post process. We will need to size the target Shareplex file system with proper design considerations so that the file system can house all the Shareplex transaction queue files.

If you look at the top left corner of the diagram, we start with the RMAN image copy of the database to a file system. If you are on AIX, this can be a Veritas file system. If you cannot afford Veritas, you can perform a RMAN backup to a NFS file system. For VLDB databases, you can perceive the performance differences between a locally mounted file system versus a NFS file system. If you happen to have 10GigE available, you may not notice much performance differences.

The RMAN image copy strategy involves performing incremental update. We will perform an initial level 0 image copy backup of the database and take a incremental level 1 backup numerous times with the intention of updating the image copy with the incremental updates (aka Forever Incremental or Incrementally Updated Backups). Make sure to have block change tracking enabled before you start this process.

In this diagram, we also introduce an AIX staging server near the production database server. If we look at the transportable tables architecture, we must put the tablespaces in read-only mode to perform the TTS metadata datapump export. If you introduce the staging server, you simplify your approach and can eliminate any of the migration activity (such as putting the database in read-only mode) on the production database.

We need to go through the steps to synchronize the production database and the image copy database on the staging server. We can perform the final incremental level 1 backup update and/or even apply archivelogs to the database on the staging server as necessary depending on your approach.

  • This is where we need to decide if we want to work with SCNs and perform a zero downtime migration or take a little outage and have some flexibility. Some of our customers can afford the little downtime and some of our customers have told us that it must be zero downtime.
  • The staging server is needed so that you do not have to put the production database in read only mode for the duration that the TTS export is running

Next, we open the copied database with the resetlog option. Once the database is open, we issue the commands to put the entire database in read-only mode and copy the database files (in the absence of NFS or Veritas) to the Linux server. If we have Veritas in the equation, we can simply swing the file system to the Linux server and mount the volume. If we are using NFS, we simply present the NFS share to the Linux OS and mount the NFS share. For Solaris folks, we can mount a Solaris file system on Linux in read only mode and Veritas is not needed.

For the next step, this is where your datapump expertise starts to pay off. We need to perform a TTS export of the tablespaces that we are migrating over from AIX to Linux. The TTS datapump export is relatively simple for those who have done this before but can be a little intimidating to some who are new to this process. Once we are complete with the TTS metadata export, we need to SFTP the metadata export and log to the Linux server. After this step, we no longer need the staging server and can be shutdown. We want to the TTS export log so that we can parse the log to generate our RMAN endian conversion script. In our example, we are going to ASM so the RMAN endianness conversion will place the datafilee inside of ASM. The amount of time to migrate the database from file system to ASM will vary on the source and target storage array and wether we are talking 10gigE, bonded 1gigE, 4gig HBAs, 8gig HBAs or IB. Even for the slower HBA on older storage arrays, we can effectively drive 1 TB of endianness conversion per hour.


Most production database and e-business suite application servers do not allow access to the public-yum repository. If your company happens to be super secure, they may not even allow the development servers to access any of the servers outside their local network. The following set of instructions are instrumental if you happen to fall into either one of these situations.

In this blog, I will step you through the process to provision an E-Business Suite application server. The steps are incredibly easy and allows you to leverage the existing DVD or ISO image that we downloaded from edelivery.oracle.com. We assume that you have already installed Oracle Enterprise 5 Update 10 but these examples are applicable to any flavor of Oracle Linux 5/6 or even Red Hat 5/6 operating systems (not as clean cut but stay tuned as we will show you how you can do this). We strongly encourage the minimalistic installation of Linux. Not only does it make your environment more secure, but it also makes your environment easier to manage and update/upgrade. In addition, we assume that you have downloaded the EBS Pre Installation RPMs and required prerequisites from the
Linux Preparation for Oracle E-Business Suite R12 Installation blog article.

We heavily leverage yum so that we can easily mitigate the issues with RPM dependencies and install the RPMs that we need without issues. We start the process by building a local yum repository from the DVD image. First mount the DVD:

————————————————————————————————————————

# cd /mnt
# mkdir oel510
# mount /dev/cdrom /mnt/oel510 -t iso9660 -o ro

————————————————————————————————————————
Second, view the file that we need to create a local yum repository of the DVD

# cat /mnt/oel510/.discinfo

[root@ebs2 yum.repos.d]# cat /mnt/oel510/.discinfo
1380762881.301333
Oracle Linux Server 5.10
x86_64
1,2,3,4,5
Server/base
Server/RPMS
Server/pixmaps

————————————————————————————————————————
Leveraging the mediaid number from the DVD .discinfo file, we can create a custom repo file in /etc/yum.repos.d

[root@ebs2 yum.repos.d]# cat vna.repo
[viscosity]
mediaid=1380762881.301333
name=Local Viscosity Repo
baseurl=file:///mnt/oel510/Server
enabled=1
gpgcheck=no

————————————————————————————————————————————————————————————
Test our local yum repository by installing the libXp RPM. This happens to be a required prerequisite for the openmotif21 RPM so we will kill two birds with one stone.

[root@ebs2 yum.repos.d]# yum install libXp
Loaded plugins: rhnplugin, security
This system is not registered with ULN.
You can use up2date --register to register.
ULN support will be disabled.
viscosity                                                                                        | 1.1 kB     00:00     
viscosity/primary                                                                                | 1.5 MB     00:00     
viscosity                                                                                                     3365/3365
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package libXp.i386 0:1.0.0-8.1.el5 set to be updated
---> Package libXp.x86_64 0:1.0.0-8.1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                  Arch                      Version                          Repository                    Size
========================================================================================================================
Installing:
 libXp                    i386                      1.0.0-8.1.el5                    viscosity                     22 k
 libXp                    x86_64                    1.0.0-8.1.el5                    viscosity                     23 k

Transaction Summary
========================================================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)

Total download size: 45 k
Is this ok [y/N]: y
Downloading Packages:
------------------------------------------------------------------------------------------------------------------------
Total                                                                                    35 MB/s |  45 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : libXp                                                                                            1/2 
  Installing     : libXp                                                                                            2/2 

Installed:
  libXp.i386 0:1.0.0-8.1.el5                                libXp.x86_64 0:1.0.0-8.1.el5                               

Complete!

————————————————————————————————————————————————————————————
Install the 2 RPMs that are prerequisites for the Oracle EBS Pre Install RPM. We will leverage the rpm -ihv command to manually install the two RPMs:

[root@ebs2 ~]# rpm -ihv openmotif21-2.1.30-11.EL5.i386.rpm xorg-x11-libs-compat-6.8.2-1.EL.33.0.1.i386.rpm
Preparing...                ########################################### [100%]
   1:xorg-x11-libs-compat   ########################################### [ 50%]
   2:openmotif21            ########################################### [100%]

————————————————————————————————————————
Important Notes:
1. yum local install or yum install will fail due to missing public key check
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 1e5e0159

Public key for oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm is not installed
2. You can still leverage the oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm but need to add an option to the yum command to disable gpg signature checking. Issue the “yum -h” command for all the options.

————————————————————————————————————————
Leveraging the oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm and with the localinstall option, we will be able to fully take advantage of the EBS pre install RPM even if our EBS server does not have access to the public yum repository:

[root@ebs2 ~]# yum --nogpgcheck localinstall  oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm
Loaded plugins: rhnplugin, security
This system is not registered with ULN.
You can use up2date --register to register.
ULN support will be disabled.
Setting up Local Package Process
Examining oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm: oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64
Marking oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package oracle-ebs-server-R12-preinstall.x86_64 0:1.0.0-4.el5 set to be updated
--> Processing Dependency: /usr/bin/odbcinst for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: /usr/lib/gcc/i386-redhat-linux/4.1.1/libstdc++.a for package: oracle-ebs-server-R12-preinstall
Importing additional filelist information
--> Processing Dependency: /usr/lib/libaio.so for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: /usr/lib/libc.so for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: /usr/lib/libodbccr.so for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: /usr/lib64/libodbccr.so for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: elfutils-libelf-devel for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: elfutils-libelf-devel-static for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: gcc for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: gcc-c++ for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: glibc-devel for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: glibc-headers for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: libaio-devel for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: libgdbm.so.2 for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: libstdc++-devel for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: sysstat for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: xorg-x11-xinit for package: oracle-ebs-server-R12-preinstall
--> Running transaction check
---> Package elfutils-libelf-devel.x86_64 0:0.137-3.el5 set to be updated
---> Package elfutils-libelf-devel-static.x86_64 0:0.137-3.el5 set to be updated
---> Package gcc.x86_64 0:4.1.2-54.el5 set to be updated
---> Package gcc-c++.x86_64 0:4.1.2-54.el5 set to be updated
---> Package gdbm.i386 0:1.8.0-28.el5 set to be updated
---> Package glibc-devel.i386 0:2.5-118 set to be updated
---> Package glibc-headers.x86_64 0:2.5-118 set to be updated
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers
--> Processing Dependency: kernel-headers for package: glibc-headers
---> Package libaio-devel.i386 0:0.3.106-5 set to be updated
---> Package libstdc++-devel.i386 0:4.1.2-54.el5 set to be updated
---> Package sysstat.x86_64 0:7.0.2-12.0.1.el5 set to be updated
---> Package unixODBC.x86_64 0:2.2.11-10.el5 set to be updated
--> Processing Dependency: unixODBC-libs = 2.2.11-10.el5 for package: unixODBC
--> Processing Dependency: libodbcinst.so.1()(64bit) for package: unixODBC
--> Processing Dependency: libodbc.so.1()(64bit) for package: unixODBC
---> Package unixODBC-devel.i386 0:2.2.11-10.el5 set to be updated
--> Processing Dependency: libtdsS.so.1 for package: unixODBC-devel
--> Processing Dependency: liboraodbcS.so.1 for package: unixODBC-devel
--> Processing Dependency: libesoobS.so.1 for package: unixODBC-devel
--> Processing Dependency: libboundparam.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcnnS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcminiS.so.1 for package: unixODBC-devel
--> Processing Dependency: liboplodbcS.so.1 for package: unixODBC-devel
--> Processing Dependency: libmimerS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcdrvcfg1S.so.1 for package: unixODBC-devel
--> Processing Dependency: libgtrtst.so.1 for package: unixODBC-devel
--> Processing Dependency: libsapdbS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbctxtS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbccr.so.1 for package: unixODBC-devel
--> Processing Dependency: libnn.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcinst.so.1 for package: unixODBC-devel
--> Processing Dependency: libtemplate.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcdrvcfg2S.so.1 for package: unixODBC-devel
---> Package unixODBC-devel.x86_64 0:2.2.11-10.el5 set to be updated
---> Package xorg-x11-xinit.x86_64 0:1.0.2-15.el5 set to be updated
--> Processing Dependency: xauth for package: xorg-x11-xinit
--> Running transaction check
---> Package kernel-headers.x86_64 0:2.6.18-371.el5 set to be updated
---> Package unixODBC-libs.i386 0:2.2.11-10.el5 set to be updated
---> Package unixODBC-libs.x86_64 0:2.2.11-10.el5 set to be updated
---> Package xorg-x11-xauth.x86_64 1:1.0.1-2.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                          Arch   Version             Repository                                            Size
========================================================================================================================
Installing:
 oracle-ebs-server-R12-preinstall x86_64 1.0.0-4.el5         /oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64  63 k
Installing for dependencies:
 elfutils-libelf-devel            x86_64 0.137-3.el5         viscosity                                             24 k
 elfutils-libelf-devel-static     x86_64 0.137-3.el5         viscosity                                             64 k
 gcc                              x86_64 4.1.2-54.el5        viscosity                                            5.3 M
 gcc-c++                          x86_64 4.1.2-54.el5        viscosity                                            3.8 M
 gdbm                             i386   1.8.0-28.el5        viscosity                                             28 k
 glibc-devel                      i386   2.5-118             viscosity                                            2.1 M
 glibc-headers                    x86_64 2.5-118             viscosity                                            601 k
 kernel-headers                   x86_64 2.6.18-371.el5      viscosity                                            1.5 M
 libaio-devel                     i386   0.3.106-5           viscosity                                             12 k
 libstdc++-devel                  i386   4.1.2-54.el5        viscosity                                            2.8 M
 sysstat                          x86_64 7.0.2-12.0.1.el5    viscosity                                            188 k
 unixODBC                         x86_64 2.2.11-10.el5       viscosity                                            291 k
 unixODBC-devel                   i386   2.2.11-10.el5       viscosity                                            738 k
 unixODBC-devel                   x86_64 2.2.11-10.el5       viscosity                                            793 k
 unixODBC-libs                    i386   2.2.11-10.el5       viscosity                                            551 k
 unixODBC-libs                    x86_64 2.2.11-10.el5       viscosity                                            554 k
 xorg-x11-xauth                   x86_64 1:1.0.1-2.1         viscosity                                             32 k
 xorg-x11-xinit                   x86_64 1.0.2-15.el5        viscosity                                             26 k

Transaction Summary
========================================================================================================================
Install      19 Package(s)
Upgrade       0 Package(s)

Total size: 19 M
Total download size: 19 M
Is this ok [y/N]: y
Downloading Packages:
------------------------------------------------------------------------------------------------------------------------
Total                                                                                   4.7 GB/s |  19 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : unixODBC-libs                                                                                   1/19 
  Installing     : unixODBC                                                                                        2/19 
  Installing     : xorg-x11-xauth                                                                                  3/19 
  Installing     : xorg-x11-xinit                                                                                  4/19 
  Installing     : sysstat                                                                                         5/19 
  Installing     : gdbm                                                                                            6/19 
  Installing     : unixODBC-libs                                                                                   7/19 
  Installing     : libstdc++-devel                                                                                 8/19 
  Installing     : unixODBC-devel                                                                                  9/19 
  Installing     : unixODBC-devel                                                                                 10/19 
  Installing     : kernel-headers                                                                                 11/19 
  Installing     : glibc-headers                                                                                  12/19 
  Installing     : glibc-devel                                                                                    13/19 
  Installing     : libaio-devel                                                                                   14/19 
  Installing     : gcc                                                                                            15/19 
  Installing     : gcc-c++                                                                                        16/19 
  Installing     : elfutils-libelf-devel                                                                          17/19 
  Installing     : elfutils-libelf-devel-static                                                                   18/19 
  Installing     : oracle-ebs-server-R12-preinstall                                                               19/19 

Installed:
  oracle-ebs-server-R12-preinstall.x86_64 0:1.0.0-4.el5                                                                 

Dependency Installed:
  elfutils-libelf-devel.x86_64 0:0.137-3.el5              elfutils-libelf-devel-static.x86_64 0:0.137-3.el5             
  gcc.x86_64 0:4.1.2-54.el5                               gcc-c++.x86_64 0:4.1.2-54.el5                                 
  gdbm.i386 0:1.8.0-28.el5                                glibc-devel.i386 0:2.5-118                                    
  glibc-headers.x86_64 0:2.5-118                          kernel-headers.x86_64 0:2.6.18-371.el5                        
  libaio-devel.i386 0:0.3.106-5                           libstdc++-devel.i386 0:4.1.2-54.el5                           
  sysstat.x86_64 0:7.0.2-12.0.1.el5                       unixODBC.x86_64 0:2.2.11-10.el5                               
  unixODBC-devel.i386 0:2.2.11-10.el5                     unixODBC-devel.x86_64 0:2.2.11-10.el5                         
  unixODBC-libs.i386 0:2.2.11-10.el5                      unixODBC-libs.x86_64 0:2.2.11-10.el5                          
  xorg-x11-xauth.x86_64 1:1.0.1-2.1                       xorg-x11-xinit.x86_64 0:1.0.2-15.el5                          

Complete!

For additional insight into preparing an EBS server, please visit this blog entry:
Linux Preparation for Oracle E-Business Suite R12 Installation

For insight into building Oracle Linux 6 server, please visit this blog entry:
Oracle Linux 6 Installation and Configuration Step-By-Step


Download the following RPMS:
1. openmotif21-2.1.30-11.EL5.i386.rpm –> for OEL 5 customers
openmotif21-2.1.30-11.EL6.i686.rpm –> for OEL 6 customers
2. xorg-x11-libs-compat-6.8.2-1.EL.33.0.1.i386.rpm

From:
http://oss.oracle.com/projects/compat-oracle/files/Enterprise_Linux/

The openmotif package version must be 2.1.30 (for example, openmotif-2.2.3-10.RHEL4.5 is not supported).

========================================================================================================================

1.
First install the openmotif21 RPM. openmotif21 has a dependency on the libXp rpm so do a yum install of it first. Then use the traditional rpm -ihv command to install openmotif21 RPM.

[root@ebs1 ~]# rpm -ihv openmotif21-2.1.30-11.EL5.i386.rpm
error: Failed dependencies:
     libXp.so.6 is needed by openmotif21-2.1.30-11.EL5.i386
[root@ebs1 ~]# yum install libXp
Loaded plugins: rhnplugin, security
This system is not registered with ULN.
You can use up2date --register to register.
ULN support will be disabled.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package libXp.i386 0:1.0.0-8.1.el5 set to be updated
---> Package libXp.x86_64 0:1.0.0-8.1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                 Arch                     Version                            Repository                    Size
========================================================================================================================
Installing:
 libXp                   i386                     1.0.0-8.1.el5                      el5_latest                    22 k
 libXp                   x86_64                   1.0.0-8.1.el5                      el5_latest                    23 k

Transaction Summary
========================================================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)

Total download size: 45 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): libXp-1.0.0-8.1.el5.i386.rpm                                                              |  22 kB     00:00    
(2/2): libXp-1.0.0-8.1.el5.x86_64.rpm                                                            |  23 kB     00:00    
------------------------------------------------------------------------------------------------------------------------
Total                                                                                   321 kB/s |  45 kB     00:00    
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 1e5e0159
el5_latest/gpgkey                                                                                | 1.4 kB     00:00    
Importing GPG key 0x1E5E0159 "Oracle OSS group (Open Source Software group) <build@oss.oracle.com>" from http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : libXp                                                                                            1/2
  Installing     : libXp                                                                                            2/2

Installed:
  libXp.i386 0:1.0.0-8.1.el5                                libXp.x86_64 0:1.0.0-8.1.el5                              

Complete!
[root@ebs1 ~]# rpm -ihv openmotif21-2.1.30-11.EL5.i386.rpm
Preparing...                ########################################### [100%]
   1:openmotif21            ########################################### [100%]

========================================================================================================================

2.
Install the xorg-x11-libs-compat RPM

[root@ebs1 ~]# rpm -ihv xorg-x11-libs-compat-6.8.2-1.EL.33.0.1.i386.rpm
Preparing...                ########################################### [100%]
   1:xorg-x11-libs-compat   ########################################### [100%]

========================================================================================================================

3.
The Linux Pre-Install RPM for Oracle E-Business Suite R12 on Oracle Linux 5 and 6 is now available for use by customers.

The package (oracle-ebs-server-R12-preinstall) is now available from the Oracle public yum repository. We recommended that you leverage the Pre-Install RPM on top of a ‘minimal’ RPM installation to run Oracle E-Business Suite Release 12. This RPM provides all required RPM packages for both the EBS application and database tier. You can significantly reduce your provisioning time of the Linux environment to install, upgrade or clone EBS R12 node. This RPM is applicable for both EBS 12.1 and 12.2 versions

[root@ebs1 ~]# yum install oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm
Loaded plugins: rhnplugin, security
This system is not registered with ULN.
You can use up2date --register to register.
ULN support will be disabled.
Setting up Install Process
Examining oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm: oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64
Marking oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package oracle-ebs-server-R12-preinstall.x86_64 0:1.0.0-4.el5 set to be updated
--> Processing Dependency: /usr/bin/odbcinst for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: /usr/lib/gcc/i386-redhat-linux/4.1.1/libstdc++.a for package: oracle-ebs-server-R12-preinstall
Importing additional filelist information
--> Processing Dependency: /usr/lib/libaio.so for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: /usr/lib/libc.so for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: /usr/lib/libodbccr.so for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: /usr/lib64/libodbccr.so for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: elfutils-libelf-devel for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: elfutils-libelf-devel-static for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: gcc for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: gcc-c++ for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: glibc-devel for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: glibc-headers for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: libaio-devel for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: libgdbm.so.2 for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: libstdc++-devel for package: oracle-ebs-server-R12-preinstall
--> Processing Dependency: sysstat for package: oracle-ebs-server-R12-preinstall
--> Running transaction check
---> Package elfutils-libelf-devel.x86_64 0:0.137-3.el5 set to be updated
---> Package elfutils-libelf-devel-static.x86_64 0:0.137-3.el5 set to be updated
---> Package gcc.x86_64 0:4.1.2-54.el5 set to be updated
---> Package gcc-c++.x86_64 0:4.1.2-54.el5 set to be updated
---> Package gdbm.i386 0:1.8.0-28.el5 set to be updated
---> Package glibc-devel.i386 0:2.5-118.el5_10.2 set to be updated
--> Processing Dependency: glibc = 2.5-118.el5_10.2 for package: glibc-devel
---> Package glibc-headers.x86_64 0:2.5-118.el5_10.2 set to be updated
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers
--> Processing Dependency: kernel-headers for package: glibc-headers
---> Package libaio-devel.i386 0:0.3.106-5 set to be updated
---> Package libstdc++-devel.i386 0:4.1.2-54.el5 set to be updated
---> Package sysstat.x86_64 0:7.0.2-12.0.1.el5 set to be updated
---> Package unixODBC.x86_64 0:2.2.11-10.el5 set to be updated
--> Processing Dependency: unixODBC-libs = 2.2.11-10.el5 for package: unixODBC
--> Processing Dependency: libodbc.so.1()(64bit) for package: unixODBC
--> Processing Dependency: libodbcinst.so.1()(64bit) for package: unixODBC
---> Package unixODBC-devel.i386 0:2.2.11-10.el5 set to be updated
--> Processing Dependency: libtemplate.so.1 for package: unixODBC-devel
--> Processing Dependency: libesoobS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcinst.so.1 for package: unixODBC-devel
--> Processing Dependency: libtdsS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbccr.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcdrvcfg2S.so.1 for package: unixODBC-devel
--> Processing Dependency: libgtrtst.so.1 for package: unixODBC-devel
--> Processing Dependency: libsapdbS.so.1 for package: unixODBC-devel
--> Processing Dependency: libnn.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcnnS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbctxtS.so.1 for package: unixODBC-devel
--> Processing Dependency: liboplodbcS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcdrvcfg1S.so.1 for package: unixODBC-devel
--> Processing Dependency: libboundparam.so.1 for package: unixODBC-devel
--> Processing Dependency: libmimerS.so.1 for package: unixODBC-devel
--> Processing Dependency: libodbcminiS.so.1 for package: unixODBC-devel
--> Processing Dependency: liboraodbcS.so.1 for package: unixODBC-devel
---> Package unixODBC-devel.x86_64 0:2.2.11-10.el5 set to be updated
--> Running transaction check
--> Processing Dependency: glibc = 2.5-118 for package: nscd
---> Package glibc.i686 0:2.5-118.el5_10.2 set to be updated
--> Processing Dependency: glibc-common = 2.5-118.el5_10.2 for package: glibc
---> Package glibc.x86_64 0:2.5-118.el5_10.2 set to be updated
---> Package kernel-headers.x86_64 0:2.6.18-371.8.1.0.1.el5 set to be updated
---> Package unixODBC-libs.i386 0:2.2.11-10.el5 set to be updated
---> Package unixODBC-libs.x86_64 0:2.2.11-10.el5 set to be updated
--> Running transaction check
---> Package glibc-common.x86_64 0:2.5-118.el5_10.2 set to be updated
---> Package nscd.x86_64 0:2.5-118.el5_10.2 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                      Arch   Version                 Repository                                            Size
========================================================================================================================
Installing:
 oracle-ebs-server-R12-preinstall
                              x86_64 1.0.0-4.el5             /oracle-ebs-server-R12-preinstall-1.0.0-4.el5.x86_64  63 k
Installing for dependencies:
 elfutils-libelf-devel        x86_64 0.137-3.el5             ol5_u10_base                                          24 k
 elfutils-libelf-devel-static x86_64 0.137-3.el5             ol5_u10_base                                          64 k
 gcc                          x86_64 4.1.2-54.el5            ol5_u10_base                                         5.3 M
 gcc-c++                      x86_64 4.1.2-54.el5            ol5_u10_base                                         3.8 M
 gdbm                         i386   1.8.0-28.el5            ol5_u10_base                                          28 k
 glibc-devel                  i386   2.5-118.el5_10.2        el5_latest                                           2.1 M
 glibc-headers                x86_64 2.5-118.el5_10.2        el5_latest                                           601 k
 kernel-headers               x86_64 2.6.18-371.8.1.0.1.el5  el5_latest                                           1.5 M
 libaio-devel                 i386   0.3.106-5               ol5_u10_base                                          12 k
 libstdc++-devel              i386   4.1.2-54.el5            ol5_u10_base                                         2.8 M
 sysstat                      x86_64 7.0.2-12.0.1.el5        ol5_u10_base                                         188 k
 unixODBC                     x86_64 2.2.11-10.el5           ol5_u10_base                                         291 k
 unixODBC-devel               i386   2.2.11-10.el5           ol5_u10_base                                         738 k
 unixODBC-devel               x86_64 2.2.11-10.el5           ol5_u10_base                                         793 k
 unixODBC-libs                i386   2.2.11-10.el5           ol5_u10_base                                         551 k
 unixODBC-libs                x86_64 2.2.11-10.el5           ol5_u10_base                                         554 k
Updating for dependencies:
 glibc                        i686   2.5-118.el5_10.2        el5_latest                                           5.4 M
 glibc                        x86_64 2.5-118.el5_10.2        el5_latest                                           4.8 M
 glibc-common                 x86_64 2.5-118.el5_10.2        el5_latest                                            16 M
 nscd                         x86_64 2.5-118.el5_10.2        el5_latest                                           177 k

Transaction Summary
========================================================================================================================
Install      17 Package(s)
Upgrade       4 Package(s)

Total size: 46 M
Total download size: 46 M
Is this ok [y/N]: y
Downloading Packages:
(1/20): libaio-devel-0.3.106-5.i386.rpm                                                          |  12 kB     00:00    
(2/20): elfutils-libelf-devel-0.137-3.el5.x86_64.rpm                                             |  24 kB     00:00    
(3/20): gdbm-1.8.0-28.el5.i386.rpm                                                               |  28 kB     00:00    
(4/20): elfutils-libelf-devel-static-0.137-3.el5.x86_64.rpm                                      |  64 kB     00:00    
(5/20): nscd-2.5-118.el5_10.2.x86_64.rpm                                                         | 177 kB     00:00    
(6/20): sysstat-7.0.2-12.0.1.el5.x86_64.rpm                                                      | 188 kB     00:00    
(7/20): unixODBC-2.2.11-10.el5.x86_64.rpm                                                        | 291 kB     00:00    
(8/20): unixODBC-libs-2.2.11-10.el5.i386.rpm                                                     | 551 kB     00:00    
(9/20): unixODBC-libs-2.2.11-10.el5.x86_64.rpm                                                   | 554 kB     00:00    
(10/20): glibc-headers-2.5-118.el5_10.2.x86_64.rpm                                               | 601 kB     00:00    
(11/20): unixODBC-devel-2.2.11-10.el5.i386.rpm                                                   | 738 kB     00:00    
(12/20): unixODBC-devel-2.2.11-10.el5.x86_64.rpm                                                 | 793 kB     00:00    
(13/20): kernel-headers-2.6.18-371.8.1.0.1.el5.x86_64.rpm                                        | 1.5 MB     00:00    
(14/20): glibc-devel-2.5-118.el5_10.2.i386.rpm                                                   | 2.1 MB     00:01    
(15/20): libstdc++-devel-4.1.2-54.el5.i386.rpm                                                   | 2.8 MB     00:01    
(16/20): gcc-c++-4.1.2-54.el5.x86_64.rpm                                                         | 3.8 MB     00:02    
(17/20): glibc-2.5-118.el5_10.2.x86_64.rpm                                                       | 4.8 MB     00:02    
(18/20): gcc-4.1.2-54.el5.x86_64.rpm                                                             | 5.3 MB     00:03    
(19/20): glibc-2.5-118.el5_10.2.i686.rpm                                                         | 5.4 MB     00:03    
(20/20): glibc-common-2.5-118.el5_10.2.x86_64.rpm                                                |  16 MB     00:08    
------------------------------------------------------------------------------------------------------------------------
Total                                                                                   1.3 MB/s |  46 MB     00:34    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : glibc-common                                                                                    1/25
  Updating       : glibc                                                                                           2/25
  Installing     : unixODBC-libs                                                                                   3/25
  Installing     : unixODBC                                                                                        4/25
  Installing     : libstdc++-devel                                                                                 5/25
  Installing     : sysstat                                                                                         6/25
  Installing     : unixODBC-devel                                                                                  7/25
  Installing     : libaio-devel                                                                                    8/25
  Installing     : kernel-headers                                                                                  9/25
  Updating       : nscd                                                                                           10/25
  Installing     : glibc-headers                                                                                  11/25
  Updating       : glibc                                                                                          12/25
  Installing     : unixODBC-libs                                                                                  13/25
  Installing     : gdbm                                                                                           14/25
  Installing     : glibc-devel                                                                                    15/25
  Installing     : unixODBC-devel                                                                                 16/25
  Installing     : gcc                                                                                            17/25
  Installing     : gcc-c++                                                                                        18/25
  Installing     : elfutils-libelf-devel-static                                                                   19/25
  Installing     : elfutils-libelf-devel                                                                          20/25
  Installing     : oracle-ebs-server-R12-preinstall                                                               21/25
  Cleanup        : nscd                                                                                           22/25
  Cleanup        : glibc                                                                                          23/25
  Cleanup        : glibc                                                                                          24/25
  Cleanup        : glibc-common                                                                                   25/25

Installed:
  oracle-ebs-server-R12-preinstall.x86_64 0:1.0.0-4.el5                                                                

Dependency Installed:
  elfutils-libelf-devel.x86_64 0:0.137-3.el5              elfutils-libelf-devel-static.x86_64 0:0.137-3.el5            
  gcc.x86_64 0:4.1.2-54.el5                               gcc-c++.x86_64 0:4.1.2-54.el5                                
  gdbm.i386 0:1.8.0-28.el5                                glibc-devel.i386 0:2.5-118.el5_10.2                          
  glibc-headers.x86_64 0:2.5-118.el5_10.2                 kernel-headers.x86_64 0:2.6.18-371.8.1.0.1.el5               
  libaio-devel.i386 0:0.3.106-5                           libstdc++-devel.i386 0:4.1.2-54.el5                          
  sysstat.x86_64 0:7.0.2-12.0.1.el5                       unixODBC.x86_64 0:2.2.11-10.el5                              
  unixODBC-devel.i386 0:2.2.11-10.el5                     unixODBC-devel.x86_64 0:2.2.11-10.el5                        
  unixODBC-libs.i386 0:2.2.11-10.el5                      unixODBC-libs.x86_64 0:2.2.11-10.el5                         

Dependency Updated:
  glibc.i686 0:2.5-118.el5_10.2       glibc.x86_64 0:2.5-118.el5_10.2      glibc-common.x86_64 0:2.5-118.el5_10.2    
  nscd.x86_64 0:2.5-118.el5_10.2    

Complete!
[root@ebs1

========================================================================================================================

The oracle-ebs-server-R12-preinstall RPM creates the oracle and applmgr unix accounts. oracle will be if you configure the node to include the the database and application tiers.

[root@ebs1 ~]# cat /etc/passwd |tail -5
avahi-autoipd:x:100:101:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
oracle:x:54321:54321::/home/oracle:/bin/bash
applmgr:x:54322:54321::/home/applmgr:/bin/bash

========================================================================================================================

The oracle-ebs-server-R12-preinstall RPM sets the hard and soft shell resource limits according to Oracle’s recommended values in /etc/security/limits.conf in Oracle Linux 5 and /etc/security/limits.d/ in Oracle Linux 6:

# oracle-ebs-server-R12-preinstall setting for nofile soft limit is 4096
oracle   soft   nofile    4096
applmgr   soft   nofile    4096

# oracle-ebs-server-R12-preinstall setting for nofile hard limit is 65536
oracle   hard   nofile    65536
applmgr   hard   nofile    65536

# oracle-ebs-server-R12-preinstall setting for nproc soft limit is 16384
oracle   soft   nproc    16384
applmgr   soft   nproc    16384

# oracle-ebs-server-R12-preinstall setting for nproc hard limit is 16384
oracle   hard   nproc    16384
applmgr   hard   nproc    16384

# oracle-ebs-server-R12-preinstall setting for core soft limit is unlimited
oracle   soft   core    unlimited
applmgr   soft   core    unlimited

# oracle-ebs-server-R12-preinstall setting for core hard limit is unlimited
oracle   hard   core    unlimited
applmgr   hard   core    unlimited

# oracle-ebs-server-R12-preinstall setting for memlock soft limit is 50000000
oracle   soft   memlock    50000000
applmgr   soft   memlock    50000000

# oracle-ebs-server-R12-preinstall setting for memlock hard limit is 50000000
oracle   hard   memlock    50000000
applmgr   hard   memlock    50000000

# oracle-ebs-server-R12-preinstall setting for stack soft limit is 10240
oracle   soft   stack    10240
applmgr   soft   stack    10240

# oracle-ebs-server-R12-preinstall setting for stack hard limit is 32768
oracle   hard   stack    32768
applmgr   hard   stack    32768

========================================================================================================================

Most importantly, the EBS preinstall RPM updates the kernel parameters in /etc/sysctl.conf to Oracle recommended values:

# oracle-ebs-server-R12-preinstall setting for fs.file-max is 6815744
fs.file-max = 6815744

# oracle-ebs-server-R12-preinstall setting for kernel.msgmni is 2878
kernel.msgmni = 2878

# oracle-ebs-server-R12-preinstall setting for kernel.msgmax is 8192

# oracle-ebs-server-R12-preinstall setting for kernel.msgmnb is 65536
kernel.msgmnb = 65536

# oracle-ebs-server-R12-preinstall setting for kernel.sem is '256 32000 100 142'
kernel.sem = 256 32000 100 142

# oracle-ebs-server-R12-preinstall setting for kernel.shmmni is 4096
kernel.shmmni = 4096

# oracle-ebs-server-R12-preinstall setting for kernel.shmall is 1073741824

# oracle-ebs-server-R12-preinstall setting for kernel.shmmax is 4398046511104 on x86_64 and 4294967295 on i386 architecture.
# Refer Note id 567506.1
kernel.shmmax = 4398046511104

# oracle-ebs-server-R12-preinstall setting for kernel.sysrq is 1
kernel.sysrq = 1

# oracle-ebs-server-R12-preinstall setting for net.core.rmem_default is 262144
net.core.rmem_default = 262144

# oracle-ebs-server-R12-preinstall setting for net.core.rmem_max is 4194304
net.core.rmem_max = 4194304

# oracle-ebs-server-R12-preinstall setting for net.core.wmem_default is 262144
net.core.wmem_default = 262144

# oracle-ebs-server-R12-preinstall setting for net.core.wmem_max is 1048576
net.core.wmem_max = 1048576

# oracle-ebs-server-R12-preinstall setting for fs.aio-max-nr is 3145728
fs.aio-max-nr = 3145728

# oracle-ebs-server-R12-preinstall setting for net.ipv4.ip_local_port_range is 9000 65500
net.ipv4.ip_local_port_range = 9000 65500

========================================================================================================================

The DNS resolver parameters are updated in /etc/resolv.conf to the minimum recommended values. You may need to re-visit these values based on your corporate environment:

[root@ebs1 ~]# cat /etc/resolv.conf
search viscosity.com
nameserver 192.168.1.1
#oracle-ebs-server-R12-preinstall setting for attempts is 5
options attempts:5
#oracle-ebs-server-R12-preinstall setting for timeout is 15
options timeout:15

========================================================================================================================

The EBS preinstall RPM also disables numa in the /etc/grub.conf kernel commandline:

[root@ebs1 ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server (2.6.39-400.209.1.el5uek)
     root (hd0,0)
     kernel /vmlinuz-2.6.39-400.209.1.el5uek ro root=/dev/VolGroup00/LogVol00 rhgb quiet numa=off
     initrd /initrd-2.6.39-400.209.1.el5uek.img
title Oracle Linux Server-base (2.6.18-371.el5)
     root (hd0,0)
     kernel /vmlinuz-2.6.18-371.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet numa=off
     initrd /initrd-2.6.18-371.el5.img

========================================================================================================================

If you are running Oracle Linux 6, it disables Transparent Huge Pages (THP). THP is not quite ready for prime time yet.


We see more and more customers migrating from Red Hat Enterprise Linux to Oracle Linux. Companies like Dell are moving from Red Hat to Oracle Linux. Oracle Linux is optimized for Oracle workloads and all of Oracle hardware and engineered systems runs on Oracle Linux. Oracle Linux has the proven track record for performance and stability.

Not only can we run Oracle Databases on Oracle Linux but more and more customers are shifting their applications and middleware to Oracle Linux.

When you install and configure Oracle Linux, the screens do not look any different than the screens that you see for a Red Hat Linux installation. The following step-by-step set of instructions can be used to install Oracle Linux 6:

OL6.0 Installation and Configuration.pdf


Oracle Multitenant plugin
the file names in the multitenant manifest or in the full transportable database import command must match all files exactly for the operation to complete

There are some difficulties when OMF/ASM is used, files are copied, and a physical standby database is in place. There have been improvements made to the multitenant plugin operation on both the primary and standby environments, however at this time additional work must still be done on the standby database when a full transportable database import operation is performed.

RMAN has been enhanced so that, when copying files between databases it recognizes the GUID and acts accordingly when writing the files.

* If the clone/auxiliary instance being connected to for clone operations is a CDB root, the GUID of the RMAN target database is used to determine the directory structure to write the datafiles. Connect to the CDB root as the RMAN clone/auxiliary instance when the source database should be a 12c non-CDB or PDB that is going to be migrated and plugged into a remote CDB as a brand new PDB. This will ensure that the files copied by RMAN will be written to the GUID directory of source database for the migration.

* If the clone/auxiliary instance being connected to for clone operations is a PDB, the GUID of the auxiliary PDB will be used to determine the directory structure to write the datafiles. Connect to the destination PDB as the RMAN clone auxiliary instance when the source database is a 12c non-CDB or PDB that requires a cross platform full transportable database import and the data and files will be imported into an existing PDB. This will ensure the files copied by RMAN will be written to the GUID directory of the PDB target database for the migration.

Posted in ASM

Optionally modify the XML configuration file to point to the local repository:

# vi /var/lib/ambari-server/resources/stacks/HDPLocal/2.0.6/repos/repoinfo.xml 

Configure the Ambari server with the default options

# ambari-server setup -s
Using python  /usr/bin/python2.6
Initializing...
Setup ambari-server
Checking SELinux...
SELinux status is 'enabled'
SELinux mode is 'permissive'
WARNING: SELinux is set to 'permissive' mode and temporarily disabled.
OK to continue [y/n] (y)? 
Customize user account for ambari-server daemon [y/n] (n)? 
Adjusting ambari-server permissions and ownership...
Checking iptables...
Checking JDK...
To download the Oracle JDK you must accept the license terms found at http://www.oracle.com/technetwork/java/javase/terms/license/index.html and not accepting will cancel the Ambari Server setup.
Do you accept the Oracle Binary Code License Agreement [y/n] (y)? 
Downloading JDK from http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-6u31-linux-x64.bin to /var/lib/ambari-server/resources/jdk-6u31-linux-x64.bin
JDK distribution size is 85581913 bytes
jdk-6u31-linux-x64.bin... 100% (81.6 MB of 81.6 MB)
Successfully downloaded JDK distribution to /var/lib/ambari-server/resources/jdk-6u31-linux-x64.bin
Installing JDK to /usr/jdk64
Successfully installed JDK to /usr/jdk64/jdk1.6.0_31
Downloading JCE Policy archive from http://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-6.zip to /var/lib/ambari-server/resources/jce_policy-6.zip
Successfully downloaded JCE Policy archive to /var/lib/ambari-server/resources/jce_policy-6.zip
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)? 
Default properties detected. Using built-in database.
Checking PostgreSQL...
Running initdb: This may take upto a minute.
About to start PostgreSQL
Configuring local database...
Connecting to the database. Attempt 1...

Configuring PostgreSQL...
Restarting PostgreSQL
Ambari Server 'setup' completed successfully.

As the root user, start the Ambari Server from the command line interface.

# ambari-server start
Using python  /usr/bin/python2.6
Starting ambari-server
Ambari Server running with 'root' privileges.
Server PID at: /var/run/ambari-server/ambari-server.pid
Server out at: /var/log/ambari-server/ambari-server.out
Server log at: /var/log/ambari-server/ambari-server.log
Ambari Server 'start' completed successfully.

In this blog I want to illustrate the benefits of deploying PDB with RAC Services.  Although the key ingredient is the Service, RAC provides the final mile for scalability and availability.  In my mind I would not implement PDB w/o RAC

Anyways here we go…

The goal is to illustrate that Database [RAC] Services integration with PDBs provides seamless management and availability.

Initially, we have only the PDB$SEED. 

SQL> select * from v$pdbs;


CON_ID       DBID     CON_UID GUID                             NAME                           OPEN_MODE  RES OPEN_TIME                                                              CREATE_SCN TOTAL_SIZE
---------- ---------- ---------- -------------------------------- ------------------------------ ---------- --- --------------------------------------------------------------------------- ---------- ----------
2 4080865680 4080865680 F13EFFD958E24857E0430B2910ACF6FD PDB$SEED                       READ ONLY  NO  17-FEB-14 01.01.13.909 PM                                                 1720768  283115520

Let's create a PDB from the SEED (I have shown this from an earlier Blog post)

SQL> CREATE PLUGGABLE DATABASE pdbhansolo admin user hansolo identified by hansolo roles=(dba);

Pluggable database created.

Now we have the new PDB listed.

SQL> select * from v$pdbs;

CON_ID     DBID       CON_UID     GUID                            NAME                           OPEN_MODE  RES OPEN_TIME                                                              CREATE_SCN TOTAL_SIZE
---------- ---------- ---------- -------------------------------- ------------------------------ ----------- ----------------------------------------------------------------------- ---------- ----------
2          4080865680 4080865680 F13EFFD958E24857E0430B2910ACF6FD PDB$SEED                       READ ONLY  NO  17-FEB-14 01.01.13.909 PM                                                 1720768  283115520
         3 3403102439 3403102439 F2A023F791663F8DE0430B2910AC37F7 PDBHANSOLO                     MOUNTED        17-FEB-14 01.27.08.942 PM                                                 1846849          0

But notice that its in "MOUNTED" status. Even if I restart the whole CDB, the new PDB will not come up in OPEN READ WRITE mode. If we want to have the
PDB available on startup. Here's how we go about resolving it.

When we create or plug in a new PDB, a default Service gets created, as with previous versions, it is highly recommended not to connect to Service. Oracle took this one step forward and forced users to create a user generated Service. So let's associate a user Service with that PDB. Notice that there's a "-pdb" flag in the add service command.

$ srvctl add service -d dagobah -s hoth -pdb pdbhansolo


[oracle@rac02 ~]$ srvctl config service -d dagobah -verbose
Service name: Hoth
Service is enabled
Server pool: Dagobah
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Global: false
Commit Outcome: false
Failover type:
Failover method:
TAF failover retries:
TAF failover delay:
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: NONE
Edition:
----> Pluggable database name: pdbhansolo
Maximum lag time: ANY
SQL Translation Profile:
Retention: 86400 seconds
Replay Initiation Time: 300 seconds
Session State Consistency:
Preferred instances: Dagobah_1
Available instances: 

And the Service is registered with the listener

     
[oracle@rac02 ~]$ lsnrctl stat

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 17-FEB-2014 13:34:41

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date                17-FEB-2014 12:59:46
Uptime                    0 days 0 hr. 34 min. 54 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/12.1.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/rac02/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.41.11)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.41.21)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=rac02.viscosityna.com)(PORT=5500))(Security=(my_wallet_directory=/u02/app/oracle/product/12.1.0/db/admin/Dagobah/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM3", status READY, has 2 handler(s) for this service...
Service "Dagobah" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
Service "DagobahXDB" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
Service "Hoth" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
----> Service "pdbhansolo" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
Service "r2d2" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
The command completed successfully

Now let's test this. I close the PDB and I also stopped the CDB (probably not necessary, but what the heck :-))

SQL> alter session set container=cdb$root;

Session altered.

SQL> alter pluggable database pdbhansolo close;

[oracle@rac02 ~]$ srvctl stop database -d dagobah

[oracle@rac02 ~]$ lsnrctl stat

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 18-FEB-2014 15:36:49

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date                18-FEB-2014 12:57:30
Uptime                    0 days 2 hr. 39 min. 19 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/12.1.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/rac02/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.41.11)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.41.21)(PORT=1521)))
Services Summary...
Service "+APX" has 1 instance(s).
  Instance "+APX3", status READY, has 1 handler(s) for this service...
Service "+ASM" has 1 instance(s).
  Instance "+ASM3", status READY, has 2 handler(s) for this service...
The command completed successfully


[oracle@rac02 ~]$ srvctl start database -d dagobah

[oracle@rac02 ~]$ lsnrctl stat

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 18-FEB-2014 15:37:39

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date                18-FEB-2014 12:57:30
Uptime                    0 days 2 hr. 40 min. 9 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/12.1.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/rac02/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.41.11)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.41.21)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=rac02.viscosityna.com)(PORT=5500))(Security=(my_wallet_directory=/u02/app/oracle/product/12.1.0/db/admin/Dagobah/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "+APX" has 1 instance(s).
  Instance "+APX3", status READY, has 1 handler(s) for this service...
Service "+ASM" has 1 instance(s).
  Instance "+ASM3", status READY, has 2 handler(s) for this service...
Service "Dagobah" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
Service "DagobahXDB" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
Service "Hoth" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
----> Service "pdbhansolo" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...</strong>
Service "r2d2" has 1 instance(s).
  Instance "Dagobah_1", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@rac02 ~]$

SQL> select NAME,OPEN_MODE from v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
-----> PDBHANSOLO                     READ WRITE

Now I can connect to this PDB using my lovely EZConnect string

sqlplus hansolo/hansolo@rac02/hoth

The key here is that RAC Service of PDBHANSOLO (non-default) becomes an important aspect of PDB auto-startup. Without the use the non-default service the PDB does not open 'read write' automatically. So where does RAC fit in here. Well if I have say a 6 node RAC cluster, I can have some PDSB-Services not started on certain nodes, this effectively prevents access to those PDB from certain nodes, thus I can have a certain pre-defined workload distribution. That's a topic for my next Blog and Oracle Users Group presentation :-)