By Mouhamadou Diaw

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

1
# 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

1
2
3
4
5
6
7
8
9
10
11
[root@oak 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    
         
[root@oak 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             
[root@oak oda]#

And then update the repository with the grid stack

1
2
3
4
5
6
7
8
9
10
11
[root@oak 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@oak 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   
---------------------------------------- ----------------------------------- ----------------------------------- ----------
[root@oak oda]#

After update the repository with the DB stack

1
2
3
4
5
6
7
8
9
10
11
12
[root@oak 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"
}
[root@oak oda]#

The status should return SUCCESS

1
[root@oak 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)

1
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
[root@serveroda ~]# 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
}
[root@serveroda ~]#

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@serveroda ~]# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@serveroda0 ~]# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@serveroda ~]# 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