Skip to main content

Command Palette

Search for a command to run...

[26ai] DBMS_CLOUD — Capitulo Dos

Published
3 min read
[26ai] DBMS_CLOUD — Capitulo Dos

El artículo también se encuentra publicado en Ingles English version.

Continuando con el artículo de la semana pasada, donde vimos la configuración y unos primeros usos de DBMS_CLOUD en el día a día, hoy continuaremos con la parte de Data Pump.

Dejo por aquí el enlace del primer capitulo:

[26ai] DBMS_CLOUD — Capitulo Uno

La idea del laboratorio es la siguiente:

  • Export una tabla a nuestro Bucket.

  • Importar la tabla que hemos exportado en el punto anterior

Así que sin más, vamos ha realizar cada punto:

Export a un Bucket

Vamos a definir un tabla que utilizaremos para exportar e importar:

SQL> 
  Create Table My_Grants As  
   Select TABLE_SCHEMA,TABLE_NAME,PRIVILEGE  
     From All_Tab_Privs;

 Table created.

SQL> set linesize 1000 pages 1000
SQL> col TABLE_SCHEMA format a20
SQL> col table_name format a20
SQL> col privilege format a20
SQL> r
  1* Select * From My_Grants FETCH FIRST 10  ROWS ONLY

TABLE_SCHEMA         TABLE_NAME                     PRIVILEGE
-------------------- ------------------------------ --------------------
SYS                  DUAL                           SELECT
SYS                  SYSTEM_PRIVILEGE_MAP           READ
SYS                  TABLE_PRIVILEGE_MAP            READ
SYS                  USER_PRIVILEGE_MAP             READ
SYS                  STMT_AUDIT_OPTION_MAP          READ
SYS                  FINALHIST$                     INSERT
SYS                  DM$EXPIMP_ID_SEQ               SELECT
SYS                  MODELGTTRAW$                   SELECT
SYS                  MODELGTTRAW$                   INSERT
SYS                  PMAPGTT$                       SELECT

Utilizaremos la propiedad DEFAULT_CREDENTIAL para setear nuestra credencial por defecto y así no tener que indicarla dentro del parfile del export.

SQL> 
ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'TEST.DBA_IN_THE_SHADOW';

Database altered.

SQL> 
Select PROPERTY_NAME,PROPERTY_VALUE 
  From database_properties  
 Where PROPERTY_NAME= 'DEFAULT_CREDENTIAL';

PROPERTY_NAME        PROPERTY_VALUE                           
-------------------- ---------------------------------------- 
DEFAULT_CREDENTIAL   TEST.DBA_IN_THE_SHADOW                    

Definimos el parfile:

SQL> ! vi export_to_bucket.par
SQL> ! cat export_to_bucket.par
DUMPFILE=<location_uri>/<TABLE>.dmp
LOGFILE=<TABLE>.log
TABLES=<SCHEMA>.<TABLE>
CONTENT=DATA_ONLY
LOGTIME=ALL
METRICS=YES
FLASHBACK_TIME=SYSTIMESTAMP
encryption_password=hari

Esto es lo que hemos definido:

  • DUMPILE: La ruta donde se va guardar el dmp, en nuestro caso es el Bucket más un nombre descriptivo.

  • LOGFILE: Nombre del log.

  • TABLES: Ahí indicamos la tabla que hemos creado previamente.

  • CONTENT=DATA_ONLY: Solo exportamos los datos

  • LOGTIME/METRICS: Métricas de tiempo de nuestro export.

  • FLASHBACK_TIME: Que sea un export consistente.

  • ENCRYPTION_PASSWORD: Encrypt de nuestro dmp.

Ejecutamos el export:

Consultamos que el dmp se ha generado correctamente en el Bucket:

SQL> 
Select object_name, trunc(bytes / (1024*1024),2) MB
  From 
   dbms_cloud.list_objects('DBA_IN_THE_SHADOW', '<location_uri>'); 

OBJECT_NAME                                      MB
---------------------------------------- ----------
ORA7445pf_20260205085710_COM_1.zip            57.35
Wallet_OF2BAP.zip                               .02
Wallet_OF2BCE.zip                               .02
grant.dmp                                         0
grant.dmp_segments/aaaaaa                         2
grant.dmp_segments/aaaaab                       .86

6 rows selected.

Fijémonos una cosa sobre el dmp que tenemos en nuestro Bucket. Tenemos tres archivos, cuando hemos indicado uno único archivo sin comodines, es decir, sin %L, %l, %U o %u. El tamaño de nuestro dmp es 0Mb y los fragmentos son los que tiene el peso, esto es porque Data Pump divide cada parte del archivo en fragmentos más pequeños para una carga más rápida.

Import desde Bucket

Ejecutamos el import creando una tabla previa para almacenar ahí la información:

SQL> CREATE TABLE MY_GRANTS_BCK AS SELECT * FROM MY_GRANTS WHERE 2 = 1;

Table created.
SQL> ! vi import_to_bucket.par
SQL> ! cat import_to_bucket.par
DUMPFILE=<location_uri>/<TABLE>.dmp
LOGFILE=MY_GRANTS.log
LOGTIME=ALL
METRICS=YES
REMAP_TABLE = TEST.MY_GRANTS:MY_GRANTS_BCK
encryption_password=yes

Esto es lo que hemos definido:

  • DUMPILE: La ruta donde se encuentra el dmp.

  • LOGFILE: Nombre del log.

  • LOGTIME/METRICS: Métricas de tiempo de nuestro export.

  • REMAP_TABLE: Queremos que la información del dmp se albergue en otra tabla

  • ENCRYPTION_PASSWORD= Encrypt de nuestro dmp.

Ejecutamos el import:

Perfecto, hemos podido exportar e importar un dmp desde el Bucket.

Espero que os guste. ¡Nos vemos en el próximo artículo!