Feed aggregator

Patching ODA lite to 12.2.1.4.0

Yann Neuhaus - Mon, 2018-07-30 10:30

Here is how to apply the latest patch for your ODA. As usual the Oracle documentation is not 100% accurate. I applied this patch on 2 ODAs X7-2M previously deployed in 12.2.1.2.0, no intermediate patch was needed.

1) Download the patch

The patch number is 28216794. This patch will update the following components:  dcs (odacli), operating system, bios/firmwares, ilom, GI, dbhomes and databases.
Download and copy the patch to a temporary folder on the server, for example /opt/patch. You’ll have to be root to apply the patch.

2) Check the actual versions and free space on disk

First check the current version:

odacli describe-component

System Version
---------------
12.2.1.2.0

Component                                Installed Version    Available Version
---------------------------------------- -------------------- --------------------
OAK                                       12.2.1.2.0            up-to-date
GI                                        12.2.0.1.171017       up-to-date
DB {
[ OraDB12201_home1 ]                      12.2.0.1.171017       up-to-date
[ OraDB11204_home1 ]                      11.2.0.4.171017       up-to-date
}
DCSAGENT                                  12.2.1.2.0            up-to-date
ILOM                                      4.0.0.28.r121827      4.0.0.22.r120818
BIOS                                      41017600              41017100
OS                                        6.8                   up-to-date

The “available version” stands for “what’s available in the ODA repository?”. As this ODA has never been patched, it seems that some of the components are already in newer versions than those provided in the initial deployment package. Registering a new patch will refresh this repository.

Check that folders /, /u01 and /opt have enough free GB to process (>=10GB).

3) Prepare the patch files

Previous patch was slightly different from the others because Oracle simply forgot to double zip the file 2 and 3 of the patch. Now this patch is back to a more classic update: unzip and register the 3 unzipped files (they are zip files, too).

cd /opt/patch
unzip p28216794_122140_Linux-x86-64_1of3.zip
unzip p28216794_122140_Linux-x86-64_2of3.zip
unzip p28216794_122140_Linux-x86-64_3of3.zip

odacli update-repository -f /tmp/oda-sm-12.2.1.4.0-180708-server1of3.zip
odacli update-repository -f /tmp/oda-sm-12.2.1.4.0-180708-server2of3.zip
odacli update-repository -f /tmp/oda-sm-12.2.1.4.0-180708-server3of3.zip

Updating the repository, as other tasks through odacli, will generate a job-id you can look at to confirm that everything is running fine:

odacli describe-job -i "4087f0f4-2582-4621-b75c-59c9915a0cb5"

Job details
----------------------------------------------------------------
                     ID:  4087f0f4-2582-4621-b75c-59c9915a0cb5
            Description:  Repository Update
                 Status:  Success
                Created:  July 19, 2018 10:32:53 AM CEST
                Message:  oda-sm-12.2.1.4.0-180703-server1of3.zip

Note: you can update the repository with a single update-repository command including the 3 files. But it’s better to do the update separately in case of a corrupted file.

New feature with this patch, you can check if your system is ready for patching with this command:

odacli create-prepatchreport -s -v 12.2.1.4.0
odacli describe-prepatchreport -i f45f9750-ec9b-411f-ba53-43205cb17f87

4) Update the dcs-agent

First, you’ll have to update the dcs-agent:

/opt/oracle/dcs/bin/odacli update-dcsagent -v 12.2.1.4.0

odacli describe-job -i "5cc9174e-bd7a-435d-aaff-0113e9ab01bc"

Job details
----------------------------------------------------------------
                     ID:  5cc9174e-bd7a-435d-aaff-0113e9ab01bc
            Description:  DcsAgent patching
                 Status:  Success
                Created:  July 19, 2018 10:36:18 AM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Patch location validation                July 19, 2018 10:36:18 AM CEST      July 19, 2018 10:36:19 AM CEST      Success
dcs-agent upgrade                        July 19, 2018 10:36:19 AM CEST      July 19, 2018 10:36:19 AM CEST      Success

This update takes only few seconds. Check again the version and you will see a new 18c component:

odacli describe-component

System Version
---------------
12.2.1.4.0

Component                                Installed Version    Available Version
---------------------------------------- -------------------- --------------------
OAK                                       12.2.1.2.0            12.2.1.4.0
GI                                        12.2.0.1.171017       12.2.0.1.180417
DB {
[ OraDB12201_home1 ]                      12.2.0.1.171017       12.2.0.1.180417
[ OraDB11204_home1 ]                      11.2.0.4.171017       11.2.0.4.180417
}
DCSAGENT                                  18.2.1.0.0            up-to-date
ILOM                                      4.0.0.28.r121827      4.0.2.20.b.r123704
BIOS                                      41017600              41021300
OS                                        6.8                   6.9
FIRMWARECONTROLLER                        QDV1RE0F              qdv1re14

5) Update the server

Updating the server will update OS, ILOM, BIOS, firmwares and the GI. Update process will assume that no additionnal packages have been installed. If you installed additionnal packages, please remove them as they can prevent the patch to apply correctly.

This part of the update is the longest one (about 1 hour), and will end with a reboot of the server.

odacli update-server -v 12.2.1.4.0

odacli describe-job -i "a2e296c2-1b3e-4ed1-a5cc-0cb7c4d23120"

Job details
----------------------------------------------------------------
                     ID:  a2e296c2-1b3e-4ed1-a5cc-0cb7c4d23120
            Description:  Server Patching
                 Status:  Success
                Created:  July 19, 2018 12:12:53 PM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Patch location validation                July 19, 2018 12:12:53 PM CEST      July 19, 2018 12:12:53 PM CEST      Success
dcs-controller upgrade                   July 19, 2018 12:12:54 PM CEST      July 19, 2018 12:12:54 PM CEST      Success
Patch location validation                July 19, 2018 12:12:54 PM CEST      July 19, 2018 12:12:54 PM CEST      Success
dcs-cli upgrade                          July 19, 2018 12:12:54 PM CEST      July 19, 2018 12:12:54 PM CEST      Success
Creating repositories using yum          July 19, 2018 12:12:54 PM CEST      July 19, 2018 12:12:55 PM CEST      Success
Applying HMP Patches                     July 19, 2018 12:12:55 PM CEST      July 19, 2018 12:14:31 PM CEST      Success
Patch location validation                July 19, 2018 12:14:31 PM CEST      July 19, 2018 12:14:31 PM CEST      Success
oda-hw-mgmt upgrade                      July 19, 2018 12:14:31 PM CEST      July 19, 2018 12:14:31 PM CEST      Success
Creating repositories using yum          July 19, 2018 12:14:31 PM CEST      July 19, 2018 12:14:35 PM CEST      Success
Applying OS Patches                      July 19, 2018 12:14:35 PM CEST      July 19, 2018 12:16:18 PM CEST      Success
OSS Patching                             July 19, 2018 12:16:18 PM CEST      July 19, 2018 12:16:18 PM CEST      Success
Applying Firmware Disk Patches           July 19, 2018 12:16:18 PM CEST      July 19, 2018 12:16:23 PM CEST      Success
Applying Firmware Expander Patches       July 19, 2018 12:16:23 PM CEST      July 19, 2018 12:16:26 PM CEST      Success
Applying Firmware Controller Patches     July 19, 2018 12:16:26 PM CEST      July 19, 2018 12:16:30 PM CEST      Success
Checking Ilom patch Version              July 19, 2018 12:16:31 PM CEST      July 19, 2018 12:16:33 PM CEST      Success
Patch location validation                July 19, 2018 12:16:33 PM CEST      July 19, 2018 12:16:34 PM CEST      Success
Apply Ilom patch                         July 19, 2018 12:16:35 PM CEST      July 19, 2018 12:16:36 PM CEST      Success
Copying Flash Bios to Temp location      July 19, 2018 12:16:37 PM CEST      July 19, 2018 12:16:37 PM CEST      Success
Starting the clusterware                 July 19, 2018 12:16:57 PM CEST      July 19, 2018 12:16:58 PM CEST      Success
clusterware patch verification           July 19, 2018 12:16:58 PM CEST      July 19, 2018 12:17:00 PM CEST      Success
Patch location validation                July 19, 2018 12:17:00 PM CEST      July 19, 2018 12:17:03 PM CEST      Success
Opatch updation                          July 19, 2018 12:17:33 PM CEST      July 19, 2018 12:17:35 PM CEST      Success
Patch conflict check                     July 19, 2018 12:17:35 PM CEST      July 19, 2018 12:18:16 PM CEST      Success
clusterware upgrade                      July 19, 2018 12:18:16 PM CEST      July 19, 2018 12:33:07 PM CEST      Success
Updating GiHome version                  July 19, 2018 12:33:07 PM CEST      July 19, 2018 12:33:11 PM CEST      Success
preRebootNode Actions                    July 19, 2018 12:33:30 PM CEST      July 19, 2018 12:34:11 PM CEST      Success
Reboot Ilom                              July 19, 2018 12:34:11 PM CEST      July 19, 2018 12:34:11 PM CEST      Success

If there is a problem during the patching process (you forgot to remove an additionnal rpm or one of the patch file is missing for example), you can relaunch the patching and it will skip the already patched components.

Once this part of the patch is successfuly applied, check again the components:

odacli describe-component

System Version
---------------
12.2.1.4.0

Component                                Installed Version    Available Version
---------------------------------------- -------------------- --------------------
OAK                                       12.2.1.4.0            up-to-date
GI                                        12.2.0.1.180417       up-to-date
DB {
[ OraDB12201_home1 ]                      12.2.0.1.171017       12.2.0.1.180417
[ OraDB11204_home1 ]                      11.2.0.4.171017       11.2.0.4.180417
}
DCSAGENT                                  18.2.1.0.0            up-to-date
ILOM                                      4.0.2.20.b.r123704    up-to-date
BIOS                                      41017600              41021300
OS                                        6.9                   up-to-date
FIRMWARECONTROLLER                        QDV1RE14              up-to-date

Note: at this time, BIOS is not yet updated. Don’t know why but check this later and it will be OK.

6) Patch the dbhomes

You now need to patch the dbhomes separately. First of all, list them:

odacli list-dbhomes

ID                                       Name                 DB Version                               Home Location                                 Status
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
90556d26-6756-4fed-9546-d44d55b6fc04     OraDB11204_home1     11.2.0.4.171017 (26609929, 26392168)     /u01/app/oracle/product/11.2.0.4/dbhome_1     Configured
18a9c067-3629-409d-9bae-60d27516c914     OraDB12201_home1     12.2.0.1.171017 (27020386, 26710464)     /u01/app/oracle/product/12.2.0.1/dbhome_1     Configured

Patch the first one. Target version is actually version of the patch. Remember that updating the ODA through a patch will never upgrade your database to a newer release, your 11gR2 databases will stay in 11.2.0.4 and 12cR1 databases will stay in 12.1.0.2 (if you’re using one or both of these versions). Only the PSU number will change (the fifth number which is actually a date).

odacli update-dbhome -i 90556d26-6756-4fed-9546-d44d55b6fc04 -v 12.2.1.4.0

odacli describe-job -i "c1abf083-d597-4673-b07b-d7cb79ec434a"

