I have been proud for the past 4 years to be the only person in the world who held the highest designation from both Oracle and VMware as the Oracle ACE Director and VMware vExpert at the same time.  This week, I am proud to announce that Nitin Vengurlekar (@dbcloudshifu) joins me in this designation.  We are known in both industries for our technical aptitude, authoring books, blogging and speaking at national/international conferences.  

I am also excited to announce that I was accepted into the VMware vExpert program for the 5th consecutive year for the 2017 calendar year.  This year will be Nitin’s first year as a VMware vExpert.  We, at Viscosity North America, are very excited and honored to be the only company in the world who house 2 individuals that hold titles of Oracle ACE Directors and VMware vExperts.

Posted by Charles Kim, Oracle ACE Director and VMware vExpert

Twitter: @racdba



I am happy to announce that I will be presenting Data Guard Best Practices and Oracle Database 12c Release 2 New Features at the next Rocky Mountain Oracle User Group Technology Day in Denver on February 9, 2017. Come learn how to bullet proof your Data Guard configurations and what’s new in Oracle 12.2. My sessions agenda will be:

Session 8 Thursday 11:15 am to 12:15 pm
What’s New in 12.2: Oracle Database 12.2 New Features

Session 10 Thursday 2:45 pm to 3:45 pm
Bulletproof Your Data Guard Environment

The Oracle Database 12.2 New Features will be a continuation of Viscosity’s 12 Days of Oracle 12.2 but will more in-depth content and code examples.

Charles Kim, Oracle ACE Director
President, Viscosity North America

The Oracle Cloud Experience Technology Hands-on-lab Workshop is sponsored by the Cloud Computing SIG of IOUG. We are proud to announce our participation at the Georgia Oracle User Group Tech Days on March 15-16, Atlanta, Georgia. Every attendee will be given a Kindle version of the Oracle Cloud Pocket Solutions Guide:


The Cloud Experience Technology Hands-on-lab Workshop will start with creating a database in Oracle Cloud. We will also focus on backing up an on-premise database to the cloud and various solutions that’s available from Oracle to backup both Oracle databases and non-Oracle databases. We will discuss complete solution options that you can implement as you make your journey to Oracle Cloud.

Attendees will :
• Learn how to set up OS secure authentication, generating private and public keys
• Learn about various kinds of containers in Oracle Cloud and create a storage container to leverage for the hands-on lab
• Learn when and how to use the cloud for business projects
• Learn methods to backup databases to the cloud, configure Oracle Recovery Manager to backup to and restore from the Oracle Cloud.
• Learn methods to migrate databases to the cloud.
• Create a database in Oracle Cloud
• Communicate from on-premise to the database that resides in Oracle Cloud
• General Q & A with community experts

We will also discuss real-life solutions addressing security concerns, opening ports, creating database links/communicating with databases in Oracle Cloud, and innovations that Oracle has made to Oracle Cloud in the past 2 years.

Installing Docker for Mac is super easy. It is a simple as downloading and copying the program to the application folder.

To download Docker for Mac visit the docker site:

Please download the stable release.

Simply Drag and Drop the Docker icon to the Application folder. It is that easy to install Docker on the Mac.

Launch Docker from the applications folder. Since this is the first time you are invoking Docker, you will get the standard message about Docker being an “… application downloaded from the Internet. Are you sure that you want to open it?” Click on the Open button.


At the Welcome screen, click on the Next button

Click on the OK button to allow for privileged access.

You will be asked to provide your password. Enter your password to finish the installation process. Now, you will see docker on your task bar on top of the screen.


Optionally un-select the Send diagnostics & usage data check box; click on “Got it” button to complete the installation.

Now from any terminal, type the following commands:

Dobbys-MacBook-Pro:~ Dobby$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
Dobbys-MacBook-Pro:~ Dobby$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.3
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 0
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
 Volume: local
 Network: null host bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.27-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.951 GiB
Name: moby
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 15
 Goroutines: 27
 System Time: 2016-11-19T15:45:11.894167372Z
 EventsListeners: 1
No Proxy: *.local, 169.254/16
Registry: https://index.docker.io/v1/
WARNING: No kernel memory limit support
Insecure Registries:

Next, click on the Docker logo on the top status bar and select Preferences. Move the memory indicator to 4GB or more and click the restart button at the button of the screen.

