Operaciones masivas para archivos en la nube
El paquete PL/SQL DBMS_CLOUD
ofrece soporte de ejecución en paralelo para las actividades de carga, descarga, copia y transferencia de archivos en bloque, lo que optimiza la experiencia del usuario y ofrece un rendimiento óptimo para las operaciones de archivos en bloque.
El paquete DBMS_CLOUD
soporta la carga y descarga de archivos en los siguientes servicios en la nube:
-
Oracle Cloud Infrastructure Object Storage
-
Azure Blob Storage
-
Amazon S3
-
Google Cloud Storage
Consulte Formatos de URI de archivos del paquete DBMS_CLOUD para obtener más información.
Temas relacionados
Acerca de las Operaciones de Archivos en Bloque
DBMS_CLOUD
soportan la descarga y carga de archivos en Autonomous Database, incluido el soporte para copiar, mover y suprimir archivos en almacenes de objetos en la nube, ya sea dentro del mismo proveedor del almacén de objetos o entre proveedores del almacén de objetos.
Las operaciones de archivos en bloque soportan el paralelismo y proporcionan un rendimiento óptimo para cargar, descargar, copiar y mover archivos. El paralelismo para operaciones de archivos en bloque se maneja especificando una prioridad para una operación. Las prioridades apoyadas son:
HIGH
: utilice el recuento de recursos informáticos de CPU de la instancia de Autonomous Database para determinar el número de archivos paralelos procesados.MEDIUM
: utilice el límite de simultaneidad para el servicio Medium para determinar el paralelismo.LOW
: procesa los archivos en orden serie (sin simultaneidad).
La ejecución de operaciones masivas con mayor prioridad utiliza más recursos de base de datos y las operaciones se completan más rápido cuando el paralelismo puede acelerar la operación. Una prioridad más baja consume menos recursos de base de datos y las operaciones tardan más en completarse cuando el paralelismo puede acelerar la operación. Cuando las operaciones masivas implican un número pequeño de archivos que contienen pocos datos, la especificación de una prioridad más alta puede no cambiar el rendimiento.
Para aumentar el paralelismo de las operaciones de archivos en bloque, utilice la prioridad HIGH
y aumente el número de CPU asignadas a la instancia de Autonomous Database. El máximo de operaciones de archivos simultáneos admitidas está limitado a 64 para operaciones de archivos masivos.
La prioridad predeterminada es MEDIUM
, que especifica que las operaciones de archivos masivos utilizan el límite de simultaneidad definido para el grupo de consumidores MEDIUM.
Consulte DBMS_CLOUD para la gestión de archivos en bloque para obtener detalles sobre el uso del parámetro format
para especificar priority
con operaciones de archivos en bloque.
En los subprogramas DBMS_CLOUD que se describen a continuación, credential_name
, source_credential_name
o target_credential_name
pueden ser NULL
para el URI de cubo público, autenticado previamente o firmado previamente.
Copia masiva de archivos en el almacenamiento de objetos en la nube
Utilice el procedimiento DBMS_CLOUD.BULK_COPY
para copiar en bloque archivos de un cubo o carpeta del almacén de objetos a otro cubo o carpeta.
Por ejemplo, utilice DBMS_CLOUD.BULK_COPY
para copiar archivos de Amazon S3 en Oracle Cloud Infrastructure Object Storage.
BEGIN
DBMS_CLOUD.BULK_COPY
(
source_credential_name => 'AWS_CRED',
source_location_uri => 'https://bucketname.s3-us-west-2.amazonaws.com/',
target_credential_name => 'OCI_CRED',
target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/
Traslado masivo de archivos a través de Cloud Object Storage
DBMS_CLOUD.BULK_MOVE
para mover archivos de forma masiva de una ubicación de Cloud Object Storage a otra.
El primer paso para mover archivos es copiarlos en la ubicación de destino. Después de que los archivos se copian correctamente, se suprimen de la ubicación de origen.
Los archivos se cambian de nombre en lugar de copiarse si el almacén de objetos permite las operaciones de cambio de nombre entre las ubicaciones de origen y destino.
Por ejemplo, utilice DBMS_CLOUD.BULK_MOVE
para mover archivos de Amazon S3 a Oracle Cloud Infrastructure Object Storage.
BEGIN
DBMS_CLOUD.BULK_MOVE
(
source_credential_name => 'AWS_CRED',
source_location_uri => 'https://bucketname.s3-us-west-2.amazonaws.com/',
target_credential_name => 'OCI_CRED',
target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/
Descarga masiva de archivos desde Cloud Object Storage
Utilice el procedimiento DBMS_CLOUD.BULK_DOWNLOAD
para descargar en bloque archivos de la ubicación del almacén de objetos en la nube al objeto de directorio en una instancia de Autonomous Database.
Carga masiva de archivos en Cloud Object Storage
Utilice el procedimiento DBMS_CLOUD.BULK_UPLOAD
para cargar archivos de forma masiva desde un objeto de directorio en la base de datos a una ubicación del almacén de objetos en la nube.
Supresión masiva de archivos de Cloud Object Storage
Utilice el procedimiento DBMS_CLOUD.BULK_DELETE
para suprimir en bloque archivos de Cloud Object Storage.
Supervisión y solución de problemas de cargas de archivos masivas
Todas las operaciones de carga de datos DBMS_CLOUD
se registran en las vistas dba_load_operations
y user_load_operations
.
Puede utilizar las siguientes vistas para supervisar y solucionar problemas de cargas de archivos masivas:
-
dba_load_operations
: muestra todas las operaciones de carga. -
user_load_operations
: muestra las operaciones de carga del esquema.
Consulte estas vistas para ver información sobre las operaciones de archivos masivos en curso y finalizadas. Por ejemplo, la siguiente sentencia SELECT
con un predicado de cláusula WHERE
en TYPE
, se muestran las operaciones DOWNLOAD
:
SELECT owner_name, type, status, start_time, update_time, status_table, rows_loaded
FROM user_load_operations WHERE type = 'DOWNLOAD';
OWNER_NAME TYPE STATUS START_TIME UPDATE_TIME STATUS_TABLE ROWS_LOADED
---------- -------- --------- ------------------------ ------------------------ ------------ -----------
"ADMIN" DOWNLOAD COMPLETED 2022-10-17T20:42:19.498Z 2022-10-17T20:42:21.054Z DWN$2_STATUS 4
"ADMIN" DOWNLOAD FAILED 2022-10-17T20:40:54.348Z 2022-10-17T20:40:55.679Z DWN$1_STATUS
La columna STATUS_TABLE
muestra el nombre de la tabla que puede consultar para consultar la información de registro detallada de la operación de descarga masiva. Por ejemplo:
DESCRIBE DWN$2_STATUS
Name Null? Type
------------- -------- ---------------------------
ID NOT NULL NUMBER
NAME VARCHAR2(4000)
BYTES NUMBER
CHECKSUM VARCHAR2(128)
LAST_MODIFIED TIMESTAMP(6) WITH TIME ZONE
STATUS VARCHAR2(30)
ERROR_CODE NUMBER
ERROR_MESSAGE VARCHAR2(4000)
START_TIME TIMESTAMP(6) WITH TIME ZONE
END_TIME TIMESTAMP(6) WITH TIME ZONE
SID NUMBER
SERIAL# NUMBER
ROWS_LOADED NUMBER
SELECT id, name, bytes, status, error_message, start_time, end_time FROM DWN$2_STATUS;
ID NAME BYTES STATUS ERROR_MESSAGE START_TIME END_TIME
-- ---------- ----- --------- ------------- ------------------------ ------------------------
1 trees.txt 58 COMPLETED 2022-10-17T20:42:19.998Z 2022-10-17T20:42:20.421Z
2 trees1.txt 58 COMPLETED 2022-10-17T20:42:20.425Z 2022-10-17T20:42:20.533Z
3 trees2.txt 58 COMPLETED 2022-10-17T20:42:20.535Z 2022-10-17T20:42:20.894Z
4 trees3.txt 58 COMPLETED 2022-10-17T20:42:20.896Z 2022-10-17T20:42:21.043Z
La tabla de estado muestra cada nombre de archivo y su estado para la operación en bloque.
El número de error y el mensaje relevantes se registran en la tabla de estado si falla una operación en un archivo específico.
Para las operaciones finalizadas, el tiempo necesario para cada operación se puede calcular con las horas informadas START_TIME
y END_TIME
.
La columna STATUS
de la operación de archivo puede tener uno de los siguientes valores:
Estado del Archivo | Descripción |
---|---|
|
La operación de archivo se ha realizado correctamente. |
|
Fallo en la operación de archivo. Se puede intentar un reintento dos veces. |
|
La operación de archivo aún no se ha iniciado. |
|
La operación de archivo está actualmente en curso. |
|
Se ha saltado la operación de archivo. |
Si alguna operación de archivo falla después de dos reintentos, la operación en bloque se marca como fallida y se genera un error. Por ejemplo:
ORA-20003: Operation failed, please query table DOWNLOAD$2_STATUS for error details
Al utilizar una operación de archivo masivo DBMS_CLOUD
, hay opciones de parámetro format
que controlan las tablas de estado:
-
logretention
: especifica un valor entero que determina la duración en días que se retiene la tabla de estado. El valor por defecto es de 2 días. -
logprefix
: especifica un valor de cadena que determina el prefijo de nombre de la tabla de estado de operación en bloque.Cada operación en bloque tiene su propio valor por defecto para la opción
logprefix
:Procedimiento Valor por defecto para logprefix
DBMS_CLOUD.BULK_COPY
COPYOBJ
DBMS_CLOUD.BULK_DELETE
DELETE
DBMS_CLOUD.BULK_DOWNLOAD
DOWNLOAD
DBMS_CLOUD.BULK_MOVE
MOVE
DBMS_CLOUD.BULK_UPLOAD
UPLOAD
Consulte Procedimiento DELETE_ALL_OPERATIONS para obtener información sobre cómo borrar la tabla user_load_operations
.