클라우드의 파일에 대한 대량 작업
PL/SQL 패키지 DBMS_CLOUD
는 대량 파일 업로드, 다운로드, 복사 및 전송 작업에 대한 병렬 실행 지원을 제공하여 사용자 환경을 간소화하고 대량 파일 작업에 최적의 성능을 제공합니다.
DBMS_CLOUD
패키지는 다음 클라우드 서비스로 파일을 로드하고 언로드할 수 있도록 지원합니다.
-
Oracle Cloud Infrastructure Object Storage
-
Azure Blob Storage
-
Amazon S3
-
Google Cloud Storage
자세한 내용은 DBMS_CLOUD Package File URI Formats를 참조하십시오.
관련 항목
대량 파일 작업 정보
DBMS_CLOUD
대량 파일 작업은 동일한 객체 저장소 제공자 내 또는 객체 저장소 제공자 간 클라우드 객체 저장소에서 파일을 복사, 이동 및 삭제하는 기능을 포함하여 Autonomous Database에서 파일 다운로드 및 업로드를 지원합니다.
대량 파일 작업은 병렬화를 지원하며 파일 업로드, 다운로드, 복사 및 이동을 위한 최적의 성능을 제공합니다. 대량 파일 작업에 대한 병렬화는 작업의 우선 순위를 지정하여 처리됩니다. 지원되는 우선 순위는 다음과 같습니다.
HIGH
: Autonomous Database 인스턴스 CPU 컴퓨트 수를 사용하여 처리된 병렬 파일 수를 결정합니다.MEDIUM
: 중간 서비스에 대한 동시성 제한을 사용하여 병렬화를 결정합니다.LOW
: 파일을 순차적으로 처리합니다(동시성 없음).
우선 순위가 높은 대량 작업을 실행하면 더 많은 데이터베이스 리소스가 사용되고 병렬화가 작업 속도를 높일 때 작업이 더 빨리 완료됩니다. 우선 순위가 낮을수록 데이터베이스 리소스가 적어지고 병렬 처리가 작업 속도를 높일 때 작업을 완료하는 데 시간이 더 오래 걸립니다. 대량 작업에 데이터가 거의 없는 적은 수의 파일이 포함된 경우 우선 순위를 높게 지정해도 성능이 변경되지 않을 수 있습니다.
대량 파일 작업에 대한 병렬화를 늘리려면 HIGH
우선 순위를 사용하고 Autonomous Database 인스턴스에 지정된 CPU 수를 늘립니다. 대량 파일 작업에 대해 지원되는 최대 동시 파일 작업은 64개로 제한됩니다.
기본 우선 순위는 MEDIUM
이며, 대량 파일 작업에서 MEDIUM 소비자 그룹에 정의된 동시성 제한을 사용하도록 지정합니다.
format
매개변수를 사용하여 대량 파일 작업에 priority
를 지정하는 방법에 대한 자세한 내용은 DBMS_CLOUD for Bulk File Management을 참조하십시오.
아래에 설명된 DBMS_CLOUD 하위 프로그램에서 credential_name
, source_credential_name
또는 target_credential_name
는 퍼블릭, 사전 인증 또는 사전 서명된 버킷 URI의 경우 NULL
일 수 있습니다.
클라우드 객체 스토리지의 대량 복사 파일
DBMS_CLOUD.BULK_COPY
프로시저를 사용하여 한 객체 저장소 버킷 또는 폴더에서 다른 버킷 또는 폴더로 파일을 대량 복사할 수 있습니다.
예를 들어, DBMS_CLOUD.BULK_COPY
를 사용하여 Amazon S3에서 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;
/
클라우드 객체 스토리지 간 대량 파일 이동
DBMS_CLOUD.BULK_MOVE
프로시저를 사용하여 한 클라우드 오브젝트 스토리지 위치에서 다른 위치로 파일을 대량 이동할 수 있습니다.
파일을 이동하는 첫 번째 단계는 대상 위치로 복사하는 것입니다. 해당 파일은 성공적으로 복사된 후 소스 위치에서 삭제됩니다.
객체 저장소가 소스 위치와 대상 위치 간의 이름 바꾸기 작업을 허용하는 경우 파일 이름이 복사되지 않고 이름이 바뀝니다.
예를 들어, DBMS_CLOUD.BULK_MOVE
를 사용하여 Amazon S3에서 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;
/
클라우드 객체 스토리지에서 파일 대량 다운로드
DBMS_CLOUD.BULK_DOWNLOAD
절차를 사용하여 클라우드 객체 저장소 위치의 파일을 Autonomous Database의 디렉토리 객체로 대량 다운로드합니다.
클라우드 객체 스토리지에 파일 대량 업로드
DBMS_CLOUD.BULK_UPLOAD
프로시저를 사용하여 데이터베이스의 디렉토리 객체에서 클라우드 객체 저장소 위치로 파일을 대량 업로드할 수 있습니다.
대량 파일 로드 모니터 및 문제 해결
모든 DBMS_CLOUD
데이터 로드 작업은 dba_load_operations
및 user_load_operations
뷰에 기록됩니다.
다음 뷰를 사용하여 대량 파일 로드를 모니터하고 문제를 해결할 수 있습니다.
-
dba_load_operations
: 모든 로드 작업을 보여줍니다. -
user_load_operations
: 스키마의 로드 작업을 보여줍니다.
이 뷰를 질의하여 진행 중인 대량 파일 작업 및 완료된 대량 파일 작업에 대한 정보를 확인합니다. 예를 들어, TYPE
에 WHERE
절 술어가 있는 다음 SELECT
문은 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
STATUS_TABLE
열에는 대량 다운로드 작업에 대한 자세한 로깅 정보를 보기 위해 질의할 수 있는 테이블의 이름이 표시됩니다. 예:
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
상태 테이블에는 각 파일 이름과 대량 작업의 상태가 표시됩니다.
관련 오류 번호 및 메시지는 특정 파일에 대한 작업이 실패할 경우 상태 테이블에 기록됩니다.
완료된 작업의 경우 보고된 START_TIME
및 END_TIME
시간을 사용하여 각 작업에 필요한 시간을 계산할 수 있습니다.
파일 작업 STATUS
열은 다음 값 중 하나를 가질 수 있습니다.
파일 상태 | 설명 |
---|---|
|
파일 작업이 성공적으로 완료되었습니다. |
|
파일 작업을 실패했습니다. 재시도를 두 번 시도할 수 있습니다. |
|
파일 작업이 아직 시작되지 않았습니다. |
|
파일 작업이 현재 진행 중입니다. |
|
파일 작업을 생략했습니다. |
두 번의 재시도 후 파일 작업이 실패하면 대량 작업이 실패한 것으로 표시되고 오류가 발생합니다. 예:
ORA-20003: Operation failed, please query table DOWNLOAD$2_STATUS for error details
DBMS_CLOUD
대량 파일 작업을 사용할 때 상태 테이블을 제어하는 format
매개변수 옵션이 있습니다.
-
logretention
: 상태 테이블이 보존되는 기간(일)을 결정하는 정수 값을 지정합니다. 기본값은 2일입니다. -
logprefix
: 대량 작업 상태 테이블의 이름 접두어를 결정하는 문자열 값을 지정합니다.각 대량 작업에는
logprefix
옵션에 대한 고유한 기본값이 있습니다.절차 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
user_load_operations
테이블 지우기에 대한 자세한 내용은 DELETE_ALL_OPERATIONS Procedure를 참조하십시오.