객체 및 파일의 경우 DBMS_CLOUD

이 절에서는 객체 및 파일 작업에 사용되는 DBMS_CLOUD 하위 프로그램을 다룹니다.

필요 조건

개발자는 Oracle Public Cloud, 멀티클라우드 또는 Exadata Cloud@Customer에 배포된 Autonomous Database에서 DBMS_CLOUD 절차를 사용할 수 있습니다.

배포 선택에 따라 Amazon S3, Azure Blob StorageGoogle Cloud Storage 서비스 제공업체와 함께 DBMS_CLOUD 절차를 사용하려면 다음 필요 조건이 충족되어야 합니다.

플리트 관리자가 아래 설명된 대로 NAT 게이트웨이를 사용하여 아웃바운드 접속을 구성해야 합니다.
  • Oracle Cloud Infrastructure 문서NAT 게이트웨이 생성 지침에 따라 Autonomous Database 리소스가 상주하는 VCN(가상 클라우드 네트워크)에서 NAT 게이트웨이를 생성합니다.
  • NAT 게이트웨이를 생성한 후 각 서브넷(VCN 내)에 경로 규칙 및 송신 보안 규칙을 추가합니다. 여기서 Autonomous Database 리소스는 게이트웨이를 사용하여 Azure AD 인스턴스에서 퍼블릭 키를 얻을 수 있습니다.
    1. 서브넷의 서브넷 세부 정보 페이지로 이동합니다.
    2. 서브넷 정보 탭에서 서브넷의 경로 테이블 이름을 눌러 경로 테이블 세부정보 페이지를 표시합니다.
    3. 기존 경로 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
      • 대상: 0.0.0.0/0
      • 대상 유형: NAT 게이트웨이
      • 대상: VCN에서 방금 생성한 NAT 게이트웨이의 이름입니다.

      해당 규칙이 없는 경우 경로 규칙 추가를 누르고 해당 특성을 가진 경로 규칙을 추가합니다.

    4. 서브넷에 대한 서브넷 세부정보 페이지로 돌아갑니다.
    5. 서브넷의 보안 목록 테이블에서 서브넷의 보안 목록 이름을 눌러 해당 보안 목록 세부정보 페이지를 표시합니다.
    6. 사이드 메뉴의 리소스에서 송신 규칙을 누릅니다.
    7. 기존 송신 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
      • 대상 유형: CIDR
      • 대상: 0.0.0.0/0
      • IP 프로토콜: TCP
      • 소스 포트 범위: 443
      • 대상 포트 범위: 모두

      해당 규칙이 없으면 Add Egress Rules를 누르고 이러한 특성을 가진 송신 규칙을 추가합니다.

환경의 HTTP 프록시 설정에서 데이터베이스가 클라우드 서비스 공급자에 액세스할 수 있도록 허용해야 합니다.

해당 설정은 콘솔을 사용하여 Cloud@Customer에서 Exadata Database Service 프로비전에 설명된 대로 Exadata Cloud@Customer 인프라를 생성하는 동안 플리트 관리자가 정의합니다.

주:

HTTP 프록시를 포함한 네트워크 구성은 Exadata 인프라가 활성화 필요 상태가 될 때까지만 편집할 수 있습니다. 활성화된 후에는 해당 설정을 편집할 수 없습니다.

이미 프로비전된 Exadata 인프라에 대해 HTTP 프록시를 설정하려면 My Oracle Support에서 SR(서비스 요청)이 필요합니다. 자세한 내용은 My Oracle Support에서 서비스 요청 생성을 참조하십시오.

객체 및 파일에 대한 DBMS_CLOUD 하위 프로그램

DBMS_CLOUD 패키지 내의 객체 및 파일 관리를 위한 서브 프로그램입니다.

하위 프로그램 설명

COPY_COLLECTION 프로시저

이 프로시저는 클라우드 객체 스토리지 또는 디렉토리의 파일에서 기존 SODA 모음으로 데이터를 로드합니다.

COPY_DATA 프로시저

이 절차에서는 Cloud Object Storage 또는 디렉토리의 파일에서 기존 Autonomous Database 테이블로 데이터를 로드합니다.

COPY_DATA Avro, ORC 또는 Parquet 파일 절차

format 매개변수 typeorc, parquet 또는 avro 값으로 설정된 이 절차는 클라우드의 ORC, Parquet 또는 Avro 파일이나 디렉토리의 ORC, Parquet 또는 Avro 파일에서 기존 Autonomous Database 테이블로 데이터를 로드합니다.

텍스트 파일과 마찬가지로 데이터는 소스 ORC, Parquet 또는 Avro 파일에서 기존 내부 테이블로 복사됩니다.

COPY_OBJECT 프로시저

이 절차에서는 한 클라우드 오브젝트 스토리지 버킷의 파일을 다른 버킷으로 복사합니다.

CREATE_EXTERNAL_TABLE 프로시저

이 프로시저는 클라우드의 파일이나 디렉토리의 파일에 External Table을 생성합니다. 그러면 Autonomous Database의 외부 데이터에 대한 질의를 실행할 수 있습니다.

CREATE_EXTERNAL_TABLE Avro, ORC 또는 Parquet 파일 절차

format 매개변수 typeparquet, orc 또는 avro 값으로 설정된 이 프로시저는 클라우드 또는 디렉토리에 Parquet, ORC 또는 Avro 형식 파일이 있는 외부 테이블을 생성합니다.

그러면 Autonomous Database의 외부 데이터에 대한 질의를 실행할 수 있습니다.

CREATE_EXTERNAL_TEXT_INDEX 프로시저

이 프로시저는 객체 저장소 파일에 텍스트 인덱스를 생성합니다.

CREATE_HYBRID_PART_TABLE 프로시저

이 프로시저는 하이브리드 분할 테이블을 생성합니다. 이를 통해 Autonomous Database의 하이브리드 분할 데이터에 대한 쿼리를 실행할 수 있습니다.

DELETE_ALL_OPERATIONS 프로시저

이 프로시저는 type 매개변수에 표시된 대로 스키마의 user_load_operations 테이블에 기록된 모든 데이터 로드 작업을 지우거나 지정된 유형의 모든 데이터 로드 작업을 지웁니다.

DELETE_FILE 프로시저

이 절차에서는 Autonomous Database의 지정된 디렉토리에서 지정된 파일을 제거합니다.

DELETE_OBJECT 프로시저

이 프로시저는 객체 저장소에서 지정된 객체를 삭제합니다.

DELETE_OPERATION 프로시저

이 프로시저는 operation_id를 입력으로 받아들이고 지정된 operation_id와 연관된 로그를 삭제합니다.

DROP_EXTERNAL_TEXT_INDEX 프로시저

이 프로시저는 객체 저장소 파일의 텍스트 인덱스를 삭제합니다.

EXPORT_DATA 프로시저

이 절차에서는 쿼리 결과를 기반으로 Autonomous Database에서 클라우드 파일로 데이터를 내보냅니다. 오버로드된 폼에서는 operation_id 매개변수를 사용할 수 있습니다. 지정된 format 매개변수 type 옵션에 따라 프로시저는 CSV, JSON, Parquet 또는 XML 옵션이 있는 텍스트로 행을 클라우드 객체 저장소로 익스포트합니다.

GET_OBJECT 프로시저 및 함수

이 프로시저는 오버로드됩니다. 절차 양식은 클라우드 오브젝트 스토리지에서 오브젝트를 읽고 Autonomous Database에 복사합니다. 함수 폼은 Cloud Object Storage에서 객체를 읽고 BLOBAutonomous Database로 반환합니다.

LIST_FILES 함수

이 함수는 지정된 디렉토리의 파일을 나열합니다. 결과에는 파일 이름 및 파일에 대한 추가 메타 데이터(예: 바이트 단위의 파일 크기, 생성 시간 기록 및 마지막 수정 시간 기록)가 포함됩니다.

LIST_OBJECTS 함수

이 함수는 객체 저장소의 지정된 위치에 있는 객체를 나열합니다. 결과에는 객체 이름과 객체에 대한 추가 메타 데이터(예: 크기, 체크섬, 생성 시간 기록 및 마지막 수정 시간 기록)가 포함됩니다.

MOVE_OBJECT 프로시저

이 절차에서는 오브젝트를 한 클라우드 오브젝트 스토리지 버킷에서 다른 버킷으로 이동합니다.

PUT_OBJECT 프로시저

이 프로시저는 오버로드됩니다. 절차에서는 Autonomous Database의 파일을 클라우드 객체 스토리지로 복사합니다. 다른 양식에서 이 절차는 Autonomous DatabaseBLOB를 클라우드 객체 스토리지로 복사합니다.

SYNC_EXTERNAL_PART_TABLE 프로시저

이 절차에서는 클라우드의 파일에서 외부 분할 테이블을 간단히 업데이트할 수 있습니다. 새 분할 영역이 추가되거나 외부 분할된 테이블에 대한 객체 저장소 소스에서 분할 영역이 제거될 때마다 이 프로시저를 실행합니다.

VALIDATE_EXTERNAL_TABLE 프로시저

이 프로시저는 외부 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 Autonomous Databasebadfile 테이블에 저장합니다.

VALIDATE_EXTERNAL_PART_TABLE 프로시저

이 프로시저는 외부 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 Autonomous Databasebadfile 테이블에 저장합니다.

VALIDATE_HYBRID_PART_TABLE 프로시저

이 절차에서는 하이브리드 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 하이브리드 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 Autonomous Databasebadfile 테이블에 저장합니다.

COPY_COLLECTION 프로시저

이 프로시저는 클라우드 객체 스토리지 또는 디렉토리에서 SODA 모음으로 데이터를 로드합니다. 지정된 SODA 컬렉션이 없으면 프로시저가 해당 컬렉션을 생성합니다. 오버로드된 폼에서는 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL
);

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL,
    operation_id      OUT NOCOPY NUMBER
);

매개변수

매개변수 설명

collection_name

