0. Introducción
Créditos:
https://www.oracle.com/a/ocom/docs/oracle-data-pump-best-practices.pdf
Vamos a ver como crear backups de:
- La base de datos /FULL)
- Un SCHEMA
- Varias tablas
- Un Tablespace
También vamos a ver como:
- Usar un fichero de parámetros de copia de seguridad
- Fraccionar los ficheros de coopia de seguridad en varios ficheros de tamaño limitado
- Comprimir las copias
Pero no nos olvidemos que nuestra base de datos corre en un contenedor docker, y en el punto anterior hemos visto como crear volúmenes en docker para tener acceso directo a dichos volumenes tanto por parte de los contenedores docker como del propio servidor. También hemos visto como se asignaban los volúmenes a los contenedores en el proceso de creación de los mismos a partir de una imágen
1. Pasos previos
Para cada uno de estos procesos hay una parte común que és:
- Ejecutar el contenedor docker en modo shell
- Crear una carpeta en el contenedor docker y a ser posible que esté en el volumen docker
- Entrar a sqlplus como usario sys y permisos sysdba
- Usar la BD en cuestión
- Si no tenemos creado un usuario lo creamos
- Mapear dicha carpeta con sqlplus (CREATE DIRECTORY)
- Otorgar permisos de read, write del directorio a un usuario
- Otorgar permisos DATAPUMP_EXP_FULL_DATABASE al ususario
Veamos estos 5 pasos previos:
#---------------------- # PRELIMINARES #---------------------- #1. Ejecutar el contenedor docker en modo shell
# <id contenedor> <programa a ejecutar>
docker exec -it 34a5f979d3de /bin/bash
#2. Dentro del contenedor docker creamos la carpeta
# Es conveniente que esta carpeta se encuentre en el volumen
# asignado al crear el contenedor a partir de la imagen
mkdir /home/ximo/oracle-backup-server #3. Nos conectamos a sqlplus con el usuario sys y permisos sysdba sqlplus / as sysdba#4. Una vez dentro de SQL plus, usar la BD (Contenedor) en cuestión ALTER SESSION SET CONTAINER = XEPDB1;#5. Si no tenemos creado un usuario lo creamos CREATE USER backupuser IDENTIFIED BY myPassword; #6. Mapear la carpeta física a un directorio de SQL CREATE DIRECTORY oracle_backup_sql AS '/home/ximo/oracle-backup-server'; #7. Otorgamos permisos al usuario en ese directorio GRANT read, write ON DIRECTORY oracle_backup_sql TO backupuser;
#8. Otorgamos permisos al usuario de DATAPUMP_EXP_FULL_DATABASE GRANT DATAPUMP_EXP_FULL_DATABASE TO backupuser;#9. Ahora queda realizar la copia de la BS, SQCHEMA, TABLESPACE ...
2. Copia de seguridad de la BD entera
Hay que tener en cuenta que NO SE COPIAN:
- Los esquemas del sistema como SYS, ORDSYS, MDSYS
- Los Grants sobre los objetos propietarios de SYS.
- Hay que tener autorización para el REALM para exportar datos protegidos por REALM
La sentencia a ejecutar dentro de una ventana de comandos (shell) :
# <usuario> <password> <bd> <directorio> <dump-file> <log-file> <FULL copy> expdp backupuser/myPassword@EXPDB1 DIRECTORY=oracle-backup-sql DUMPFILE=orclfull.dmp LOGFILE=full_exp.log FULL=YES;
Cosa que nos creará una copia de la BD EXPDB1 entera (parametro FULL=YES) en el directorio oracle-backup-sql que está mapeado al volumen de docker, el cual tenenos acdeso desde el servidor físico. La copia de seguridad se descarga en los ficheros ".dump" y ".log" que hemos indicado (orclfull.dmp y full_exp.log)
3. Copia de seguridad de un SCHEMA
La sentencia a ejecutar dentro de una ventana de comandos (shell) :
# <usuario> <password> <bd> <directorio> <dump-file> <log-file> <SCHEMAS to backup> expdp backupuser/myPassword@EXPDB1 DIRECTORY=oracle-backup-sql DUMPFILE=orclschm.dmp LOGFILE=schm_exp.log SCHEMAS=SCHM01_XIMO;
Cosa que nos creará una copia del SCHEMA SCHM01_XIMO de la BD EXPDB1 (parametro SCHEMAS=SCHM01_XIMO) en el directorio en cuestion, generando el fichero "dump" y "log" indicados en los parametros .
4. Copia de seguridad de tablas
Lógicamente no se exportan relaciones entre tablas.
La sentencia a ejecutar dentro de una ventana de comandos (shell) :
# <usuario> <password> <bd> <directorio> <dump-file> <log-file> <TABLES to backup> expdp backupuser/myPassword@EXPDB1 DIRECTORY=oracle-backup-sql DUMPFILE=orcltabls.dmp LOGFILE=tabls_exp.log TABLES=regions, products;
Cosa que nos creará una copia de llas tablas regions y products de la BD EXPDB1 (parametro TABLES=regions,products) en el directorio en cuestion, generando el fichero "dump" y "log" indicados en los parametros .
5. Copia de seguridad de TABLESPACE
Lógicamente no se exportan relaciones entre tablas.
La sentencia a ejecutar dentro de una ventana de comandos (shell) :
# <usuario> <password> <bd> <directorio> <dump-file> <log-file> <TABLESPACE to backup> expdp backupuser/myPassword@EXPDB1 DIRECTORY=oracle-backup-sql DUMPFILE=orcltblspc.dmp LOGFILE=tblspc_exp.log TABLESPACES=TBLSPC1, TBLSPC2;
Cosa que nos creará una copia de los TABLESPACES TBLSPC1, TBLSPC2 de la BD EXPDB1 (parametro TABLESPCES=TBLSPC1, TBLSPC2) en el directorio en cuestion, generando el fichero "dump" y "log" indicados en los parametros .
6. Múltiples ficheros del mismo tamaño, compresión, archivo de configuración...
6.1 Partir la copia en varios ficheros
Para crear múltiples ficheros de copia de seguridad del mismo tamaño , hay que modificar el parámetro DUMPFILE y añadir el parámetr FILESIZE quedando:
DUMPFILE=orcltblspc%U.dmp FILESIZE=1M
Observar el parámetro %U de DUMPFILE que se sustituye por el número correlativo del fichero generado y el parámetro FILESIZE que admite un valor entero seguido de una de estas letras B:byte, K:Kbyte, M: Megabyte y G:Gigabyte. En el ejemplo hemos puesto un mega de tamaño
6.2 Comprimir la copia de seguridad
OJO: Para utilizar compresión hay que tener la licencia Enterprise!
Para crear las copias comprimidas utilizamos el parámetro COMPRESSION que puede tomar los valores:
ALL: lo comprime todo.or the entire export operation.
DATA_ONLY: Solo datos.
METADATA_ONLY: Solo metadatos.
NONE: No comprime.
6.3 Archivo de configuración
Se puede crear un archivo de configuración. En mi caso he creado el archivo /home/oracle/COPY.par con la siguiente información
DIRECTORY=oracle-backup-sql DUMPFILE=orclschm%U.dmp FILESIZE=1M LOGFILE=schm_exp.log SCHEMAS=SCHM01_XIMO COMPRESSION=ALL NO USAR EN ORACLE EXPRESS, SOLO EN ENTERPRISE
Y la sentencia a ejecutar es:
expdp backupuser/myPassword@EXPDB1 PARFILE=/home/oracle/COPY.par
No hay comentarios :
Publicar un comentario