Recuperación de una base de datos desde Object Storage mediante una copia de seguridad de RMAN
En este artículo se explica cómo recuperar una copia de seguridad de Recovery Manager (RMAN) almacenada en Object Storage.
Requisitos
Necesitará lo siguiente:
- Un sistema de base de datos nuevo en el que restaurar la base de datos (consulte las siguientes suposiciones). Para obtener más información, consulte Visión general de la creación de un sistema de base de datos.
- El módulo Oracle Database Cloud Backup debe estar instalado en el sistema de base de datos. Para obtener más información, consulte Instalación del módulo de copia de seguridad en el sistema de base de datos en Copia de seguridad de una base de datos en Object Storage mediante RMAN.
Suposiciones
En los siguientes procedimientos se asume lo siguiente:
- Se ha creado un nuevo sistema de base de datos para alojar la base de datos restaurada y no existe ninguna otra base de datos en el nuevo sistema de base de datos. Es posible realizar la restauración en un sistema de base de datos que tenga bases de datos existentes, pero esto queda fuera del ámbito de este tema.
-
Se ha perdido la base de datos original y todo lo que queda es la copia de seguridad de RMAN más reciente. En el procedimiento se asume que el sistema de base de datos (incluido en la base de datos) ya no existe.
Note:
Se perderán todos los datos no incluidos en la copia de seguridad más reciente. - Las claves de cifrado y/o de Oracle Wallet utilizadas por la base de datos original en el momento de la última copia de seguridad están disponibles.
- La copia de seguridad de RMAN contiene una copia del archivo de control y de spfile a partir de la copia de seguridad más reciente, así como de todas las copias de seguridad de archivos de datos y archive logs necesarias para realizar una recuperación completa de la base de datos.
- No se utilizará un catálogo de RMAN durante la restauración.
Configuración del almacenamiento en el sistema de base de datos
- SSH en el sistema de base de datos.
ssh -i <private_key_path> opc@<db_system_ip_address>
- Conéctese como opc y, a continuación, utilice sudo para el usuario root. Utilice
sudo su -
con un guion para llamar al perfil del usuario root, lo cual definirá PATH en el directorio dbcli (/opt/oracle/dcs/bin
).login as: opc sudo su -
- Puede utilizar un directorio raíz de base de datos vacío existente o crear uno nuevo para la restauración. Utilice los comandos aplicables para ayudarle a completar este paso.
Si va a utilizar un directorio raíz de base de datos existente:
-
Utilice los Comandos de dbhome para mostrar los directorios raíz de base de datos.
Salida:dbcli list-dbhomes
ID Name DB Version Home Location ---------------------------------------- -------------------- ---------- --------------------------------------------- 2e743050-b41d-4283-988f-f33d7b082bda OraDB12102_home1 12.1.0.2 /u01/app/oracle/product/12.1.0.2/dbhome_1
-
Utilice los Comandos de base de datos para asegurarse de que el directorio raíz de base de datos no está asociado a ninguna base de datos.
Si es necesario, utilice los Comandos de dbhome para crear un directorio raíz de base de datos para la restauración.
-
- Use los Comandos de dbstorage para configurar directorios para almacenamiento DATA, RECO y REDO. En el siguiente ejemplo se crean 10 GB de almacenamiento de ACFS para la base de datos rectest.
dbcli create-dbstorage --dbname rectest --dataSize 10 --dbstorage ACFS
Note:
Al restaurar una base de datos versión 11.2, se debe especificar el almacenamiento ACFS.
Restauración y recuperación de base de datos
- Utilice SSH para acceder al sistema de base de datos, conéctese como opc y, a continuación, conviértase en el usuario oracle.
sudo su - oracle
- Cree una entrada en
/etc/oratab
para la base de datos. Utilice el mismo SID que la base de datos original.db1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
- Configure las variables de entorno
ORACLE_HOME
yORACLE_SID
mediante la utilidad oraenv.. oraenv
- Obtenga el DBID de la base de datos original. Este se puede obtener del nombre de archivo de la copia de seguridad automática de
controlfile
en el soporte de copia de seguridad. El nombre del archivo incluirá una cadena que contiene el DBID. El formato típico de la cadena esc-DDDDDDDDDDDD-YYYYMMDD-NN
dondeDDDDDDDDDDDD
es el DBID,YYYYMMDD
es la fecha de creación de la copia de seguridad yNN
es un número de secuencia para que el nombre de archivo sea único. El DBID de los siguientes ejemplos es 1508405000. Su DBID será diferente.Utilice la siguiente sintaxis curl para realizar una consulta general de Object Storage. Los parámetros en rojo son los mismos parámetros que ha especificado al instalar el módulo de copia de seguridad, como se describe en Instalación del módulo de copia de seguridad del sistema de base de datos en Copia de seguridad de una base de datos en Object Storage mediante RMAN.
curl -u '<user_ID>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>
Para buscar el nombre de la región, consulte Regiones y dominios de disponibilidad.
Por ejemplo:
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace
Para obtener el DBID del nombre del archivo de control, utilice la siguiente sintaxis:
curl -u '<user_id>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>/<bucket_name>?prefix=sbt_catalog/c-
Por ejemplo:
curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace/dbbackups/?prefix=sbt_catalog/c-
En la siguiente salida de ejemplo, 1508405000 es el DBID.
{ "bytes": 1732, "content_type": "binary/octet-stream", "hash": "f1b61f08892734ed7af4f1ddaabae317", "last_modified": "2016-08-11T20:28:34.438000", "name": "sbt_catalog/c-1508405000-20160811-00/metadata.xml" }
- Ejecute RMAN y conéctese a la base de datos de destino. No es necesario crear un
pfile
ni unspfile
ni utilizar una copia de seguridad decontrolfile
. Estos se restaurarán en los siguientes pasos. Observe que la base de datos de destino se muestra como(not started)
. Esto es normal y es lo esperado en este punto.
Salida:rman target /
Recovery Manager: Release 12.1.0.2.0 - Production on Wed Jun 22 18:36:40 2016 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database (not started)
- Defina el DBID mediante el valor obtenido anteriormente.
set dbid 1508405000;
- Ejecute el siguiente comando. Si el archivo de parámetros del servidor no está disponible, RMAN intenta iniciar la instancia con un archivo de parámetros del servidor ficticio. Los errores ORA-01078 y LRM-00109 son normales y se pueden ignorar.
STARTUP NOMOUNT
startup failed: ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initdb1.ora' starting Oracle instance without parameter file for retrieval of spfile Oracle instance started Total System Global Area 2147483648 bytes Fixed Size 2944952 bytes Variable Size 847249480 bytes Database Buffers 1254096896 bytes Redo Buffers 43192320 bytes
- Restaure el archivo de parámetros del servidor a partir de la copia de seguridad automática.
SBT_LIBRARY es la misma biblioteca especificada con el parámetro
-libDir
cuando se instaló el módulo de copia de seguridad, por ejemplo/home/oracle/lib/
.OPC_PFILE es el mismo archivo especificado con el parámetro
-configfile
cuando se instaló el módulo de copia de seguridad, por ejemplo/home/oracle/config
.set controlfile autobackup format for device type sbt to '%F'; run { allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)'; restore spfile from autobackup; }
- Cree el directorio para audit_file_dest. El valor por defecto es
/u01/app/oracle/admin/$ORACLE_SID/adump
. Puede ver el valor utilizado por la base de datos original buscando en spfile la cadenaaudit_file_dest
.strings ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora | grep audit_file_dest *.audit_file_dest='/u01/app/oracle/admin/db1/adump' mkdir -p /u01/app/oracle/admin/db1/adump
- Si se ha activado el seguimiento de cambios de bloque en la base de datos original, cree el directorio para el archivo de seguimiento de cambios de bloque. Será un directorio dentro de
db_create_file_dest
. Busque enspfile
el nombre del directorio.strings ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora | grep db_create_file_dest *.db_create_file_dest='/u02/app/oracle/oradata/db1' mkdir -p /u02/app/oracle/oradata/db1/<$ORA_UNQNAME if available or database name>/changetracking
- Reinicie la instancia con el archivo de parámetros del servidor restaurado.
STARTUP FORCE NOMOUNT;
- Restaure el archivo de control a partir de la copia de seguridad automática de RMAN y monte la base de datos.
set controlfile autobackup format for device type sbt to '%F'; run { allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)'; restore controlfile from autobackup; alter database mount; }
- Restaure y recupere la base de datos.
RESTORE DATABASE; RECOVER DATABASE;
- RMAN realizará la recuperación utilizando los redo logs archivados hasta que ya no encuentre ninguno más. Es normal que se produzca un error similar al que se incluye a continuación cuando RMAN haya aplicado el último redo log archivado en la copia de seguridad y no encuentre más logs.
unable to find archived log archived log thread=1 sequence=29 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 06/28/2016 00:57:35 RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 29 and starting SCN of 2349563
- Abra la base de datos con resetlogs.
ALTER DATABASE OPEN RESETLOGS;
La recuperación se ha completado. La base de datos tendrá todas las transacciones confirmadas a partir de la última copia de seguridad del redo log archivado.