데이터를 로드할 SODA 모음의 이름입니다. 이 이름의 모음이 존재하는 경우 지정된 데이터가 로드되고, 그렇지 않으면 새 모음이 생성됩니다.

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

file_uri_list로 디렉토리를 지정할 때는 이 매개변수가 사용되지 않습니다.

file_uri_list

이 매개변수는 쉼표로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규식 패턴의 일부입니다.

정규 표현식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에서 수행하는 패턴 일치와 동일합니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 REGEXP_LIKE Condition in Oracle Database 19c SQL Language Reference 또는 Oracle Database 23ai SQL Language Reference를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 케이스를 구분합니다.

와일드카드를 사용하여 디렉토리에서 파일 이름을 지정할 수 있습니다. 문자 "*"는 다중 문자에 대한 와일드카드로 사용할 수 있으며, 문자 "?"는 단일 문자에 대한 와일드카드로 사용할 수 있습니다. 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 'MY_DIR1:*, MY_DIR2:test?'

대소문자를 구분하는 디렉토리 이름을 지정하려면 큰 따옴표를 사용합니다. 예:'"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

format

소스 파일의 형식을 설명하는 옵션입니다. 이러한 옵션은 JSON 문자열로 지정됩니다.

지원되는 형식은 characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray, keyassignmentkeypath입니다.

JSON 데이터에 대해 언급된 형식 외에도 Autonomous Database는 다른 형식도 지원합니다. Autonomous Database에서 지원되는 형식 인수 목록은 형식 매개변수를 참조하십시오.

operation_id

이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'OBJ_STORE_CRED',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );

    DBMS_CLOUD.COPY_COLLECTION(
            collection_name => 'myCollection',
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/myCollection.json'  
            );
END;
/

COPY_DATA 프로시저

이 절차에서는 클라우드의 파일 또는 디렉토리의 파일에서 기존 Autonomous Database 테이블로 데이터를 로드합니다. 오버로드된 폼에서는 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2,
    field_list        IN CLOB,
    format            IN CLOB);

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB DEFAULT NULL,
    schema_name       IN VARCHAR2 DEFAULT NULL,
    field_list        IN CLOB DEFAULT NULL,
    format            IN CLOB DEFAULT NULL
    operation_id      OUT NOCOPY NUMBER);

매개변수

매개변수 설명

table_name

데이터베이스에서 대상 테이블의 이름입니다. COPY_DATA를 실행하기 전에 대상 테이블을 생성해야 합니다.

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

file_uri_list로 디렉토리를 지정할 때는 이 매개변수가 사용되지 않습니다.

file_uri_list

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

클라우드 소스 파일 URI

이 매개변수는 쉼표로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규식 패턴의 일부입니다.

정규 표현식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에서 수행하는 패턴 일치와 동일합니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 REGEXP_LIKE Condition in Oracle Database 19c SQL Language Reference 또는 Oracle Database 23ai SQL Language Reference를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 케이스를 구분합니다.

와일드카드를 사용하여 디렉토리에서 파일 이름을 지정할 수 있습니다. 문자 "*"는 다중 문자에 대한 와일드카드로 사용할 수 있으며, 문자 "?"는 단일 문자에 대한 와일드카드로 사용할 수 있습니다. 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 'MY_DIR1:*, MY_DIR2:test?'

대소문자를 구분하는 디렉토리 이름을 지정하려면 큰 따옴표를 사용합니다. 예:'"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

schema_name

대상 테이블이 상주하는 스키마의 이름입니다. 기본값은 대상 테이블이 프로시저를 실행하는 유저와 동일한 스키마에 있음을 의미하는 NULL입니다.

field_list

소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL이며, 이는 필드 및 해당 데이터 유형이 column_list 매개변수에 의해 결정됨을 의미합니다. 이 인수의 구문은 일반 Oracle External Table의 field_list 절과 동일합니다. 자세한 내용은 field_list in Oracle Database 19c Utilities 또는 Oracle Database 23ai Utilities를 참조하십시오.

format 매개변수 type 옵션 값이 json인 경우 이 매개변수는 무시됩니다.

field_list 사용 예는 CREATE_EXTERNAL_TABLE Procedure를 참조하십시오.

format

소스, 로그 및 잘못된 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오.

Avro, ORC 또는 Parquet 파일 형식 옵션은 DBMS_CLOUD Package Format Options for Avro, ORC, or Parquet을 참조하십시오.

operation_id

이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

사용법 노트

기본 레코드 구분자는 detected newline입니다. detected newline를 사용할 경우 DBMS_CLOUD는 레코드 구분자로 사용할 올바른 줄바꿈 문자를 자동으로 찾으려고 시도합니다. DBMS_CLOUD는 먼저 Windows 개행 문자 \r\n를 검색합니다. Windows 줄바꿈 문자를 찾으면 이 문자가 절차의 모든 파일에 대한 레코드 구분자로 사용됩니다. Windows 개행 문자를 찾을 수 없는 경우 DBMS_CLOUD는 UNIX/Linux 개행 문자 \n를 검색하고, 찾은 경우 \n를 절차의 모든 파일에 대한 레코드 구분자로 사용합니다. 소스 파일에서 서로 다른 레코드 구분자의 조합을 사용하는 경우 "KUP-04020: found record longer than buffer size supported"과 같은 오류가 발생할 수 있습니다. 이 경우 동일한 레코드 구분자를 사용하도록 소스 파일을 수정하거나 동일한 레코드 구분자를 사용하는 소스 파일만 지정해야 합니다.

recorddelmiter 형식 옵션에 대한 자세한 내용은 형식 매개변수를 참조하십시오.

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DEF_CRED_NAME',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );
END;
/
BEGIN
 DBMS_CLOUD.COPY_DATA(
    table_name =>'CHANNELS',
    credential_name =>'DEF_CRED_NAME',
    file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
    format => json_object('delimiter' value ',')
 );
END;
/
BEGIN
    DBMS_CLOUD.COPY_DATA(
            table_name      => 'ORDERS',
            schema_name     => 'TEST_SCHEMA',
            credential_name => 'DEF_CRED_NAME',
	     file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/orde[r]s.tbl.1'
            format          =>  json_object('ignoreblanklines' value TRUE,
                                            'rejectlimit' value '0',
                                            'dateformat' value 'yyyy-mm-dd',
                                            'regexuri' value TRUE)
            );
END;
/

Avro, ORC, Parquet 파일에 대한 COPY_DATA 절차

format 매개변수 typeavro, orc 또는 parquet 값으로 설정된 이 절차는 클라우드의 Avro, ORC, Parquet 파일 또는 디렉토리의 파일에서 기존 Autonomous Database 테이블로 데이터를 로드합니다.

텍스트 파일과 마찬가지로 데이터는 소스 Avro, ORC 또는 Parquet 파일에서 기존 내부 테이블로 복사됩니다.

구문

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2 DEFAULT,
    field_list        IN CLOB DEFAULT,
    format            IN CLOB DEFAULT);

매개변수

매개변수 설명

table_name

데이터베이스에서 대상 테이블의 이름입니다. COPY_DATA를 실행하기 전에 대상 테이블을 생성해야 합니다.

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

file_uri_list로 디렉토리를 지정할 때는 이 매개변수가 사용되지 않습니다.

file_uri_list

이 매개변수는 쉼표로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규식 패턴의 일부입니다.

정규 표현식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에서 수행하는 패턴 일치와 동일합니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 REGEXP_LIKE Condition in Oracle Database 19c SQL Language Reference 또는 Oracle Database 23ai SQL Language Reference를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 케이스를 구분합니다.

와일드카드를 사용하여 디렉토리에서 파일 이름을 지정할 수 있습니다. 문자 "*"는 다중 문자에 대한 와일드카드로 사용할 수 있으며, 문자 "?"는 단일 문자에 대한 와일드카드로 사용할 수 있습니다. 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 'MY_DIR1:*, MY_DIR2:test?'

대소문자를 구분하는 디렉토리 이름을 지정하려면 큰 따옴표를 사용합니다. 예:'"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

schema_name

대상 테이블이 상주하는 스키마의 이름입니다. 기본값은 대상 테이블이 프로시저를 실행하는 유저와 동일한 스키마에 있음을 의미하는 NULL입니다.

field_list

Avro, ORC 또는 Parquet 파일의 경우 무시됩니다.

소스의 필드가 외부 테이블 열 이름과 일치합니다. 소스 데이터 유형은 External Table 열 데이터 유형으로 변환됩니다.

ORC 파일의 경우 DBMS_CLOUD Package ORC to Oracle Data Type Mapping을 참조하십시오.

Parquet 파일의 경우 매핑에 대한 자세한 내용은 DBMS_CLOUD Package Parquet to Oracle Data Type Mapping을 참조하십시오.

Avro 파일의 경우 매핑에 대한 자세한 내용은 DBMS_CLOUD Package Avro to Oracle Data Type Mapping을 참조하십시오.

format

소스 파일의 형식을 설명하는 옵션입니다. Avro, ORC 또는 Parquet 파일의 경우 두 가지 옵션만 지원됩니다. DBMS_CLOUD Package Format Options for Avro, ORC, or Parquet을 참조하십시오.

사용법 참고

  • 다른 데이터 파일과 마찬가지로 Avro, ORC, Parquet 데이터 로드는 dba_load_operationsuser_load_operations 테이블에서 볼 수 있는 로그를 생성합니다. 각 로드 작업은 로그를 포함하는 테이블을 나타내는 레코드를 dba[user]_load_operations에 추가합니다.

    로그 테이블은 로드에 대한 요약 정보를 제공합니다.

  • Avro, ORC 또는 Parquet의 경우 format 매개변수 typeavro, orc 또는 parquet 값으로 설정된 경우 BADFILE_TABLE 테이블은 항상 비어 있습니다.

    • Parquet 파일의 경우 PRIMARY KEY 제약 조건 오류가 발생하면 ORA 오류가 발생합니다.

    • 열의 데이터에 변환 오류가 발생하는 경우(예: 대상 열이 변환된 값을 보유할 만큼 크지 않은 경우) 해당 열의 값은 NULL로 설정됩니다. 거부된 레코드를 생성하지 않습니다.

