lunes, 25 de septiembre de 2023

Oracle 12 - Nuevo enfoque (9). Oracle Enterprise con docker, restaurar copias de seguridad

 0. Introducción

Inicialmente se utilizó este comando para crear la copia de seguridad en Oracle Express para copiar el esquema SCHM01_XIMO, observar que hay múltiples ficheros DUMP de 1MByte:

#     <usuario>  <password> <bd>             <directorio>               <dump-file>            <log-file>     <SCHEMAS to backup>   <Size of the dump files>
expdp backupuser/myPassword@EXPDB1 DIRECTORY=oracle_backup_sql DUMPFILE=mybkps%U.dmp   LOGFILE=schm_exp.log   SCHEMAS=SCHM01_XIMO FILESIZE=1M;

Cosa que nos creó una copia del SCHEMA SCHM01_XIMO de la BD EXPDB1  (parametro SCHEMAS=SCHM01_XIMO) en el directorio en cuestion, generando multiples ficheroso "dump" del tamaño de 1 MByte y el fichero "log" indicados en los parametros .

1. Restauración de la BD

Veamos los pasos a realizar:

1.1 Pasos previos a realizar si vamos a trabajar con sqlplus 

Hacer estos pasos si estamos en sqlplus. Con DBeaver no hace falta.

a. Ejecutar el contenedor docker a modo comando. Ojo el id del contenedor es el que tengamos tras realizar un docker ps 

#1. Ejecutar el contenedor docker en modo shell
#               <id contenedor> <programa a ejecutar>
docker exec -it <id-contenedor>    /bin/bash

b. Ejecutar sqlplus

#2. Nos conectamos a sqlplus con el usuario sys y permisos sysdba
sqlplus / as sysdba

c. Escogemos la BD (Contenedor SQL) ORCLPDB1

--3. Una vez dentro de SQL plus, usar la BD (Contenedor) en cuestión
ALTER SESSION SET CONTAINER = ORCLPDB1;


1.2 Crear el directorio en SQL donde está la copia de la BD

Creamos el directorio que apunte donde están las copias de seguridad. Las copias de seguridad se hicieron en el volumen ximo-oracle-volume que se montó en la carpeta /opt/ximo-volume  del contenedor docker. Mas concretamente la copia de seguridad está en la subcarpeta BKPS (/opt/ximo-volume/BKPS)

Creamos pues un directorio  SQL (oracle_backup_sql) que apunte a dicha carpeta (para no liarla mas , se le ha dado el mismo nombre que el que utilizamos para crer la copia de seguridad) o sea mapeado a /opt/ximo-volume/BKPS que es donde reside la copia de seguridad

CREATE DIRECTORY oracle_backup_sql as '/opt/ximo-volume/BKPS';

Ojo: usar guiones bajos "_" en vez de guiones normales "-" pues da error.

1.3 Crear el Tablespace

Como las tablas del esquema que vamos a restaurar se crearon en el  TABLESPACE  TABSPC01_XIMO, se requiere crear dicho tablespace sinó dará el error:

ORA-00959: tablespace 'TABSPC01_XIMO' does not exist 

Vamos a crear el TABLESPACE TABSPC01_XIMO, para ello ejecutamos

CREATE TABLESPACE TABSPC01_XIMO DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/TABSPC01_XIMO.dbf' size 50M;

Observar que utilizamos un datafile donde aparecen las carpetas ORCLCDB/ORCLPDB1

1.4 Restaurar la copia de seguridad

Salimos de sqlplus y vamos a una shell del contenedor docker de oracle-enterprise. Si no tenemos la sesión shell abierta la abrimos tal como hicimos en los preliminares Ojo el id del contenedor es el que tengamos tras realizar un docker ps 

#1. Ejecutar el contenedor docker en modo shell
#               <id contenedor> <programa a ejecutar>
docker exec -it <id-contenedor>    /bin/bash

Ahora vamos autilizar este comando:

#     <usuario>  <password> <bd>           <directorio>             <dump-file>            <log-file>  
impdp system/myPassword@ORCLPDB1 DIRECTORY=oracle_backup_sql DUMPFILE=mybkps%U.dmp   LOGFILE=schm_exp.log;

Cosa que nos debería de crear una copia del SCHEMA SCHM01_XIMO de la BD ORCLPDB1 en el directorio en cuestion, generando el fichero "dump" y "log" indicados en los parametros . No hay que pasarle el nombre del schema

Importante: usar el usuario system
Ahora vemos que se ha creado el esquema SCHM01_XIMO



-




No hay comentarios :

Publicar un comentario