Cómo hacer una copia de seguridad (backup) de un servidor de base de datos Oracle 21c en Docker. Realizaremos un script para automatizar la copia y realizar el export de Oracle al equipo host anfitrión.
- Requisitos para hacer copia de seguridad de Oracle 21c con expdp en Docker.
- Copia de seguridad lógica de Oracle 21c dockerizado a equipo host anfitrión.
Requisitos para hacer copia de seguridad de Oracle 21c con expdp en Docker
Dispondremos de un servidor Oracle 21c en Docker. En el siguiente tutorial explicamos cómo desplegar un contenedor con Oracle 21c en Docker:
Necesitaremos conocer un usuario y contraseña de Oracle con permisos suficientes para hacer copias lógicas (export o expdp).
Prepararemos Oracle para admitir una carpeta de destino de Backup. Para ello, accederemos a la consola shell de comandos del contenedor con Oracle (o bien accederemos con un cliente que permita ejecución de sentencias Oracle). Necesitaremos conocer el nombre del contenedor, en este caso es bdproyectoaext:
|
1 |
docker exec -it bdproyectoaext bash |
Una vez en el shell del equipo Oracle, accederemos a la carpeta de destino de backup, por ejemplo a /home/oracle:
|
1 |
cd /home/oracle |
Crearemos una carpeta llamada «backup»:
|
1 |
mkdir backup |
Accederemos a Oracle con SQL Plus:
|
1 |
sqlplus /nolog |
Conectamos con la instancia como SYSDBA:
|
1 |
conn / as sysdba |
Creamos el directorio en Oracle, indicando como destino /home/oracle/backup:
|
1 |
create directory backup_export as '/home/oracle/backup'; |

Saldremos del shell del equipo contenedor con Oracle, con el comando:
|
1 |
exit |
Copia de seguridad lógica de Oracle 21c dockerizado a equipo host anfitrión
Crearemos un fichero de texto .bat si el equipo con Docker Desktop es Windows, en caso de ser Linux, crearemos un fichero .sh, con el siguiente contenido (para Docker en Windows):
|
1 2 3 |
docker exec bdproyectoaext sh -c "rm /home/oracle/backup/*" docker exec bdproyectoaext sh -c "export ORACLE_SID="ORCLCDB" && expdp system/contraseña dumpfile=usrfacturas.dmp logfile=usrfacturas.log directory=backup_export schemas=usrfacturas" docker cp bdproyectoaext:/home/oracle/backup/usrfacturas.dmp C:backuporacle |
O con este otro contenido para Docker en Linux:
|
1 2 3 |
docker exec bdproyectoaext sh -c 'rm /home/oracle/backup/*' docker exec bdproyectoaext sh -c 'export ORACLE_SID="ORCLCDB" && expdp system/contraseña dumpfile=usrfacturas.dmp logfile=usrfacturas.log directory=backup_export schemas=usrfacturas' docker cp bdproyectoaext:/home/oracle/backup/usrfacturas.dmp /backuporacle |
Probaremos el fichero .bat o .sh creado, ejecutándolo en el equipo host anfitrión.

Si el proceso es correcto, nos habrá creado un fichero en la carpeta de destino C:backuporacle o /backuporacle:

Por supuesto, con el fichero exportado podremos realizar una importación en cualquier equipo con Oracle, sea en Docker o no.