COPY_OBJECT 프로시저

이 절차에서는 오브젝트를 클라우드 오브젝트 스토리지 버킷 또는 폴더 간에 복사합니다.

소스 및 대상 버킷 또는 폴더는 동일하거나 다른 클라우드 객체 저장소 제공자에 있을 수 있습니다.

소스와 대상이 고유 객체 저장소에 있거나 동일한 클라우드 제공자의 계정이 다른 경우 소스 및 대상 위치에 대해 별도의 인증서 이름을 지정할 수 있습니다.

소스 인증서 이름은 기본적으로 대상 인증서 이름이 제공되지 않은 경우 대상 위치에서도 사용됩니다.

구문

DBMS_CLOUD.COPY_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

매개변수

매개변수 설명

source_credential_name

소스 클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

source_credential_name 값을 제공하지 않으면 credential_nameNULL로 설정됩니다.

source_object_uri

소스 오브젝트 스토리지 버킷 또는 폴더 위치를 가리키는 URI를 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 객체 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

target_object_uri

대상 객체 저장소에 대한 URI를 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 객체 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

target_credential_name

대상 클라우드 객체 스토리지 위치에 액세스할 인증서의 이름입니다.

target_credential_name 값을 제공하지 않으면 target_object_urisource_credential_name 값으로 설정됩니다.

BEGIN 
DBMS_CLOUD.COPY_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

CREATE_EXTERNAL_PART_TABLE 프로시저

이 절차에서는 클라우드의 파일 또는 디렉토리의 파일에 대해 외부 분할 테이블을 만듭니다. 그러면 Autonomous Database의 외부 데이터에 대한 질의를 실행할 수 있습니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);


DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    file_uri_list        IN VARCHAR2,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

매개변수

매개변수 설명

table_name

외부 테이블의 이름입니다.

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

partitioning_clause

개별 분할 영역에 대한 위치 정보를 포함하여 전체 분할 절을 지정합니다.

partitioning_clause 매개변수를 사용할 경우 file_uri_list 매개변수가 허용되지 않습니다.

file_uri_list

이 매개변수는 쉼표로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규식 패턴의 일부입니다.

정규 표현식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에서 수행하는 패턴 일치와 동일합니다.

이 옵션은 오브젝트 스토리지의 파일에 생성된 외부 테이블에서만 지원됩니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

file_uri_list 매개변수를 사용할 경우 partitioning_clause 매개변수가 허용되지 않습니다.

URI의 형식은 클라우드 객체 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 REGEXP_LIKE Condition in Oracle Database 19c SQL Language Reference 또는 Oracle Database 23ai SQL Language Reference를 참조하십시오.

column_list

External Table에 대한 쉼표로 구분된 열 이름 및 데이터 유형 리스트입니다. 이 매개변수의 요구 사항은 file_uri_list 매개변수로 지정된 데이터 파일 유형에 따라 다음과 같습니다.

  • 구조화되지 않은 파일에는 column_list 매개변수가 필요합니다. CSV 텍스트 파일과 같이 구조화되지 않은 파일을 사용하는 경우 column_list 매개변수는 데이터 파일 내의 모든 열 이름 및 데이터 유형과 객체 이름에서 파생된 분할 영역 열을 지정해야 합니다.

  • column_list 매개변수는 구조화된 파일의 경우 선택사항입니다. 예를 들어 Avro, ORC 또는 Parquet 데이터 파일의 경우 column_list가 필요하지 않습니다. column_list가 포함되지 않은 경우 format 매개변수 partition_columns 옵션은 열 이름(name) 및 데이터 유형(type)에 대한 사양을 모두 포함해야 합니다.

field_list

소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL이며, 이는 필드 및 해당 데이터 유형이 column_list 매개변수에 의해 결정됨을 의미합니다. 이 인수의 구문은 일반 Oracle External Table의 field_list 절과 동일합니다. 자세한 내용은 field_list in Oracle Database 19c Utilities 또는 Oracle Database 23ai Utilities를 참조하십시오.

format

형식 옵션 partition_columns는 데이터 파일 유형(구조적 또는 비구조적)에 따라 분할 영역 열이 파일 경로에서 파생될 때 분할 영역 열의 DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE 열 이름 및 데이터 유형을 지정합니다.

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEcolumn_list 매개변수가 포함되고 데이터 파일이 구조화되지 않은 경우(예: CSV 텍스트 파일) partition_columns에는 데이터 유형이 포함되지 않습니다. 예를 들어, 이 유형의 partition_columns 사양에 대해 다음과 같은 형식을 사용합니다.

    '"partition_columns":["state","zipcode"]'

    데이터 유형은 DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE column_list 매개변수에 지정되어 있으므로 필요하지 않습니다.

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEcolumn_list 매개변수가 포함되지 않고 데이터 파일(예: Avro, ORC 또는 Parquet 파일)이 구조화된 경우 partition_columns 옵션에는 열 이름, name 하위 절 및 데이터 유형 type 하위 절이 모두 포함됩니다. 예를 들어, 다음은 partition_columns 사양을 보여줍니다.

    '"partition_columns":[
                   {"name":"country", "type":"varchar2(10)"},
                   {"name":"year", "type":"number"},
                   {"name":"month", "type":"varchar2(10)"}]'

데이터 파일이 구조화되지 않고 type 하위 절이 partition_columns로 지정된 경우 type 하위 절은 무시됩니다.

하이브 형식을 기반으로 하지 않는 객체 이름의 경우 partition_columns 지정된 열의 순서는 file_uri_list 매개변수에 지정된 파일 경로의 객체 이름에 나타나는 순서와 일치해야 합니다.

소스 파일의 형식을 설명하는 format 매개변수 옵션을 모두 보려면 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

사용법 참고

  • partitioning_clausefile_uri_list 매개변수를 사용하여 이 프로시저를 호출할 수 없습니다.

  • column_list 매개변수 지정은 Avro, Parquet 또는 ORC 데이터 파일을 포함한 구조화된 데이터 파일의 경우 선택 사항입니다. column_list가 지정되지 않은 경우 format 매개변수 partition_columns 옵션에 nametype가 모두 포함되어야 합니다.

  • CSV 텍스트 파일과 같이 구조화되지 않은 데이터 파일에는 column_list 매개변수가 필요합니다.

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE 절차는 다음을 포함하여 지원되는 클라우드 객체 스토리지 서비스에서 외부 분할 파일을 지원합니다.
    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage

    자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE 절차는 로컬 파일 시스템 또는 네트워크 파일 시스템의 디렉토리에서 외부 분할된 파일을 지원합니다.

  • file_uri_list 매개변수를 사용하여 DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE을 호출하는 경우 클라우드 객체 저장소 파일 이름에 지정된 열 유형은 다음 유형 중 하나여야 합니다.

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • 기본 레코드 구분자는 detected newline입니다. detected newline를 사용할 경우 DBMS_CLOUD는 레코드 구분자로 사용할 올바른 줄바꿈 문자를 자동으로 찾으려고 시도합니다. DBMS_CLOUD는 먼저 Windows 개행 문자 \r\n를 검색합니다. Windows 줄바꿈 문자를 찾으면 이 문자가 절차의 모든 파일에 대한 레코드 구분자로 사용됩니다. Windows 개행 문자를 찾을 수 없는 경우 DBMS_CLOUD는 UNIX/Linux 개행 문자 \n를 검색하고, 찾은 경우 \n를 절차의 모든 파일에 대한 레코드 구분자로 사용합니다. 소스 파일에서 서로 다른 레코드 구분자의 조합을 사용하는 경우 "KUP-04020: found record longer than buffer size supported"과 같은 오류가 발생할 수 있습니다. 이 경우 동일한 레코드 구분자를 사용하도록 소스 파일을 수정하거나 동일한 레코드 구분자를 사용하는 소스 파일만 지정해야 합니다.

    recorddelmiter 형식 옵션에 대한 자세한 내용은 Cloud Object Storage URI Formats를 참조하십시오.

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE로 만든 외부 분할 테이블에는 두 개의 보이지 않는 열 file$pathfile$name가 포함됩니다. 이러한 열은 레코드를 가져올 파일을 식별하는 데 도움이 됩니다.

    • file$path: 객체 이름의 시작 부분까지 파일 경로 텍스트를 지정합니다.

    • file$name: 버킷 이름 뒤에 오는 모든 텍스트를 포함하여 객체 이름을 지정합니다.

partitioning_clause 매개변수를 사용하는 예제:

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
      table_name =>'PET1',  
      credential_name =>'OBJ_STORE_CRED',
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) location
                                    ( ''&base_URL//file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000) location 
                                    ( ''&base_URL/file_31.txt'')
                                 )'
     );
   END;
/  


BEGIN
    DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
       table_name          => 'PET',
       format              => json_object('delimiter'value ','),
       column_list         => 'name varchar2(20), gender varchar2(10), salary number',
       partitioning_clause => 'partition by range (salary)
              (   -- Use test1.csv in the DEFAULT DIRECTORY DATA_PUMP_DIR 
                  partition p1 values less than (100) LOCATION (''test1.csv''),
                   -- Use test2.csv in a specified directory MY_DIR
                  partition p2 values less than (300) DEFAULT DIRECTORY MY_DIR LOCATION (''test2.csv'')        )'   );                       
END;                     
/

구조화되지 않은 데이터 파일에 file_uri_listcolumn_list 매개변수를 사용하는 예제:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
   table_name => 'MYSALES',
   credential_name => 'DEF_CRED_NAME',
   file_uri_list     => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.csv', 
   column_list       => 'product varchar2(100), units number, country varchar2(100), year number, month varchar2(2)', 
   field_list        => 'product, units', --[Because country, year and month are not in the file, they are not listed in the field list]
   format            => '{"type":"csv", "partition_columns":["country","year","month"]}');
END;
/ 