Job details
----------------------------------------------------------------
                     ID:  c1abf083-d597-4673-b07b-d7cb79ec434a
            Description:  DB Home Patching: Home Id is 90556d26-6756-4fed-9546-d44d55b6fc04
                 Status:  Success
                Created:  July 19, 2018 12:59:11 PM CEST
                Message:  WARNING::Failed to run the datapatch as db DB03_S2 is not registered with clusterware##WARNING::Failed to run the datapatch as db DB04_S2 is not registered with clusterware##WARNING::Failed to run the datapatch as db DB05_S2 is not r

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
clusterware patch verification           July 19, 2018 12:59:12 PM CEST      July 19, 2018 12:59:15 PM CEST      Success
Patch location validation                July 19, 2018 12:59:15 PM CEST      July 19, 2018 12:59:19 PM CEST      Success
Opatch updation                          July 19, 2018 12:59:39 PM CEST      July 19, 2018 12:59:40 PM CEST      Success
Patch conflict check                     July 19, 2018 12:59:40 PM CEST      July 19, 2018 12:59:49 PM CEST      Success
db upgrade                               July 19, 2018 12:59:49 PM CEST      July 19, 2018 1:01:22 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:22 PM CEST       July 19, 2018 1:01:22 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:22 PM CEST       July 19, 2018 1:01:22 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:22 PM CEST       July 19, 2018 1:01:23 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:23 PM CEST       July 19, 2018 1:01:23 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:23 PM CEST       July 19, 2018 1:01:23 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:23 PM CEST       July 19, 2018 1:01:23 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:23 PM CEST       July 19, 2018 1:01:23 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:23 PM CEST       July 19, 2018 1:01:24 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:24 PM CEST       July 19, 2018 1:01:24 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:24 PM CEST       July 19, 2018 1:01:24 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:24 PM CEST       July 19, 2018 1:01:24 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:24 PM CEST       July 19, 2018 1:01:24 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:01:24 PM CEST       July 19, 2018 1:01:25 PM CEST       Success

Despite the overall Success status, some database could stay in previous version for some reason:
– database is a StandBy database : no update is possible on the dictionary (dictionary will be updated when the primary server will be patched)
– database is not correctly registered in the Oracle Cluster repository (if you create the database with odacli in instance-only mode: create-database -io – Probably a bug)

After applying the patch, please check the version of your dictionary on each database with this statement :

select ACTION_TIME, ACTION, VERSION, ID, BUNDLE_SERIES, COMMENTS from  DBA_REGISTRY_HISTORY;
ACTION_TIME                    ACTION       VERSION                  ID BUNDLE_SERIES   COMMENTS
------------------------------ ------------ ---------------- ---------- --------------- ------------------------------
23/07/18 20:25:26,765974       APPLY        11.2.0.4             180417 PSU             PSU 11.2.0.4.180417

Then update the next dbhome:

odacli update-dbhome -i 18a9c067-3629-409d-9bae-60d27516c914 -v 12.2.1.4.0

odacli describe-job -i "ef53a8a6-bd74-40f6-a338-343489d41a1c"

Job details
----------------------------------------------------------------
                     ID:  ef53a8a6-bd74-40f6-a338-343489d41a1c
            Description:  DB Home Patching: Home Id is 18a9c067-3629-409d-9bae-60d27516c914
                 Status:  Success
                Created:  July 19, 2018 1:20:20 PM CEST
                Message:  WARNING::Failed to run datapatch on db DB12TST Failed to run Utlrp script##WARNING::Failed to run the datapatch as db DB12DEV: is not registered with clusterware

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
clusterware patch verification           July 19, 2018 1:20:41 PM CEST       July 19, 2018 1:20:42 PM CEST       Success
Patch location validation                July 19, 2018 1:20:42 PM CEST       July 19, 2018 1:20:42 PM CEST       Success
Opatch updation                          July 19, 2018 1:20:42 PM CEST       July 19, 2018 1:20:42 PM CEST       Success
Patch conflict check                     July 19, 2018 1:20:42 PM CEST       July 19, 2018 1:20:42 PM CEST       Success
db upgrade                               July 19, 2018 1:20:42 PM CEST       July 19, 2018 1:20:42 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:20:42 PM CEST       July 19, 2018 1:20:47 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:20:47 PM CEST       July 19, 2018 1:20:47 PM CEST       Success
SqlPatch upgrade                         July 19, 2018 1:20:47 PM CEST       July 19, 2018 1:21:03 PM CEST       Success

As previously patched dbhome, this one also has warnings. Please check if each database is OK.

Check the /opt/oracle/dcs/log/dcs-agent.log for extended warning messages if needed, and then check the DB Version after the update of all dbhomes:

odacli list-dbhomes

ID                                       Name                 DB Version                               Home Location                                 Status
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
90556d26-6756-4fed-9546-d44d55b6fc04     OraDB11204_home1     11.2.0.4.180417 (27441052, 27338049)     /u01/app/oracle/product/11.2.0.4/dbhome_1     Configured
18a9c067-3629-409d-9bae-60d27516c914     OraDB12201_home1     12.2.0.1.180417 (27464465, 27674384)     /u01/app/oracle/product/12.2.0.1/dbhome_1     Configured

Jump to step 8 if your databases are OK.

7) Update the databases where datapatch failed

If for some reason datapatch was not applied on some of your databases and it should have been, you’ll have to do it manually:

For 12c :

su – oracle
. oraenv <<< DB12TST
cd $ORACLE_HOME/OPatch
./datapatch -verbose

For 11gR2 :

su – oracle
. oraenv <<< DB11TST
sqlplus / as sysdba
@?/rdbms/admin/catbundle.sql psu apply

8) Patch the storage

No update-storage is needed for this patch on this ODA.

9) Optional: deploy the latest db clone files

If you’ll never deploy a new dbhome this step is not necessary. If you will, or simply if you don’t know if you’ll have to do that later, download and register the new db clone files in the repository to be able to create a new dbhome at the same patch level than the one already deployed, for example:

cd /opt/patch

unzip p27119402_122140_Linux-x86-64.zip
Archive:  p27119402_122140_Linux-x86-64.zip
 extracting: odacli-dcs-12.2.1.4.0-180617-DB-12.2.0.1.zip
  inflating: README.txt

update-image --image-files odacli-dcs-12.2.1.4.0-180617-DB-12.2.0.1.zip
Unpacking will take some time,  Please wait...
Unzipping odacli-dcs-12.2.1.4.0-180617-DB-12.2.0.1.zip

10) Control the final version of the components

Now the patching is done. ±2 hours were needed, if everything is OK.

oodacli describe-component

System Version
---------------
12.2.1.4.0

Component                                Installed Version    Available Version
---------------------------------------- -------------------- --------------------
OAK                                       12.2.1.4.0            up-to-date
GI                                        12.2.0.1.180417       up-to-date
DB {
[ OraDB12201_home1 ]                      12.2.0.1.180417       up-to-date
[ OraDB11204_home1 ]                      11.2.0.4.180417       up-to-date
}
DCSAGENT                                  18.2.1.0.0            up-to-date
ILOM                                      4.0.2.20.b.r123704    up-to-date
BIOS                                      41021300              up-to-date
OS                                        6.9                   up-to-date
FIRMWARECONTROLLER                        QDV1RE14              up-to-date

11) Optional: patch the SFP firmware

If you’re using SFP network interfaces on your ODA X7 (fiber connected network), you may encounter network troubles (lost of pings, failover not working correctly, and so on). SFP are not part of the ODA patching process, but there is a firmware update available for those kind of SFP on Oracle X7 server familly (including ODA). Please review note 2373070.1 for more information :

Using the onboard SFP28 ports on an ODA X7-2 server node (Doc ID 2373070.1)

 

Cet article Patching ODA lite to 12.2.1.4.0 est apparu en premier sur Blog dbi services.

Some New Features of Oracle Instant Client 18.3

Christopher Jones - Mon, 2018-07-30 05:52

We released Oracle Database 18.3 for Linux last week. It (and the "full" Oracle Client) are downloadable from here. Read this to find out about some of the new database features.

Many of the readers of my blog have an equal interest in the "client side". You'll be happy that Oracle Instant Client 18.3 for Linux 64-bit and 32-bit is also available. Instant Client is just a rebundling of the Oracle client libraries and some tools. They are the same ones available with an Oracle Database installation or the "full" Oracle Client installation but installation is much simpler: you just unzip a file, or install an RPM package on Linux and use them to connect your applications to Oracle Database.

The "Oracle Client", in whatever install footprint you choose, covers a number of technologies and provides a lot of language APIs. The Instant Client packages contain these APIs and selected tools like SQL*Plus and Data Pump. I'll let those teams blow their own trumpets about the new release. Here I'll talk about some of the Oracle Client functionality that benefits the Oracle Oracle Call Interface (OCI) API for C programs, and all the scripting languages that use OCI:

  • My wider group's most exciting project in 18.3 is the Connection Manager (CMAN) Traffic Director mode whose sub-location in the Oracle manual is a sign of how the feature its transparent, and not indicative of the huge engineering effort that went into it. CMAN in Traffic Director Mode is a proxy between the database clients and the database instances. Supported OCI clients from Oracle Database 11g Release 2 (11.2) and later can connect to CMAN to get improved high availability (HA) for planned and unplanned database server outages, connection multiplexing support, and load balancing.

