Infrastructure at your Service

Recently I was deploying some ODA X8-2M. To install the 19.8 software, I decide to reimage the server with the 19.8 image. In this blog I describe the main steps I did.

First, we will need to download following patches from Oracle support website

-Patch 30403643: Oracle Database Appliance 19.8.0.0.0 OS ISO IMAGE for all platforms
-Patch 30403673: Oracle Database Appliance GI Clone for ODACLI/DCS stack (and
-Patch 30403662: Oracle Database Appliance RDBMS Clone for ODACLI/DCS stack

We suppose that the ILOM is already configured and that you can connect via the ILOM. The default credentials for the ILOM is root/changeme

The first is to unzip the patch 30403643 on your workstation. This will provide the following iso file oda_bm_19.8.0.0.0_200718.iso.
The principle is to boot with the corresponding image iso. This is done using the ILOM interface. For this just follow this Oracle documentation

1. Open a browser and connect to Oracle Integrated Lights Out Manager (ILOM) on Node 0 as root.
https://ilom-ip-address
2. Launch the Remote Console.
a. Expand Remote Control in the left navigation.
b. Click the Redirection tab.
c. Click Launch for the Remote Console in the Actions menu.
The state of the system determines what appears on the Console page.
3. Add the image.
a. Click the KVMS tab, then select Storage.
b. Click Add.
c. Browse to the Oracle Database Appliance Bare Metal ISO Image, highlight the image, then click Select.
d. Click Connect.
The mounting of the ISO image is successful when the Connect button changes to a Disconnect button.
e. Click OK
The CD-ROM icon in the top right corner is highlighted.
4. Configure the CD-ROM as the next boot device.
a. Expand Host Management in the left menu of the ILOM Remote Console tab.
b. Click Host Control.
c. Select CDROM from the Next Boot Device menu, then click Save.
5. Power cycle the node.
a. Click Power Control in the Host Management menu.
b. Select Power Cycle , then click Save.

Below some screenshots after server reboot

The process of reimaging will take some time. To follow the progress you can open a second terminal with the the ALT-F2 key and then tape the command

# cat /proc/mdstat

At the end of the reimaging, the ODA will restart. We can then verify the components of the server. Connecting with root, the default password is welcome1

Now we can configure the first network of the ODA. This is done by the command configure-firstnet. You will have to give some basic information

Now that the first network configuration is done, we can update the repository with the 2 following patches

-p30403662_198000_Linux-x86-64.zip
-p30403673_198000_Linux-x86-64.zip

You will need to transfer them in the ODA using your favorite tool (WinSCP, ftp …). Then we can uncompress them

[[email protected] oda]# unzip p30403673_198000_Linux-x86-64.zip 
Archive:  p30403673_198000_Linux-x86-64.zip
 extracting: odacli-dcs-19.8.0.0.0-200713-GI-19.8.0.0.zip  
  inflating: README.txt     
         
[[email protected] oda]# unzip p30403662_198000_Linux-x86-64.zip 
Archive:  p30403662_198000_Linux-x86-64.zip
 extracting: odacli-dcs-19.8.0.0.0-200713-DB-19.8.0.0.zip  
replace README.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: README.txt              
[[email protected] oda]#

And then update the repository with the grid stack

[[email protected] oda]# /opt/oracle/dcs/bin/odacli update-repository -f /tmp/oda/odacli-dcs-19.8.0.0.0-200713-GI-19.8.0.0.zip 
{
  "jobId" : "e9a571ca-f2cd-46ba-b8eb-8e337dbb8375",
  "status" : "Created",
  "message" : "/tmp/oda/odacli-dcs-19.8.0.0.0-200713-GI-19.8.0.0.zip",
  "reports" : [ ],
  "createTimestamp" : "August 05, 2020 01:19:48 AM PDT",
  "resourceList" : [ ],
  "description" : "Repository Update",
  "updatedTime" : "August 05, 2020 01:19:48 AM PDT"
}

The status of the job can be viewed using the command describe-job with the jobid. It should return SUCCESS

[[email protected] oda]# /opt/oracle/dcs/bin/odacli describe-job -i  "e9a571ca-f2cd-46ba-b8eb-8e337dbb8375"

Job details                                                      
----------------------------------------------------------------
                     ID:  e9a571ca-f2cd-46ba-b8eb-8e337dbb8375
            Description:  Repository Update
                 Status:  Success
                Created:  August 5, 2020 1:19:48 AM PDT
                Message:  /tmp/oda/odacli-dcs-19.8.0.0.0-200713-GI-19.8.0.0.zip

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

[[email protected] oda]#

After update the repository with the DB stack

[[email protected] oda]# /opt/oracle/dcs/bin/odacli update-repository -f /tmp/oda/odacli-dcs-19.8.0.0.0-200713-DB-19.8.0.0.zip 
{
  "jobId" : "bb83a202-6cf5-4663-a446-c974a0f3a2a5",
  "status" : "Created",
  "message" : "/tmp/oda/odacli-dcs-19.8.0.0.0-200713-DB-19.8.0.0.zip",
  "reports" : [ ],
  "createTimestamp" : "August 05, 2020 01:21:01 AM PDT",
  "resourceList" : [ ],
  "description" : "Repository Update",
  "updatedTime" : "August 05, 2020 01:21:01 AM PDT"
}
[[email protected] oda]#

The status should return SUCCESS

[[email protected] oda]# /opt/oracle/dcs/bin/odacli describe-job -i  "bb83a202-6cf5-4663-a446-c974a0f3a2a5"

Now we can create the appliance. This can be done via the web interface. You will need the ports 7070 and 7093 to be opened
If you plan to use the web interface just connect to this URL with the oda-admin ( you will be asked to change the password)

https://ODA-host-ip-address:7093/mgmt/index.html

In my case the deployment is done using a json file. This json file can be generated from the web console. But you can also find some example in the net. But I recommend generating the file using the web console, this will reduce errors in the file.
Below the example of my file (please replace the hidden values with your values). We suppose that that the hostname of my ODA is serveroda

[[email protected] ~]# cat serveroda.json 
{
    "instance": {
        "instanceBaseName": "serveroda-c",
        "dbEdition": "EE",
        "objectStoreCredentials": null,
        "name": "serveroda",
        "systemPassword": "***********",
        "timeZone": "Europe/Zurich",
        "domainName": "XXXXXXXXX",
        "dnsServers": [
            "XXXXXXXX",
            "XXXXXXXX"
        ],
        "ntpServers": [
            "XXXXXXXXXXX",
            "XXXXXXXXXXX",
            "XXXXXXXXXXX"
        ],
        "isRoleSeparated": true,
        "osUserGroup": {
            "users": [
                {
                    "userName": "oracle",
                    "userRole": "oracleUser",
                    "userId": 1001
                },
                {
                    "userName": "grid",
                    "userRole": "gridUser",
                    "userId": 1000
                }
            ],
            "groups": [
                {
                    "groupName": "oinstall",
                    "groupRole": "oinstall",
                    "groupId": 1001
                },
                {
                    "groupName": "dbaoper",
                    "groupRole": "dbaoper",
                    "groupId": 1002
                },
                {
                    "groupName": "dba",
                    "groupRole": "dba",
                    "groupId": 1003
                },
                {
                    "groupName": "asmadmin",
                    "groupRole": "asmadmin",
                    "groupId": 1004
                },
                {
                    "groupName": "asmoper",
                    "groupRole": "asmoper",
                    "groupId": 1005
                },
                {
                    "groupName": "asmdba",
                    "groupRole": "asmdba",
                    "groupId": 1006
                }
            ]
        }
    },
    "nodes": [
        {
            "nodeNumber": "0",
            "nodeName": "serveroda",
            "network": [
                {
                    "ipAddress": "XXXXXXXXXX",
                    "subNetMask": "255.255.255.0",
                    "gateway": "XXXXXXXXX",
                    "nicName": "btbond1",
                    "networkType": [
                        "Public"
                    ],
                    "isDefaultNetwork": true
                }
            ]
        }
    ],
    "grid": {
        "vip": [],
        "diskGroup": [
            {
                "diskGroupName": "DATA",
                "diskPercentage": 80,
                "redundancy": "NORMAL"
            },
            {
                "diskGroupName": "RECO",
                "diskPercentage": 20,
                "redundancy": "NORMAL"
            }
        ],
        "language": "en",
        "enableAFD": "TRUE",
        "scan": null
    },
    "database": null
}
[[email protected] ~]#

To create the Appliance, we run following command. The output was truncated

[[email protected] ~]# odacli create-appliance -r serveroda.json
….
…
Enter an initial password for Web Console account (oda-admin):
Confirm the password for Web Console account (oda-admin):
{
  "jobId" : "d4c6762e-7bbd-48d2-aac3-f9c975514ebd",
  "status" : "Created",
  "message" : null,
  "reports" : [ ],
  "createTimestamp" : "August 07, 2020 09:48:50 AM UTC",
  "resourceList" : [ ],
  "description" : "Provisioning service creation",
  "updatedTime" : "August 07, 2020 09:48:50 AM UTC"
}

The status of the job should return SUCCESS. Otherwise you can check dcs-agent.log located in /opt/oracle/dcs/log

[[email protected] ~]# odacli describe-job -i "d4c6762e-7bbd-48d2-aac3-f9c975514ebd" 
Job details                                                      
----------------------------------------------------------------
                     ID:  d4c6762e-7bbd-48d2-aac3-f9c975514ebd
            Description:  Provisioning service creation
                 Status:  Success
                Created:  August 7, 2020 9:48:50 AM CEST
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
network update                           August 7, 2020 9:48:51 AM CEST      August 7, 2020 9:48:57 AM CEST      Success   
updating network                         August 7, 2020 9:48:51 AM CEST      August 7, 2020 9:48:57 AM CEST      Success   
Setting up Network                       August 7, 2020 9:48:51 AM CEST      August 7, 2020 9:48:52 AM CEST      Success   
OS usergroup 'asmdba'creation            August 7, 2020 9:48:57 AM CEST      August 7, 2020 9:48:57 AM CEST      Success   
OS usergroup 'asmoper'creation           August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
OS usergroup 'asmadmin'creation          August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
OS usergroup 'dba'creation               August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
OS usergroup 'dbaoper'creation           August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
OS usergroup 'oinstall'creation          August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
OS user 'grid'creation                   August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
OS user 'oracle'creation                 August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
Default backup policy creation           August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
Backup config metadata persist           August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
SSH equivalance setup                    August 7, 2020 9:48:58 AM CEST      August 7, 2020 9:48:58 AM CEST      Success   
Grid home creation                       August 7, 2020 9:48:59 AM CEST      August 7, 2020 9:51:35 AM CEST      Success   
Creating GI home directories             August 7, 2020 9:48:59 AM CEST      August 7, 2020 9:48:59 AM CEST      Success   
Cloning Gi home                          August 7, 2020 9:48:59 AM CEST      August 7, 2020 9:51:32 AM CEST      Success   
Updating GiHome version                  August 7, 2020 9:51:32 AM CEST      August 7, 2020 9:51:35 AM CEST      Success   
Storage discovery                        August 7, 2020 9:51:35 AM CEST      August 7, 2020 9:56:05 AM CEST      Success   
Grid stack creation                      August 7, 2020 9:56:05 AM CEST      August 7, 2020 10:09:00 AM CEST     Success   
Configuring GI                           August 7, 2020 9:56:05 AM CEST      August 7, 2020 9:57:07 AM CEST      Success   
Running GI root scripts                  August 7, 2020 9:57:07 AM CEST      August 7, 2020 10:04:45 AM CEST     Success   
Running GI config assistants             August 7, 2020 10:04:46 AM CEST     August 7, 2020 10:05:22 AM CEST     Success   
Post cluster OAKD configuration          August 7, 2020 10:09:00 AM CEST     August 7, 2020 10:11:44 AM CEST     Success   
Disk group 'RECO'creation                August 7, 2020 10:11:52 AM CEST     August 7, 2020 10:12:04 AM CEST     Success   
Register Scan and Vips to Public Network August 7, 2020 10:12:05 AM CEST     August 7, 2020 10:12:40 AM CEST     Success   
Volume 'commonstore'creation             August 7, 2020 10:12:40 AM CEST     August 7, 2020 10:13:37 AM CEST     Success   
ACFS File system 'DATA'creation          August 7, 2020 10:13:37 AM CEST     August 7, 2020 10:13:54 AM CEST     Success   
Install oracle-ahf                       August 7, 2020 10:13:54 AM CEST     August 7, 2020 10:15:24 AM CEST     Success   
Provisioning service creation            August 7, 2020 10:15:24 AM CEST     August 7, 2020 10:15:24 AM CEST     Success   
persist new agent state entry            August 7, 2020 10:15:24 AM CEST     August 7, 2020 10:15:24 AM CEST     Success   
persist new agent state entry            August 7, 2020 10:15:24 AM CEST     August 7, 2020 10:15:24 AM CEST     Success   
Restart Zookeeper and DCS Agent          August 7, 2020 10:15:24 AM CEST     August 7, 2020 10:15:25 AM CEST     Success   

After the deployment we can check the component version

[[email protected] ~]# odacli describe-component
System Version  
---------------
19.8.0.0.0

Component                                Installed Version    Available Version   
---------------------------------------- -------------------- --------------------
OAK                                       19.8.0.0.0            up-to-date          
GI                                        19.8.0.0.200714       up-to-date          
DCSAGENT                                  19.8.0.0.0            up-to-date          
ILOM                                      4.0.4.38.a.r132148    4.0.4.51.r134837    
BIOS                                      52020500              52021300            
OS                                        7.8                   up-to-date          
FIRMWARECONTROLLER                        VDV1RL02              VDV1RL04            
FIRMWAREDISK                              1120                  1102                
HMP                                       2.4.5.0.1             up-to-date          

As we can see following components are not up-to-dated
-ILOM
-BIOS
-FIRMWARECONTROLLER

To update these components, in my case, we had to apply the patch 19.8 and we had to manually patch the ILOM and the BIOS. These steps are described in the Part II of this blog

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Mouhamadou Diaw
Mouhamadou Diaw

Consultant