구조화된 데이터 파일에 column_list 매개변수를 사용하지 않고 file_uri_list를 사용하는 예제:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
  table_name => 'MYSALES',
  credential_name => 'DEF_CRED_NAME',
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
    table_name      => 'MYSALES',
    credential_name => 'DEF_CRED_NAME',
    file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.parquet',
    format          => 
        json_object('type' value 'parquet', 'schema' value 'first',
                    'partition_columns' value 
                          json_array(
                                json_object('name' value 'country', 'type' value 'varchar2(100)'),
                                json_object('name' value 'year', 'type' value 'number'),
                                json_object('name' value 'month', 'type' value 'varchar2(2)')
                          )
         )
    );
END;
/

CREATE_EXTERNAL_TABLE 프로시저

이 프로시저는 클라우드의 파일이나 디렉토리의 파일에서 External Table을 생성합니다. 그러면 Autonomous Database의 외부 데이터에 대한 질의를 실행할 수 있습니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

매개변수

매개변수 설명

table_name

외부 테이블의 이름입니다.

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

file_uri_list를 사용하여 디렉토리 또는 테이블 하이퍼링크 URL을 지정하는 경우 이 매개변수가 사용되지 않습니다.

file_uri_list

이 매개변수는 쉼표로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규식 패턴의 일부입니다.

정규 표현식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에서 수행하는 패턴 일치와 동일합니다.

이 옵션은 오브젝트 스토리지의 파일에 생성된 외부 테이블에서만 지원됩니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 REGEXP_LIKE Condition in Oracle Database 19c SQL Language Reference 또는 Oracle Database 23ai SQL Language Reference를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 케이스를 구분합니다.

와일드카드를 사용하여 디렉토리에서 파일 이름을 지정할 수 있습니다. 문자 "*"는 다중 문자에 대한 와일드카드로 사용할 수 있으며, 문자 "?"는 단일 문자에 대한 와일드카드로 사용할 수 있습니다. 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 'MY_DIR1:*, MY_DIR2:test?'

대소문자를 구분하는 디렉토리 이름을 지정하려면 큰 따옴표를 사용합니다. 예:'"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

column_list

External Table에 대한 쉼표로 구분된 열 이름 및 데이터 유형 리스트입니다.

field_list

소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL이며, 이는 필드 및 해당 데이터 유형이 column_list 매개변수에 의해 결정됨을 의미합니다. 이 인수의 구문은 일반 Oracle Database 외부 테이블의 field_list 절과 동일합니다. field_list에 대한 자세한 내용은 ORACLE_LOADER Access Driver field_list under field_definitions Clause in Oracle Database 19c Utilities 또는 Oracle Database 23ai Utilities를 참조하십시오.

format

소스 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오.

Avro, ORC 또는 Parquet 형식 파일의 경우 CREATE_EXTERNAL_TABLE Procedure for Avro, ORC, or Parquet Files를 참조하십시오.

사용법 참고

  • DBMS_CLOUD.CREATE_EXTERNAL_TABLE 절차는 Azure Blob Storage를 포함하여 지원되는 클라우드 객체 스토리지 서비스에서 외부 분할 파일을 지원합니다.

    인증서는 테이블 레벨 속성이므로 외부 파일은 동일한 객체 저장소에 있어야 합니다.

    자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

  • 기본 레코드 구분자는 detected newline입니다. detected newline를 사용할 경우 DBMS_CLOUD는 레코드 구분자로 사용할 올바른 줄바꿈 문자를 자동으로 찾으려고 시도합니다. DBMS_CLOUD는 먼저 Windows 개행 문자 \r\n를 검색합니다. Windows 줄바꿈 문자를 찾으면 이 문자가 절차의 모든 파일에 대한 레코드 구분자로 사용됩니다. Windows 개행 문자를 찾을 수 없는 경우 DBMS_CLOUD는 UNIX/Linux 개행 문자 \n를 검색하고, 찾은 경우 \n를 절차의 모든 파일에 대한 레코드 구분자로 사용합니다. 소스 파일에서 서로 다른 레코드 구분자의 조합을 사용하는 경우 "KUP-04020: found record longer than buffer size supported"과 같은 오류가 발생할 수 있습니다. 이 경우 동일한 레코드 구분자를 사용하도록 소스 파일을 수정하거나 동일한 레코드 구분자를 사용하는 소스 파일만 지정해야 합니다.

    recorddelimiter 형식 옵션에 대한 자세한 내용은 형식 매개변수를 참조하십시오.

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_TABLE(   
      table_name =>'WEATHER_REPORT_DOUBLE_DATE',   
      credential_name =>'OBJ_STORE_CRED',   
      file_uri_list =>'&base_URL/Charlotte_NC_Weather_History_Double_Dates.csv',
      format => json_object('type' value 'csv', 'skipheaders' value '1'),   
      field_list => 'REPORT_DATE DATE''mm/dd/yy'',                   
                     REPORT_DATE_COPY DATE ''yyyy-mm-dd'',
                     ACTUAL_MEAN_TEMP,                 
                     ACTUAL_MIN_TEMP,                 
                     ACTUAL_MAX_TEMP,                 
                     AVERAGE_MIN_TEMP,                    
                     AVERAGE_MAX_TEMP,     
                     AVERAGE_PRECIPITATION',   
      column_list => 'REPORT_DATE DATE,   
                     REPORT_DATE_COPY DATE,
                     ACTUAL_MEAN_TEMP NUMBER,  
                     ACTUAL_MIN_TEMP NUMBER,  
                     ACTUAL_MAX_TEMP NUMBER,  
                     AVERAGE_MIN_TEMP NUMBER,   
                     AVERAGE_MAX_TEMP NUMBER,                  
                     AVERAGE_PRECIPITATION NUMBER');
   END;
/ 

SELECT * FROM WEATHER_REPORT_DOUBLE_DATE where         
   actual_mean_temp > 69 and actual_mean_temp < 74

CREATE_EXTERNAL_TABLE Apache Iceberg 절차

이 프로시저는 지원되는 구성에 Apache Iceberg 테이블에 대한 External Table을 생성합니다.

다음과 같은 특정 구성이 지원됩니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB DEFAULT NULL,
    field_list       IN CLOB DEFAULT NULL,
    format           IN CLOB DEFAULT NULL
);

매개변수

매개변수 설명

table_name

외부 테이블의 이름입니다.

credential_name

데이터 파일, 메타데이터 파일 및 Iceberg 카탈로그(사용된 경우)에 액세스하는 데 사용되는 인증서의 이름입니다.

AWS 및 OCI 구성의 경우 CREATE_CREDENTIAL 프로시저에 설명된 대로 인증서를 생성해야 합니다.

AWS ARN(Amazon Resource Names) 자격 증명은 현재 지원되지 않습니다.

file_uri_list

Iceberg 카탈로그가 지정된 경우 NULL이어야 합니다(아래의 format 매개변수 참조). 빙산 카탈로그를 사용하지 않는 경우 file_uri_list는 빙산 메타데이터 파일에 대한 URI를 포함해야 합니다.

column_list

열 이름과 유형이 Iceberg 메타데이터에서 자동으로 파생되므로 NULL이어야 합니다.

열 이름은 기본 데이터 파일(Parquet, Avro, ORC)에서 찾은 이름과 일치합니다. Oracle 데이터 유형은 Iceberg와 Parquet, Avro 및 ORC 데이터 유형 간의 Parquet/Avro/ORC 매핑을 사용하여 파생됩니다. 따라서 사용자는 column_list를 지정할 수 없습니다.

field_list

열 이름 및 데이터 유형이 Iceberg 메타데이터에서 자동으로 파생되므로 NULL이어야 합니다.

format

format 매개변수는 Iceberg 테이블 유형 및 외부 테이블 생성에 사용되는 정보(예: 데이터 카탈로그 또는 직접 메타데이터 URI의 정보)에 따라 다른 구조를 가집니다.

자세한 내용은 OCI Data Flow Samples의 Iceberg SupportDBMS_CLOUD URI Formats를 참고하세요.

AWS Glue Catalog를 사용하는 AWS Iceberg 테이블에 대한 예제 형식 매개변수

AWS Glue Catalog를 사용하여 AWS Iceberg 테이블에 테이블을 생성할 때의 샘플 format 매개변수는 다음과 같습니다.

format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg',
                   'protocol_config' value
                    json_object('iceberg_catalog_type' value 'aws_glue',
                                'iceberg_glue_region'  value 'glue region',
                                'iceberg_table_path'   value 'database_name.table_name'))); 
여기서 access_protocol 매개변수는 다음과 같이 두 개의 요소가 있는 JSON 객체를 포함합니다.
  • protocol_type: 'iceberg'여야 합니다.
  • protocol_config: 빙산 카탈로그 세부정보를 지정하는 중첩된 JSON 객체입니다.
    • iceberg_catalog_type: 'aws_glue'여야 합니다.
    • iceberg_glue_region: 카탈로그 영역(예: 'us-west-1')
    • iceberg_table_path: glue database.glue table name 경로입니다.

메타데이터 파일 URI를 사용하는 AWS Iceberg 테이블에 대한 예제 형식 매개변수

메타데이터 파일 URI를 사용하여 AWS Iceberg 테이블에 테이블을 생성할 때 샘플 format 매개변수는 다음과 같습니다.
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')

HadoopCatalog 카탈로그를 사용하는 OCI Iceberg 테이블에 대한 예제 형식 매개변수

HadoopCatalog 카탈로그를 사용하여 OCI Data Flow가 생성한 OCI Iceberg 테이블을 통해 테이블을 생성할 때 예제 format 매개변수는 다음과 같습니다.
format => json_object('access_protocol' value
       json_object('protocol_type'   value 'iceberg',
                   'protocol_config' value
                   json_object('iceberg_catalog_type'  value 'hadoop',
                               'iceberg_warehouse'     value '<OCI folder URI>',
                               'iceberg_table_path'    value 'database_name.table_name')));
