Un dels aspectes més importants de la seguretat de les dades és garantir la disponibilitat
de la informació i la capacitat de recuperació en cas de fallada. Per això, pràcticament tots
els gestors de bases de dades incorporen ferramentes per fer còpies de seguretat de les dades
i restaurar-les quan siga necessari.
Hi ha dos mecanismes bàsics que permeten recuperar les dades:
Còpies de seguretat: ferramentes que permeten exportar la informació de la base de dades
a un suport extern al SGBD i importar-la de nou, de manera que es puga recuperar en cas de fallada.
Diari de transaccions o quadern de bitàcola: registre de totes les operacions que modifiquen les dades.
A mesura que es fan transaccions, s'escriuen en aquest diari. Quan es confirmen amb COMMIT,
els canvis es fan permanents, mentre que, si es desfan amb ROLLBACK, s'eliminen
els registres corresponents.
Una bona pràctica és separar físicament les còpies de seguretat de les dades originals per evitar pèrdues en cas de fallada del disc, corrupció o atacs.
El procés de recuperació d'una base de dades combina tots dos mecanismes i es basa en tres tasques:
Backup: fer còpies de seguretat periòdiques de les dades.
Restore: restaurar les dades a partir de les còpies de seguretat.
Recovery: aplicar els canvis del diari de transaccions per actualitzar les dades
fins a un punt concret en el temps.
Per garantir que aquest procés funciona quan cal, l'administrador de la base de dades
s'encarrega de:
Definir la política de còpies de seguretat: freqüència, tipus de còpia, emmagatzematge, etc.
Definir el procés de restauració i recuperació: com es recuperen les dades en cas de fallada
i, si és possible, automatitzar-lo.
Planificar simulacres de fallada: comprovar periòdicament que els procediments funcionen.
Les còpies de seguretat es poden classificar segons diferents criteris:
Segons què es copia:
Total: inclou tots els objectes, fitxers, el diari de transaccions, etc.
Parcial: només inclou els objectes concrets que es volen copiar.
Segons l'abstracció de les dades:
Lògica: es copien els objectes de la base de dades (taules, índexs, etc.).
Física: es copien els fitxers físics que contenen les dades (datafiles, controlfiles, etc.).
Segons l'abast temporal:
Completa: es copien totes les dades de la base de dades.
Incremental: només es copien les dades que han canviat des de l'última còpia,
cosa que redueix el temps i l'espai necessaris.
Segons l'estat de la base de dades:
En fred (offline): la base de dades està aturada durant la còpia.
Garanteix la consistència de les dades, però requereix un temps d'inactivitat.
En calent (online): la base de dades està en funcionament durant la còpia.
Permet mantindre el servei actiu, però requereix mecanismes addicionals
per garantir la integritat.
Oracle DB proporciona tres ferramentes per fer còpies de seguretat i recuperar-les:
Export/Import (exp/imp): fan còpies de seguretat lògiques, que es guarden
en el dispositiu des del qual s'executa la ferramenta.
Està obsoleta des de la versió 11g.
Data Pump (expdp/impdp): fa còpies de seguretat lògiques, que es guarden
en fitxers del sistema de fitxers del servidor.
Recovery Manager (RMAN): fa còpies de seguretat físiques i incrementals de la base de dades,
que també s'emmagatzemen en fitxers del sistema de fitxers del servidor.
La taula següent resumeix quins tipus de còpia permet cada ferramenta:
Oracle Data Pump és la ferramenta que recomana Oracle per fer còpies de seguretat lògiques
i per moure dades entre bases de dades. Substitueix les antigues ferramentes exp/imp
i ofereix millor rendiment, paral·lelisme i flexibilitat.
Oracle Data Pump està format per tres components principals:
Clients de línia d'ordres (expdp i impdp): permeten iniciar i controlar les operacions
d'exportació (Export Data Pump) i d'importació (Import Data Pump) mitjançant paràmetres
indicats a la línia d'ordres.
Paquet PL/SQL DBMS_DATAPUMP: també conegut com l'API de Data Pump, implementa la lògica
principal de les operacions d'exportació i importació. Els clients expdp i impdp l'utilitzen
internament, però també es pot utilitzar directament des de PL/SQL.
Paquet PL/SQL DBMS_METADATA: també conegut com l'API de metadades, permet extreure,
manipular i recrear les metadades del diccionari de dades (taules, índexs, esquemes, etc.).
Data Pump l'utilitza quan ha de moure metadades.
Data Pump s'executa en el servidor del SGBD, no en el client des d'on s'executa l'ordre.
Data Pump tria entre diversos mètodes per moure les dades. Com més s'allunya el mètode
de la capa SQL, més ràpid és, però menys transformacions permet:
Còpia directa de fitxers de dades: és un moviment físic que copia els fitxers de dades
d'una base de dades a una altra sense passar per la capa SQL. És el mètode més ràpid,
ja que no s'interpreten ni es modifiquen les dades. No obstant això, requereix que les bases
de dades d'origen i de destí siguen compatibles en estructura i format, i no permet
transformacions ni filtrats. Per això, s'utilitza principalment per a migracions completes
entre entorns similars.
Camí directe (Direct Path): és un moviment lògic que escriu les dades directament
en els fitxers de dades de la base de dades de destí. És el mètode més ràpid després
de la còpia física, ja que evita la capa SQL convencional: les dades es llegeixen directament
dels blocs d'origen i s'escriuen en els blocs de destí, amb una interpretació mínima
(format, tipus, etc.).
Taules externes (External Tables): és un moviment lògic que utilitza taules externes1
per llegir i escriure les dades en un fitxer de bolcat intermedi. Com que les dades es processen
mitjançant SQL, permet transformacions i filtrats, però és més lent que el camí directe.
Camí convencional (Conventional Path): Oracle utilitza sentències INSERT per moure
les dades. Tot passa per la capa SQL, de manera que cada fila es valida amb les restriccions,
els triggers i els índexs. Per això, és compatible amb totes les estructures i formats
i permet transformacions i filtrats complexos, però és el mètode més lent i el que consumeix
més recursos.
Importació mitjançant enllaç de xarxa (NETWORK_LINK): mou les dades directament entre
dues bases de dades, sense fitxers intermedis. En lloc de generar un fitxer .dmp, les dades
es transmeten directament per la xarxa a través d'un database link, que permet
accedir a les dades remotes i executar-hi consultes SQL.
Data Pump no escriu en qualsevol ruta del servidor: cal definir un objecte de tipus DIRECTORY,
on es guardaran els fitxers de bolcat (.dmp) i els fitxers de registre (.log). Aquest objecte
associa un nom lògic a un directori físic del sistema de fitxers on el servidor té permisos
de lectura i escriptura.
L'exportació es pot fer a diferents nivells, segons el paràmetre que s'indique:
Base de dades completa (Full Database): exporta tota la base de dades amb FULL=Y.
Els permisos per exportar i importar tota la base de dades són EXP_FULL_DATABASE
i IMP_FULL_DATABASE, respectivament.
Esquema (Schema): exporta tots els objectes d'un esquema amb SCHEMAS=<schema_name>.
Taula (Table): exporta taules concretes amb TABLES=<table_name1>,<table_name2>.
Tablespace: exporta tots els objectes d'un tablespace amb TABLESPACES=<tablespace_name>.
Tablespace transportable (Transportable Tablespace): exporta tablespaces per transportar-los
a una altra base de dades amb TRANSPORT_TABLESPACES=<tablespace_name>.
A més, hi ha paràmetres addicionals per filtrar les dades, transformar-les o controlar
el comportament de l'exportació:
QUERY: exporta només les files que compleixen una condició SQL.
PARALLEL: executa l'exportació en paral·lel per millorar el rendiment.
ESTIMATE_ONLY: estima la mida del bolcat sense fer l'exportació.
Com que la línia d'ordres es fa llarga, és més còmode escriure els paràmetres en un fitxer
i indicar-lo amb l'opció PARFILE=<parameter_file>:
example.par
DIRECTORY=<directory_name>DUMPFILE=<dumpfile_name>LOGFILE=<logfile_name># Tria el que vulgues exportarFULL=YSCHEMAS=<schema_name>TABLES=<table_name1>,<table_name2>...# Tria les dades a exportarCONTENT=ALL|DATA_ONLY|METADATA_ONLYQUERY=<SQL_condition>
Exemple: Exportar els productes amb preu superior a 15
Es creen un fitxer de paràmetres i una exportació dels productes amb preu superior a 15.
Es configura un fitxer de paràmetres per exportar els productes amb preu superior a 15
de la taula productes de l'usuari backup_user al fitxer productes.dmp
del directori DPUMP_DIR:
Export: Release 21.0.0.0.0 - Production on Thu Jan 22 00:54:57 2026
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Starting "BACKUP_USER"."SYS_EXPORT_TABLE_01": backup_user/********@XEPDB1 TABLES=productes DIRECTORY=DPUMP_DIR DUMPFILE=productes.dmp LOGFILE=productes_exp.log
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
. . exported "BACKUP_USER"."PRODUCTES" 5.984 KB 2 rows
Master table "BACKUP_USER"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for BACKUP_USER.SYS_EXPORT_TABLE_01 is:
/home/oracle/dpump/productes.dmp
Job "BACKUP_USER"."SYS_EXPORT_TABLE_01" successfully completed at Thu Jan 22 09:15:52 2026 elapsed 0 00:00:13
Es comprova que s'han creat el fitxer de bolcat i el fitxer de registre al directori físic:
ls-l/home/oracle/dpump/
total 196
-rw-r-----. 1 oracle oinstall 188416 Jan 22 09:55 productes.dmp
-rw-r--r--. 1 oracle oinstall 1226 Jan 22 09:55 productes_exp.log
S'observa que l'exportació només inclou 2 files, les que compleixen la condició preu > 15.
Es restaura la taula productes a partir de la còpia de l'exemple anterior.
S'elimina la taula productes de l'usuari backup_user per simular la pèrdua:
DROPTABLEproductes;
S'executa la ferramenta impdp per importar la taula productes des del fitxer
productes.dmp del directori DPUMP_DIR. Es reutilitza el mateix fitxer de paràmetres
que en l'exportació:
Recovery Manager (RMAN) és la ferramenta d'Oracle per fer i recuperar còpies de seguretat
físiques. A més, manté un catàleg de còpies i permet automatitzar tasques mitjançant scripts.
Per fer còpies de seguretat, s'utilitza el client rman, que es connecta a la instància
de la base de dades i permet executar-hi ordres de còpia de seguretat:
rmanTARGET<username>/<password>@<service_name>
Una vegada connectat, l'ordre BACKUP fa la còpia. Segons què es vol copiar, s'utilitza
una variant o una altra:
Base de dades completa:
BACKUPDATABASE;
Pluggable database (PDB): primer es consulta el nom de les PDB i després se'n fa la còpia.
La recuperació amb RMAN es fa en dos passos: RESTORE recupera els fitxers a partir de la còpia
de seguretat i RECOVER hi aplica els canvis registrats després de la còpia. Abans de restaurar,
l'element afectat s'ha de posar fora de línia:
Base de dades completa: primer, cal aturar la base de dades i muntar-la.