Introduction

Until now, High-Availability (HA) ODAs could have been deployed either in bare metal or in virtualized mode. Virtualized mode means that instead of installing a classic Linux system on the nodes, an OVM hypervisor (based on Xen) was deployed. This hypervisor had at least one VM, a special one called ODA BASE, holding all the databases and having direct path to ASM disks. Other VMs could be created, not for databases but for applications, making ODA HA a smart solution for ISV. This solution was supported for hard partitioning, meaning that only the cores dedicated to ODA BASE VM needed Oracle Database licences.

Lite ODAs, from X6-2S until X8-M, could also have virtual machines on them for applications, but CPU resources were shared with bare metal databases (no hard-partitioning), and integration with odacli was missing. As a consequence, most of the lite ODAs running today are not using VMs.

Now, virtualization is available for all ODAs, HA and lite, and I just tested some of the virtualization features on a brand new ODA X8-2M.

What’s new?

First of all, there is no more specific ISO to deploy on your ODA if you need VMs. All ODAs will be deployed as bare metal systems, and you will be able to configure VMs later if you need to.

odacli now fully integrates the VM management. Each VM will be configured in a CPU pool, a CPU pool being dedicated cores for isolating VMs. VM can be of general purpose, or DB System. DB System is a specific kind of VM dedicated to databases: you don’t install yourself the OS and the database home, and you also don’t need to create the database. VMs are user-managed VMs, you will do everything on them, starting from installing the OS.

As virtualized ODA does not exist anymore, goodbye oakcli, this legacy tool that made ODA a success story is getting retired. odacli is now the only CLI with its system counterpart odaadmcli. And BUI, the Browser User Interface, is now available for everyone.

If you need strong isolation between your databases, you can now implement that with multiple DB Systems on multiple VLANs on a single ODA. It could make sense as ODA became more and more capable these past years.

Finally, hard-partitioning is now supported with KVM on ODA thanks to CPU pools. You will no more run your application VMs on the few cores dedicated to your databases if you use Enterprise Edition.

Hands on!

Nothing is better than a real test on these new features. My test is done on a brand new X8-2M with basic storage configuration. I will work with version 19.11, a first “production release” of this virtualization management. As my ODA came with 19.9, I will first do a complete reimage with 19.11. I will then configure a DB System and an application VM on it. These 2 VMs will use the public network: no VLAN configuration here but it’s something you would probably consider for your own environment.

Deploying this ODA

Deployment is not different than deploying a bare metal configuration as virtualization now comes on top:

    1) Get the ILOM IP address from your system administrator (first obtained automatically by DHCP), connect to ILOM and configure a fixed IP address
    2) Launch the server console from ILOM and connect the ODA ISO for reimaging. Change boot order for the next boot to CDROM and do a power cycle. The server will normally boot on this ISO and will automatically do the OS installation
    3) Once done, do a configure-firstnet for basic network configuration
    4) Copy the GI 19.11 and DB 19.11 clones on the server, unzip them and register these clones in the ODA repository
    5) Create a json file for deploying the appliance from the template, or use an existing one
    6) do an odacli create-appliance with this json file

If you’d like to have a look at my json file, I put it at the bottom. My appliance is created with Standard Edition, DATA/RECO is 80/20 using normal redundancy and test DB will be a multitenant 19c database. I would have used the same json file for a bare metal ODA.

Configuring a DB System

A DB System is basically a VM with a database already configured inside, something very similar to DB System in OCI, the public Cloud from Oracle. We first need to register the VM template in the ODA repository, then create a CPU Pool (which will be dedicated to DB Systems) and finally create the DB System itself using a specific json file (example provided at the bottom).

cd /opt/dbi
unzip p32451228_1911000_Linux-x86-64.zip
odacli update-repository -f /opt/dbi/odacli-dcs-19.11.0.0.0-ODAVM.zip
{
  "jobId" : "f0c0dddf-b070-44ff-a671-3ac4a9dd755d",
  "status" : "Created",
  "message" : "/opt/dbi/odacli-dcs-19.11.0.0.0-ODAVM.zip",
  "reports" : [ ],
  "createTimestamp" : "July 29, 2021 15:52:24 PM CEST",
  "resourceList" : [ ],
  "description" : "Repository Update",
  "updatedTime" : "July 29, 2021 15:52:24 PM CEST"
}
odacli describe-job -i "f0c0dddf-b070-44ff-a671-3ac4a9dd755d"