여기서 access_protocol 매개변수는 다음과 같이 두 개의 요소가 있는 JSON 객체를 포함합니다.
  • protocol_type: 'iceberg'여야 합니다.
  • protocol_config: 빙산 카탈로그 세부정보를 지정하는 중첩된 JSON 객체입니다.
    • iceberg_catalog_type: 'hadoop'여야 합니다.
    • iceberg_warehouse: 고유 URI 형식으로 테이블을 생성할 때 사용되는 웨어하우스 디렉토리 경로입니다.
    • iceberg_table_path: 테이블을 생성할 때 사용되는 database_name.table name 경로입니다.

메타데이터 파일의 URI를 사용하는 OCI Iceberg 테이블의 예제 형식 매개변수

메타데이터 파일의 URI를 사용하여 OCI Iceberg 테이블을 통해 테이블을 생성할 때 예제 format 매개변수는 다음과 같습니다.
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')
여기서 access_protocol 매개변수는 다음과 같이 하나의 요소가 있는 JSON 객체를 포함합니다.
  • protocol_type: 'iceberg'여야 합니다.

Avro, ORC, Parquet 파일에 대한 CREATE_EXTERNAL_TABLE 절차

format 매개변수 typeavro, orc 또는 parquet 값으로 설정된 이 프로시저는 클라우드 또는 디렉토리에 Avro, ORC 또는 Parquet 형식 파일이 있는 외부 테이블을 생성합니다.

그러면 Autonomous Database의 외부 데이터에 대한 질의를 실행할 수 있습니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

매개변수

매개변수 설명

table_name

외부 테이블의 이름입니다.

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

file_uri_list로 디렉토리를 지정할 때는 이 매개변수가 사용되지 않습니다.

file_uri_list

이 매개변수는 쉼표로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규식 패턴의 일부입니다.

정규 표현식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에서 수행하는 패턴 일치와 동일합니다.

이 옵션은 오브젝트 스토리지의 파일에 생성된 외부 테이블에서만 지원됩니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.parquet'

URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 REGEXP_LIKE Condition in Oracle Database 19c SQL Language Reference 또는 Oracle Database 23ai SQL Language Reference를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 케이스를 구분합니다.

와일드카드를 사용하여 디렉토리에서 파일 이름을 지정할 수 있습니다. 문자 "*"는 다중 문자에 대한 와일드카드로 사용할 수 있으며, 문자 "?"는 단일 문자에 대한 와일드카드로 사용할 수 있습니다. 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 'MY_DIR1:*, MY_DIR2:test?'

대소문자를 구분하는 디렉토리 이름을 지정하려면 큰 따옴표를 사용합니다. 예:'"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

column_list

(선택 사항) 이 필드는 지정된 경우 스키마, 열 및 데이터 유형이 자동으로 파생되도록 지정하는 format->schema 매개변수를 무효화합니다. 자세한 내용은 형식 매개변수를 참조하십시오.

Avro, ORC 또는 Parquet 소스에 대해 column_list를 지정한 경우 열 이름은 파일에서 찾은 열과 일치해야 합니다. Oracle 데이터 유형은 Avro, ORC 또는 Parquet 데이터 유형에 적절하게 매핑되어야 합니다.

Parquet 파일에 대한 자세한 내용은 DBMS_CLOUD Package Parquet to Oracle Data Type Mapping을 참조하십시오.

ORC 파일의 경우 자세한 내용은 DBMS_CLOUD Package ORC to Oracle Data Type Mapping을 참조하십시오.

Avro 파일의 경우 자세한 내용은 DBMS_CLOUD Package Avro to Oracle Data Type Mapping을 참조하십시오.

field_list

Avro, ORC 또는 Parquet 파일의 경우 무시됩니다.

소스의 필드가 외부 테이블 열 이름과 일치합니다. 소스 데이터 유형은 External Table 열 데이터 유형으로 변환됩니다.

ORC 파일의 경우 DBMS_CLOUD Package ORC to Oracle Data Type Mapping을 참조하십시오.

Parquet 파일에 대한 자세한 내용은 DBMS_CLOUD Package Parquet to Oracle Data Type Mapping을 참조하십시오.

Avro 파일의 경우 자세한 내용은 DBMS_CLOUD Package Avro to Oracle Data Type Mapping을 참조하십시오.

format

Avro, ORC 또는 Parquet type 소스 파일에 대한 자세한 내용은 DBMS_CLOUD Package Format Options for Avro, ORC, or Parquet을 참조하십시오.

예제 ORC

format => '{"type":"orc", "schema": "all"}'
format => json_object('type' value 'orc', 'schema' value 'first')

예 Avro

format => '{"type":"avro", "schema": "all"}'
format => json_object('type' value 'avro', 'schema' value 'first')

예제 연회

format => '{"type":"parquet", "schema": "all"}'
format => json_object('type' value 'parquet', 'schema' value 'first')

Oracle 열 이름에 대한 Avro, ORC 또는 Parquet 열 이름 매핑

Oracle SQL의 열 이름 매핑 및 열 이름 변환 사용에 대한 자세한 내용은 DBMS_CLOUD Package Avro, ORC, and Parquet to Oracle Column Name Mapping을 참조하십시오.

CREATE_EXTERNAL_TEXT_INDEX 프로시저

이 절차에서는 오브젝트 스토리지 파일에 텍스트 인덱스를 생성합니다.

CREATE_EXTERNAL_TEXT_INDEX 프로시저는 location_uri 위치에 지정된 오브젝트 스토리지 파일에 텍스트 인덱스를 생성합니다. 위치 URI에서 파일을 사용하여 새로 추가하거나 삭제한 경우 정기적으로 인덱스가 새로 고쳐집니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
      credential_name  IN  VARCHAR2 DEFAULT NULL,
      location_uri     IN  VARCHAR2,
      index_name       IN  VARCHAR2,
      format           IN  CLOB     DEFAULT NULL
);

매개변수

매개변수 설명

credential_name

클라우드 객체 스토리지 위치에 액세스할 인증서의 이름입니다. 공용, 사전 인증 또는 사전 서명된 버킷 URI의 경우 NULL을 지정할 수 있습니다.

credential_name 값을 제공하지 않으면 credential_nameNULL 값으로 설정됩니다.

location_uri

객체 저장소 버킷 또는 폴더 URI를 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 객체 스토리지 서비스에 따라 다릅니다. 자세한 내용은 DBMS_CLOUD Package File Cloud Object Storage URI Formats를 참조하십시오.

index_name location_uri 위치에 있는 파일에 빌드 중인 인덱스의 이름을 지정합니다.

이 매개변수는 필수입니다.

format

추가 구성 옵션을 지정합니다. 옵션은 JSON 문자열로 지정됩니다.

지원되는 형식 옵션은 다음과 같습니다.

refresh_rate: 로컬 인덱스를 새로 고치는 빈도(분)를 지정합니다. 새 파일 업로드 및 삭제를 수행하면 인덱스가 새로 고쳐집니다. 기본값은 5분입니다.

binary_files: 인덱스화할 파일의 내용이 이진인지 여부를 지정합니다. 예를 들어, PDF, MS-Word의 경우 기본값은 FALSE입니다.

stop_words: 인덱스를 생성할 때 제공할 수 있는 정지 단어 목록을 지정합니다.

stop_words 값은 정지 단어 목록인지 또는 정지 단어 테이블인지 나타냅니다. JSON 배열이 제공되면 정지 단어 매개변수는 목록으로 처리됩니다. 그렇지 않으면 정지 단어 매개변수는 정지 단어 목록에서 읽는 데 "STOP_WORDS" 열을 사용하는 테이블 이름으로 처리됩니다.

다음 방법을 사용하여 중지 단어를 지정할 수 있습니다.

  • JSON 배열: 예: format := '{"stop_words":["king","queen"]}'
  • 불용 단어 테이블 이름: 예: format := '{"stop_words":"STOP_WORDS_TABLE"}'

format 매개변수를 제공하지 않으면 formatNULL 값으로 설정됩니다.

BEGIN 
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
        credential_name => 'DEFAULT_CREDENTIAL',
        location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/ts_data/'
        index_name      => 'EMP',
        format          => JSON_OBJECT ('refresh_rate' value 10)
);
END;
/

CREATE_HYBRID_PART_TABLE 프로시저

이 프로시저는 하이브리드 분할 테이블을 생성합니다. 이를 통해 클라우드의 데이터베이스 객체 및 파일을 사용하거나 디렉토리의 데이터베이스 객체 및 파일을 사용하여 Autonomous Database의 하이브리드 분할 데이터에 대한 질의를 실행할 수 있습니다.

구문

DBMS_CLOUD.CREATE_HYBRID_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

매개변수

매개변수 설명

table_name

외부 테이블의 이름입니다.

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

partitioning_clause

개별 분할 영역에 대한 위치 정보를 포함하여 전체 분할 절을 지정합니다.

디렉토리를 사용하기 위해 분할 절은 LOCATIONDEFAULT DIRECTORY 값을 지원합니다.

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규식 패턴의 일부입니다.

정규 표현식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에서 수행하는 패턴 일치와 동일합니다. 디렉토리 이름에는 정규식 패턴이 지원되지 않습니다.

예:

partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
				    ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.txt''),….

REGEXP_LIKE 조건에 대한 자세한 내용은 REGEXP_LIKE Condition in Oracle Database 19c SQL Language Reference 또는 Oracle Database 23ai SQL Language Reference를 참조하십시오.

column_list

External Table에 대한 쉼표로 구분된 열 이름 및 데이터 유형 리스트입니다.

field_list

소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL이며, 이는 필드 및 해당 데이터 유형이 column_list 매개변수에 의해 결정됨을 의미합니다. 이 인수의 구문은 일반 Oracle External Table의 field_list 절과 동일합니다. 자세한 내용은 field_list in Oracle Database 19c Utilities 또는 Oracle Database 23ai Utilities를 참조하십시오.

format

소스 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오.