Cherry picking some notable Oracle Client 18c features that are available via OCI:

  • You probably know that Oracle Database 18c is really just a re-badged 12.2.0.2. Due to the major version number change and the new release strategy, there is a new OCIServerRelease2() call to get the database version number. The old OCIServerRelease() function will give just the base release information so use the new function to get the actual DB patch level. Why? Let's just say there were robust discussions about the upgrade and release cycles, and about handling the "accelerated" version change across the whole database product suite and how things like upgrade tools were affected.

  • Extracting Instant Client 18.3 ZIP files now pre-creates symbolic links for the C and C++ client libraries on relevant operating systems. Yay! One fewer install step.

  • Instant Client now also pre-creates a network/admin sub-directory to show where you can put any optional network and other configuration files such as tnsnames.ora, sqlnet.ora, ldap.ora, and oraaccess.xml. This directory will be used by default for any application that loads the related Oracle Client libraries.

  • Support for Client Result Caching with dynamic binds where descriptors are not involved and the bind length is less than 32768. Since scripting languages tend to use dynamic binds for character data this could be a big performance win for your lookup table queries.

  • Unique ID generation improvements. One little old gotcha, particularly in some hosted or cloud environments, were errors when Oracle applications tried to generate a unique key for your client. This manifested itself as an Oracle error when you tried to start a program. Workarounds included adding a hostname to /etc/hosts. There were improvements in Oracle Client 18c for unique key generation so the problem should be less common.

  • A new call timeout parameter can be enabled for C applications. This applies to post-connection round-trips to the database, making it easier to interrupt long running calls and satisfy application quality of service requirements. After you connect, each OCI call may make one of more round-trips to Oracle database:

    • If the time from the start of any one round-trip to the completion of that same round-trip exceeds the call timeout milliseconds, then the operation is halted and an Oracle error is returned.

    • In the case where an OCI call requires more than one round-trip and each round-trip takes less than the specified number of milliseconds, then no timeout will occur, even if the sum of all round-trip calls exceeds the call timeout value.

    • If no round-trip is required, the operation will never be interrupted.

    After a timeout has occurred, the connection must be cleaned up. This is allowed to run for the same amount of time as specified for the original timeout. For very small timeouts, if the cleanup fails, then an ORA-3114 is returned and the connection must be released. However if the cleanup is successful then an ORA-3136 is returned and the application can continue using the connection.

    You can see this will be most useful for interrupting SQL statements whose "execute" phase may take some time.

  • The OCI Session pool underlays many application connection pools (and if it doesn't underlay yours, then it should - ask me why). Improvements in 18c session pooling include some usability "do-what-I-mean" parameter size check tweaks, internal lock improvements, and a new attribute OCI_ATTR_SPOOL_MAX_USE_SESSION.

    One other change that was much debated during development is the OCISessionGet() behavior of OCI_SPOOL_ATTRVAL_NOWAIT mode when a pool has to grow. Prior to 18c, even though it was a 'no wait' operation, getting a connection would actually wait for the pool to grow. Some users didn't like this. Since creating connections could take a few moments they had no way to control the quality of service. Now in 18c the mode doesn't wait - if there's no free connection immediately available, then control is returned to the application with an error. If you are impacted by the new behavior, then look at using alternative session acquire modes like OCI_SPOOL_ATTRVAL_TIMEDWAIT. Or better, keep your pool a constant size so it doesn't need to grow, which is what is recommended by Oracle's Real World Performance Group.

  • SODA support. Simple Oracle Document Access (SODA) that was previously only available via JDBC is now available in OCI. Yum. Let's see what we can do with this now it's in C. More on this later.

I hope this has given you a taste of some Oracle Client 18c changes and given you links to explore more. Don't forget that much new database functionality is available to clients transparently or via SQL and PL/SQL.

Finally, remember that Oracle has client-server version interoperability so 18c OCI programs can connect to Oracle Database 11.2 or later. It's time to upgrade your client!

FAQ: Webinars for “Oracle Indexing Internals and Best Practices”

Richard Foote - Mon, 2018-07-30 05:01
I’ve been somewhat inundated with questions regarding the “Oracle Indexing Internals and Best Practices” webinar series I’ll be running in October and November since I announced both webinar series last week. So I’ve compiled the following list of frequently asked questions which I’m hoping will address most of those asked. If you have any additional […]
Categories: DBA Blogs

Partner Webcast – Enforcing in-depth Data protection & privacy with Database Security ...

Databases continue to be the most attractive targets for attackers because they are the information store with all the sensitive data. Oracle Databases hold the majority of the world’s...

We share our skills to maximize your revenue!
Categories: DBA Blogs

Network Slowness Caused Database Contention That Caused Goldengate Lag

Pakistan's First Oracle Blog - Mon, 2018-07-30 00:55
I got paged for a goldengate extract lagging behind. Checked the extract configuration and it was normal extract and it seemed stuck without giving any error in the ggserr.log or anywhere else. It wasn't abended either and was in running state.


Tried stopping and restating it, but still it remained in running state while doing nothing and lag was increasing. So the issue was clearly outside of goldengate. Checked the database by starting from alert log and didn't see any errors there either.

Jumped into the database and ran some queries to see which sessions were active and what they were running. After going through various active sessions, turned out that few of them were doing long transactions over a dblink and these sessions were several hours old and seemed stuck. These sessions were also inducing widespread delay on the temp tablespace and were blocking other sessions. Due to undersized temp plus these stuck long running transactions, database performance was also slower than usual.

Ran a select statement over that dblink and it was very slow. Used tnsping to ping that database remotely and it returned with delay. Then used network commands like ping, tracert, etc to check network status and it all was pointing to delay in network.

Killed the long running transaction as it was going nowhere, and that eased the pressure on temp tablespace, which in return enabled extract to finish off the lag.
Categories: DBA Blogs

Log Buffer #546: A Carnival Of The Vanities For DBAs

Pakistan's First Oracle Blog - Mon, 2018-07-30 00:38
This Log Buffer Edition covers Cloud, Oracle, and PostgreSQL.
Cloud:
Google Maps platform now integrated with the GCP Console
Getting more value from your Stackdriver logs with structured data
Improving application availability with Alias IPs, now with hot standby
Performing a large-scale principal component analysis faster using Amazon SageMaker
Optimized TensorFlow 1.8 now available in the AWS: deep learning AMIs to accelerate training on Amazon EC2 C5 and P3 instances


Oracle:
Using GoldenGate LogDump to find bad data
Partition-Wise Operations: new features in 12c and 18c
SOA Suite 12c in Docker containers: only a couple of commands, no installers, no third party scripts
Checking if the current user is logged into Application Builder
PostgreSQL:
Let’s start out with some fun! I really enjoyed Wendy Kuhn‘s article on May 5 about the history of PostgreSQL. She starts out by relaying the importance of learning the history behind new technical tools & concepts when you’re learning. I couldn’t agree more.
Speaking of history, I’ve been waiting for the right time to mention this fun article from August 2016. Now is the time, because it relates to the previous article and because I saw a few retweets last week mentioning it. Did you ever wonder why the PostgreSQL logo is an elephant? Or what his name is?? Or even better – did turtles or cheetahs ever represent PostgreSQL???? Patrycja Dybka answers these questions and more. Check it out!
Ok, moving on to the serious stuff. :) First off, we’ve got a new round of minor releases of PostgreSQL. Version 10.4, 9.6.9, etc, were released on May 10. Time to start planning those upgrade cycles!
Next up, JD posted a nice summary of PGConf US in New Jersey on May 7. I saw a lot of familiar faces in his pictures! One quick call-out: I heard good things about the speed mentoring at the career fair. I think that was a great idea. (Among many at PGConf.)
Another interesting thing JD touched on in his blog post was the growing role of larger companies in the community. He gave a few specific examples related to Google and Microsoft. Back on April 17, Pivotalpublished an article listing a number of specific ways they contribute to PostgreSQL development, as well.
Speaking of cloud companies, who doesn’t like a nice rowdy comparison? Over on the SeveralNines blog, we got exactly that on May 1: a quick side-by-side comparison of a few of the many cloud providers who ship PostgreSQL. There are a bunch more – feel free to leave comments on their blog post with the providers they left out!
As long as we’re doing comparisons, I saw this old website on Twitter last week, and it’s fun enough to pass along. Thomas Kellerer from Germany wrote a nice open-source tool called SQL Workbench/J. In the process of supporting many different databases, he’s learned a lot about the differences between them. And his website has a really detailed list. Check out this list of SQL features by database – PostgreSQL is looking good!
I always enjoy a good story. Singapore-based Ashnik recently published a new case study about a global insurance company who deployed a bank data exchange system on PostgreSQL: a fine example of the serious business that runs on PostgreSQL every day.
Moving into the technology space, infrastructure company Datrium has recently published a series of interesting articles about the benchmarking and heavyweight workloads they’re throwing at PostgreSQL. The most recent article on April 25 discusses PostgreSQL on bare metal and it has links to many previous articles.
In the category of query tuning, how would you like to make a small tweak to your schema and SQL, then experience a 290x speedup? That’s exactly what happened to Yulia Oletskaya! She writes about it in this article on May 7.
“What’s common between DBA and detective? They both solve murder and mystery while trying to make sense of the nonsense.” That’s the first sentence of Alexey Lesovsky’s April 17 article about troubleshooting a PostgreSQL crash.
Going a little deeper, I have a handful of recent articles about specific database features in PostgreSQL.
First, how about a demonstration of PostgreSQL’s top-notch built-in support for full-text search? What better example than analyzing the public email of PostgreSQL contributor Tom Lane to find what his waking hours are? Turns out that he’s very consistent. In fact, it turns out you can use Tom Lane’s consistent email habits to spot server timezone misconfigurations.
Citus also published a nice article back at the beginning of April about row-level security. I didn’t include it last month but it’s worth mentioning now. PostgreSQL’s capabilities here are quite nice.
My past newsletters have been following Dimitri Fontaine’s series on PostgreSQL data types. We’ve got three new ones this time around: JSONEnum and Point types.
A big selling point for PostgreSQL is its extensibility. On May 8, Luca Ferrari from Italy published an article in BSD magazine which walked through the process of building a customer extension to provide a new foreign data wrapper that connects the database directly to a file system data source.
Our friends at Timescale put out an article about streaming replication on May 3. Lee Hampton gives one of the best descriptions of this critical HA concept that I’ve seen anywhere.
Finally, can a week go by without new articles about vacuum in PostgreSQL? It seems not!
On Apr 30, Jorge Torralba published an article on DZone about tuning autovacuum. He has a specific focus on bloat, which is an important reason for vacuuming. There are some nice examples here.
And back on April 3, Emily Chang from Datadog published perhaps one of the most detailed articles about vacuum that I’ve seen. Well worth reviewing.
To close up this edition: something a little different. This year marks the 15th anniversary of pgpool. And Tatsuo Ishii reminded us with a blog post on April 15.
So in honor of the 15th aniversary, let’s collect a few recent links *just* about pgpool!
Tatsuo also published two other articles in April about various features of pgpool:
And Vladimir Svedov at severalnines published a two-part series on pgpool in April as well.
And that’s a wrap for this week. Likely more content than you’ll have time for, as usual! My job here is done. :)

Originally posted at https://blog.pythian.com/log-buffer-546-carnival-vanities-dbas/
Categories: DBA Blogs

Using Groovy Whitepaper available

Anthony Shorten - Sun, 2018-07-29 18:33

Groovy is an alternative language for building extensions for Oracle Utilities Application Framework based products for on-premise and cloud implementations. For Cloud implementations it is the preferred language replacing java based extensions typically available for on-premise implementations. The implementation of Groovy in the Oracle Utilities Application Framework extends the scripting object to allow Groovy script, Groovy includes and Groovy libraries to be implemented. This is all controlled using a whitelist to ensure that the code is appropriate for the cloud implementation.

A new whitepaper is available outlining the Groovy capability as well as some guidelines on how to use Groovy to extend Oracle Utilities products. It is available as Using Groovy Script in Oracle Utilities Applications (Doc Id: 2427512.1) from My Oracle Support.

How to install Oracle RAC 18c in silent mode on Oracle Linux 7.5 with VirtualBox – Part 1

Pierre Forstmann Oracle Database blog - Sun, 2018-07-29 14:04

Both posts document how to install a 2-node Oracle RAC cluster with Oracle 18c on Oracle Linux 7.5 (OL7) with VirtualBox.

Part 1 details Linux installation and configuration and part 2 details Oracle software installation (Grid Infrastructure + Oracle Database) and database creation.

Disclaimer: this is only an example that can be used to setup a lab or test system: it is not designed to be used for production purpose.

Overview

