# [OCI] Oracle Grid Infrastructure 19c (Oracle Restart + ASM)

En el articulo de hoy vamos a proceder a montar un **Oracle Restart Grid Infrastructure** en un IaaS que hemos definido en OCI con **Oracle Linux 9**, región **eu-frankfurt-1**.

![](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/dcdeef99-4d94-4602-9be0-fc655bdaaecd.png align="center")

¿Porque **19c** y no **26ai**? Porque queremos utilizar el **autograde** para pasar de **19c** a **26ai**, y una vez se encuentre en **26ai**, utilizar la última versión de ZDM para probar el "**instant deploy**".

Más o menos, nuestro laboratorio va ser el siguiente:

![](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/5f581603-31cc-45cc-b30a-5c4ec5afd0b6.png align="center")

Así que sin más, vamos al lío.

## Preparación ASM

El IaaS he adjuntado dos ***block volumenes*** a mayores para la parte de ***DATA*** y ***RECO***, de 50Gb cada uno.

![](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/2d54c04c-ff2f-4281-a218-d22f75ab7007.png align="center")

Para montar ambos *block volumenes* en linux tenemos que copiar el valor **iqn** de cada volumen para saber quien es quien.

En OCI para obtenerlo tenemos que ir a los detalles de cada volumen:

![](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/f97de796-65cd-404e-82e6-d9654023df63.png align="center")

Y en la ventana que se abre, copiamos el siguiente valor:

![](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/f968d20c-287b-42b9-a77b-b8e10e00cad2.png align="center")

Buscamos la equivalencia en linux:

```shell
[root@~]# ls -l /dev/disk/by-path/ | grep iscsi
[root@~]# iscsiadm -m session -P 3 | grep -E 'Target:|Attached scsi disk'
```

Con la información que hemos obtenido, sabemos que:

*   **/sdb** es ASM\_DATA\_BOOT
    
*   **/sdc** es ASM\_RECO\_DATA.
    

Con esta información, ya podemos preparar los discos **ASM**.

1) Definimos las particiones:

```shell
[root@~]# parted -s /dev/sdb mklabel gpt
[root@~]# parted -s /dev/sdb mkpart primary 1MiB 100%
[root@~]# parted -s /dev/sdc mklabel gpt
[root@~]# parted -s /dev/sdc mkpart primary 1MiB 100%
```

Verificamos:

```shell
[root@~]# lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
NAME                SIZE TYPE FSTYPE      MOUNTPOINTS
sda                 100G disk             
├─sda1              100M part vfat        /boot/efi
├─sda2                2G part xfs         /boot
└─sda3             44.5G part LVM2_member 
  ├─ocivolume-root 29.5G lvm  xfs         /
  └─ocivolume-oled   15G lvm  xfs         /var/oled
sdb                  50G disk             
└─sdb1               50G part             
sdc                  50G disk             
└─sdc1               50G part    
```

2) Instalamos **ASMLib**:

```shell
[root@~]# dnf config-manager --enable ol9_addons
[root@~]# dnf install -y oracleasm-support
[root@~]# dnf install ./oracleasmlib-3.1.3-1.el9.x86_64.rpm
```

Una vez instalado, configuramos **oracleasm** con el comando "*oracleasm configure -i***"** y reiniciamos el servicio "***systemctl restart oracleasm***".

3) Definimos las etiquetas a nivel ASM

```shell
[root@~]# oracleasm createdisk DATA01 /dev/sdb1
[root@~]# oracleasm createdisk RECO01 /dev/sdc1
```

Y verificamos con "***oracleasm listdisks***".

## Instalación Grid Infrastructure 19.32

Después de preparar toda la estructura de directorios junto con la definición de los usuarios **oracle** y **grid**, así como los grupos, comenzamos a instalar la parte de Grid Infrastructure.

La fase de preparación se resumiría como:

```shell
[root@~]# groupadd -f oinstall
[root@~]# groupadd -f dba
[root@~]# groupadd -f asmadmin
[root@~]# groupadd -f asmdba
[root@~]# groupadd -f asmoper

[root@~]# useradd -g oinstall -G asmadmin,asmdba,asmoper,dba grid
[root@~]# useradd -g oinstall -G dba,asmdba oracle

[root@~]# mkdir -p /u01/app/oracle/product/19.0.0/db_1
[root@~]# mkdir -p /u01/app/grid 
[root@~]# mkdir -p /u01/app/19.0.0/grid
[root@~]# mkdir -p /u01/app/oraInventory
[root@~]# mkdir -p /u01/software
[root@~]# chown -R grid:oinstall /u01
[root@~]# chown -R oracle:oinstall /u01/app/oracle
[root@~]# chmod -R 775 /u01
```