사용법 참고

  • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE 절차는 Azure Blob Storage를 포함하여 지원되는 클라우드 객체 스토리지 서비스에서 외부 분할 파일을 지원합니다.

    인증서는 테이블 레벨 속성이므로 외부 파일은 동일한 객체 저장소에 있어야 합니다.

    자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

  • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE 절차는 로컬 파일 시스템 또는 네트워크 파일 시스템의 디렉토리에서 하이브리드 분할 파일을 지원합니다.

  • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE로 만든 외부 분할 테이블에는 두 개의 보이지 않는 열 file$pathfile$name가 포함됩니다. 이러한 열은 레코드를 가져올 파일을 식별하는 데 도움이 됩니다.

    • file$path: 객체 이름의 시작 부분까지 파일 경로 텍스트를 지정합니다.

    • file$name: 버킷 이름 뒤에 오는 모든 텍스트를 포함하여 객체 이름을 지정합니다.

BEGIN  
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
      table_name =>'HPT1',  
      credential_name =>'OBJ_STORE_CRED',  
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),  
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
                                    ( ''&base_URL/file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) external location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000)
                                 )'
     );
   END;
/ 


BEGIN
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
    table_name  => 'HPT1',
    format      => json_object('delimiter'value ',', 'recorddelimiter'value 'newline'),
    column_list => 'NAME VARCHAR2(30), GENDER VARCHAR2(10), BALANCE number',
    partitioning_clause => 'partition by range (B  2  ALANCE)
               (partition p1 values less than (1000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Scott_male_1000.csv''),
                partition p2 values less than (2000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Mary_female_3000.csv''),
                partition p3 values less than (3000))' );
END;
/

DELETE_ALL_OPERATIONS 프로시저

이 프로시저는 type 매개변수에 표시된 대로 스키마의 user_load_operations 테이블에 기록된 모든 데이터 로드 작업을 지우거나 지정된 유형의 모든 데이터 로드 작업을 지웁니다.

구문

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

매개변수

매개변수 설명

type

삭제할 작업의 유형을 지정합니다. 유형 값은 user_load_operations 테이블의 TYPE 열에서 찾을 수 있습니다.

type가 지정되지 않은 경우 모든 행이 삭제됩니다.

사용법 노트

  • DBMS_CLOUD.DELETE_ALL_OPERATIONS는 현재 실행 중인 작업("실행 중" 상태의 작업)을 삭제하지 않습니다.

DELETE_FILE 프로시저

이 절차에서는 Autonomous Database의 지정된 디렉토리에서 지정된 파일을 제거합니다.

구문

 DBMS_CLOUD.DELETE_FILE ( 
       directory_name     IN VARCHAR2,
       file_name          IN VARCHAR2,
       force              IN BOOLEAN DEFAULT FALSE); 

매개변수

매개변수 설명

directory_name

Autonomous Database 인스턴스의 디렉토리 이름입니다.

file_name

제거할 파일의 이름입니다.

force

파일이 없으면 오류를 무시하고 보고하지 않습니다. 적합한 값은 TRUEFALSE입니다. 기본값은 FALSE입니다.

주:

ADMIN 이외의 다른 사용자와 함께 DBMS_CLOUD.DELETE_FILE를 실행하려면 해당 사용자에게 파일이 포함된 디렉토리에 대한 쓰기 권한을 부여해야 합니다.예를 들어, 다음 명령을 ADMIN으로 실행하여 atpc_user에 쓰기 권한을 부여합니다.
GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

BEGIN
   DBMS_CLOUD.DELETE_FILE(
      directory_name =>  'DATA_PUMP_DIR',
      file_name => 'exp1.dmp' );
   END;
/ 

DELETE_OBJECT 프로시저

이 프로시저는 객체 저장소에서 지정된 객체를 삭제합니다.

구문

DBMS_CLOUD.DELETE_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       force                IN BOOLEAN DEFAULT FALSE);

매개변수

매개변수 설명

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

object_uri

삭제할 객체의 객체 또는 파일 URI입니다. URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

force

객체가 없는 경우 오류를 무시하고 보고하지 않습니다. 적합한 값은 TRUEFALSE입니다. 기본값은 FALSE입니다.

BEGIN
   DBMS_CLOUD.DELETE_OBJECT(
       credential_name => 'DEF_CRED_NAME',
       object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp' );
   END;
/ 

DELETE_OPERATION 프로시저

이 프로시저는 스키마의 user_load_operations 또는 dba_load_operations 테이블에 기록된 지정된 작업 ID에 대한 데이터 로드 항목을 지웁니다.

구문

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

매개변수

매개변수 설명

id

삭제할 로그 파일 항목과 연관된 작업 ID를 지정합니다.

SELECT id FROM user_load_operations WHERE type LIKE '%BAD%';
EXEC DBMS_CLOUD.DELETE_OPERATION(id);

DROP_EXTERNAL_TEXT_INDEX 프로시저

이 절차에서는 오브젝트 스토리지 파일의 텍스트 인덱스를 삭제합니다.

DROP_EXTERNAL_TEXT_INDEX 프로시저는 CREATE_EXTERNAL_TEXT_INDEX 프로시저로 생성된 지정된 인덱스를 삭제합니다.

구문

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

매개변수

매개변수 설명
index_name

삭제하려는 인덱스의 이름을 지정합니다.

인덱스 이름은 인덱스 생성 시 제공된 이름과 일치해야 합니다.

이 매개변수는 필수입니다.

BEGIN 
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
        index_name => 'EMP',
);
END;
/

EXPORT_DATA 프로시저

이 프로시저는 질의 결과를 기반으로 Autonomous Database에서 데이터를 익스포트합니다. 이 절차는 오버로드되며 클라우드 또는 디렉토리에 파일을 쓸 수 있도록 지원합니다.

format type 매개변수에 따라 프로시저는 CSV, JSON, Parquet 또는 XML 형식의 텍스트 파일로 파일을 클라우드 또는 디렉토리 위치로 익스포트합니다.

구문

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB,
      format            IN CLOB,
      query             IN CLOB);

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB DEFAULT NULL,
      format            IN CLOB DEFAULT NULL,
      query             IN CLOB DEFAULT NULL,
      operation_id      OUT NOCOPY NUMBER);

매개변수

매개변수 설명

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

인증서 매개변수가 포함되지 않은 경우 디렉토리에 대한 출력을 지정합니다.

file_uri_list

형식 파라미터의 값에 따라 인증서 파라미터를 포함하는지 여부에 따라 다음과 같은 다양한 형식이 있습니다.
  • format 매개변수 type 값이 json인 경우: 객체 저장소 또는 지정된 디렉토리 위치에 대한 JSON은 file_uri_list 매개변수의 값을 기반으로 생성된 파일 이름으로 저장됩니다. 자세한 내용은 텍스트 출력에 대한 파일 이름 지정(CSV, JSON, Parquet 또는 XML)을 참조하십시오.

  • format 매개변수 type 값이 datapump인 경우 file_uri_list는 덤프 파일의 콤마로 구분된 목록입니다. 객체 저장소에서 생성할 파일을 지정합니다. 와일드카드 및 대체 문자 사용은 file_uri_list에서 지원되지 않습니다.

  • credential_name 매개변수가 지정되지 않은 경우 file_uri_list에 디렉토리 이름을 제공합니다.

URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

format

익스포트 형식 옵션을 제공하는 JSON 문자열입니다.

지원되는 옵션은 다음과 같습니다.

  • type: type format 옵션이 필요하며 csv | datapump | json | parquet | xml 값 중 하나가 있어야 합니다.

DBMS_CLOUD Package Format Options for EXPORT_DATA을 참조하십시오.

query

필요한 데이터만 내보내도록 SELECT 문을 지정하려면 이 매개변수를 사용합니다. 질의에 따라 텍스트 파일 CSV, JSON, Parquet, XML 또는 덤프 파일로 익스포트할 파일의 콘텐츠가 결정됩니다. 예:

SELECT warehouse_id, quantity FROM inventories

format type 값이 json인 경우 각 질의 결과가 확인되고 JSON이 아닌 경우 JSON_OBJECT_T.parse() 함수로 결정된 대로 DBMS_CLOUD.EXPORT_DATA는 JSON_OBJECT 함수를 포함하도록 질의를 변환하여 행을 JSON으로 변환합니다. 자세한 내용은 Oracle Database 19c SQL Language ReferenceJSON_OBJECT 또는 Oracle Database 23ai SQL Language ReferenceJSON_OBJECT_T Object TypeOracle Database 19c PL/SQL Packages and Types ReferenceOracle Database 23ai PL/SQL Packages and Types Reference를 참조하십시오.

예:

SELECT JSON_OBJECT(* RETURNING CLOB) from(SELECT warehouse_id, quantity FROM inventories)

operation_id

이 매개변수를 사용하여 익스포트 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