Remember the number 33. I always seem to forget the $33 per TB per month number as I talk with potential customers. For a mere $33.00 / TB / Month, you can backup your Oracle Databases to the Oracle Public Cloud. For this low amount you get:

  • Unlimited Oracle Database backups
  • Automatic three-way data mirroring
  • Regional data isolation
  • Transparent access via Oracle Database Cloud Backup Module and Recovery Manager (RMAN)
  • RMAN encryption and compression

Performing backups to the cloud is a no brainer. Everyone should be considering backing up their database to the cloud.

Posted on July 27, 2016

In this post, I will walk through the steps to apply the January 2016 PSU to the latest release of Oracle ( In this post, we will apply Patch 22191349 – Oracle Grid Infrastructure Patch Set Update (Jan2016) to both the Grid Infrastructure and Oracle Database Home.

1. From CPUJan2016 onwards, the 5th digit of the version number will be changed to reflect the release date in the format YYMMDD. See My Oracle Support Document 2061926.1 for more information.
2. The GI System patch includes updates for both the Clusterware home and Database home that can be applied in a rolling fashion.

This patch is Data Guard Standby First Installable – See Section 2.5, “Installing Database PSU in Standby-First Mode” for more information.

In our example, we did not create any databases prior to applying the PSU. This will a typical installation method for Viscosity consultants where we will create a custom database leveraging dbca.

In general, when we invoke opatchauto, opatch will patch both the GI stack and the database software stack. Since we do not have a database running, patch will skip the database software stack and only apply the PSU to the GI Home. Before we invoke the opatchauto command, let’s create the ocm.rsp response file by executing the OCM Installation Response Generator (emocmrsp).

[root@vnarac01 ~]# . oraenv
ORACLE_SID = [root] ? +ASM1
The Oracle base has been set to /u01/app/oracle
[root@vnarac01 ~]# 
[root@vnarac01 ~]# 
[root@vnarac01 ~]# export PATH=$PATH:/u01/app/12.1.0/grid/OPatch
[root@vnarac01 ~]# opatchauto apply /u01/app/oracle/soft/22191349 -ocmrf /tmp/ocm.rsp
OPatch Automation Tool
Copyright (c)2014, Oracle Corporation. All rights reserved.

OPatchauto Version :
OUI Version        :
Running from       : /u01/app/12.1.0/grid

opatchauto log file: /u01/app/12.1.0/grid/cfgtoollogs/opatchauto/22191349/opatch_gi_2016-03-25_15-13-49_deploy.log

Parameter Validation: Successful

Configuration Validation: Successful

Patch Location: /u01/app/oracle/soft/22191349
Grid Infrastructure Patch(es): 21436941 21948341 21948344 21948354 
DB Patch(es): 21948344 21948354 

Patch Validation: Successful
Grid Infrastructure home:

Performing prepatch operations on CRS Home... Successful

Applying patch(es) to "/u01/app/12.1.0/grid" ...
Patch "/u01/app/oracle/soft/22191349/21436941" successfully applied to "/u01/app/12.1.0/grid".
Patch "/u01/app/oracle/soft/22191349/21948341" successfully applied to "/u01/app/12.1.0/grid".
Patch "/u01/app/oracle/soft/22191349/21948344" successfully applied to "/u01/app/12.1.0/grid".
Patch "/u01/app/oracle/soft/22191349/21948354" successfully applied to "/u01/app/12.1.0/grid".

Performing postpatch operations on CRS Home...  Successful

Apply Summary:
Following patch(es) are successfully installed:
GI Home: /u01/app/12.1.0/grid: 21436941,21948341,21948344,21948354

opatchauto succeeded.

Now we are going to attempt to apply the PSU to the database software home. You will encounter an error message indicating that the opatch that you are invoking must be from the same $ORACLE_HOME as the target HOME that is being patched.

[root@vnarac01 ~]# opatchauto apply /u01/app/oracle/soft/22191349 -oh /u01/app/oracle/product/12.1.0/dbhome_1 -ocmrf /tmp/ocm.rsp 
opatchauto must run from one of the homes specified
opatchauto returns with error code 2
[root@vnarac01 ~]# exit

Next we will apply the PSU to the database home. Again as root, first set the PATH to include the OPatch directory to the $ORACLE_HOME/OPatch directory. This time when we invoke the opatchauto command, we will pass another parameter -oh to specifically patch the database Oracle Home.

+ASM1 > su - root
[root@vnarac01 ~]# cd /u01/app/oracle/product/12.1.0/dbhome_1/OPatch
[root@vnarac01 OPatch]# export PATH=$PATH:/u01/app/oracle/product/12.1.0/dbhome_1/OPatch
[root@vnarac01 OPatch]# opatchauto apply /u01/app/oracle/soft/22191349 -oh /u01/app/oracle/product/12.1.0/dbhome_1 -ocmrf /tmp/ocm.rsp 
OPatch Automation Tool
Copyright (c)2014, Oracle Corporation. All rights reserved.

OPatchauto Version :
OUI Version        :
Running from       : /u01/app/oracle/product/12.1.0/dbhome_1

opatchauto log file: /u01/app/12.1.0/grid/cfgtoollogs/opatchauto/22191349/opatch_gi_2016-03-25_15-32-22_deploy.log

Parameter Validation: Successful

Configuration Validation: Successful

Patch Location: /u01/app/oracle/soft/22191349
Grid Infrastructure Patch(es): 21436941 21948341 21948344 21948354 
DB Patch(es): 21948344 21948354 

Patch Validation: Successful
User specified the following DB home(s) for this session:

Performing prepatch operations on RAC Home (/u01/app/oracle/product/12.1.0/dbhome_1) ... Successful

Applying patch(es) to "/u01/app/oracle/product/12.1.0/dbhome_1" ...
Patch "/u01/app/oracle/soft/22191349/21948344" successfully applied to "/u01/app/oracle/product/12.1.0/dbhome_1".
Patch "/u01/app/oracle/soft/22191349/21948354" successfully applied to "/u01/app/oracle/product/12.1.0/dbhome_1".

Performing postpatch operations on RAC Home (/u01/app/oracle/product/12.1.0/dbhome_1) ... Successful

[WARNING] The local database(s) on "/u01/app/oracle/product/12.1.0/dbhome_1" is not running. SQL changes, if any, cannot be applied.

Apply Summary:
Following patch(es) are successfully installed:
DB Home: /u01/app/oracle/product/12.1.0/dbhome_1: 21948344,21948354

opatchauto succeeded.

First, let’s install the RPM with yum. The RPM that we want to install is called btrfs-progs.

[root@dal66a yum.repos.d]# yum install btrfs*
Loaded plugins: security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package btrfs-progs.x86_64 0:0.20-1.8.git7854c8b.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

 Package                    Arch                  Version                                Repository                Size
 btrfs-progs                x86_64                0.20-1.8.git7854c8b.el6                viscosity                396 k

Transaction Summary
Install       1 Package(s)

Total download size: 396 k
Installed size: 2.8 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : btrfs-progs-0.20-1.8.git7854c8b.el6.x86_64                                                           1/1 
  Verifying  : btrfs-progs-0.20-1.8.git7854c8b.el6.x86_64                                                           1/1 

  btrfs-progs.x86_64 0:0.20-1.8.git7854c8b.el6                                                                          

[root@dal66a ~]# mkfs -t btrfs -d raid10 -m raid10 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 -f
failed to open /dev/fd0: No such device or address

WARNING! - see http://btrfs.wiki.kernel.org before using

adding device /dev/sdc1 id 2
adding device /dev/sdd1 id 3
adding device /dev/sde1 id 4
fs created label (null) on /dev/sdb1
	nodesize 4096 leafsize 4096 sectorsize 4096 size 127.99GB
Btrfs v0.20-rc1

The -f option is not needed. The only reason why I had to specify the -f was because I tried to create a btrfs file system earlier with just 2 drives in a mirrored and striped configuration..

Pass the -V option to determine the version of make.btrfs.

[root@dal66a ~]# mkfs.btrfs -V
mkfs.btrfs, part of Btrfs v0.20-rc1

Oracle GoldenGate provides a variety of tools and resources that help companies build robust replication solutions. Numerous “best practices” white papers are available for download via My Oracle Support (MOS).
Oracle GoldenGate customers are encouraged to review the available documents for considerations explicit to their operating environments. For example, the following papers are especially useful when deploying Oracle GoldenGate in an Oracle Database environment:

* Database specific bundle patch for Integrated Extract 11.2.x (Doc ID 1411356.1)
* Oracle GoldenGate Best Practices: Instantiation from an Oracle Source Database (Doc ID 1276058.1)
* Oracle GoldenGate Best Practice: NFS Mount options for use with GoldenGate (Doc ID 1232303.1)
* Oracle GoldenGate Best Practices: Oracle GoldenGate high availability using Oracle Clusterware (Doc ID 1313703.1)
* Oracle GoldenGate Best Practice – sample parameter files (Doc ID 1321696.1)

Master Note – Oracle GoldenGate (Doc ID 1298817.1)

Note 1304593.1 Main Note – Oracle GoldenGate – RAC

“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.