Job details
----------------------------------------------------------------
                     ID:  f0c0dddf-b070-44ff-a671-3ac4a9dd755d
            Description:  Repository Update
                 Status:  Success
                Created:  July 29, 2021 3:52:24 PM CEST
                Message:  /opt/dbi/odacli-dcs-19.11.0.0.0-ODAVM.zip

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Unzip bundle                             July 29, 2021 3:52:24 PM CEST       July 29, 2021 3:53:38 PM CEST       Success


odacli describe-dbsystem-image
DB System Image details
--------------------------------------------------------------------------------
Component Name        Supported Versions    Available Versions
--------------------  --------------------  --------------------
DBVM                  19.11.0.0.0           19.11.0.0.0
GI                    19.11.0.0.210420      19.11.0.0.210420
DB                    19.11.0.0.210420      19.11.0.0.210420

odacli list-vnetworks
Name                  Type             Interface        Bridge                Uniform   Created                  Updated
--------------------  ---------------  ---------------  --------------------  --------  -----------------------  -----------------------
pubnet                Bridged          btbond1          pubnet                NO        2021-07-29 12:17:40      2021-07-29 12:17:40
                                                                                        CEST                     CEST


 
odacli create-cpupool -n cpupool4dbsystems -c 4 -dbs

Job details
----------------------------------------------------------------
                     ID:  4d82cf3f-cc0f-4b7a-998d-c8c2eb8e0a7d
            Description:  CPU Pool cpupool4dbsystems creation
                 Status:  Created
                Created:  July 29, 2021 4:25:35 PM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------

odacli describe-job -i 4d82cf3f-cc0f-4b7a-998d-c8c2eb8e0a7d

Job details
----------------------------------------------------------------
                     ID:  4d82cf3f-cc0f-4b7a-998d-c8c2eb8e0a7d
            Description:  CPU Pool cpupool4dbsystems creation
                 Status:  Success
                Created:  July 29, 2021 4:25:35 PM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Validate CPU Pool doesn't exist          July 29, 2021 4:25:35 PM CEST       July 29, 2021 4:25:35 PM CEST       Success
Create metadata                          July 29, 2021 4:25:35 PM CEST       July 29, 2021 4:25:35 PM CEST       Success
Create CPU Pool                          July 29, 2021 4:25:35 PM CEST       July 29, 2021 4:25:35 PM CEST       Success
Persist metadata                         July 29, 2021 4:25:35 PM CEST       July 29, 2021 4:25:35 PM CEST       Success

odacli list-cpupools
Name                  Type                Configured on              Cores  Associated resources            Created                  Updated
--------------------  ------------------  -------------------------  -----  ------------------------------  -----------------------  -----------------------
cpupool4dbsystems     DB_SYSTEM_SHARED    dbi-oda-x8                 4      NONE                            2021-07-29 16:25:35      2021-07-29 16:25:35
                                                                                                            CEST                     CEST

vi /opt/dbi/create_dbsystem_srvdb01.json
…

odacli create-dbsystem -p /opt/dbi/create_dbsystem_srvdb01.json

odacli describe-job -i 4faa5606-6078-4c2a-940c-1990e588f9a2

Job details
----------------------------------------------------------------
                     ID:  4faa5606-6078-4c2a-940c-1990e588f9a2
            Description:  DB System srvdb01 creation
                 Status:  Success
                Created:  July 29, 2021 4:28:12 PM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Create DB System metadata                July 29, 2021 4:28:12 PM CEST       July 29, 2021 4:28:12 PM CEST       Success