사용법 관련 주:

  • 필요한 경우 제공하는 query 매개변수 값은 조인 또는 하위 질의를 포함하는 질의와 같은 고급 질의일 수 있습니다.

  • 지정된 형식 매개변수에 따라 DBMS_CLOUD.EXPORT_DATA는 클라우드 객체 저장소에서 지정된 질의의 결과를 출력하거나 CSV, JSON, Parquet 또는 XML 파일 형식의 디렉토리 위치에 출력합니다.

    CSV, JSON, Parquet 또는 XML 출력 파일에서 DBMS_CLOUD.EXPORT_DATA를 사용하는 방법에 대한 자세한 내용은 DBMS_CLOUD.EXPORT_DATA를 사용하여 객체 저장소로 데이터 익스포트DBMS_CLOUD.EXPORT_DATA를 사용하여 디렉토리로 데이터 익스포트를 참조하십시오.

  • CSV, JSON 또는 XML 출력의 경우, 생성된 파일에 10MB의 데이터가 포함된 경우 기본적으로 새 출력 파일이 생성됩니다. 그러나 결과 데이터가 10MB 미만인 경우 데이터베이스 서비스 및 Autonomous Database 인스턴스에 대한 ECPU(OCPU를 사용하는 경우 OCPU) 수에 따라 여러 출력 파일이 있을 수 있습니다.

    자세한 내용은 텍스트 출력에 대한 파일 이름 지정(CSV, JSON, Parquet 또는 XML)을 참조하십시오.

    기본 출력 파일 조각 크기는 CSV, JSON 또는 XML의 경우 10MB입니다. format 매개변수 maxfilesize 옵션을 사용하여 이 값을 변경할 수 있습니다. 자세한 내용은 DBMS_CLOUD Package Format Options for EXPORT_DATA을 참조하십시오.

  • Parquet 출력의 경우 생성된 각 파일이 128MB 미만이며 여러 출력 파일이 생성될 수 있습니다. 그러나 결과 데이터가 128MB 미만인 경우 Autonomous Database 인스턴스에 대한 데이터베이스 서비스 및 ECPU 수(OCPU(데이터베이스에서 OCPU를 사용하는 경우 OCPU)에 따라 여러 출력 파일이 있을 수 있습니다.

    자세한 내용은 텍스트 출력에 대한 파일 이름 지정(CSV, JSON, Parquet 또는 XML)을 참조하십시오.

  • Parquet 출력 형식은 전용 Exadata 인프라에서 Autonomous Database에 대한 상위 및 중간 데이터베이스 서비스에서만 사용할 수 있습니다.

출력이 디렉토리인 DBMS_CLOUD.EXPORT_DATA에 대한 사용 정보

  • 제공된 디렉토리가 존재해야 하며 ADMIN 사용자로 로그인하거나 디렉토리에 대한 WRITE 액세스 권한이 있어야 합니다.

  • DBMS_CLOUD.EXPORT_DATA는 디렉토리를 만들지 않습니다.

  • 이 프로시저는 파일을 겹쳐쓰지 않습니다. 예를 들어, file_uri_list의 덤프 파일이 있는 경우 DBMS_CLOUD.EXPORT_DATA는 다음과 같은 오류를 보고합니다.

    ORA-31641: unable to create dump file  "/u02/exports/123.dmp"
    ORA-27038: created file already exists

다음 예에서는 값이 jsontype 매개변수 형식을 사용하는 DBMS_CLOUD.EXPORT_DATA를 보여줍니다.

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.json', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'json', 'compression' value 'gzip'));
     );
   END;
/  

다음 예에서는 값이 xmltype 매개변수 형식을 사용하는 DBMS_CLOUD.EXPORT_DATA를 보여줍니다.

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.xml', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip'));
     );
   END;
/

다음 예에서는 값이 csvtype 매개변수 형식을 사용하는 DBMS_CLOUD.EXPORT_DATA를 보여줍니다.

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp.csv', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip', 'header' value true ));
     );
   END;
/  

GET_OBJECT 프로시저 및 함수

이 프로시저는 오버로드됩니다. 절차 양식은 클라우드 오브젝트 스토리지에서 오브젝트를 읽고 Autonomous Database에 복사합니다. 함수 폼은 Cloud Object Storage에서 객체를 읽고 BLOBAutonomous Database로 반환합니다.

구문

DBMS_CLOUD.GET_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2 DEFAULT  NULL,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.GET_OBJECT(
       credential_name      IN VARCHAR2 DEFAULT NULL,
       object_uri           IN VARCHAR2,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL)
RETURN BLOB;

매개변수

매개변수 설명

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

object_uri

객체 또는 파일 URI입니다. URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

directory_name

데이터베이스의 디렉토리 이름

발 1

file_name

생성할 파일의 이름을 지정합니다. 파일 이름을 지정하지 않을 경우 파일 이름은 object_uri 매개변수의 마지막 슬래시 뒤에 옵니다. 특히 파일 이름에 슬래시가 포함된 경우 file_name 매개변수를 사용합니다.

startoffset

프로시저가 읽기를 시작하는 오프셋(바이트)입니다.

endoffset

프로시저가 읽기를 중지할 때까지의 오프셋(바이트)입니다.

compression

객체를 저장하는 데 사용되는 압축을 지정합니다. compression‘AUTO’로 설정된 경우 파일의 압축이 해제됩니다. ‘AUTO’ 값은 object_uri로 지정된 객체가 Gzip으로 압축됨을 의미합니다.

Footnote 1

주:

ADMIN이 아닌 다른 사용자와 함께 DBMS_CLOUD.GET_OBJECT을 실행하려면 디렉토리에 대한 WRITE 권한을 해당 사용자에게 부여해야 합니다. 예를 들어, ADMIN으로 다음 명령을 실행하여 atpc_user에 쓰기 권한을 부여합니다.

GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

반환 값

함수 폼은 객체 저장소에서 읽으며 DBMS_CLOUD.GET_OBJECTBLOB를 반환합니다.

BEGIN 
   DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt',
     directory_name => 'DATA_PUMP_DIR'); 
END;
/

객체 저장소의 파일에서 문자 데이터를 읽으려면 다음과 같이 하십시오.

SELECT to_clob(
     DBMS_CLOUD.GET_OBJECT(
       credential_name => 'OBJ_STORE_CRED',
       object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt'))
FROM DUAL;

데이터베이스의 BLOB에 있는 객체 저장소에 저장된 이미지를 추가하려면 다음과 같이 하십시오.


DECLARE
   l_blob BLOB := NULL;
BEGIN
   l_blob := DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/MyImage.gif' );
END;
/

이 예에서는 namespace-string가 Oracle Cloud Infrastructure 오브젝트 스토리지 네임스페이스이고 bucketname가 버킷 이름입니다. 자세한 내용은 Object Storage 네임스페이스 이해를 참조하십시오.

LIST_FILES 함수

이 함수는 지정된 디렉토리의 파일을 나열합니다. 결과에는 파일 이름 및 파일에 대한 추가 메타 데이터(예: 바이트 단위의 파일 크기, 생성 시간 기록 및 마지막 수정 시간 기록)가 포함됩니다.

구문

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

매개변수

매개변수 설명

directory_name

데이터베이스의 디렉토리 이름

사용법 참고

  • ADMIN 이외의 다른 사용자와 함께 DBMS_CLOUD.LIST_FILES를 실행하려면 디렉토리에 대한 읽기 권한을 해당 사용자에게 부여해야 합니다.예를 들어, 다음 명령을 ADMIN으로 실행하여 atpc_user에 읽기 권한을 부여합니다.

    GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;
  • 반환 유형이 DBMS_CLOUD_TYPES.list_object_ret_t인 파이프 라인된 테이블 함수입니다.

  • DBMS_CLOUD.LIST_FILES는 체크섬 값을 가져오지 않고 이 필드에 대해 NULL를 반환합니다.

각 파일에 대한 행을 반환하는 파이프 라인 함수입니다. 예를 들어, 다음 query를 사용하여 이 함수를 사용합니다.

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

OBJECT_NAME       BYTES   CHECKSUM      CREATED              LAST_MODIFIED
------------ ---------- ----------    ---------------------  ---------------------
cwallet.sso        2965               2018-12-12T18:10:47Z   2019-11-23T06:36:54Z

LIST_OBJECTS 함수

이 함수는 객체 저장소의 지정된 위치에 있는 객체를 나열합니다. 결과에는 객체 이름과 객체에 대한 추가 메타 데이터(예: 크기, 체크섬, 생성 시간 기록 및 마지막 수정 시간 기록)가 포함됩니다.

구문

DBMS_CLOUD.LIST_OBJECTS (
       credential_name      IN VARCHAR2,
       location_uri         IN VARCHAR2)
   RETURN TABLE;

매개변수

매개변수 설명

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

location_uri

객체 또는 파일 URI입니다. URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

사용법 참고

  • 객체 저장소의 기능에 따라 DBMS_CLOUD.LIST_OBJECTS는 특정 속성에 대한 값을 반환하지 않으며 이 경우 필드의 반환 값은 NULL입니다.

    지원되는 모든 객체 저장소는 OBJECT_NAME, BYTESCHECKSUM 필드에 대한 값을 반환합니다.

    다음 표에서는 객체 저장소별 CREATEDLAST_MODIFIED 필드에 대한 지원을 보여줍니다.

    객체 저장소 CREATED LAST_MODIFIED
    Oracle Cloud Infrastructure 네이티브 반환 시간 기록 반환 시간 기록
    Oracle Cloud Infrastructure Swift NULL을 반환합니다. 반환 시간 기록
    Amazon S3 NULL을 반환합니다. 반환 시간 기록
    Amazon S3 호환 NULL을 반환합니다. 반환 시간 기록
    Azure 반환 시간 기록 반환 시간 기록
  • 체크섬 값은 MD5 체크섬입니다. 객체 내용에 대해 계산되는 32자의 16진수입니다.

  • 반환 유형이 DBMS_CLOUD_TYPES.list_object_ret_t인 파이프 라인된 테이블 함수입니다.

각 객체에 대해 행을 반환하는 파이프 라인 함수입니다. 예를 들어, 다음 query를 사용하여 이 함수를 사용합니다.

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('OBJ_STORE_CRED', 
    'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/');


OBJECT_NAME   BYTES              CHECKSUM                       CREATED         LAST_MODIFIED
------------ ---------- -------------------------------- --------------------- --------------------
cwallet.sso   2965      2339a2731ba24a837b26d344d643dc07 2019-11-23T06:36:54Z          

이 예에서는 namespace-string가 Oracle Cloud Infrastructure 오브젝트 스토리지 네임스페이스이고 bucketname가 버킷 이름입니다. 자세한 내용은 Object Storage 네임스페이스 이해를 참조하십시오.

MOVE_OBJECT 프로시저

이 절차에서는 오브젝트를 클라우드 오브젝트 스토리지 버킷 또는 폴더 간에 이동합니다.

소스 및 대상 버킷 또는 폴더는 동일하거나 다른 클라우드 객체 저장소 제공자에 있을 수 있습니다.

소스와 대상이 고유 객체 저장소에 있거나 동일한 클라우드 제공자의 계정이 다른 경우 소스 및 대상 위치에 대해 별도의 인증서 이름을 지정할 수 있습니다.

소스 인증서 이름은 기본적으로 대상 인증서 이름이 제공되지 않은 경우 대상 위치에서도 사용됩니다.

구문

DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

매개변수

매개변수 설명

source_credential_name

소스 클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

source_credential_name 값을 제공하지 않으면 credential_nameNULL로 설정됩니다.

source_object_uri

소스 오브젝트 스토리지 버킷 또는 폴더 위치를 가리키는 URI를 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 객체 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

target_object_uri

파일을 이동해야 하는 대상 오브젝트 스토리지 버킷 또는 폴더에 대한 URI를 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 객체 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

target_credential_name

대상 클라우드 객체 스토리지 위치에 액세스할 인증서의 이름입니다.

target_credential_name 값을 제공하지 않으면 target_object_urisource_credential_name 값으로 설정됩니다.

BEGIN 
DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

PUT_OBJECT 프로시저

이 프로시저는 오버로드됩니다. 절차에서는 Autonomous Database의 파일을 클라우드 객체 스토리지로 복사합니다. 다른 양식에서 이 절차는 Autonomous DatabaseBLOB를 클라우드 객체 스토리지로 복사합니다.

구문

DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       contents             IN BLOB
       compression          IN VARCHAR2 DEFAULT  NULL);

매개변수

매개변수 설명

credential_name

클라우드 객체 스토리지에 액세스할 인증서의 이름입니다.

object_uri

객체 또는 파일 URI입니다. URI의 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

directory_name

Autonomous Database에 있는 디렉토리의 이름입니다.

발 1

contents

Autonomous Database에서 클라우드 객체 스토리지로 복사할 BLOB를 지정합니다.

file_name

지정된 디렉토리에 있는 파일의 이름입니다.

compression

객체를 저장하는 데 사용되는 압축을 지정합니다.

기본값: NULL

Footnote 1

주:

ADMIN이 아닌 다른 사용자와 함께 DBMS_CLOUD.PUT_OBJECT을 실행하려면 디렉토리에 대한 읽기 권한을 해당 사용자에게 부여해야 합니다. 예를 들어, 다음 명령을 ADMIN으로 실행하여 atpc_user에 읽기 권한을 부여합니다.

GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;

데이터베이스 내 처리 후 BLOB 데이터를 처리한 다음 데이터를 객체 저장소의 파일에 직접 저장하려면 다음을 수행합니다.

DECLARE
      my_blob_data BLOB;
BEGIN 
 /* Some processing producing BLOB data and populating my_blob_data */
DBMS_CLOUD.PUT_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/my_new_file',
     contents => my_blob_data)); 