Each RAC node must:

  • have access to shared storage to be used by the RAC database because a RAC database is a shared everything database.
  • have network connectivity with a dedicated private network (also named RAC interconnect) to other cluster nodes.
  • The cluster should have also 3 differents virtual IP adresses (VIP) to be used only by the SCAN listener: this single name should be resolved by 3 differents adresses.

    The following table gives the SCAN network configuration used for this installation:

    SCAN VIP 1 VIP 2 VIP 3 ol7dec-scan 192.168.56.148 192.168.56.149 192.168.56.150

    A 2-node Oracle RAC cluster needs actually 3 machines (if you dedicate DNS server to a different virtual machine (VM)):

  • 2 cluster nodes that are hosting the 2 database instances of the single RAC database
  • another machine to host a Domain Name System (DNS) for the SCAN listener VIPs.
  • One of the very first thing to do is to choose hostnames and network IP addresses.

    The following table gives the cluster network configuration needed for this Oracle installation:

    ol7dns03: DNS server ol7decn1: RAC node 1 ol7decn2: RAC node 2 network interface NAT 10.0.2.15 10.0.2.15 10.0.2.15 enp0s3 Public IP 192.168.56.143 192.168.56.138 192.168.56.139 enp0s8 Private IP N/A 192.168.43.138 192.168.43.139 enp0s9 Virtual IP (VIP) N/A 192.168.56.246 192.168.56.247 assigned by OUI

    Note that Oracle Universal Installer (OUI) will assign network interface for cluster node virtual IP address (VIP) during Grid Infrastructure installation.

    The NAT interface is only needed to be able to connect to Oracle YUM servers to download RPM packages: strictly speaking it is not direclty required by Oracle software installation (Grid Infrastructure or Oracle Database).

    The main steps of this system/network/storage installation and configuration part are the following:

    1. configure DNS server machine

    2. configure first cluster node with shared storage

    3. clone first cluster node to second cluster node

    4. install Oracle 18c preinstallation RPM on both nodes and configure passwordless ssh

    5. run Cluster Verification Utility (CLUVFY) to make sure both cluster nodes are ready for Oracle sofware installation.

    All commands with ‘#” prompt must be entered with root user account while all command with ‘$’ prompt must be entered with oracle user account.

    DNS machine configuration

    I have created first VBOX VM with following configuration(this VM is running Oracle Linux 7 (OL7)):
    RAM: 1 GB

  • one 12 GB hardisk attached to SATA controller
  • 2 network interfaces (the first one attached to NAT and the second one attached to Host-Only Adapter)
  • When installing Oracle Linux 7 I have chosen in following order:

    1. the right timezone for my country (Paris, France)

    2. the right keyboard for my host system (French)

    3. Infrastructure Server for “Base Environment” and DNS Name Server for “Add-Ons For Selected Environment”

    4. Automatic configure partitioning in Installation Destination

    5. to set only hostname to ol7dns03.localdomain (no network configuration)

    6. to set root password.

    After OL7 installation and VM reboot, I have used system console to configure public network interface:

    # nmcli connection add type ethernet con-name enp0s8 ifname enp0s8 ip4 192.168.56.143/24
    

    Now I can connect to ol7dns02 using SSH and check network configuration:

    # ip addr
    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:d6:99:79 brd ff:ff:ff:ff:ff:ff
    3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:8e:18:3a brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.143/24 brd 192.168.56.255 scope global noprefixroute enp0s8
           valid_lft forever preferred_lft forever
        inet6 fe80::17e4:6618:27f8:9a76/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    # 
    

    I have configured NAT network interface with (10.0.2.15 is the related IP address and 10.0.2.2 the related gateway IP address):

    # nmcli connection add type ethernet con-name enp0s3 ifname enp0s3 ip4 10.0.2.15/8 gw4 10.0.2.2
    Connection 'enp0s3' (6818d165-506a-40d6-95c3-e2077a79f974) successfully added.
    

    I have added my internet box IP address to /etc/resolv.conf:

    # cat /etc/resolv.conf 
    nameserver 192.168.1.254
    

    I have checked that I have internet access from ol7dns03:

    # ping -c 1 www.oracle.com
    PING e870.dscx.akamaiedge.net (104.93.247.134) 56(84) bytes of data.
    64 bytes from a104-93-247-134.deploy.static.akamaitechnologies.com (104.93.247.134): icmp_seq=1 ttl=63 time=33.1 ms
    
    --- e870.dscx.akamaiedge.net ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 33.104/33.104/33.104/0.000 ms
    

    This OL7 installation is using about 1.3 GB of disk space:

    # df -h
    Filesystem           Size  Used Avail Use% Mounted on
    devtmpfs             476M     0  476M   0% /dev
    tmpfs                496M     0  496M   0% /dev/shm
    tmpfs                496M  6.8M  489M   2% /run
    tmpfs                496M     0  496M   0% /sys/fs/cgroup
    /dev/mapper/ol-root  9.8G  1.4G  8.5G  14% /
    /dev/sda1           1014M  169M  846M  17% /boot
    tmpfs                100M     0  100M   0% /run/user/0
    
    DNS configuration

    DNS server is not configured by default:

    # systemctl status named
    ● named.service - Berkeley Internet Name Domain (DNS)
       Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
       Active: inactive (dead
    

    Here is my /etc/named.conf:

    # cat named.conf
    //
    // named.conf
    //
    // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
    // server as a caching only nameserver (as a localhost DNS resolver only).
    //
    // See /usr/share/doc/bind*/sample/ for example named configuration files.
    //
    // See the BIND Administrator's Reference Manual (ARM) for details about the
    // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
    
    options {
    	listen-on port 53 { 127.0.0.1;192.168.56.143; };
    	listen-on-v6 port 53 { ::1; };
    	directory 	"/var/named";
    	dump-file 	"/var/named/data/cache_dump.db";
    	statistics-file "/var/named/data/named_stats.txt";
    	memstatistics-file "/var/named/data/named_mem_stats.txt";
    	allow-query     { localhost; };
    
    	/* 
    	 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
    	 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
    	   recursion. 
    	 - If your recursive DNS server has a public IP address, you MUST enable access 
    	   control to limit queries to your legitimate users. Failing to do so will
    	   cause your server to become part of large scale DNS amplification 
    	   attacks. Implementing BCP38 within your network would greatly
    	   reduce such attack surface 
    	*/
    	recursion yes;
    
    	dnssec-enable yes;
    	dnssec-validation yes;
    
    	/* Path to ISC DLV key */
    	bindkeys-file "/etc/named.iscdlv.key";
    
    	managed-keys-directory "/var/named/dynamic";
    
    	pid-file "/run/named/named.pid";
    	session-keyfile "/run/named/session.key";
    };
    
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    zone "localdomain." IN {
            type master;
            file "localdomain.zone";
            allow-update { none; };
            allow-query { any; };
    };
    
    zone "56.168.192.in-addr.arpa." IN {
            type master;
            file "56.168.192.in-addr.arpa";
            allow-update { none; };
    };
    
    zone "." IN {
    	type hint;
    	file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    
    

    Note that I have added the following sections to default /etc/named.conf for localdomain.com:

    zone "localdomain." IN {
            type master;
            file "localdomain.zone";
            allow-update { none; };
            allow-query { any; };
    };
    
    
    zone "56.168.192.in-addr.arpa." IN {
            type master;
            file "56.168.192.in-addr.arpa";
            allow-update { none; };
    };
    

    and I have added VM IP 192.168.56.143 address to:

    listen-on port 53 { 127.0.0.1;192.168.56.143; };
    

    I have created the file /var/named/localdomain.zone which contains:

  • the 3 IP adresses for the SCAN listener (rh7ttc-scan)
  • each cluster node public IP address (ol7decn1 and ol7decn2)
  • 
    # cat localdomain.zone 
    $TTL    86400
    @               IN SOA  localhost root.localhost (
                                            42              ; serial (d. adams)
                                            3H              ; refresh
                                            15M             ; retry
                                            1W              ; expiry
                                            1D )            ; minimum
                    IN NS           localhost
    localhost       IN A            127.0.0.1
    ol7dec-scan     IN A    192.168.56.148 
    ol7dec-scan     IN A    192.168.56.149
    ol7dec-scan     IN A    192.168.56.150
    ol7decn1        IN A    192.168.56.138
    ol7decn2        IN A    192.168.56.139
    #
    

    I have also created /var/named/56.168.192.in-addr.arpa:

    # cat 56.168.192.in-addr.arpa
    $ORIGIN 56.168.192.in-addr.arpa.
    $TTL 1H
    @       IN      SOA     d12.localdomain.     d12.localdomain. (      2
                                                    3H
                                                    1H
                                                    1W
                                                    1H )
    56.168.192.in-addr.arpa.         IN NS      d12.localdomain.
    
    148    IN PTR  ol7dec-scan.localdomain.
    149    IN PTR  ol7dec-scan.localdomain.
    150    IN PTR  ol7dec-scan.localdomain.
    138    IN PTR  ol7decn1.localdomain.
    139    IN PTR  ol7decn2.localdomain.
    

    I have started named service with:

    # systemctl status named
    ● named.service - Berkeley Internet Name Domain (DNS)
       Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
       Active: active (running) since Sat 2018-07-14 18:44:36 CEST; 6s ago
      Process: 29241 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
      Process: 29238 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
     Main PID: 29244 (named)
       CGroup: /system.slice/named.service
               └─29244 /usr/sbin/named -u named -c /etc/named.conf
    
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: zone 56.168.192.in-addr.arpa/IN: loaded serial 2
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: zone localhost/IN: loaded serial 0
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: zone localdomain/IN: loaded serial 42
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: all zones loaded
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: running
    Jul 14 18:44:36 ol7dns03.localdomain systemd[1]: Started Berkeley Internet Name Domain (DNS).
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: error (network unreachable) resolving './DNSKEY/IN': 2001:503:ba3e::2:30#53
    Jul 14 18:44:36 ol7dns03.localdomain named[29244]: error (network unreachable) resolving './NS/IN': 2001:503:ba3e::2:30#53
    

    I have tested that DNS is working locally after modifying /etc/resolv.conf:

    # cat /etc/resolv.conf
    search localdomain
    nameserver 192.168.56.143
    nameserver 192.168.1.254
    
    # nslookup ol7dec-scan
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.148
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.150
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.149
    
    # nslookup ol7decn1   
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7decn1.localdomain
    Address: 192.168.56.138
    
    # nslookup ol7decn2
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7decn2.localdomain
    Address: 192.168.56.139
    
    #
    

    I have enabled automatic named service start by Linux boot with:

    # systemctl is-enabled named
    disabled
    # systemctl enable named
    Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
    # 
    

    And I have tested that after VM reboot …

    # systemctl reboot
    

    … named service has been automatically restarted:

    # systemctl  status named
    ● named.service - Berkeley Internet Name Domain (DNS)
       Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
       Active: active (running) since Sat 2018-07-14 18:47:48 CEST; 14s ago
      Process: 1125 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
      Process: 1093 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
     Main PID: 1141 (named)
       CGroup: /system.slice/named.service
               └─1141 /usr/sbin/named -u named -c /etc/named.conf
    
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: zone 0.in-addr.arpa/IN: loaded serial 0
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: zone 56.168.192.in-addr.arpa/IN: loaded serial 2
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: zone localhost/IN: loaded serial 0
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: zone localhost.localdomain/IN: loaded serial 0
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: zone localdomain/IN: loaded serial 42
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: all zones loaded
    Jul 14 18:47:48 ol7dns03.localdomain systemd[1]: Started Berkeley Internet Name Domain (DNS).
    Jul 14 18:47:48 ol7dns03.localdomain named[1141]: running
    # nslookup ol7dec-scan
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.150
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.149
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.148
    
    

    I have also disabled some firewall settings for ol7dns03 so that cluster nodes will be able to query DNS:

    # firewall-cmd --zone=public --add-port=53/tcp --add-port=53/udp
    success
    # firewall-cmd --permanent --zone=public --add-port=53/tcp --add-port=53/udp
    success
    # 
    
    Oracle RAC cluster node configuration

    I have created first cluster node VM with following configuration:

  • RAM: 8 GB
  • one 40 GB hardisk attached to SATA controller
  • 3 network interfaces (the first one attached to NAT and the second and third one attached to Host-Only Adapter)
  • When installing OL7 I have chosen in the following order:

    1. English as installation language

    2. the right timezone for my country (Paris, France)

    3. the right keyboard for my host system (French)

    4. manual partitioning only to set / file system size to 30 GB and swap space size to 8 GB

    6. to only set hostname to ol7decn1.localdomain (no network configuration)

    7. to set root password.

    I have left Software Selection to default value “minimal installation”.

    After OL7 installation and VM reboot, I have used system console to configure public network interface:

    #  nmcli connection add type ethernet con-name enp0s8 ifname enp0s8 ip4 192.168.56.138/24
    

    Now I connect with ssh to ol7decn1 and check network confoguration:

    # ip addr
    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:31:3d:db brd ff:ff:ff:ff:ff:ff
    3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:34:9d:cb brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.138/24 brd 192.168.56.255 scope global noprefixroute enp0s8
           valid_lft forever preferred_lft forever
        inet6 fe80::ff11:58c8:a1ae:b6e0/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:4a:e5:1a brd ff:ff:ff:ff:ff:ff
    

    I have configured NAT network interface with 10.0.2.15 as IP address and 10.0.2.2 as related gateway IP address:

    # nmcli connection add type ethernet con-name enp0s3 ifname enp0s3 ip4 10.0.2.15/8 gw4 10.0.2.2
    Connection 'enp0s3' (1971852d-ee58-48c1-a247-518d2dbf75aa) successfully added.
    

    I have also configured third network interface for the RAC interconnect:

    #  nmcli connection add type ethernet con-name enp0s9 ifname enp0s9 ip4 192.168.43.138/24
    Warning: There is another connection with the name 'enp0s9'. Reference the connection by its uuid 'ed848ab9-5f78-4c0f-a629-2aaac20287c2'
    Connection 'enp0s9' (ed848ab9-5f78-4c0f-a629-2aaac20287c2) successfully added.
    

    I have checked with ip command the current network configuration:

    # ip addr
    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:31:3d:db brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/8 brd 10.255.255.255 scope global noprefixroute enp0s3
           valid_lft forever preferred_lft forever
        inet6 fe80::29ab:3073:bbe8:acd/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:34:9d:cb brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.138/24 brd 192.168.56.255 scope global noprefixroute enp0s8
           valid_lft forever preferred_lft forever
        inet6 fe80::ff11:58c8:a1ae:b6e0/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:4a:e5:1a brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.138/24 brd 192.168.43.255 scope global noprefixroute enp0s9
           valid_lft forever preferred_lft forever
        inet6 fe80::905d:a529:4f0b:78ef/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    #
    

    I have modified /etc/resolv.conf for DNS server and internet access:

    nameserver 192.168.56.143
    search localdomain
    nameserver 192.168.1.254
    

    I have checked internet access:

    # ping -c 1 www.oracle.com
    PING e870.dscx.akamaiedge.net (104.85.40.158) 56(84) bytes of data.
    64 bytes from a104-85-40-158.deploy.static.akamaitechnologies.com (104.85.40.158): icmp_seq=1 ttl=63 time=33.2 ms
    
    --- e870.dscx.akamaiedge.net ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 33.222/33.222/33.222/0.000 ms
    

    I have installed bind-utils package for nslookup:

    # yum install bind-utils
    Failed to set locale, defaulting to C
    Loaded plugins: ulninfo
    ol7_UEKR4                                                | 1.2 kB     00:00     
    ol7_latest                                               | 1.4 kB     00:00     
    (1/5): ol7_UEKR4/x86_64/updateinfo                         | 196 kB   00:01     
    (2/5): ol7_latest/x86_64/updateinfo                        | 518 kB   00:01     
    (3/5): ol7_latest/x86_64/group                             | 659 kB   00:02     
    (4/5): ol7_latest/x86_64/primary                           | 5.8 MB   00:07     
    (5/5): ol7_UEKR4/x86_64/primary                            |  39 MB   00:32     
    ol7_UEKR4                                                               711/711
    ol7_latest                                                            8151/8151
    Resolving Dependencies
    --> Running transaction check
    ---> Package bind-utils.x86_64 32:9.9.4-61.el7 will be installed
    --> Processing Dependency: bind-libs = 32:9.9.4-61.el7 for package: 32:bind-utils-9.9.4-61.el7.x86_64
    --> Processing Dependency: libisccc.so.90()(64bit) for package: 32:bind-utils-9.9.4-61.el7.x86_64
    --> Processing Dependency: liblwres.so.90()(64bit) for package: 32:bind-utils-9.9.4-61.el7.x86_64
    --> Processing Dependency: libbind9.so.90()(64bit) for package: 32:bind-utils-9.9.4-61.el7.x86_64
    --> Processing Dependency: libisc.so.95()(64bit) for package: 32:bind-utils-9.9.4-61.el7.x86_64
    --> Processing Dependency: libdns.so.100()(64bit) for package: 32:bind-utils-9.9.4-61.el7.x86_64
    --> Processing Dependency: libisccfg.so.90()(64bit) for package: 32:bind-utils-9.9.4-61.el7.x86_64
    --> Running transaction check
    ---> Package bind-libs.x86_64 32:9.9.4-61.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package           Arch          Version                Repository         Size
    ================================================================================
    Installing:
     bind-utils        x86_64        32:9.9.4-61.el7        ol7_latest        204 k
    Installing for dependencies:
     bind-libs         x86_64        32:9.9.4-61.el7        ol7_latest        1.0 M
    
    Transaction Summary
    ================================================================================
    Install  1 Package (+1 Dependent package)
    
    Total download size: 1.2 M
    Installed size: 3.0 M
    Is this ok [y/d/N]: y
    Downloading packages:
    warning: /var/cache/yum/x86_64/7Server/ol7_latest/packages/bind-utils-9.9.4-61.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
    Public key for bind-utils-9.9.4-61.el7.x86_64.rpm is not installed
    (1/2): bind-utils-9.9.4-61.el7.x86_64.rpm                  | 204 kB   00:00     
    (2/2): bind-libs-9.9.4-61.el7.x86_64.rpm                   | 1.0 MB   00:01     
    --------------------------------------------------------------------------------
    Total                                              847 kB/s | 1.2 MB  00:01     
    Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    Importing GPG key 0xEC551F03:
     Userid     : "Oracle OSS group (Open Source Software group) "
     Fingerprint: 4214 4123 fecf c55b 9086 313d 72f9 7b74 ec55 1f03
     Package    : 7:oraclelinux-release-7.5-1.0.3.el7.x86_64 (@anaconda/7.5)
     From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    Is this ok [y/N]: y
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : 32:bind-libs-9.9.4-61.el7.x86_64                             1/2 
      Installing : 32:bind-utils-9.9.4-61.el7.x86_64                            2/2 
      Verifying  : 32:bind-utils-9.9.4-61.el7.x86_64                            1/2 
      Verifying  : 32:bind-libs-9.9.4-61.el7.x86_64                             2/2 
    
    Installed:
      bind-utils.x86_64 32:9.9.4-61.el7                                             
    
    Dependency Installed:
      bind-libs.x86_64 32:9.9.4-61.el7                                              
    
    Complete!
    

    I have modified /etc/resolv.conf:

    # cat /etc/resolv.conf
    nameserver 192.168.56.143
    search localdomain
    nameserver 192.168.1.254
    

    I have checked DNS:

    # nslookup ol7dec-scan
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.148
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.149
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.150
    
    # 
    
    # nslookup ol7decn1
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7decn1.localdomain
    Address: 192.168.56.138
    
    # nslookup ol7decn2
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7decn2.localdomain
    Address: 192.168.56.139
    
    # ip route
    default via 10.0.2.2 dev enp0s3 proto static metric 101 
    10.0.0.0/8 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 101 
    192.168.43.0/24 dev enp0s9 proto kernel scope link src 192.168.43.138 metric 102 
    192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.138 metric 100 
    # 
    

    I have updated /etc/hosts with both cluster nodes IP addresses:

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    #
    # Public
    192.168.56.138 ol7decn1 ol7decn1.localdomain
    192.168.56.139 ol7decn2 ol7decn2.localdomain
    # Private
    192.168.43.138 ol7decn1-priv ol7decn1-priv.localdomain
    192.168.43.139 ol7decn2-priv ol7decn2-priv.localdomain
    # VIP
    192.168.56.246 ol7decn1-vip ol7decn1-vip.localdomain^M
    192.168.56.247 ol7decn2-vip ol7decn2-vip.localdomain^M
    #
    192.168.56.148 ol7de-scan.localdomain
    192.168.56.149 ol7de-scan.localdomain
    192.168.56.150 ol7de-scan.localdomain
    #
    
    Shared storage configuration

    I have decided to use ASM Filter Driver (ASMFD) to manage ASM disk devices.

    Even if I currently have only one cluster node I can start to configure shared storage because configuration will be kept by cloning first cluster node VM to second cluster node VM.

    On my host system, I have created 4 virtual disks for 4 ASM disk groups:

  • one for OCR and voting disk (2 GB)
  • one for the Grid Infrastructure Management Repository (GIMR) database mandatory (40 GB)
  • one for databases files (40 GB)
  • one for the fast recovery area (FRA – 20 GB)
  • $ vboxmanage createhd --filename /mnt/wdz/vm/ol7decn1.ol7decn2.sata.1.vdi --size=2048 -format=VDI --variant=fixed
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Medium created. UUID: 8cbfb2a8-e92d-4dc0-bb42-e7984a365160
    $ vboxmanage createhd --filename /mnt/wdz/vm/ol7decn1.ol7decn2.sata.2.vdi --size=40960 -format=VDI --variant=fixed
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Medium created. UUID: c11b8d7f-d5a3-4089-9014-bec5c14a6145
    $ vboxmanage createhd --filename /mnt/wdz/vm/ol7decn1.ol7decn2.sata.3.vdi --size=40960 -format=VDI --variant=fixed
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Medium created. UUID: 55e9d135-466e-4422-b4d1-c0399ebf79db
    $ vboxmanage createhd --filename /mnt/wdz/vm/ol7decn1.ol7decn2.sata.4.vdi --size=20480 -format=VDI --variant=fixed
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Medium created. UUID: 3f119c92-6095-43f0-9a18-d288f428f907
    

    I have shutdown ol7decn1 VM and run following commands to attach the virtual disks and make them shareable:

    $ vboxmanage controlvm ol7decn1 poweroff
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    $ vboxmanage storageattach ol7decn1 --storagectl "SATA" --port 1 --device 0 --type hdd --medium /mnt/wdz/vm/ol7decn1.ol7decn2.sata.1.vdi
    $ vboxmanage storageattach ol7decn1 --storagectl "SATA" --port 2 --device 0 --type hdd --medium /mnt/wdz/vm/ol7decn1.ol7decn2.sata.2.vdi
    $ vboxmanage storageattach ol7decn1 --storagectl "SATA" --port 3 --device 0 --type hdd --medium /mnt/wdz/vm/ol7decn1.ol7decn2.sata.3.vdi
    $ vboxmanage storageattach ol7decn1 --storagectl "SATA" --port 4 --device 0 --type hdd --medium /mnt/wdz/vm/ol7decn1.ol7decn2.sata.4.vdi
    
    $ vboxmanage modifyhd /mnt/wdz/vm/ol7decn1.ol7decn2.sata.1.vdi -type shareable
    $ vboxmanage modifyhd /mnt/wdz/vm/ol7decn1.ol7decn2.sata.2.vdi -type shareable
    $ vboxmanage modifyhd /mnt/wdz/vm/ol7decn1.ol7decn2.sata.3.vdi -type shareable
    $ vboxmanage modifyhd /mnt/wdz/vm/ol7decn1.ol7decn2.sata.4.vdi -type shareable
     
    

    I have restarted ol7decn1 VM …

    $ vboxmanage startvm ol7decn1 
    Waiting for VM "ol7decn1" to power on...
    VM "ol7decn1" has been successfully started.
    

    … and created a single partition on each disk:

    # fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0xe9ec650a.
    
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): 
    Using default response p
    Partition number (1-4, default 1): 
    First sector (2048-4194303, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): 
    Using default value 4194303
    Partition 1 of type Linux and of size 2 GiB is set
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    # fdisk /dev/sdc
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0xa47c41e8.
    
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): 
    Using default response p
    Partition number (1-4, default 1): 
    First sector (2048-83886079, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): 
    Using default value 83886079
    Partition 1 of type Linux and of size 40 GiB is set
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    # fdisk /dev/sdd
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x40f31e60.
    
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): 
    Using default response p
    Partition number (1-4, default 1): 
    First sector (2048-83886079, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): 
    Using default value 83886079
    Partition 1 of type Linux and of size 40 GiB is set
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    # fdisk /dev/sde
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x44bce253.
    
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p):  
    Using default response p
    Partition number (1-4, default 1): 
    First sector (2048-41943039, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
    Using default value 41943039
    Partition 1 of type Linux and of size 20 GiB is set
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    # lsblk
    NAME                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                    8:0    0   40G  0 disk 
    |-sda1                 8:1    0    1G  0 part /boot
    `-sda2                 8:2    0   38G  0 part 
      |-ol_ol7decn1-root 249:0    0   30G  0 lvm  /
      `-ol_ol7decn1-swap 249:1    0    8G  0 lvm  [SWAP]
    sdb                    8:16   0    2G  0 disk 
    `-sdb1                 8:17   0    2G  0 part 
    sdc                    8:32   0   40G  0 disk 
    `-sdc1                 8:33   0   40G  0 part 
    sdd                    8:48   0   40G  0 disk 
    `-sdd1                 8:49   0   40G  0 part 
    sde                    8:64   0   20G  0 disk 
    `-sde1                 8:65   0   20G  0 part 
    sr0                   11:0    1 1024M  0 rom  
    

    I have retrieved SCSI unique identifiers for the 4 disks:

    # /lib/udev/scsi_id -g -u -d /dev/sdb
    1ATA_VBOX_HARDDISK_VB8cbfb2a8-6051364a
    # /lib/udev/scsi_id -g -u -d /dev/sdc
    1ATA_VBOX_HARDDISK_VBc11b8d7f-45614ac1
    # /lib/udev/scsi_id -g -u -d /dev/sdd
    1ATA_VBOX_HARDDISK_VB55e9d135-db79bf9e
    # /lib/udev/scsi_id -g -u -d /dev/sde
    1ATA_VBOX_HARDDISK_VB3f119c92-07f928f4
    # 
    

    I have created UDEV script /etc/udev/rules.d/99-oracle-asmdevices.rules (because ASMFD will be used udev does not create new device names: this will be managed by ASMFD):

    # cat /etc/udev/rules.d/99-oracle-asmdevices.rules
    KERNEL=="sd?1", OWNER="oracle", GROUP="dba", MODE="0660", PROGRAM="/lib/udev/scsi_id -g -u /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB8cbfb2a8-6051364a"
    KERNEL=="sd?1", OWNER="oracle", GROUP="dba", MODE="0660", PROGRAM="/lib/udev/scsi_id -g -u /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBc11b8d7f-45614ac1"
    KERNEL=="sd?1", OWNER="oracle", GROUP="dba", MODE="0660", PROGRAM="/lib/udev/scsi_id -g -u /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB55e9d135-db79bf9e"
    KERNEL=="sd?1", OWNER="oracle", GROUP="dba", MODE="0660", PROGRAM="/lib/udev/scsi_id -g -u /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB3f119c92-07f928f4"
    

    I have rebooted …:

    # systemctl reboot
    

    … and checked disk device names:

    # ls -al /dev/sd*
    brw-rw----. 1 root disk 8,  0 Jul 15 10:50 /dev/sda
    brw-rw----. 1 root disk 8,  1 Jul 15 10:50 /dev/sda1
    brw-rw----. 1 root disk 8,  2 Jul 15 10:50 /dev/sda2
    brw-rw----. 1 root disk 8, 16 Jul 15 10:50 /dev/sdb
    brw-rw----. 1 root root 8, 17 Jul 15 10:50 /dev/sdb1
    brw-rw----. 1 root disk 8, 32 Jul 15 10:50 /dev/sdc
    brw-rw----. 1 root root 8, 33 Jul 15 10:50 /dev/sdc1
    brw-rw----. 1 root disk 8, 48 Jul 15 10:50 /dev/sdd
    brw-rw----. 1 root root 8, 49 Jul 15 10:50 /dev/sdd1
    brw-rw----. 1 root disk 8, 64 Jul 15 10:50 /dev/sde
    brw-rw----. 1 root root 8, 65 Jul 15 10:50 /dev/sde1
    
    Clone first cluster node to second cluster node

    I have shutdown ol7decn1 and I have first cloned ol7decn1 system disk:

    $ vboxmanage controlvm ol7decn1 poweroff
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    $  vboxmanage clonehd  /mnt/wdz/vm/ol7decn1.vdi.sata.0.vdi /mnt/wdz/vm/ol7decn2.vdi.sata.0.vdi
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Clone medium created in format 'VDI'. UUID: 05b9cae1-b69d-41ef-bf19-dcd14ffe979a
    

    Using VBOX GUI I have created a new VM named ol7decn2 using ol7decn2.sata.0.vdi as system disk.

    I have set the same properties for ol7decn2 as for ol7decn1:

  • RAM: 8GB
  • 3 network interfaces (the first one attached to NAT and the second and third one attached to Host-Only Adapter).
  • I have attached the 4 shared disks to ol7decn2:

    $ vboxmanage storageattach  ol7decn2 --storagectl "SATA" --port 1 --device 0 --type hdd --medium /mnt/wdz/vm/ol7decn1.ol7decn2.sata.1.vdi  --mtype shareable
    $ vboxmanage storageattach  ol7decn2 --storagectl "SATA" --port 2 --device 0 --type hdd --medium /mnt/wdz/vm/ol7decn1.ol7decn2.sata.2.vdi  --mtype shareable
    $ vboxmanage storageattach  ol7decn2 --storagectl "SATA" --port 3 --device 0 --type hdd --medium /mnt/wdz/vm/ol7decn1.ol7decn2.sata.3.vdi  --mtype shareable
    $ vboxmanage storageattach  ol7decn2 --storagectl "SATA" --port 4 --device 0 --type hdd --medium /mnt/wdz/vm/ol7decn1.ol7decn2.sata.4.vdi  --mtype shareable
    $ 
    

    I have started ol7decn2 and from the console modified the hostname:

    # cat /etc/hostname
    ol7decn2.localdomain
    #
    

    From the console I have reconfigured the public network interface and the interconnect network interface:

    # nmcli con del enp0s8
    # nmcli connection add type ethernet con-name enp0s8 ifname enp0s8 ip4 192.168.56.139/24
    # nmcli con del enp0s9
    # nmcli connection add type ethernet con-name enp0s9 ifname enp0s9 ip4 192.168.43.139/24
    

    Now I can connect with SSH and check network configuration:

    # ip addr
    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:97:01:43 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/8 brd 10.255.255.255 scope global noprefixroute enp0s3
           valid_lft forever preferred_lft forever
        inet6 fe80::29ab:3073:bbe8:acd/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:21:c2:65 brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.139/24 brd 192.168.56.255 scope global noprefixroute enp0s8
           valid_lft forever preferred_lft forever
        inet6 fe80::bef4:a06f:aacb:d0ad/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:bc:d0:50 brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.139/24 brd 192.168.43.255 scope global noprefixroute enp0s9
           valid_lft forever preferred_lft forever
        inet6 fe80::a745:1d47:77de:b3bb/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    # nmcli dev status
    DEVICE  TYPE      STATE      CONNECTION 
    enp0s3  ethernet  connected  enp0s3     
    enp0s8  ethernet  connected  enp0s8     
    enp0s9  ethernet  connected  enp0s9     
    lo      loopback  unmanaged  --         
    

    Note that there is no need to reconfigure the NAT network interface.

    I have rebooted ol7decn2 …

    # systemctl reboot
    

    … and checked that network interfaces are up and that DNS is OK:

    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:97:01:43 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/8 brd 10.255.255.255 scope global noprefixroute enp0s3
           valid_lft forever preferred_lft forever
        inet6 fe80::29ab:3073:bbe8:acd/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:21:c2:65 brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.139/24 brd 192.168.56.255 scope global noprefixroute enp0s8
           valid_lft forever preferred_lft forever
        inet6 fe80::bef4:a06f:aacb:d0ad/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:bc:d0:50 brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.139/24 brd 192.168.43.255 scope global noprefixroute enp0s9
           valid_lft forever preferred_lft forever
        inet6 fe80::a745:1d47:77de:b3bb/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    # ip route
    default via 10.0.2.2 dev enp0s3 proto static metric 100 
    10.0.0.0/8 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 
    192.168.43.0/24 dev enp0s9 proto kernel scope link src 192.168.43.139 metric 102 
    192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.139 metric 101 
    # nslookup ol7dec-scan
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.149
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.150
    Name:	ol7dec-scan.localdomain
    Address: 192.168.56.148
    # nslookup ol7decn1
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7decn1.localdomain
    Address: 192.168.56.138
    
    # nslookup ol7decn2
    Server:		192.168.56.143
    Address:	192.168.56.143#53
    
    Name:	ol7decn2.localdomain
    Address: 192.168.56.139
    
    preinstallation RPM installation and SSH configuration

    On both nodes I have enabled ol7_u5_base YUM repository for 18c preinstallation RPM in /etc/yum.repos.d/public-yum-ol7.repo:

    [ol7_u5_base]
    name=Oracle Linux $releasever Update 5 installation media copy ($basearch)
    baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/5/base/$basearch/
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    gpgcheck=1
    enabled=1
    

    On both nodes I have installed the 18c preinstallation RPM with root account:

    # yum install -y oracle-database-preinstall-18c
    

    I have configured passwordless ssh between the 2 cluster nodes for oracle account.

    First I have set oracle password on both nodes (note that oracle account has been created by the preinstallation RPM):

    # id oracle
    uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
    # passwd oracle
    Changing password for user oracle.
    New password:
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password:
    passwd: all authentication tokens updated successfully.
    #
    

    I have run with oracle account on first cluster node:

    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/oracle/.ssh/id_rsa): 
    Created directory '/home/oracle/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/oracle/.ssh/id_rsa.
    Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:EMJjdVtnyc5qyYwg6+9D76QTy3qzIxQZim40S9cxa3s oracle@ol7decn1.localdomain
    The key's randomart image is:
    +---[RSA 2048]----+
    |   ...o . ..o.   |
    |    =+ o o oo    |
    | . o.+= .  o     |
    |.+..++..    o    |
    |+ + .+..S+ o     |
    | +  o.oE. *      |
    |.  o o.+..       |
    |    o Oo.        |
    |    .*=B.        |
    +----[SHA256]-----+
    $ ssh-copy-id ol7decn2
    /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/oracle/.ssh/id_rsa.pub"
    /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    oracle@ol7decn2's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'ol7decn2'"
    and check to make sure that only the key(s) you wanted were added.
    
    

    I have run with oracle account on cluster node 2 ol7decn2:

    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/oracle/.ssh/id_rsa): 
    Created directory '/home/oracle/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/oracle/.ssh/id_rsa.
    Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:WLm1YGfQA4vx9JgCZIVTl+d/6Z/Llnl7PaDfAbJi1DY oracle@ol7decn2.localdomain
    The key's randomart image is:
    +---[RSA 2048]----+
    |   .+++ =+       |
    |   .o. *.B+      |
    |     .o Xo=.     |
    |       = *o.     |
    |      . S..E . . |
    |        . . =.+  |
    |         o ..o..+|
    |        . ..  +=*|
    |            ...BB|
    +----[SHA256]-----+
    $ ssh-copy-id ol7decn1
    /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/oracle/.ssh/id_rsa.pub"
    The authenticity of host 'ol7decn1 (192.168.56.138)' can't be established.
    ECDSA key fingerprint is SHA256:xo4lc6xkmEsFroCbIFcGUuWa2yuF7OUzPLVedKhk5dU.
    ECDSA key fingerprint is MD5:d2:ef:bc:d9:b7:2a:e5:1f:91:e5:78:42:1b:a5:6e:3a.
    Are you sure you want to continue connecting (yes/no)? yes
    /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    oracle@ol7decn1's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'ol7decn1'"
    and check to make sure that only the key(s) you wanted were added.
    

    I have checked that I can connect to each remote node without password.

    From ol7decn1 to ol7decn2:

    $ ssh ol7decn2
    Last failed login: Sat Jul 28 15:22:39 CEST 2018 from ol7decn1 on ssh:notty
    There was 1 failed login attempt since the last successful login.
    Last login: Sat Jul 28 15:19:27 2018
    $ logout
    Connection to ol7decn2 closed.
    

    From ol7decn2 to ol7decn1:

    $ ssh ol7decn1
    Last login: Sat Jul 28 15:21:09 2018
    $ logout
    Connection to ol7decn1 closed.
    

    I have also enabled passwordless ssh on each node with local ssh connection (i.e. from ol7decn1 to ol7decn1 and from ol7decn2 to ol7decn2):

    $ ssh-copy-id ol7decn1
    /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/oracle/.ssh/id_rsa.pub"
    The authenticity of host 'ol7decn1 (192.168.56.138)' can't be established.
    ECDSA key fingerprint is SHA256:xo4lc6xkmEsFroCbIFcGUuWa2yuF7OUzPLVedKhk5dU.
    ECDSA key fingerprint is MD5:d2:ef:bc:d9:b7:2a:e5:1f:91:e5:78:42:1b:a5:6e:3a.
    Are you sure you want to continue connecting (yes/no)? yes
    /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    oracle@ol7decn1's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'ol7decn1'"
    and check to make sure that only the key(s) you wanted were added.
    

    and:

    $ ssh-copy-id ol7decn2
    /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/oracle/.ssh/id_rsa.pub"
    The authenticity of host 'ol7decn2 (192.168.56.139)' can't be established.
    ECDSA key fingerprint is SHA256:xo4lc6xkmEsFroCbIFcGUuWa2yuF7OUzPLVedKhk5dU.
    ECDSA key fingerprint is MD5:d2:ef:bc:d9:b7:2a:e5:1f:91:e5:78:42:1b:a5:6e:3a.
    Are you sure you want to continue connecting (yes/no)? yes
    /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    oracle@ol7decn2's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'ol7decn2'"
    and check to make sure that only the key(s) you wanted were added.
    

    I have checked that I connect locally on each node without password:

    $ ssh ol7decn1 hostname
    ol7decn1.localdomain
    

    and:

    $ ssh ol7decn2 hostname
    ol7decn2.localdomain
    
    CLUVFY step

    I have uploaded Grid Infrastructure 18c media to first cluster node after creating /stage directory:

    # mkdir /stage
    # chown oracle:dba /stage
    

    I have run with oracle account:

    $ cd /stage
    $ unzip LINUX.X64_180000_grid_home.zip 
    

    I have run CLUVFY :

    ./runcluvfy.sh stage -pre crsinst -n "ol7decn1,ol7decn2"
    
    ERROR: 
    PRVG-10467 : The default Oracle Inventory group could not be determined.
    
    Verifying Physical Memory ...FAILED (PRVF-7530)
    Verifying Available Physical Memory ...PASSED
    Verifying Swap Size ...PASSED
    Verifying Free Space: ol7decn2:/usr,ol7decn2:/var,ol7decn2:/etc,ol7decn2:/sbin,ol7decn2:/tmp ...PASSED
    Verifying Free Space: ol7decn1:/usr,ol7decn1:/var,ol7decn1:/etc,ol7decn1:/sbin,ol7decn1:/tmp ...PASSED
    Verifying User Existence: oracle ...
      Verifying Users With Same UID: 54321 ...PASSED
    Verifying User Existence: oracle ...PASSED
    Verifying Group Existence: asmadmin ...FAILED (PRVG-10461)
    Verifying Group Existence: asmdba ...FAILED (PRVG-10461)
    Verifying Group Membership: asmadmin ...FAILED (PRVG-10460)
    Verifying Group Membership: asmdba ...FAILED (PRVG-10460)
    Verifying Run Level ...PASSED
    Verifying Hard Limit: maximum open file descriptors ...PASSED
    Verifying Soft Limit: maximum open file descriptors ...PASSED
    Verifying Hard Limit: maximum user processes ...PASSED
    Verifying Soft Limit: maximum user processes ...PASSED
    Verifying Soft Limit: maximum stack size ...PASSED
    Verifying Architecture ...PASSED
    Verifying OS Kernel Version ...PASSED
    Verifying OS Kernel Parameter: semmsl ...PASSED
    Verifying OS Kernel Parameter: semmns ...PASSED
    Verifying OS Kernel Parameter: semopm ...PASSED
    Verifying OS Kernel Parameter: semmni ...PASSED
    Verifying OS Kernel Parameter: shmmax ...PASSED
    Verifying OS Kernel Parameter: shmmni ...PASSED
    Verifying OS Kernel Parameter: shmall ...PASSED
    Verifying OS Kernel Parameter: file-max ...PASSED
    Verifying OS Kernel Parameter: ip_local_port_range ...PASSED
    Verifying OS Kernel Parameter: rmem_default ...PASSED
    Verifying OS Kernel Parameter: rmem_max ...PASSED
    Verifying OS Kernel Parameter: wmem_default ...PASSED
    Verifying OS Kernel Parameter: wmem_max ...PASSED
    Verifying OS Kernel Parameter: aio-max-nr ...PASSED
    Verifying OS Kernel Parameter: panic_on_oops ...PASSED
    Verifying Package: binutils-2.23.52.0.1 ...PASSED
    Verifying Package: compat-libcap1-1.10 ...PASSED
    Verifying Package: libgcc-4.8.2 (x86_64) ...PASSED
    Verifying Package: libstdc++-4.8.2 (x86_64) ...PASSED
    Verifying Package: libstdc++-devel-4.8.2 (x86_64) ...PASSED
    Verifying Package: sysstat-10.1.5 ...PASSED
    Verifying Package: ksh ...PASSED
    Verifying Package: make-3.82 ...PASSED
    Verifying Package: glibc-2.17 (x86_64) ...PASSED
    Verifying Package: glibc-devel-2.17 (x86_64) ...PASSED
    Verifying Package: libaio-0.3.109 (x86_64) ...PASSED
    Verifying Package: libaio-devel-0.3.109 (x86_64) ...PASSED
    Verifying Package: nfs-utils-1.2.3-15 ...PASSED
    Verifying Package: smartmontools-6.2-4 ...PASSED
    Verifying Package: net-tools-2.0-0.17 ...PASSED
    Verifying Port Availability for component "Oracle Notification Service (ONS)" ...PASSED
    Verifying Port Availability for component "Oracle Cluster Synchronization Services (CSSD)" ...PASSED
    Verifying Users With Same UID: 0 ...PASSED
    Verifying Current Group ID ...PASSED
    Verifying Root user consistency ...PASSED
    Verifying Package: cvuqdisk-1.0.10-1 ...FAILED (PRVG-11550)
    Verifying Host name ...PASSED
    Verifying Node Connectivity ...
      Verifying Hosts File ...PASSED
      Verifying Check that maximum (MTU) size packet goes through subnet ...PASSED
      Verifying subnet mask consistency for subnet "10.0.0.0" ...PASSED
      Verifying subnet mask consistency for subnet "192.168.56.0" ...PASSED
      Verifying subnet mask consistency for subnet "192.168.43.0" ...PASSED
    Verifying Node Connectivity ...FAILED (PRVG-1172, PRVG-11067, PRVG-11095)
    Verifying Multicast or broadcast check ...PASSED
    Verifying Network Time Protocol (NTP) ...
      Verifying '/etc/ntp.conf' ...PASSED
      Verifying '/etc/chrony.conf' ...PASSED
      Verifying '/var/run/ntpd.pid' ...PASSED
      Verifying '/var/run/chronyd.pid' ...PASSED
    Verifying Network Time Protocol (NTP) ...PASSED
    Verifying Same core file name pattern ...PASSED
    Verifying User Mask ...PASSED
    Verifying User Not In Group "root": oracle ...PASSED
    Verifying Time zone consistency ...PASSED
    Verifying Time offset between nodes ...PASSED
    Verifying resolv.conf Integrity ...FAILED (PRVG-10048)
    Verifying DNS/NIS name service ...PASSED
    Verifying Domain Sockets ...PASSED
    Verifying /boot mount ...PASSED
    Verifying Daemon "avahi-daemon" not configured and running ...PASSED
    Verifying Daemon "proxyt" not configured and running ...PASSED
    Verifying User Equivalence ...PASSED
    Verifying /dev/shm mounted as temporary file system ...PASSED
    Verifying File system mount options for path /var ...PASSED
    Verifying zeroconf check ...PASSED
    Verifying ASM Filter Driver configuration ...PASSED
    
    Pre-check for cluster services setup was unsuccessful on all the nodes. 
    
    
    Failures were encountered during execution of CVU verification request "stage -pre crsinst".
    
    Verifying Physical Memory ...FAILED
    ol7decn2: PRVF-7530 : Sufficient physical memory is not available on node
              "ol7decn2" [Required physical memory = 8GB (8388608.0KB)]
    
    ol7decn1: PRVF-7530 : Sufficient physical memory is not available on node
              "ol7decn1" [Required physical memory = 8GB (8388608.0KB)]
    
    Verifying Group Existence: asmadmin ...FAILED
    ol7decn2: PRVG-10461 : Group "asmadmin" selected for privileges "OSASM" does
              not exist on node "ol7decn2".
    
    ol7decn1: PRVG-10461 : Group "asmadmin" selected for privileges "OSASM" does
              not exist on node "ol7decn1".
    
    Verifying Group Existence: asmdba ...FAILED
    ol7decn2: PRVG-10461 : Group "asmdba" selected for privileges "OSDBA" does not
              exist on node "ol7decn2".
    
    ol7decn1: PRVG-10461 : Group "asmdba" selected for privileges "OSDBA" does not
              exist on node "ol7decn1".
    
    Verifying Group Membership: asmadmin ...FAILED
    ol7decn2: PRVG-10460 : User "oracle" does not belong to group "asmadmin"
              selected for privileges "OSASM" on node "ol7decn2".
    
    ol7decn1: PRVG-10460 : User "oracle" does not belong to group "asmadmin"
              selected for privileges "OSASM" on node "ol7decn1".
    
    Verifying Group Membership: asmdba ...FAILED
    ol7decn2: PRVG-10460 : User "oracle" does not belong to group "asmdba" selected
              for privileges "OSDBA" on node "ol7decn2".
    
    ol7decn1: PRVG-10460 : User "oracle" does not belong to group "asmdba" selected
              for privileges "OSDBA" on node "ol7decn1".
    
    Verifying Package: cvuqdisk-1.0.10-1 ...FAILED
    ol7decn2: PRVG-11550 : Package "cvuqdisk" is missing on node "ol7decn2"
    
    ol7decn1: PRVG-11550 : Package "cvuqdisk" is missing on node "ol7decn1"
    
    Verifying Node Connectivity ...FAILED
    PRVG-1172 : The IP address "10.0.2.15" is on multiple interfaces "enp0s3" on
    nodes "ol7decn2,ol7decn1"
    
    ol7decn2: PRVG-11067 : TCP connectivity from node "ol7decn2": "10.0.2.15" to
              node "ol7decn2": "10.0.2.15" failed.
              PRVG-11095 : The TCP system call "connect" failed with error "111"
              while executing exectask on node "ol7decn2"
              Connection refused
    ol7decn2: PRVG-11067 : TCP connectivity from node "ol7decn2": "10.0.2.15" to
              node "ol7decn1": "10.0.2.15" failed.
              PRVG-11095 : The TCP system call "connect" failed with error "111"
              while executing exectask on node "ol7decn2"
              Connection refused
    
    Verifying resolv.conf Integrity ...FAILED
    ol7decn2: PRVG-10048 : Name "ol7decn2" was not resolved to an address of the
              specified type by name servers o"192.168.1.254".
    
    ol7decn1: PRVG-10048 : Name "ol7decn1" was not resolved to an address of the
              specified type by name servers o"192.168.1.254".
    
    
    CVU operation performed:      stage -pre crsinst
    Date:                         Jul 28, 2018 3:48:26 PM
    CVU home:                     /stage/
    User:                         oracle
    $
    

    I have ignored all warnings.

    The 2 cluster nodes are now ready for Grid Infrastructure installation.

    Categories: DBA Blogs

    Oracle Weblogic 12c: Extracting the complete configuration via wlst.sh python script

    Dietrich Schroff - Sat, 2018-07-28 14:52
    If you want to get all information out of a weblogic server via wlst.sh than you can use the following script:
    # written by Dietrich Schroff 2018
    import sys


    OutputFile='myfile.txt'
    sys.stdout = open(OutputFile,'w')
    connect('weblogic','mypasswd','t3://localhost:7001')
    depth=0

    def loopOverAllSubdirectories(goIntoThisDirectory,depth):
        depth=depth+1
        cd(goIntoThisDirectory)
        print depth," "*depth*2,goIntoThisDirectory
        try:
                completeInput=ls()
                inputArray=completeInput.split('\n')
            allParameters=[ x for x in inputArray if (not ("dr--" in x) or ("drw-" in x)) ]
            for Parameter in allParameters:
                if Parameter != "" :
                    print depth," "*depth*2,Parameter
                allDirectoriesWrongFormat=[ x for x in inputArray if (("dr--" in x) or ("drw-" in x)) ]
                allDirectoriesWrongFormat2=[x.replace('dr--', '') for x in allDirectoriesWrongFormat]
                allDirectoriesToManyBlanks=[x.replace('drw-', '') for x in allDirectoriesWrongFormat2]
                allDirectories=[x.lstrip().rstrip() for x in allDirectoriesToManyBlanks]
            for Directory in allDirectories:
                if depth < 5 :
                    loopOverAllSubdirectories(Directory,depth)
                cd('..')
        except:
            cd('..')

    domainRuntime()
    print "domainRuntime"
    print "###############################################"
    loopOverAllSubdirectories('/',0)
    serverConfig()
    print "ServerConfig"
    print "###############################################"
    loopOverAllSubdirectories('/',0)
    This is a recursiv program which steps into all directories until a level of 5. On my weblogic server this scripts ran for more than two minutes:
    # time ./wlst.sh myScript.py > /dev/null 

    real    2m35.241s
    user    0m29.405s
    sys    0m4.259s
    I tried unlimited depth, but then i had to stop at level 1500, because i think, that it will never stop ;-).

    The output file would look like this:
    domainRuntime
    ###############################################
    1    /
    1    -r--   ActivationTime                               Fri Feb 23 13:03:05 EST 2018  
    1    -r--   MigrationDataRuntimes                        null  
    1    -r--   Name                                         ovm_domain  
    1    -rw-   Parent                                       null  
    1    -r--   ServiceMigrationDataRuntimes                 null  
    1    -r--   Type                                         DomainRuntime  
    1    -r-x   preDeregister                                Void :   
    1    -r-x   restartSystemResource                        Void : WebLogicMBean(weblogic.management.configuration.SystemResourceMBean)  
    2      AppRuntimeStateRuntime
    2      drw-   AppRuntimeStateRuntime
    3        AppRuntimeStateRuntime
    3        -r--   ApplicationIds                               java.lang.String[oracle.sdp.client#2.0@12.1.3, oracle.pwdgen#2.0@12.1.3, owasp.esapi#2.0@12.1.3, oracle.wsm.seedpolicies#2.0@12.1.3, odl.clickhistory#1.0@12.1.3, odl.clickhistory.webapp#1.0@12.1.3, oracle.jrf.system.filter, oracle.jsp.next#12.1.3@12.1.3, oracle.dconfig-infra#2.0@12.1.3, orai18n-adf#11@11.1.1.1.0, oracle.adf.dconfigbeans#1.0@12.1.3.0.0, adf.oracle.domain#1.0@12.1.3.0.0, adf.oracle.businesseditor#1.0@12.1.3.0.0, oracle.adf.management#1.0@12.1.3.0.0, adf.oracle.domain.webapp#1.0@12.1.3.0.0, jsf#2.1@2.1.7-01-, jstl#1.2@1.2.0.1, UIX#11@12.1.3.0.0, ohw-rcf#5@12.1.3.0.0, ohw-uix#5@12.1.3.0.0, oracle.adf.desktopintegration.model#1.0@12.1.3.0.0, oracle.adf.desktopintegration#1.0@12.1.3.0.0, oracle.bi.jbips#11.1.1@0.1, oracle.bi.composer#11.1.1@0.1, oracle.bi.adf.model.slib#1.0@12.1.3.0.0, oracle.bi.adf.view.slib#1.0@12.1.3.0.0, oracle.bi.adf.webcenter.slib#1.0@12.1.3.0.0, state-management-provider-memory-rar-12.1.3, wsil-wls#12.1.3.0.0, DMS Application#12.1.3.0.0, coherence-transaction-rar, ovm_core, ovm_console, ovm_help]  
    3        -r--   Name                                         AppRuntimeStateRuntime  
    3        -r--   Type                                         AppRuntimeStateRuntime  
    3        -r-x   getCurrentState                              String : String(appid),String(moduleid),String(subModuleId),String(target)  
    3        -r-x   getCurrentState                              String : String(appid),String(moduleid),String(target)  
    [.....]
    4          JVMRuntime
    4          drw-   AdminServer
    5            AdminServer
    5            -r--   HeapFreeCurrent                              447991664  
    5            -r--   HeapFreePercent                              90  
    5            -r--   HeapSizeCurrent                              841109504  
    5            -r--   HeapSizeMax                                  4151836672  
    5            -r--   JavaVMVendor                                 Oracle Corporation  
    5            -r--   JavaVendor                                   Oracle Corporation  
    5            -r--   JavaVersion                                  1.7.0_151  
    5            -r--   Name                                         AdminServer  
    5            -r--   OSName                                       Linux  
    5            -r--   OSVersion                                    4.1.12-94.3.9.el7uek.x86_64  
    5            -r--   Type                                         JVMRuntime  
    5            -r--   Uptime                                       22612965  
    5            -r-x   preDeregister                                Void :   
    # wc -l myfile.txt 
    19787 myfile.txt
    Nearly 20.000 parameters... not bad...

    Improve INSERT speed for loading volume sample data

    Tom Kyte - Sat, 2018-07-28 05:06
    Hi Team At the time of writing this, on LiveSQL I get "500 Internal Server Error", so will just paste the re-producible code here. I'm building sample application data for testing using PL/SQL. For loading 10M data in USERS_MAPPING table, cur...
    Categories: DBA Blogs

    SQL question with compass points

    Tom Kyte - Sat, 2018-07-28 05:06
    Hi sir, I have one dought is given below How to write select statement for bitmap index For example North is decode as 1 remains 0 West is decode as 1 remains 0 East is decode as 1 remains 0 South is decode as 1 remains 0 Output...
    Categories: DBA Blogs

    Top things to know about Creating Mockups

    Nilesh Jethwa - Fri, 2018-07-27 23:08

    Everything You Need To Know About Mockups Compared to a wireframe, a mockup is a more realistic representation of your web project. The wireframe, which is done before a mockup, is just a black-and-white sketch representation. But with a mockup, … Continue reading ?

    Credit: MockupTiger Wireframes

    function-based index issue

    Tom Kyte - Fri, 2018-07-27 10:46
    Hi Tom, I have table with 1 755 001 rows and functional-based index as follows: <code> create table OC_YKB.TAB_TEST3 (guid number(16), pan varchar2(19 byte)); create sequence oc_ykb.sq_test3; INSERT /*+ APPEND */ INTO OC_YKB.TAB_TEST3 sele...
    Categories: DBA Blogs

    RMAN Backup

    Tom Kyte - Fri, 2018-07-27 10:46
    Hi, I have few clarifications needed regarding RMAN. 1. During Incremental RMAN backup - How does Oracle handles the uncommitted transactions? 2. If a backup is running for a long time (10-20 hrs) - How Oracle handles the backup process - wh...
    Categories: DBA Blogs

    Need to create dynamic columns in the report

    Tom Kyte - Fri, 2018-07-27 10:46
    Hi Tom, I am new to SQL and PLSQL, I have a requirement to create a report, which includes dynamic column for month based on number of months from Program duration. I actually tried to create scripts in LiveSQL, but right now it is not accessib...
    Categories: DBA Blogs

    Datapump (Export the live database & import to remote host, with no data loss)

    Tom Kyte - Fri, 2018-07-27 10:46
    Hello Community, Appreciate if anyone could provide a high level steps for following; I have a requirement to export (live/archive enabled/OLTP) whole/partial database, while the database is online/available and import it to a remote/different ...
    Categories: DBA Blogs

    Insert Into Values generates multiple rows per execution

    Tom Kyte - Fri, 2018-07-27 10:46
    Hi This is a snip from a tkprof. <code>SQL ID: 4wgb411d8s7ss Plan Hash: 0 INSERT INTO QP_NPREQ_LINE_ATTRS_TMP (LINE_INDEX, ATTRIBUTE_LEVEL, ATTRIBUTE_TYPE, CONTEXT, ATTRIBUTE, VALUE_FROM, VALIDATED_FLAG, APPLIED_FLAG, PRICING_STATUS_...
    Categories: DBA Blogs

    ALL_OBJECTS/DBA_OBJECTS not displaying results when used in Proceudre

    Tom Kyte - Fri, 2018-07-27 10:46
    Hi, I was having a weird issue. I wanted to use the ALL_OBJECTS or DBA_OBJECTS to check the existence of an object on a different schema in my database. When I query the database, I'm able to see the object. However when I execute the same query u...
    Categories: DBA Blogs

    Logical standby: No view for data guard status on session level

    Yann Neuhaus - Fri, 2018-07-27 09:26

    On logical standby you have to switch off data guard at least on session level to make modifications on objects which are maintained by data guard.

    This is done by command


    alter session disable guard;

    Dataguard can be reenabled for this session by issuing


    alter session enable guard;

    For executing these commands “alter database” privilege is at least needed, which is often not liked by IT security staff.

    Command “alter session disable guard” is also used in login triggers of logical standby databases for power users who have to do modifications in objects which are maintained by data guard. Problem is that no view can be queried to get data guard status of the session.

    Workaround is to put result of login trigger into a log table which can be queried by the user.

     

    Cet article Logical standby: No view for data guard status on session level est apparu en premier sur Blog dbi services.

    ODA, network interface and configure-firstnet

    Yann Neuhaus - Fri, 2018-07-27 09:13

    Deploying new ODA X7-2S or 2M, I have been curious how configure-firstnet would interact with the fiber and copper ethernet network interfaces. Reading documentation on the web, I could not clearly understand if it is mandatory to have the ODA connected to the LAN when performing an ODA reimage and/or running the configure-firstnet in additionnal of having ILOM connection. After digging deeper and few tests, I wanted to share my experience in this blog.

    configure-firstnet

    Running configure-firstnet might need a little attention as it can be run just one time. In the example below, I’m running the firstnet configuration with a VLAN.

    configure first net

     network-script files

    The network script files are stored in /etc/sysconfig/network-scripts.

    Bounding is configured on btbond1 interface as :

    1. em2 as primary interface.
    2. active-backup mode : em3 is used as backup only and will be used if em2 is failling
      BOUNDING_OPTS=”mode=active-backup miimon=100 primary=em2″

    The only officially supported bounding option on the ODA is “active-backup”. Manually updating the ifcfg-btbond1 file with BOUNDING_OPTS=”mode=4 miimon=100 lacp_rate=1″ in order to implement LACP (Link Aggregation Control Protocol) would work if your switch is configured so, but is not supported. Recommendation would be to use ODA with “active-backup” mode only.

    This can be seen in the ifcfg-btbond1 configuration file.

    10.80.6.17-002-btbond1

    After running configure-firstnet, using a VLN, a new file ifcfg-btbond1.<vln_id> will be created. This file is having all the IP configuration (IP address, netmask, gateway). If no VLAN is used, the IP configuration will added into the ifcfg-btbond1 configuration file.

    10.80.6.17-004-vlan

    If we look more closely to the network configuration file, we will see em2 and em3 been configured with btbond1 as master.

    10.80.6.17-001-em2&3

    As we can see here there is, so far, no reference in the network configuration file as if you are using fiber or copper ethernet interface.

    em2 and em3 interface : Fiber or copper?

    em2 and em3 interfaces are automatically connected either on fiber or on copper ethernet according to the physical connection. Em2 and em3 interfaces would then either be using the 2 fiber ports (SFP28) or the 2 ethernet ports (NET1 – NET2).
    In fact, as soon as a GBIC converter is plugged into the fiber channels and a reboot is performed, the em2 and em3 will be automatically link to the fiber adapter. And no need to have any fiber cabling.

    No GBIC converter installed on the ODA

    IMG_1158 (Small)

    em2 and em3 interfaces would be seen as Twisted Pair.

    10.80.6.17-003-no gbic

    GBIC converter

    IMG_1160 (Small)

    GBIC converter installed on the ODA

    IMG_1161 (Small)

    After a server reboot, em2 and em3 interfaces would be seen as Fiber.

    10.80.6.17-004 (after plugging gbic and reboot)

    Conclusion

    Based on this short experience, we can see that the Fiber is detected as soon as a GBIC adapter is plugged into the SFP28 interfaces. The ifconfig network scripts are totally independent of this choice. Therefore, there is no need to have the ODA em2 and em3 network connections to reimage and run the configure-firstnet. These connections will be mandatory for the next step when we will create the appliance.

     

    Cet article ODA, network interface and configure-firstnet est apparu en premier sur Blog dbi services.

    Pages

    Subscribe to Oracle FAQ aggregator