클라우드의 파일에 대한 대량 작업
PL/SQL 패키지 DBMS_CLOUD는 대량 파일 업로드, 다운로드, 복사 및 전송 작업에 대한 병렬 실행 지원을 제공하여 사용자 환경을 간소화하고 대량 파일 작업에 최적의 성능을 제공합니다.
DBMS_CLOUD 패키지는 다음 클라우드 서비스로 파일 로드 및 언로드를 지원합니다.
-
Oracle Cloud Infrastructure Object Storage
-
Azure Blob 스토리지
-
Amazon S3
-
Google Cloud 저장소
자세한 내용은 DBMS_CLOUD Package File URI Formats을 참조하십시오.
대량 파일 작업 정보
DBMS_CLOUD 대량 파일 작업은 동일한 객체 저장소 제공자 내 또는 객체 저장소 제공자 간 클라우드 객체 저장소에서 파일 복사, 이동 및 삭제를 지원하는 등 자율운영 AI 데이터베이스에서 파일 다운로드 및 업로드를 지원합니다.
대량 파일 작업은 병렬화를 지원하고 파일 업로드, 다운로드, 복사 및 이동을 위한 최적의 성능을 제공합니다. 대량 파일 작업의 병렬화는 작업의 우선 순위를 지정하여 처리됩니다. 지원되는 우선순위는 다음과 같습니다.
-
HIGH: 자율운영 AI 데이터베이스 인스턴스 CPU 컴퓨트 수를 사용하여 처리된 병렬 파일 수를 확인합니다. -
MEDIUM: 중간 서비스에 대한 동시성 제한을 사용하여 병렬화를 결정합니다. -
LOW: 파일을 순차적으로 처리합니다(동시성 없음).
우선 순위가 높은 대량 작업을 실행하면 병렬화로 작업 속도를 높일 수 있을 때 더 많은 데이터베이스 리소스와 작업이 더 빠르게 완료됩니다. 우선 순위가 낮을수록 데이터베이스 리소스가 덜 소모되고 병렬화로 작업 속도를 높일 수 있는 경우 작업을 완료하는 데 시간이 더 오래 걸립니다. 대량 작업이 적은 데이터를 포함하는 적은 수의 파일을 포함하는 경우 높은 우선 순위를 지정해도 성능이 변경되지 않을 수 있습니다.
대량 파일 작업에 대한 병렬화를 늘리려면 HIGH 우선순위를 사용하고 자율운영 AI 데이터베이스 인스턴스에 지정된 CPU 수를 늘립니다. 최대 지원되는 동시 파일 작업은 대량 파일 작업의 경우 64개로 제한됩니다.
기본 우선 순위는 MEDIUM이며 대량 파일 작업이 MEDIUM 소비자 그룹에 정의된 동시성 제한을 사용하도록 지정합니다.
format 매개변수를 사용하여 대량 파일 작업으로 priority를 지정하는 방법에 대한 자세한 내용은 대량 파일 관리용 DBMS_CLOUD를 참조하십시오.
아래에 설명된 DBMS_CLOUD 서브 프로그램에서 공용, 사전 인증 또는 사전 서명된 버킷 URI의 경우 credential_name, source_credential_name 또는 target_credential_name는 NULL일 수 있습니다.
클라우드 오브젝트 스토리지의 파일 대량 복사
DBMS_CLOUD.BULK_COPY 프로시저를 사용하여 한 객체 저장소 버킷 또는 폴더에서 다른 버킷 또는 폴더로 파일을 대량 복사할 수 있습니다.
-
소스 위치에 액세스할 인증서 객체를 생성합니다.
source_credential_name매개변수로 지정된 소스 인증서 이름은 기본적으로 대상 위치에 대한 인증서로도 사용됩니다.자세한 내용은 CREATE_CREDENTIAL을 참조하십시오.
-
소스와 대상이 서로 다른 객체 저장소에 있거나 동일한 클라우드 제공자의 계정이 서로 다른 경우, 대상 위치에 액세스할 수 있는 인증서를 생성하고
target_credential_name매개변수를 포함합니다. -
DBMS_CLOUD.BULK_COPY프로시저를 실행하여 한 객체 저장소 버킷 또는 폴더에서 클라우드 제공자, 계정 및 버킷 간에 있을 수 있는 다른 버킷 또는 폴더로 파일을 병렬로 복사합니다. 프로시저를 실행하려면 ADMIN 사용자로 로그인하거나DBMS_CLOUD에 대해EXECUTE권한이 있어야 합니다.BEGIN DBMS_CLOUD.BULK_COPY ( source_credential_name => 'OCI_CRED', source_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o', 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; /
이 예에서는 한 Oracle Cloud Infrastructure Object Storage 버킷에서 다른 버킷으로 파일을 대량 복사합니다.
자세한 내용은 BULK_COPY Procedure를 참조하십시오.
자세한 내용은 DBMS_CLOUD 패키지 파일 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
예를 들어, 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 절차를 사용하여 클라우드 오브젝트 스토리지 위치 간에 파일을 대량 이동할 수 있습니다.
파일을 이동하는 첫 번째 단계는 대상 위치로 복사하는 것입니다. 파일이 성공적으로 복사되면 소스 위치에서 삭제됩니다.
객체 저장소에서 소스 위치와 대상 위치 간의 이름 바꾸기 작업을 허용하는 경우 파일 이름이 복사되지 않고 이름이 바뀝니다.
-
소스 위치에 액세스할 인증서 객체를 생성합니다.
source_credential_name매개변수로 지정된 소스 인증서 이름은 기본적으로 대상 위치에 대한 인증서로도 사용됩니다.자세한 내용은 CREATE_CREDENTIAL을 참조하십시오.
-
소스와 대상이 서로 다른 객체 저장소에 있거나 동일한 클라우드 제공자의 계정이 서로 다른 경우, 대상 위치에 액세스할 수 있는 인증서를 생성하고
target_credential_name매개변수를 포함합니다. -
DBMS_CLOUD.BULK_MOVE절차를 실행하여 한 클라우드 오브젝트 스토리지 위치에서 다른 위치로 파일을 대량 이동합니다. 프로시저를 실행하려면 ADMIN 사용자로 로그인하거나DBMS_CLOUD에 대해EXECUTE권한이 있어야 합니다.
BEGIN
DBMS_CLOUD.BULK_MOVE (
source_credential_name => 'OCI_CRED',
source_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKMOVE')
);
END;
/
이 예에서는 Oracle Cloud Infrastructure Object Storage 위치 간에 파일을 대량으로 이동합니다.
자세한 내용은 BULK_MOVE Procedure를 참조하십시오.
자세한 내용은 DBMS_CLOUD 패키지 파일 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
예를 들어, 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 프로시저를 사용하여 클라우드 객체 저장소 위치에서 자율운영 AI 데이터베이스의 디렉토리 객체로 파일을 대량 다운로드할 수 있습니다.
-
클라우드 오브젝트 스토리지에 액세스할 수 있는 인증서를 생성합니다.
인증서 이름은
credential_name매개변수로 지정됩니다.자세한 내용은 CREATE_CREDENTIAL을 참조하십시오.
-
DBMS_CLOUD.BULK_DOWNLOAD프로시저를 실행하여 Cloud Object Storage에서 자율운영 AI 데이터베이스 디렉토리로 파일을 다운로드합니다. 프로시저를 실행하려면 ADMIN 사용자로 로그인하거나DBMS_CLOUD에 대해EXECUTE권한이 있어야 합니다.
BEGIN
DBMS_CLOUD.BULK_DOWNLOAD (
credential_name => 'OCI_CRED',
location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
directory_name => 'BULK_TEST',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/
이 예에서는 Oracle Cloud Infrastructure 객체 저장소 위치 URI에서 자율운영 AI 데이터베이스의 디렉토리 객체로 파일을 대량 다운로드합니다.
주: 대상 디렉토리 객체에 파일을 쓰려면 디렉토리 객체에 대한 WRITE 권한이 있어야 합니다.
자세한 내용은 BULK_DOWNLOAD 프로시저를 참조하십시오.
자세한 내용은 DBMS_CLOUD 패키지 파일 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
클라우드 오브젝트 스토리지에 파일 대량 업로드
DBMS_CLOUD.BULK_UPLOAD 프로시저를 사용하여 데이터베이스의 디렉토리 객체에서 클라우드 객체 저장소 위치로 파일을 대량 업로드할 수 있습니다.
-
클라우드 오브젝트 스토리지에 액세스할 수 있는 인증서를 생성합니다.
인증서 이름은
credential_name매개변수로 지정됩니다.자세한 내용은 CREATE_CREDENTIAL을 참조하십시오.
-
DBMS_CLOUD.BULK_UPLOAD프로시저를 실행하여 자율운영 AI 데이터베이스 인스턴스의 데이터베이스 디렉토리에서 Cloud Object Storage로 파일을 복사합니다. 프로시저를 실행하려면 ADMIN 사용자로 로그인하거나DBMS_CLOUD에 대해EXECUTE권한이 있어야 합니다.BEGIN DBMS_CLOUD.BULK_UPLOAD ( credential_name => 'OCI_CRED', location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o', directory_name => 'BULK_TEST', format => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKUPLOAD') ); END; /이 예에서는
directory_name매개변수로 지정된 대로 디렉토리 객체의 파일을 Oracle Cloud Infrastructure 객체 저장소 위치 URI로 대량 업로드합니다.주: 디렉토리 객체의 소스 파일을 읽으려면 디렉토리 객체에 대한
READ권한이 있어야 합니다.자세한 내용은 BULK_UPLOAD 프로시저를 참조하십시오.
클라우드 오브젝트 스토리지에서 파일 대량 삭제
DBMS_CLOUD.BULK_DELETE 절차에 따라 Cloud Object Storage에서 파일을 대량 삭제할 수 있습니다.
-
클라우드 오브젝트 스토리지에 액세스할 수 있는 인증서를 생성합니다.
인증서 이름은
credential_name매개변수로 지정됩니다.공용 또는 사전 인증된 버킷 URI 또는 사전 서명된 버킷 URI의 경우
credential_name는NULL일 수 있습니다.자세한 내용은 CREATE_CREDENTIAL을 참조하십시오.
-
DBMS_CLOUD.BULK_DELETE프로시저를 실행하여 클라우드 객체 저장소에서 파일을 삭제합니다. 프로시저를 실행하려면 ADMIN 사용자로 로그인하거나DBMS_CLOUD에 대해EXECUTE권한이 있어야 합니다.BEGIN DBMS_CLOUD.BULK_DELETE ( credential_name => 'OCI_CRED', location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o', format => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKDEL') ); END; /이 예에서는 Oracle Cloud Infrastructure Object Store에서 파일을 대량 삭제합니다.
자세한 내용은 BULK_DELETE 프로시저를 참조하십시오.
자세한 내용은 DBMS_CLOUD 패키지 파일 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
대량 파일 로드 모니터 및 문제 해결
모든 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 열은 다음 값 중 하나를 가질 수 있습니다.
| 파일 상태 | 설명 |
|---|---|
COMPLETED |
파일 작업을 성공적으로 완료했습니다. |
FAILED |
파일 작업을 실패했습니다. 두 번 재시도를 시도할 수 있습니다. |
PENDING |
파일 작업이 아직 시작되지 않았습니다. |
RUNNING |
파일 작업이 현재 진행 중입니다. |
SKIPPED |
파일 작업을 건너뛰었습니다. |
두 번의 재시도 후 파일 작업이 실패하면 대량 작업이 실패로 표시되고 오류가 발생합니다. 예:
ORA-20003: Operation failed, please query table DOWNLOAD$2_STATUS for error details
DBMS_CLOUD 대량 파일 작업을 사용하는 경우 상태 테이블을 제어하는 format 매개변수 옵션이 있습니다.
-
logretention: 상태 테이블이 보존되는 기간(일)을 결정하는 정수 값을 지정합니다. 기본값은 2일입니다. -
logprefix: 대량 작업 상태 테이블의 이름 접두어를 결정하는 문자열 값을 지정합니다.각 대량 작업에는
logprefix옵션에 대한 고유 기본값이 있습니다.절차 logprefix의 기본값DBMS_CLOUD.BULK_COPYCOPYOBJDBMS_CLOUD.BULK_DELETEDELETEDBMS_CLOUD.BULK_DOWNLOADDOWNLOADDBMS_CLOUD.BULK_MOVEMOVEDBMS_CLOUD.BULK_UPLOADUPLOAD
user_load_operations 테이블 지우기에 대한 자세한 내용은 DELETE_ALL_OPERATIONS 프로시저를 참조하십시오.