END;
/

사용법 참고

클라우드 오브젝트 스토리지에 따라 전송하는 오브젝트의 크기가 다음과 같이 제한됩니다.

클라우드 오브젝트 스토리지 서비스 객체 전송 크기 제한

Oracle Cloud Infrastructure Object Storage

50 GB

Amazon S3

5 GB

Azure Blob Storage

256 MB

Amazon S3 호환

객체 저장소 제공자에 의해 설정됩니다. 자세한 내용은 공급자의 설명서를 참조하십시오.

Oracle Cloud Infrastructure 객체 저장소에서는 인증서를 제공하지 않고 퍼블릭 버킷에 파일을 쓸 수 없습니다. Oracle Cloud Infrastructure에서는 사용자가 퍼블릭 버킷에서 객체를 다운로드할 수 있습니다. 따라서 PUT_OBJECT를 사용하여 Oracle Cloud Infrastructure 퍼블릭 버킷에 객체를 저장하려면 적합한 인증서가 포함된 인증서 이름을 제공해야 합니다.

자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

SYNC_EXTERNAL_PART_TABLE 프로시저

이 절차에서는 클라우드의 파일에서 외부 분할 테이블을 간단히 업데이트할 수 있습니다. 새 분할 영역이 추가되거나 외부 분할된 테이블에 대한 객체 저장소 소스에서 분할 영역이 제거될 때마다 이 프로시저를 실행합니다.

구문

DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE (
	table_name        IN VARCHAR2,
	schema_name       IN VARCHAR2 DEFAULT,
	update_columns    IN BOOLEAN DEFAULT);

매개변수

매개변수 설명

table_name

대상 테이블의 이름입니다. DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE를 실행하기 전에 대상 테이블을 만들어야 합니다.

schema_name

대상 테이블이 상주하는 스키마의 이름입니다. 기본값은 대상 테이블이 프로시저를 실행하는 유저와 동일한 스키마에 있음을 의미하는 NULL입니다.

update_columns

새 파일로 인해 스키마가 변경될 수 있습니다. 지원되는 업데이트에는 새 열, 삭제된 열이 포함됩니다. 기존 열에 대한 업데이트(예: 데이터 유형을 변경하면 오류가 발생함)

기본값: False

VALIDATE_EXTERNAL_PART_TABLE 프로시저

이 프로시저는 외부 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 Autonomous Databasebadfile 테이블에 저장합니다. 오버로드된 폼에서는 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

매개변수

매개변수 설명

table_name

외부 테이블의 이름입니다.

operation_id

이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

partition_name

정의된 경우 특정 분할 영역만 검증됩니다. 지정되지 않은 경우 rowcount에 도달할 때까지 모든 분할 영역을 순차적으로 읽습니다.

subpartition_name

정의된 경우 특정 서브 분할 영역만 검증됩니다. 지정되지 않은 경우 rowcount에 도달할 때까지 모든 외부 분할 영역 또는 하위 분할 영역에서 순차적으로 읽습니다.

schema_name

외부 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL이며 External Table은 프로시저를 실행하는 유저와 동일한 스키마에 있으므로

rowcount

스캔할 행 수입니다. 기본값은 NULL입니다. 즉, 소스 파일의 모든 행이 스캔됩니다.

partition_key_validation

내부 전용입니다. 이 파라미터는 사용하지 마십시오.

stop_on_error

행이 거부될 때 검증이 정지되어야 하는지 여부를 결정합니다. 기본값은 TRUE이며, 이는 첫번째 거부된 행에서 검증이 정지됨을 의미합니다. 값을 FALSE로 설정하면 첫번째 거부된 행에서 검증이 정지되지 않고 rowcount 매개변수에 대해 지정된 값까지 모든 행을 검증합니다.

VALIDATE_EXTERNAL_TABLE 프로시저

이 프로시저는 외부 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 Autonomous Databasebadfile 테이블에 저장합니다. 오버로드된 폼에서는 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
	table_name      IN VARCHAR2,
	schema_name     IN VARCHAR2 DEFAULT,		
	rowcount        IN NUMBER DEFAULT,
	stop_on_error   IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE(
	table_name      IN VARCHAR2,
	operation_id    OUT NOCOPY NUMBER,
	schema_name     IN VARCHAR2 DEFAULT NULL,		
	rowcount        IN NUMBER DEFAULT 0,
	stop_on_error   IN BOOLEAN DEFAULT TRUE);

매개변수

매개변수 설명

table_name

외부 테이블의 이름입니다.

operation_id

이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

schema_name

외부 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL이며 External Table은 프로시저를 실행하는 유저와 동일한 스키마에 있으므로

rowcount

스캔할 행 수입니다. 기본값은 NULL입니다. 즉, 소스 파일의 모든 행이 스캔됩니다.

stop_on_error

행이 거부될 때 검증이 정지되어야 하는지 여부를 결정합니다. 기본값은 TRUE이며, 이는 첫번째 거부된 행에서 검증이 정지됨을 의미합니다. 값을 FALSE로 설정하면 첫번째 거부된 행에서 검증이 정지되지 않고 rowcount 매개변수에 대해 지정된 값까지 모든 행을 검증합니다.

외부 테이블이 Avro, ORC 또는 Parquet 파일을 참조하는 경우 첫번째 거부된 행에서 검증이 중지됩니다.

외부 테이블이 avro, orc 또는 parquet 값으로 설정된 format 매개변수 type를 지정하는 경우 stop_on_error 매개변수는 실제로 항상 TRUE 값을 가집니다. 따라서 Avro, ORC, Parquet 파일을 참조하는 외부 테이블의 경우 테이블 badfile은 항상 비어 있습니다.

사용법 참고

  • DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE는 분할된 외부 테이블 및 하이브리드 분할된 테이블에서 모두 작동합니다. 이렇게 하면 rowcount에 도달하거나 stop_on_error가 적용될 때까지 모든 외부 분할 영역에서 데이터를 읽을 수 있습니다. 어떤 분할 영역 또는 분할 영역의 일부를 어떤 순서로 읽는지 제어할 수 없습니다.

VALIDATE_HYBRID_PART_TABLE 프로시저

이 절차에서는 하이브리드 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 하이브리드 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 Autonomous Databasebadfile 테이블에 저장합니다. 오버로드된 폼에서는 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

매개변수

매개변수 설명

table_name

외부 테이블의 이름입니다.

operation_id

이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

partition_name

정의된 경우 특정 분할 영역만 검증됩니다. 지정되지 않은 경우 rowcount에 도달할 때까지 모든 외부 분할 영역에서 순차적으로 읽습니다.

subpartition_name

정의된 경우 특정 서브 분할 영역만 검증됩니다. 지정되지 않은 경우 rowcount에 도달할 때까지 모든 외부 분할 영역 또는 하위 분할 영역에서 순차적으로 읽습니다.

schema_name

외부 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL이며 External Table은 프로시저를 실행하는 유저와 동일한 스키마에 있으므로

rowcount

스캔할 행 수입니다. 기본값은 NULL입니다. 즉, 소스 파일의 모든 행이 스캔됩니다.

partition_key_validation

내부 전용입니다. 이 파라미터는 사용하지 마십시오.

stop_on_error

행이 거부될 때 검증이 정지되어야 하는지 여부를 결정합니다. 기본값은 TRUE이며, 이는 첫번째 거부된 행에서 검증이 정지됨을 의미합니다. 값을 FALSE로 설정하면 첫번째 거부된 행에서 검증이 정지되지 않고 rowcount 매개변수에 대해 지정된 값까지 모든 행을 검증합니다.