Saltar al contenido principal

Restore Oracle 19c en Oracle Linux 7

Restauración completa de Oracle 19c desde Data Protector (RMAN) en Oracle Linux 7.


🔹 Paso 1: Ajustar permisos del directorio Oracle

Ejecutar como root:

chown -R ora19c:dba /u01/app/oracle

🔹 Paso 2: Configurar las variables de entorno

Ingresar como usuario ora19c y ejecutar:

export ORACLE_SID=PRUEBAS
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_BASE=/u01/app/oracle
export PATH=$ORACLE_HOME/bin:$PATH

Verificar:

echo $ORACLE_SID
echo $ORACLE_HOME

🔹 Paso 3: Crear el PFILE mínimo

Crear el archivo $ORACLE_HOME/dbs/initPRUEBAS.ora:

db_name=PRUEBAS
memory_target=2G
processes=300
diagnostic_dest='/u01/app/oracle'
control_files='/u01/app/oracle/oradata/PRUEBAS/control01.ctl','/u01/app/oracle/oradata/PRUEBAS/control02.ctl'
precaución

Los controlfiles NO deben existir aún; serán restaurados desde Data Protector.

PFILE creado


🔹 Paso 4: Levantar la instancia en NOMOUNT

sqlplus / as sysdba
STARTUP NOMOUNT PFILE='$ORACLE_HOME/dbs/initPRUEBAS.ora';

Salida esperada:

ORACLE instance started.

Total System Global Area 2147481656 bytes
Fixed Size 8898616 bytes
Variable Size 1207959552 bytes
Database Buffers 922746880 bytes
Redo Buffers 7876608 bytes

🔹 Paso 5: Conexión a RMAN

Desde el usuario ora19c:

rman target /

Salida esperada:

connected to target database: PRUEBAS (not mounted)

🔹 Paso 6: Restaurar el Control File desde Data Protector

Ejecutar en RMAN:

run {
allocate channel 'dev_0' type 'sbt_tape'
parms 'SBT_LIBRARY=/opt/omni/lib/libob2oracle8_64bit.so,ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=PRUEBAS,OB2BARLIST=ORACLE_PRUEBAS_FULL,OB2BARHOSTNAME=oraclerestore.homelab.local)';
set until time "to_date('25/10/25 14:18:37','DD/MM/YY HH24:MI:SS')";
restore controlfile from 'c-3366633431-20251125-00';
release channel 'dev_0';
}
InstrucciónDescripción
allocate channelCrea el canal RMAN hacia el agente Oracle de Data Protector (SBT)
SBT_LIBRARYBiblioteca para comunicación RMAN ↔ DP
OB2BARTYPETipo de integración (Oracle8)
OB2APPNAMENombre de la BD
OB2BARLISTNombre del backup en DP
OB2BARHOSTNAMEServidor donde se ejecuta el restore
set until timeDefine el Point In Time Recovery (PITR)
restore controlfile fromRestaura el controlfile desde el backup especificado
release channelLibera el canal SBT

🔹 Paso 7: Montar la base de datos

En SQL*Plus (como usuario ora19c):

ALTER DATABASE MOUNT;

Salida esperada: Database altered.

Verificación:

SELECT instance_name, status FROM v$instance;
INSTANCE_NAME STATUS
---------------- ----------------
PRUEBAS MOUNTED

🔹 Paso 8: Verificar datafiles y logfiles

Con la base en MOUNTED:

SELECT file#, name, status FROM v$datafile;
SELECT member FROM v$logfile;

Confirmar que las rutas coinciden con /u01/app/oracle/oradata/PRUEBAS/...


🔹 Paso 9: Listar respaldos Full de la BD

En RMAN:

list backup of database summary;

🔹 Paso 10: Restaurar los DATAFILES usando TAG

Ejecutar en RMAN:

run {
allocate channel 'dev_0' type 'sbt_tape'
parms 'SBT_LIBRARY=/opt/omni/lib/libob2oracle8_64bit.so,ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=PRUEBAS,OB2BARLIST=ORACLE_PRUEBAS_FULL,OB2BARHOSTNAME=oraclerestore.homelab.local)';
restore database from tag 'TAG20251125T141642';
switch datafile all;
release channel 'dev_0';
}

🔹 Paso 11: Consultar los archivelogs catalogados en RMAN

list archivelog all;

🔹 Paso 12: Restaurar archivelogs por rango de sequence

run {
allocate channel dev_0 type 'sbt_tape'
parms 'SBT_LIBRARY=/opt/omni/lib/libob2oracle8_64bit.so,
ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=PRUEBAS,
OB2BARLIST=ORACLE_PRUEBAS_FULL,
OB2BARHOSTNAME=oraclerestore.homelab.local)';
restore archivelog
from sequence 93
until sequence 106
thread 1;
release channel dev_0;
}

🔹 Paso 13: Abrir la base en modo RESETLOGS

En SQL*Plus:

ALTER DATABASE OPEN RESETLOGS;
  • Abre la base incluso si ya no hay más archivelogs disponibles
  • Reinicia los redo logs
  • Marca la base como consistente hasta el último archivelog aplicado

🔹 Paso 14: Verificar el estado de la base y datafiles

SELECT name, status FROM v$datafile;
SELECT sequence#, applied FROM v$archived_log ORDER BY sequence#;

🔹 Paso 15: Confirmar el modo de apertura

SELECT open_mode FROM v$database;

Debe retornar: READ WRITE


🔹 Paso 16: Aplicar CROSSCHECK y RESYNC en RMAN

rman target /
CROSSCHECK BACKUP;
CROSSCHECK ARCHIVELOG ALL;

DELETE EXPIRED BACKUP;
DELETE EXPIRED ARCHIVELOG ALL;

RESYNC CATALOG;
nota

RESYNC CATALOG solo es necesario si usas Recovery Catalog. Si solo manejas control file, omite este paso.