Persist new DB System                    July 29, 2021 4:28:12 PM CEST       July 29, 2021 4:28:12 PM CEST       Success
Validate DB System prerequisites         July 29, 2021 4:28:12 PM CEST       July 29, 2021 4:28:16 PM CEST       Success
Setup DB System environment              July 29, 2021 4:28:16 PM CEST       July 29, 2021 4:28:21 PM CEST       Success
Create DB System ASM volume              July 29, 2021 4:28:21 PM CEST       July 29, 2021 4:28:27 PM CEST       Success
Create DB System ACFS filesystem         July 29, 2021 4:28:27 PM CEST       July 29, 2021 4:28:37 PM CEST       Success
Create DB System VM ACFS snapshots       July 29, 2021 4:28:37 PM CEST       July 29, 2021 4:28:54 PM CEST       Success
Create temporary SSH key pair            July 29, 2021 4:28:54 PM CEST       July 29, 2021 4:28:54 PM CEST       Success
Create DB System cloud-init config       July 29, 2021 4:28:54 PM CEST       July 29, 2021 4:28:54 PM CEST       Success
Provision DB System VM(s)                July 29, 2021 4:28:54 PM CEST       July 29, 2021 4:28:55 PM CEST       Success
Attach disks to DB System                July 29, 2021 4:28:55 PM CEST       July 29, 2021 4:28:56 PM CEST       Success
Add DB System to Clusterware             July 29, 2021 4:28:56 PM CEST       July 29, 2021 4:28:56 PM CEST       Success
Start DB System                          July 29, 2021 4:28:56 PM CEST       July 29, 2021 4:28:58 PM CEST       Success
Wait DB System VM first boot             July 29, 2021 4:28:58 PM CEST       July 29, 2021 4:30:11 PM CEST       Success
Setup Mutual TLS (mTLS)                  July 29, 2021 4:30:11 PM CEST       July 29, 2021 4:30:37 PM CEST       Success
Export clones repository                 July 29, 2021 4:30:37 PM CEST       July 29, 2021 4:30:38 PM CEST       Success
Setup ASM client cluster config          July 29, 2021 4:30:38 PM CEST       July 29, 2021 4:30:41 PM CEST       Success
Install DB System                        July 29, 2021 4:30:41 PM CEST       July 29, 2021 4:57:41 PM CEST       Success
Cleanup temporary SSH key pair           July 29, 2021 4:57:41 PM CEST       July 29, 2021 4:57:41 PM CEST       Success
Set DB System as configured              July 29, 2021 4:57:41 PM CEST       July 29, 2021 4:57:42 PM CEST       Success

My first DB System is now created, it took 30 minutes. This is not as fast as OCI, but it’s not that bad.

Let’s check if everything is fine on our database VDBITST@srvdb01:

odacli list-dbsystems

Name                  Shape       Cores  Memory      Status           Created                  Updated
--------------------  ----------  -----  ----------  ---------------  -----------------------  -----------------------
srvdb01               odb2        4      16.00 GB    CONFIGURED       2021-07-29 16:28:12      2021-07-29 16:57:42
                                                                      CEST                     CEST
odacli describe-dbsystem -n srvdb01

DB System details
--------------------------------------------------------------------------------
                       ID:  5949dfcc-93a0-43ff-abd0-4f6d3794c51d
                     Name:  srvdb01
                    Image:  19.11.0.0.0
                    Shape:  odb2
             Cluster name:  dbs9622f3fdf
                   Memory:  16.00 GB
                   Status:  CONFIGURED
                  Created:  2021-07-29 16:28:12 CEST
                  Updated:  2021-07-29 16:57:42 CEST

 CPU Pool
--------------------------
                     Name:  cpupool4dbsystems
          Number of cores:  4

                     Host:  dbi-oda-x8
        Effective CPU set:  0-3,32-35
              Online CPUs:  0, 1, 2, 3, 32, 33, 34, 35
             Offline CPUs:  NONE

 VM Storage
--------------------------
               Disk group:  DATA
              Volume name:  S9622F3FDF
            Volume device:  /dev/asm/s9622f3fdf-250
                     Size:  200.00 GB
              Mount Point:  /u05/app/sharedrepo/srvdb01

 VMs
--------------------------
                     Host:  dbi-oda-x8
                  VM Name:  x9622f3fdf
             VM Host Name:  srvdb01.dbi-lab.ch
             Target State:  ONLINE
            Current State:  ONLINE

 VNetworks
--------------------------
                     Host:  dbi-oda-x8
                  VM Name:  x9622f3fdf
                   Public:  10.36.10.242     / 255.255.255.0   / ens3 / BRIDGE(pubnet)
                      ASM:  192.168.17.4    / 255.255.255.128 / ens4 / BRIDGE(privasm) VLAN(priv0.100)

 Databases
