PL/SQL package SYS.DBMS_BACKUP_RESTORE version in TARGET database is not current

Después de una actualización de Oracle Database de la versión19.3.0.0.0 a 19.16.0.0.0, tuve el inconveniente al acceder a RMAN el cuál mostraba el siguiente mensaje:

$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Mon Aug 3 14:26:41 2022
Version 19.16.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

PL/SQL package SYS.DBMS_BACKUP_RESTORE version 19.03.00.00 in TARGET database is not current
PL/SQL package SYS.DBMS_RCVMAN version 19.03.00.00 in TARGET database is not current
connected to target database: XXXX

El mensaje anterior también se podía apreciar en el Alert.log.

Verificando en Oracle Support, nos comentan que este error se presenta seguido de aplicar un parche Oracle y que estos paquetes no se compilan cuando se realiza la actualización.

La solución es sencilla, realizando la compilación de los siguientes paquetes:

$ sqlplus / as sysdba
SQL> @$ORACLE_HOME/rdbms/admin/dbmsrman.sql
SQL> @$ORACLE_HOME/rdbms/admin/dbmsbkrs.sql
SQL> @$ORACLE_HOME/rdbms/admin/prvtrmns.plb
SQL> @$ORACLE_HOME/rdbms/admin/prvtbkrs.plb

Podemos comprobar que al ingresar a RMAN y verificar en el Alert.log que el mensaje ya no nos aparece.

Agregar nuevo disco a Diskgroup en Oracle Grid 19c

State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 2194304 209588 1260 0 1260 0 N DATA/

Vamos a suponer que únicamente se ha agregado un nuevo disco duro y es necesario realizar la creación de la nueva partición y hacer un formateo de la misma.

Desde la herramienta fdisk podemos realizar esta tarea:

root@pruebas~# fdisk /dev/sdb

Con el comando ‘n‘ se realiza la creación de una nueva partición. Dejamos todos los valores por default ya que vamos a utilizar todo el espacio del nuevo disco duro.

Con el comando ‘w‘ confirmamos que se escriban los cambios que se han realizado.

Luego de haber creado la partición, se realiza el formateo

root@pruebas~# mkfs.ext4 /dev/sdb1

A nivel de sistema operativo nuestro nuevo disco duro está preparado.

Seguidamente, haciendo uso de la herramienta oracleasm realizamos la creación y etiquetado de un nuevo disco duro.

root@pruebas~# oracleasm createdisk ASMDISK3 /dev/sdb1

Desde SQLPlus agregamos el nuevo disco duro al diskgroup que ya está creado, en nuestro caso es +DATA

SQL> ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/disks/ASMDISK3' NAME ASMDISK3 REBALANCE POWER 100;

Con lo anterior, podemos verificar desde asmcmd que se han agregado los nuevo 200Gb de espacio.

[grid@pruebas ~]$ asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 4194304 409588 204384 0 204384 0 N DATA/

EDIT: 04/08/2022

Eliminar un disco del diskgroup:

Para eliminar es necesario quitar el disco primeramente del diskgroup que tenemos configurado en ASM, lo cual lo hacemos de la siguiente manera:

$ sqlplus / as sysasm
SQL> ALTER DISKGROUP DATA DROP DISK 'ASMDISK4';

En mi caso mi diskgroup tiene el nombre DATA y el disco que quiero quitar tiene el nombre ASMDISK4.

Seguidamente podemos devolver el disco al sistema operativo:

Primero escaneamos los discos disponibles con OracleASM

# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@pruebas disks]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
[root@pruebas disks]# oracleasm configure
ORACLEASM_ENABLED=true
ORACLEASM_UID=grid
ORACLEASM_GID=oinstall
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_SCAN_DIRECTORIES=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"

Por último lo eliminamos del ASM:

# oracleasm deletedisk ASMDISK4
Clearing disk header: done
Dropping disk: done