El siguiente punto sería:

*   Definir el fichero response, dejo por aquí el enlace para descargar del que hemos usado.
    

[Fichero response](https://github.com/dbaenlasombra/OCI/blob/main/grid.rsp)

*   Descargar el parche ***Patch 39467003: GI RELEASE UPDATE 19.32.0.0.0***.
    
*   Descargar Oracle Database 19c desde [aquí](https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html?utm_source=chatgpt.com), tanto *grid* como *home*.
    

Después de descomprimir el zip de Oracle Grid en /u01/app/19.0.0/grid, procedemos a su instalación:

```shell
[grid@~]# cd $ORACLE_HOME
[grid@~]# ./gridSetup.sh -silent -responseFile /home/grid/grid.rsp -applyRU /u01/software/39467003 -waitforcompletion -ignorePrereqFailure
```

Una vez completado, bajo el usuario ***root*** lanzamos los scripts orainstRoot.sh y root.sh.

```shell
[root@~]# sh /u01/app/oraInventory/orainstRoot.sh
[root@~]# sh /u01/app/19.0.0/grid/root.sh
```

Volvemos a conectar con el usuario **grid**, y verificamos con "***crsctl stat res -t***" lo tenemos todo correcto.

En mi caso, después de revisar el output del comando y revisar el log para ver si ha habido errores, vi que la parte de **asm** algo erróneo, y después de ejecutar "***srvctl status asm***", se confirmaron mis sospechas, asm no existía, así que lo tuve que configurar después.

Dejo por aquí como lo configure, por si os ocurre lo mismo:

```shell
[grid@intheshadow ~]$ asmca -silent -configureASM \
  -sysAsmPassword 'XXXXXX' \
  -asmsnmpPassword 'XXXXXX' \
  -diskString 'ORCL:*' \
  -diskGroupName DATA \
  -diskList 'ORCL:DATA01' \
  -redundancy EXTERNAL \
  -au_size 4

[grid@intheshadow ~]$ srvctl status asm
 ASM is running on intheshadow
```

Como último paso, antes de crear el diskgroup de ***RECO***, revisamos de nuevo los recursos con ***crsctl stat res -t***.

![](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/ec2b41d7-4c14-40a9-8181-bc62ad95e452.png align="center")

Listo, ya podemos crear el *diskgroup* de ***RECO***. Aquí podemos tomar dos caminos para hacerlo, o bien vía instrucción *DDL* o usando *asmca*.

En mi caso opte por usar *asmca*:

```shell
[grid@~]# asmca -silent -createDiskGroup \ 
-diskString 'ORCL:*' \
-diskGroupName RECO \ 
-diskList 'ORCL:RECO01' \ 
-redundancy EXTERNAL \ 
-au_size 4 \ 
-sysAsmPassword 'XXXXXX'
```

## Instalación Oracle Database 19.32

El primer paso, además de configurar el .bash\_profile de Oracle, debemos descomprimir el zip de Oracle en */u01/app/oracle/product/19.0.0/dbhome\_1*.

Una vez hecho y antes de lanzar el **runinstaller**, verificamos en el fichero */etc/oraInst.loc* que está todo correcto.

El fichero response que he utilizado, lo podemos descargar desde [aquí](https://github.com/dbaenlasombra/OCI/blob/main/oracle.rsp).

Lanzamos la instalación:

```shell
[oracle@~]# cd $ORACLE_HOME
[oracle@~]# ./runInstaller -silent -waitforcompletion -applyRU /u01/software/39467003 -responseFile /home/oracle/oracle.rsp
```

Una vez completado, bajo el usuario ***root*** lanzamos el script root.sh.

```shell
[root@~]# . /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
```

Tenemos la instalación lista, pero sin base de datos aún.

En próximos capítulos continuaremos con nuestro laboratorio.

Espero que os guste. ¡Nos vemos en el próximo artículo!