--------------------------
                     Name:  VDBITST
              Resource ID:  dba32d60-6605-4858-af47-a0c188515387
              Unique name:  VDBITST
              Database ID:  1729733407
              Domain name:  dbi-lab.ch
               DB Home ID:  576a12a3-2ca7-4084-87e9-70c09125cd48
                    Shape:  odb2
                  Version:  19.11.0.0.210420
                  Edition:  SE
                     Type:  SI
                     Role:  PRIMARY
                    Class:  OLTP
                  Storage:  ASM
               Redundancy:
         Target node name:
            Character set:  AL32UTF8
        NLS character set:
                 Language:  ENGLISH
                Territory:  AMERICA
 
          Console enabled:  false
             SEHA enabled:  false
      Associated networks:  Public-network
         Backup config ID:
       Level 0 Backup Day:  sunday
       Autobackup enabled:  true
              TDE enabled:  false
                 CDB type:  false
                 PDB name:
           PDB admin user:

ssh 10.36.10.242
Warning: Permanently added '10.36.10.242' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last login: Thu Jul 29 16:56:57 2021
df -h
Filesystem                             Size  Used Avail Use% Mounted on
devtmpfs                               7.7G     0  7.7G   0% /dev
tmpfs                                  7.8G  257M  7.5G   4% /dev/shm
tmpfs                                  7.8G  8.8M  7.7G   1% /run
tmpfs                                  7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/mapper/VolGroupVm-LogVolRoot       30G  5.2G   23G  19% /
/dev/mapper/VolGroupVm-LogVolOpt        25G  4.4G   19G  19% /opt
/dev/vda1                              944M  134M  746M  16% /boot
/dev/mapper/VolGroupVm-LogVolU01        99G   22G   72G  24% /u01
192.168.17.2:/opt/oracle/oak/pkgrepos   99G   49G   46G  52% /opt/oracle/oak/pkgrepos
tmpfs                                  1.6G     0  1.6G   0% /run/user/0
ps -ef | grep pmon
root      2163  2108  0 17:02 pts/0    00:00:00 grep --color=auto pmon
oracle   96351     1  0 16:56 ?        00:00:00 ora_pmon_VDBITST
odacli list-databases

ID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
dba32d60-6605-4858-af47-a0c188515387     VDBITST    SI       19.11.0.0.210420     false      OLTP     odb2     ASM        CONFIGURED   576a12a3-2ca7-4084-87e9-70c09125cd48

su - oracle
Last login: Thu Jul 29 16:57:10 CEST 2021
. oraenv <<< VDBITST
sqlplus / as sysdba
select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
+DATA/VDBITST/DATAFILE/undotbs1.293.1079196525
+DATA/VDBITST/DATAFILE/system.291.1079196465
+DATA/VDBITST/DATAFILE/sysaux.292.1079196511
+DATA/VDBITST/DATAFILE/users.296.1079197015

exit
Disconnected from Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
exit
logout
exit
logout
Connection to 10.36.10.242 closed.

 
su – oracle
Last login: Thu Jul 29 16:50:24 CEST 2021
. oraenv <<< DBITST
sqlplus system/********@//10.36.10.242/VDBITST.dbi-lab.ch
select host_name, instance_name from v$instance;

HOST_NAME            INSTANCE_NAME
-------------------- ----------------
srvdb01              VDBITST

exit
Disconnected from Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
exit
logout

Our database is OK on the new DB System and it’s reachable from the node using easyconnect without any problem. Furthermore, odacli is available on the DB System. Everything works as expected.

Creating an application VM

A simple VM with a Linux OS will now be created. An ISO file of an Oracle Linux 7.9 has been put under /opt/dbi. A VM storage is created first, then a vdisk for the application. A new CPU pool for VMs (other than DB Systems) will be created and then the VM itself.

cd /opt/dbi
odacli create-vmstorage -n VMstore -s 100G

Job details
----------------------------------------------------------------
                     ID:  a0a4c1dc-9bc3-4f59-aacb-b4d627fd1bfb
            Description:  VM storage VMstore creation
                 Status:  Created
                Created:  July 29, 2021 6:03:02 PM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------

odacli list-vmstorages
Name                  Disk group       Volume name      Volume device                   Size        Mount Point                          Created                  Updated
--------------------  ---------------  ---------------  ------------------------------  ----------  -----------------------------------  -----------------------  -----------------------
VMstore               DATA             VMSTORE          /dev/asm/vmstore-250            100.00 GB   /u05/app/sharedrepo/vmstore          2021-07-29 18:03:21      2021-07-29 18:03:21
                                                                                                                                         CEST                     CEST

odacli create-vdisk -n srvapp01-vdsk1 -vms VMstore -s 20G

Job details
----------------------------------------------------------------
                     ID:  afc15749-d1f4-477e-8bf6-f903396d3c3c
            Description:  VM disk srvapp01-vdsk1 creation
                 Status:  Created
                Created:  July 29, 2021 6:08:38 PM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------

 
odacli list-vdisks
Name                  VM storage            Size        Shared      Sparse      Created                  Updated
--------------------  --------------------  ----------  ----------  ----------  -----------------------  -----------------------
srvapp01-vdsk1        VMstore               20.00 GB    NO          NO          2021-07-29 18:09:04      2021-07-29 18:09:04


odacli create-cpupool -n cpupool4vms -c 8 -vm
odacli list-cpupools

Name                  Type                Configured on              Cores  Associated resources            Created                  Updated
--------------------  ------------------  -------------------------  -----  ------------------------------  -----------------------  -----------------------
cpupool4vms           VM                  dbi-oda-x8                 8      NONE                            2021-07-29 18:13:25      2021-07-29 18:13:25
                                                                                                            CEST                     CEST
cpupool4dbsystems     DB_SYSTEM_SHARED    dbi-oda-x8                 4      srvdb01                         2021-07-29 16:25:35      2021-07-29 16:25:35
                                                                                                            CEST                     CEST

odacli create-vm -n srvapp01 -m 8G -src /opt/dbi/V1009690-01.iso -vd srvapp01-vdsk1 -vc 2 -cp cpupool4vms -vn pubnet -vms VMstore -s 16G

Job details
----------------------------------------------------------------
                     ID:  e52b6d54-9b00-4749-ba0a-c9c203f4f117
            Description:  VM srvapp01 creation
                 Status:  Created
                Created:  July 30, 2021 8:56:49 AM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------

odacli describe-job -i 3ae5937f-a421-46ef-8523-75fa5f2bbc97

Job details
----------------------------------------------------------------
                     ID:  e52b6d54-9b00-4749-ba0a-c9c203f4f117
            Description:  VM srvapp01 creation
                 Status:  Success
                Created:  July 30, 2021 8:56:49 AM CEST
                Message:

Task Name                                Start Time                          End Time                            Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Validate dependency resources            July 30, 2021 8:56:49 AM CEST       July 30, 2021 8:56:49 AM CEST       Success
Validate resource allocations            July 30, 2021 8:56:49 AM CEST       July 30, 2021 8:56:49 AM CEST       Success
Allocate resources                       July 30, 2021 8:56:49 AM CEST       July 30, 2021 8:56:49 AM CEST       Success
Provision new VM                         July 30, 2021 8:56:49 AM CEST       July 30, 2021 8:56:51 AM CEST       Success
Add VM to Clusterware                    July 30, 2021 8:56:51 AM CEST       July 30, 2021 8:56:51 AM CEST       Success
Save configuration in ACFS               July 30, 2021 8:56:51 AM CEST       July 30, 2021 8:56:51 AM CEST       Success
Save live VM configuration in ACFS       July 30, 2021 8:56:51 AM CEST       July 30, 2021 8:56:52 AM CEST       Success
Create VM metadata                       July 30, 2021 8:56:52 AM CEST       July 30, 2021 8:56:52 AM CEST       Success
Persist metadata                         July 30, 2021 8:56:52 AM CEST       July 30, 2021 8:56:52 AM CEST       Success

odacli describe-vm -n srvapp01
VM details
--------------------------------------------------------------------------------
                       ID:  cf42e07f-5ce6-48d8-86da-cd375c600716
                     Name:  srvapp01
                  Created:  2021-07-30 08:56:52 CEST
                  Updated:  2021-07-30 08:56:52 CEST
               VM Storage:  VMstore
              Description:  NONE
                  VM size:  16.00 GB
                   Source:  V1009690-01.iso
                  OS Type:  NONE
               OS Variant:  NONE
        Graphics settings:  vnc,listen=127.0.0.1
             Display Port:  127.0.0.1:1

 Status
--------------------------
             Current node:  dbi-oda-x8
            Current state:  ONLINE
             Target state:  ONLINE

 
 Parameters
--------------------------
           Preferred node:  NONE
              Boot option:  NONE
               Auto start:  YES
                Fail over:  NO

                            Config                     Live
                            -------------------------  -------------------------
                   Memory:  8.00 GB                    8.00 GB
               Max Memory:  8.00 GB                    8.00 GB
               vCPU count:  2                          2
           Max vCPU count:  2                          2
                 CPU Pool:  cpupool4vms                cpupool4vms
        Effective CPU set:  4-11,36-43                 4-11,36-43
                    vCPUs:  0:4-11,36-43               0:4-11,36-43
                            1:4-11,36-43               1:4-11,36-43
                   vDisks:  srvapp01-vdsk1:vdb         srvapp01-vdsk1:vdb
                vNetworks:  pubnet:52:54:00:e5:86:76   pubnet:52:54:00:e5:86:76

You will now need to start vnc on your ODA:

vncserver

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
xauth:  file /root/.Xauthority does not exist

New 'dbi-oda-x8:2 (root)' desktop is dbi-oda-x8:2

Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/dbi-oda-x8:2.log

Start a VNC viewer from the computer to 10.36.10.241:2, then another vncviewer from this first one to 127.0.0.1:1 (loop from ODA to this VM):

Setup Linux as usual…

2 disks are visible: the one provisioned for application, and the boot one provisioned when creating the VM:

Once deployed, create an IP:

ip addr add 10.36.10.243/24 dev eth0


Then connect to the server and define a permanent network configuration and hostname:

vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=NONE
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=277655b5-d965-4639-96a0-cbddce74d3d9
DEVICE=eth0
ONBOOT=yes
IPADDR=10.36.10.243
NETMASK=255.255.255.0
GATEWAY=10.36.10.1

vi /etc/hostname
srvapp01

reboot

My VM is now ready to configure an application that will connect to the database on the DB System.

Limits

Deploying a new ODA with virtualization in 19.11 is easy, and configuring VMs on it is also something quite straight forward. But if you already have HA ODAs and you want to move to KVM, it will probably be complicated. A migration path could be proposed by Oracle, but start thinking about reimaging your systems. This is always a better solution for clean systems and you can start tomorrow.

If your ODA is dedicated to your databases, don’t bother with virtualization if you can. Managing VMs is an additional task you probably don’t need.

Conclusion

Finally, Oracle made it. And my first tests are quite convincing. Transition from OVM/oakcli to KVM/odacli is now over, and this would definitely improve ODAs. On the customer side, it will take some time to get rid of OVM/oakcli, as X8-2HA were still deployed in virtualized mode this year.

Demo json files

deploy_dbi-oda-x8.json


{
  "instance" : {
    "name" : "dbi-oda-x8",
    "instanceBaseName" : "dbi-oda-x8",
    "dbEdition" : "SE",
    "timeZone" : "Europe/Zurich",
    "systemPassword" : "************",
    "ntpServers" : ["21.39.35.10"],
    "dnsServers" : ["8.8.8.8","8.8.4.4"],
    "domainName" : "dbi-lab.ch",
    "isRoleSeparated" : true,
    "osUserGroup" : {
      "groups" : [ {
        "groupId" : 1001,
        "groupName" : "oinstall",
        "groupRole" : "oinstall"
      }, {
        "groupId" : 1002,
        "groupName" : "dbaoper",
        "groupRole" : "dbaoper"
      }, {
        "groupId" : 1003,
        "groupName" : "dba",
        "groupRole" : "dba"
      }, {
        "groupId" : 1004,
        "groupName" : "asmadmin",
        "groupRole" : "asmadmin"
      }, {
        "groupId" : 1005,
        "groupName" : "asmoper",
        "groupRole" : "asmoper"
      }, {
        "groupId" : 1006,
        "groupName" : "asmdba",
        "groupRole" : "asmdba"
      } ],
      "users" : [ {
        "userId" : 1000,
        "userName" : "oracle",
        "userRole" : "oracleUser"
      }, {
        "userId" : 1001,
        "userName" : "grid",
        "userRole" : "gridUser"
      } ]
    }
  },
  "sysOraHomeStorage": {
        "volumeSize": "30",
        "diskgroup": "DATA"
    },
  "nodes" : [ {
    "nodeNumber" : "0",
    "nodeName" : "dbi-oda-x8",
    "network" : [ {
       "nicName" : "btbond1",
       "ipAddress" : "10.36.10.241",
       "subNetMask" : "255.255.255.0",
       "gateway" : "10.36.10.1",
       "networkType" : [ "Public" ],
       "isDefaultNetwork" : true
      }
    ],
    "ilom" : {
      "ilomName":"dbi-oda-x8-ilom",
      "ipAddress":"10.36.10.240",
      "subNetMask":"255.255.255.0",
      "gateway":"10.36.10.1"
     }
  } ],
  "grid" : {
    "diskGroup" : [ {
      "diskGroupName" : "DATA",
      "redundancy" : "NORMAL",
      "diskPercentage" :80
    }, {
      "diskGroupName" : "RECO",
      "redundancy" : "NORMAL",
      "diskPercentage" :20
    } ],
    "language" : "en",
    "enableAFD":"TRUE"
  },
  "database" : {
    "dbName" : "DBITST",
    "databaseUniqueName":"DBITST",
    "dbEdition" : "SE",
    "dbVersion" : "19.11.0.0.210420",
    "dbHomeId":null,
    "instanceOnly" : false,
    "isCdb" : true,
    "pdBName" : "dbitstpdb",
    "pdbAdminuserName" : "pdbuser",
    "enableTDE":false,
    "adminPassword" : "***********",
    "dbType" : "SI",
    "dbTargetNodeNumber" : null,
    "dbClass" : "OLTP",
    "dbShape" : "odb1",
    "dbStorage" : "ASM",
    "dbCharacterSet" : {
      "characterSet" : "AL32UTF8",
      "nlsCharacterset" : "AL16UTF16",
      "dbTerritory" : "AMERICA",
      "dbLanguage" : "AMERICAN"
    },
    "dbConsoleEnable" : false,
    "backupConfigId":null,
    "rmanBkupPassword": null
  }
}

create_dbsystem_srvdb01.json


{
    "system": {
        "name": "srvdb01",
        "shape": "odb2",
        "systemPassword": "***********",
        "timeZone": "Europe/Zurich",
        "diskGroup": "DATA",
        "cpuPoolName": "cpupool4dbsystems",
        "enableRoleSeparation": true,
        "customRoleSeparation": {
            "groups": [
                {
                    "name": "oinstall",
                    "id": 1001,
                    "role": "oinstall"
                },
                {
                    "name": "dbaoper",
                    "id": 1002,
                    "role": "dbaoper"
                },
                {
                    "name": "dba",
                    "id": 1003,
                    "role": "dba"
                },
                {
                    "name": "asmadmin",
                    "id": 1004,
                    "role": "asmadmin"
                },
                {
                    "name": "asmoper",
                    "id": 1005,
                    "role": "asmoper"
                },
                {
                    "name": "asmdba",
                    "id": 1006,
                    "role": "asmdba"
                }
            ],
            "users": [
                {
                    "name": "grid",
                    "id": 1000,
                    "role": "gridUser"
                },
                {
                    "name": "oracle",
                    "id": 1001,
                    "role": "oracleUser"
                }
            ]
        }
    },
    "database": {
        "name": "VDBITST",
        "uniqueName": "VDBITST",
        "domainName": "dbi-lab.ch",
        "adminPassword": "*********",
        "version": "19.11.0.0.210420",
        "edition": "SE",
        "type": "SI",
        "dbClass": "OLTP",
        "shape": "odb2",
        "role": "PRIMARY",
        "targetNodeNumber": null,
        "enableDbConsole": false,
        "enableUnifiedAuditing": true,
        "redundancy": null,
        "characterSet": {
            "characterSet": "AL32UTF8",
            "nlsCharacterset": "AL16UTF16",
            "dbTerritory": "AMERICA",
            "dbLanguage": "ENGLISH"
        },
        "rmanBackupPassword": null,
        "enableTDE": false,
        "isCdb": false
    },
    "network": {
        "domainName": "dbi-lab.ch",
        "ntpServers": ["21.39.35.10"],
        "dnsServers": [
            "8.8.8.8","8.8.4.4"
        ],
        "nodes": [
            {
                "name": "srvdb01",
                "ipAddress": "10.36.10.242",
                "netmask": "255.255.255.0",
                "gateway": "10.36.10.1",
                "number": 0
            }
        ],
  "publicVNetwork": "pubnet"
    },
    "grid": {
        "language": "en"
    }
}