객체 및 파일에 대한 DBMS_CLOUD
이 절에서는 객체 및 파일 작업에 사용되는 DBMS_CLOUD 서브 프로그램을 다룹니다.
필수 조건
개발자는 Oracle Public Cloud, 멀티클라우드 또는 Exadata Cloud@Customer에 배포된 자율운영 AI 데이터베이스와 함께 DBMS_CLOUD 절차를 사용할 수 있습니다.
배포 선택에 따라 Amazon S3, Azure Blob Storage 및 Google Cloud Storage 서비스 공급자와 함께 DBMS_CLOUD 절차를 사용하려면 다음 필요 조건을 충족해야 합니다.
아래에 설명된 대로 플리트 관리자가 NAT 게이트웨이를 사용하여 아웃바운드 접속을 구성했어야 합니다.
-
Oracle Cloud Infrastructure 문서의 NAT 게이트웨이 생성 지침에 따라 자율운영 AI 데이터베이스 리소스가 상주하는 VCN(가상 클라우드 네트워크)에 NAT 게이트웨이를 생성합니다.
-
NAT 게이트웨이를 생성한 후 자율운영 AI 데이터베이스 리소스가 상주하는 VCN의 각 서브넷에 경로 규칙 및 송신 보안 규칙을 추가하여 해당 리소스가 게이트웨이를 사용하여 Azure AD 인스턴스에서 퍼블릭 키를 얻을 수 있도록 합니다.
-
서브넷의 서브넷 세부 정보 페이지로 이동합니다.
-
서브넷 정보 탭에서 서브넷의 경로 테이블 이름을 눌러 해당 경로 테이블 세부정보 페이지를 표시합니다.
-
기존 경로 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
-
대상: 0.0.0.0/0
-
대상 유형: NAT 게이트웨이
-
대상: VCN에서 방금 생성한 NAT 게이트웨이의 이름입니다.
해당 규칙이 없는 경우 경로 규칙 추가를 누르고 해당 특성을 가진 경로 규칙을 추가합니다.
-
-
서브넷에 대한 서브넷 세부정보 페이지로 돌아갑니다.
-
서브넷의 보안 목록 테이블에서 서브넷의 보안 목록 이름을 눌러 해당 보안 목록 세부정보 페이지를 표시합니다.
-
사이드 메뉴의 리소스에서 송신 규칙을 누릅니다.
-
기존 송신 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
-
대상 유형: CIDR
-
대상:0.0.0.0/0
-
IP 프로토콜:TCP
-
소스 포트 범위:443
-
대상 포트 범위:모두
해당 규칙이 없는 경우 송신 규칙 추가를 누르고 이러한 특성을 가진 송신 규칙을 추가합니다.
-
-
사용자 환경의 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 프로시저 | 이 절차에서는 Cloud Object Storage 또는 디렉토리의 파일에서 기존 SODA 모음으로 데이터를 로드합니다. |
| COPY_DATA 프로시저 | 이 절차에서는 클라우드 오브젝트 스토리지 또는 디렉토리의 파일에서 기존 자율운영 AI 데이터베이스 테이블로 데이터를 로드합니다. |
| Avro, ORC 또는 Parquet 파일에 대한 COPY_DATA 프로시저 |
텍스트 파일과 마찬가지로 데이터는 소스 ORC, Parquet 또는 Avro 파일에서 기존 내부 테이블로 복사됩니다. |
| COPY_OBJECT 프로시저 | 이 절차에서는 클라우드 오브젝트 스토리지 버킷 간에 파일을 복사합니다. |
| CREATE_EXTERNAL_TABLE 프로시저 | 이 절차에서는 클라우드 또는 디렉토리의 파일에 외부 테이블을 생성합니다. 이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다. |
| Avro, ORC 또는 Parquet 파일에 대한 CREATE_EXTERNAL_TABLE 프로시저 |
이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다. |
| CREATE_EXTERNAL_TEXT_INDEX 프로시저 | 이 프로시저는 객체 저장소 파일에 텍스트 인덱스를 생성합니다. |
| CREATE_HYBRID_PART_TABLE 프로시저 | 이 절차에서는 하이브리드 분할 테이블을 만듭니다. 이를 통해 자율운영 AI 데이터베이스에서 하이브리드 파티셔닝된 데이터에 대한 쿼리를 실행할 수 있습니다. |
| DELETE_ALL_OPERATIONS 프로시저 | 이 프로시저는 type 매개변수에 표시된 대로 스키마의 user_load_operations 테이블에 기록된 모든 데이터 로드 작업을 지우거나 지정된 유형의 모든 데이터 로드 작업을 지웁니다. |
| DELETE_FILE 프로시저 | 이 절차에서는 자율운영 AI 데이터베이스의 지정된 디렉토리에서 지정된 파일을 제거합니다. |
| DELETE_OBJECT 프로시저 | 이 절차는 객체 저장소에서 지정된 객체를 삭제합니다. |
| DELETE_OPERATION 프로시저 | 이 프로시저는 operation_id를 입력으로 받아들이고 지정된 operation_id과 연관된 로그를 삭제합니다. |
| DROP_EXTERNAL_TEXT_INDEX 프로시저 | 이 프로시저는 객체 저장소 파일의 텍스트 인덱스를 삭제합니다. |
| EXPORT_DATA 프로시저 | 이 절차에서는 쿼리 결과에 따라 자율운영 AI 데이터베이스의 데이터를 클라우드의 파일로 익스포트합니다. 오버로드된 폼을 사용하여 operation_id 매개변수를 사용할 수 있습니다. 지정된 format 매개변수 type 옵션에 따라 프로시저는 CSV, JSON, Parquet 또는 XML 옵션이 있는 텍스트로 Cloud Object 저장소에 행을 익스포트합니다. |
| GET_OBJECT 프로시저 및 함수 | 이 프로시저는 오버로드됩니다. 프로시저 폼은 클라우드 객체 스토리지에서 객체를 읽어 자율운영 AI 데이터베이스에 복사합니다. 함수 양식은 클라우드 오브젝트 스토리지에서 객체를 읽고 BLOB를 자율운영 AI 데이터베이스로 반환합니다. |
| LIST_FILES 함수 | 이 함수는 지정된 디렉토리의 파일을 나열합니다. 결과에는 파일 이름 및 파일에 대한 추가 메타 데이터(예: 파일 크기(바이트), 생성 시간 기록 및 마지막 수정 시간 기록)가 포함됩니다. |
| LIST_OBJECTS 함수 | 이 함수는 객체 저장소의 지정된 위치에 있는 객체를 나열합니다. 결과에는 크기, 체크섬, 생성 시간 기록 및 마지막 수정 시간 기록과 같은 객체에 대한 객체 이름과 추가 메타 데이터가 포함됩니다. |
| MOVE_OBJECT 프로시저 | 이 절차에서는 한 클라우드 오브젝트 스토리지 버킷에서 다른 버킷으로 오브젝트를 이동합니다. |
| PUT_OBJECT 프로시저 | 이 프로시저는 오버로드됩니다. 이 절차에서는 자율운영 AI 데이터베이스의 파일을 클라우드 오브젝트 스토리지로 복사합니다. 다른 형태의 절차에서는 자율운영 AI 데이터베이스에서 클라우드 객체 스토리지로 BLOB를 복사합니다. |
| SYNC_EXTERNAL_PART_TABLE 프로시저 | 이 절차에서는 클라우드의 파일에서 외부 분할 테이블 업데이트를 간소화합니다. 새 분할 영역이 추가되거나 외부 분할 테이블에 대한 객체 저장소 소스에서 분할 영역이 제거될 때마다 이 절차를 실행합니다. |
| VALIDATE_EXTERNAL_TABLE 프로시저 | 이 프로시저는 외부 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. |
| VALIDATE_EXTERNAL_PART_TABLE 프로시저 | 이 프로시저는 외부 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. |
| VALIDATE_HYBRID_PART_TABLE 프로시저 | 이 프로시저는 하이브리드 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 하이브리드 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. |
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 |
이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다. 클라우드 소스 파일 URI 클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다. 정규 표현식은
정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 예: URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
디렉토리 하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. 문자 "*"는 여러 문자에 대한 와일드 카드 문자가 될 수 있으며, 문자 "?"는 단일 문자의 와일드 카드 문자가 될 수 있습니다. 예: 여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: 따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: |
format |
소스 파일의 형식을 설명하는 옵션입니다. 이러한 옵션은 JSON 문자열로 지정됩니다. 지원되는 형식은 JSON 데이터에 대해 언급된 형식 외에도 자율운영 AI 데이터베이스는 다른 형식도 지원합니다. 자율운영 AI 데이터베이스에서 지원되는 형식 인수 목록은 형식 매개변수를 참조하십시오. |
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 프로시저
이 절차에서는 클라우드의 파일 또는 디렉토리의 파일에서 기존 자율운영 AI 데이터베이스 테이블로 데이터를 로드합니다. 오버로드된 폼을 사용하여 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 |
클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다. 클라우드 소스 파일 URI 이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다. 정규 표현식은
정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 예: URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
디렉토리 하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. 문자 "*"는 여러 문자에 대한 와일드 카드 문자와 함께 사용할 수 있으며, 문자 "?"는 단일 문자의 와일드 카드 문자와 함께 사용할 수 있으며, 예: 여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: 따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: |
schema_name |
대상 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL입니다. 즉, 대상 테이블이 프로시저를 실행하는 유저와 동일한 스키마에 있습니다. |
field_list |
소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL입니다. 즉, 필드와 해당 데이터 유형은 column_list 매개변수에 의해 결정됩니다. 이 인수의 구문은 일반 Oracle 외부 테이블의
|
format |
소스, 로그 및 잘못된 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오. Avro, ORC 또는 Parquet 파일 형식 옵션은 Avro, ORC 또는 Parquet에 대한 DBMS_CLOUD Package Format Options을 참조하십시오. |
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 매개변수 type가 avro, orc 또는 parquet 값으로 설정된 이 절차는 클라우드의 Avro, ORC 또는 Parquet 파일이나 디렉토리의 파일에서 기존 자율운영 AI 데이터베이스 테이블로 데이터를 로드합니다.
텍스트 파일과 마찬가지로 데이터는 소스 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 |
이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다. 클라우드 소스 파일 URI 클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다. 정규 표현식은
정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 예: URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
디렉토리 하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. 문자 "*"는 여러 문자에 대한 와일드 카드 문자와 함께 사용할 수 있으며, 문자 "?"는 단일 문자의 와일드 카드 문자와 함께 사용할 수 있으며, 예: 여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: 따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: |
schema_name |
대상 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL입니다. 즉, 대상 테이블이 프로시저를 실행하는 유저와 동일한 스키마에 있습니다. |
field_list |
Avro, ORC 또는 Parquet 파일의 경우 무시됩니다. 소스의 필드는 이름별로 External Table 열과 일치합니다. 소스 데이터 유형은 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 파일의 경우 두 가지 옵션만 지원됩니다. Avro, ORC 또는 Parquet에 대한 DBMS_CLOUD Package Format Options을 참조하십시오. |
사용법 참고
-
다른 데이터 파일과 마찬가지로 Avro, ORC 및 Parquet 데이터 로드는
dba_load_operations및user_load_operations테이블에서 볼 수 있는 로그를 생성합니다. 각 로드 작업은 로그를 포함하는 테이블을 나타내는 레코드를dba[user]_load_operations에 추가합니다.로그 테이블은 로드에 대한 요약 정보를 제공합니다.
-
Avro, ORC 또는 Parquet의 경우
format매개변수type이 값avro,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_object_uri |
소스 오브젝트 스토리지 버킷 또는 폴더 위치를 가리키는 URI를 지정합니다. 이 매개변수는 필수입니다. URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오. |
target_object_uri |
대상 객체 저장소의 URI을 지정합니다. 이 매개변수는 필수입니다. URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오. |
target_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 프로시저
이 절차에서는 클라우드의 파일 또는 디렉토리의 파일에서 외부 분할 테이블을 만듭니다. 이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다.
구문
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 |
개별 분할 영역에 대한 위치 정보를 포함하여 전체 분할 절을 지정합니다.
|
file_uri_list |
이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다. 클라우드 소스 파일 URI 클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다. 정규 표현식은
정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 이 옵션은 오브젝트 스토리지의 파일에 생성되는 외부 테이블에서만 지원됩니다. 예:
URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.
|
column_list |
콤마로 구분된 외부 테이블에 대한 열 이름 및 데이터 유형 목록입니다. 이 매개변수는
|
field_list |
소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL입니다. 즉, 필드와 해당 데이터 유형은 column_list 매개변수에 의해 결정됩니다. 이 인수의 구문은 일반 Oracle 외부 테이블의 field_list 절과 동일합니다. 자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 26ai Utilities의 field_list를 참조하십시오. |
format |
형식 옵션
데이터 파일이 구조화되지 않고 하이브 형식을 기반으로 하지 않는 객체 이름의 경우 지정된 소스 파일의 형식을 설명하는 모든 |
사용법 참고
-
partitioning_clause및file_uri_list매개변수를 모두 사용하여 이 프로시저를 호출할 수는 없습니다. -
column_list매개변수 지정은 Avro, Parquet 또는 ORC 데이터 파일을 포함한 구조화된 데이터 파일에서 선택 사항입니다.column_list가 지정되지 않은 경우format매개변수partition_columns옵션은name및type를 모두 포함해야 합니다. -
CSV 텍스트 파일과 같이 구조화되지 않은 데이터 파일에는
column_list매개변수가 필요합니다. DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE프로시저는 다음을 포함하여 지원되는 클라우드 객체 스토리지 서비스에서 외부 분할된 파일을 지원합니다.- Oracle Cloud Infrastructure Object Storage
- Azure Blob 스토리지
자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.
-
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE프로시저는 로컬 파일 시스템 또는 네트워크 파일 시스템의 디렉토리에서 외부 분할된 파일을 지원합니다. -
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE를file_uri_list매개변수와 함께 호출할 때 클라우드 객체 저장소 파일 이름에 지정된 열의 유형은 다음 유형 중 하나여야 합니다.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 형식을 참조하십시오. -
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE로 생성하는 외부 분할 테이블에는 두 개의 보이지 않는 열file$path및file$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_list 및 column_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;
/
예제: C3 오브젝트 스토리지 버킷에 저장된 객체를 사용하여 외부 분할 테이블 생성
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
table_name => 'USAGE_EXTP',
credential_name => 'OBJECT_STORAGE_CREDENTIAL',
file_uri_list => 'https://objectstorage.mydomain.com/n/mytenancy/b/mybucket/o/usage-data/*usage-data*.parquet',
format => json_object(
'type' value 'parquet', 'schema' value 'first',
'partition_columns' value json_array(
json_object('name' value 'year', 'type' value 'number'),
json_object('name' value 'month', 'type' value 'number'),
json_object('name' value 'day', 'type' value 'number')
)
)
);
END;
/
CREATE_EXTERNAL_TABLE 프로시저
이 절차에서는 클라우드의 파일 또는 디렉토리의 파일에서 외부 테이블을 생성합니다. 이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다.
구문
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 |
이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다. 클라우드 소스 파일 URI 클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다. 정규 표현식은
정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 이 옵션은 오브젝트 스토리지의 파일에 생성되는 외부 테이블에서만 지원됩니다. 예: URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. 문자 "*"는 여러 문자에 대한 와일드 카드 문자가 될 수 있으며, 문자 "?"는 단일 문자의 와일드 카드 문자가 될 수 있습니다. 예: 여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: 따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: |
column_list |
콤마로 구분된 외부 테이블에 대한 열 이름 및 데이터 유형 목록입니다. |
field_list |
소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL입니다. 즉, 필드 및 해당 데이터 유형은 column_list 매개변수에 의해 결정됩니다. 이 인수의 구문은 일반 Oracle Database 외부 테이블의 field_list 절과 동일합니다. field_list에 대한 자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 26ai Utilities의 field_definitions 절 아래에 있는 ORACLE_LOADER Access Driver field_list를 참조하십시오. |
format |
소스 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오. Avro, ORC 또는 Parquet 형식 파일의 경우 Avro, ORC 또는 Parquet Files의 CREATE_EXTERNAL_TABLE Procedure를 참조하십시오. |
사용법 참고
-
DBMS_CLOUD.CREATE_EXTERNAL_TABLE절차는 Azure Blob Storage를 포함한 지원되는 클라우드 오브젝트 스토리지 서비스에서 외부 분할된 파일을 지원합니다.자격 증명은 테이블 레벨 등록 정보이므로 외부 파일은 동일한 객체 저장소에 있어야 합니다.
자세한 내용은 Cloud Object 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형식 옵션에 대한 자세한 내용은 형식 매개변수를 참조하십시오.
예
예: 오브젝트 스토리지의 CSV 파일에서 외부 테이블 생성
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
예: C3 오브젝트 스토리지 버킷에 저장된 객체를 사용하여 외부 테이블 생성
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
table_name =>'CHANNELS_EXT',
credential_name =>'OBJECT_STORAGE_CREDENTIAL',
file_uri_list => '<https://objectstorage.mydomain.com/n/mytenancy/b/mybucket/o/channels.txt>',
format => json_object('delimiter' value ','),
column_list => 'CHANNEL_ID NUMBER, CHANNEL_DESC VARCHAR2(20), CHANNEL_CLASS VARCHAR2(20)'
);
END;
/
Apache Iceberg용 CREATE_EXTERNAL_TABLE 프로시저
이 절차에서는 지원되는 구성에서 Apache Iceberg 테이블에 대한 외부 테이블을 생성합니다.
다음과 같은 특정 구성이 지원됩니다.
-
AWS의 Iceberg 테이블:
-
AWS Glue Data Catalog에 등록된 Iceberg 테이블로, Spark 또는 Athena로 생성됩니다.
자세한 내용은 ACID 트랜잭션이 있는 Apache Iceberg 테이블을 읽고 쓰고 시간 이동을 수행하려면 AWS Glue 커넥터를 사용 및 Iceberg 테이블 사용을 참조하십시오.
-
루트 메타데이터 파일에 대한 URL을 직접 제공하여 AWS S3에 저장된 Iceberg 테이블.
-
-
OCI의 Iceberg 테이블:
-
Hadoop 카탈로그를 사용하여 OCI Data Flow로 생성된 Iceberg 테이블입니다.
자세한 내용은 Oracle 데이터 플로우 예 및 Hadoop 카탈로그 사용을 참조하십시오.
-
루트 메타데이터 파일에 대한 URL을 직접 제공하여 OCI Object Storage에 저장된 Iceberg 테이블.
-
구문
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 Procedure에 설명된 대로 인증서를 생성해야 합니다. 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 매핑을 사용하여 파생됩니다. 따라서 사용자는 |
field_list |
열 이름 및 데이터 유형이 Iceberg 메타데이터에서 자동으로 파생되므로 NULL이어야 합니다. |
format |
자세한 내용은 OCI Data Flow Samples의 Iceberg 지원 및 DBMS_CLOUD URI 형식을 참고하세요. |
샘플 형식 매개변수
-
AWS Glue Catalog를 사용하여 AWS Iceberg 테이블 위에 테이블을 생성하는 경우는 다음과 같습니다.
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 테이블을 통해 테이블을 생성할 때는 다음과 같습니다.
format => json_object('access_protocol' value json_object('protocol_type' value 'iceberg') -
HadoopCatalog 카탈로그를 사용하여 OCI 데이터 플로우에서 생성된 OCI Iceberg 테이블을 통해 테이블을 생성할 때는 다음과 같습니다.
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 테이블을 생성하는 경우는 다음과 같습니다.
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 매개변수 type가 avro, orc 또는 parquet 값으로 설정된 이 프로시저는 클라우드 또는 디렉토리에 Avro, ORC 또는 Parquet 형식 파일이 있는 외부 테이블을 생성합니다.
이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다.
구문
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 |
이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다. 클라우드 소스 파일 URI 클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다. 정규 표현식은
정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 이 옵션은 오브젝트 스토리지의 파일에 생성되는 외부 테이블에서만 지원됩니다. 예: URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
디렉토리 하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. "*" 문자는 여러 문자에 대한 와일드 카드 문자로서 사용할 수 있으며, "?" 문자는 단일 문자의 와일드 카드 문자로서 사용할 수 있으며, 예: 여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: 따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: |
column_list |
(선택 사항) 이 필드는 지정된 경우 스키마, 열 및 데이터 유형이 자동으로 파생되도록 지정하는 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 열과 일치합니다. 소스 데이터 유형은 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 소스 파일의 경우 자세한 내용은 Avro, ORC 또는 Parquet에 대한 DBMS_CLOUD Package Format Options을 참조하십시오. |
예
-
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') -
Parquet
format => '{"type":"parquet", "schema": "all"}'format => json_object('type' value 'parquet', 'schema' value 'first')
참고: Oracle SQL의 열 이름 매핑 및 열 이름 변환 사용에 대한 자세한 내용은 DBMS_CLOUD Package Avro, ORC 및 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을 지정할 수 있습니다.
|
location_uri |
이 매개변수는 콤마로 구분된 소스 파일 URI 목록을 지정합니다. 클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다. 이 매개변수는 필수입니다. 클라우드 소스 파일 URI 이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다. 정규 표현식은
정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 정규 표현식을 사용하는 예제: 와일드카드를 사용하는 예:
URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
|
index_name |
`location_uri` 위치에 있는 파일에 작성 중인 인덱스의 이름을 지정합니다. 이 매개변수는 필수입니다. |
format |
추가 구성 옵션을 지정합니다. 옵션은 JSON 문자열로 지정됩니다. 지원되는 형식 옵션은 다음과 같습니다.
다음 방법을 사용하여 중지 단어를 지정할 수 있습니다.
|
예
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 프로시저
이 절차에서는 하이브리드 분할 테이블을 만듭니다. 이를 통해 클라우드의 데이터베이스 객체 및 파일을 사용하거나 디렉토리의 데이터베이스 객체 및 파일을 사용하여 자율운영 AI 데이터베이스에서 하이브리드 분할 데이터에 대한 쿼리를 실행할 수 있습니다.
구문
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 |
개별 분할 영역에 대한 위치 정보를 포함하여 전체 분할 절을 지정합니다. 디렉토리를 사용하기 위해 분할 절은 클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다. 정규 표현식은
정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 예:
|
column_list |
콤마로 구분된 외부 테이블에 대한 열 이름 및 데이터 유형 목록입니다. |
field_list |
소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL입니다. 즉, 필드와 해당 데이터 유형은 column_list 매개변수에 의해 결정됩니다. 이 인수의 구문은 일반 Oracle 외부 테이블의 field_list 절과 동일합니다. 자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 26ai Utilities의 field_list를 참조하십시오. |
format |
소스 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오. |
사용법 참고
-
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE절차는 Azure Blob Storage를 포함한 지원되는 클라우드 오브젝트 스토리지 서비스에서 외부 분할 파일을 지원합니다.자격 증명은 테이블 레벨 등록 정보이므로 외부 파일은 동일한 객체 저장소에 있어야 합니다.
자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.
-
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE절차는 로컬 파일 시스템 또는 네트워크 파일 시스템의 디렉토리에서 하이브리드 분할 파일을 지원합니다. -
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE로 생성하는 외부 분할 테이블에는 두 개의 보이지 않는 열file$path및file$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 |
삭제할 작업의 유형을 지정합니다. 유형 값은 |
사용 노트
DBMS_CLOUD.DELETE_ALL_OPERATIONS는 현재 실행 중인 작업("실행 중" 상태의 작업)을 삭제하지 않습니다.
DELETE_FILE 프로시저
이 절차에서는 자율운영 AI 데이터베이스의 지정된 디렉토리에서 지정된 파일을 제거합니다.
구문
DBMS_CLOUD.DELETE_FILE (
directory_name IN VARCHAR2,
file_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE);
매개변수
| 매개변수 | 설명 |
|---|---|
directory_name |
자율운영 AI 데이터베이스 인스턴스의 디렉토리 이름입니다. |
file_name |
제거할 파일의 이름입니다. |
force |
파일이 없으면 무시하고 오류를 보고하지 마십시오. 적합한 값은 TRUE 및 FALSE입니다. 기본값은 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 |
객체가 없는 경우 무시하고 오류를 보고하지 않습니다. 적합한 값은 TRUE 및 FALSE입니다. 기본값은 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 프로시저
이 절차에서는 쿼리 결과를 기반으로 자율운영 AI 데이터베이스에서 데이터를 익스포트합니다. 이 절차는 오버로드되며 클라우드 또는 디렉토리에 파일 쓰기를 지원합니다.
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 |
형식 매개변수의 값과 인증서 매개변수의 포함 여부에 따라 다른 형식이 있습니다.
URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오. |
format |
익스포트 형식 옵션을 제공하는 JSON 문자열입니다. 지원되는 옵션은 다음과 같습니다.
EXPORT_DATA에 대한 DBMS_CLOUD 패키지 형식 옵션을 참조하십시오. |
query |
이 매개변수를 사용하여 필요한 데이터만 익스포트되도록
예: |
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 미만인 경우 자율운영 AI 데이터베이스 인스턴스에 대한 데이터베이스 서비스 및 ECPU 수(데이터베이스에서 OCPU를 사용하는 경우 OCPU)에 따라 출력 파일이 여러 개 있을 수 있습니다.
자세한 내용은 텍스트 출력에 대한 파일 이름 지정(CSV, JSON, Parquet 또는 XML)을 참조하십시오.
기본 출력 파일 조각 크기는 CSV, JSON 또는 XML의 경우 10MB입니다.
format매개변수maxfilesize옵션을 사용하여 이 값을 변경할 수 있습니다. 자세한 내용은 EXPORT_DATA용 DBMS_CLOUD 패키지 형식 옵션을 참조하십시오. -
CSV, JSON 또는 XML 출력의 경우 기본적으로 생성된 파일에 10MB의 데이터가 포함된 경우 새 출력 파일이 생성됩니다. 그러나 결과 데이터가 10MB 미만인 경우 자율운영 AI 데이터베이스 인스턴스에 대한 데이터베이스 서비스 및 ECPU 수(데이터베이스에서 OCPU를 사용하는 경우 OCPU)에 따라 출력 파일이 여러 개 있을 수 있습니다.
자세한 내용은 텍스트 출력에 대한 파일 이름 지정(CSV, JSON, Parquet 또는 XML)을 참조하십시오.
-
Parquet 출력 형식은 전용 Exadata 인프라의 자율운영 AI 데이터베이스에 대한 상위 및 중간 데이터베이스 서비스에서만 사용할 수 있습니다.
디렉토리에 대한 출력과 함께 `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
예
예: json 값을 가진 type 매개변수 형식의 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;
/
예: xml 값을 가진 type 매개변수 형식의 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;
/
예: csv 값을 가진 type 매개변수 형식의 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 프로시저 및 함수
이 프로시저는 오버로드됩니다. 프로시저 폼은 클라우드 객체 스토리지에서 객체를 읽어 자율운영 AI 데이터베이스에 복사합니다. 함수 양식은 클라우드 오브젝트 스토리지에서 객체를 읽고 BLOB를 자율운영 AI 데이터베이스로 반환합니다.
구문
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;
반환 값
함수 폼은 Object Store에서 읽으며 DBMS_CLOUD.GET_OBJECT는 BLOB를 반환합니다.
예
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은 버킷 이름입니다. 자세한 내용은 객체 스토리지 네임스페이스 이해를 참조하십시오.
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를 반환합니다.DBMS_CLOUD.LIST_FILES는directory:filename구문을 사용하여 선택적으로 파일 필터링을 지원합니다. 파일 이름에서 와일드 카드 문자가 지원됩니다.
예
예제: 다음 질의를 사용하여 DBMS_CLOUD.LIST_FILES를 각 파일에 대한 행을 반환하는 파이프라인 함수로 사용합니다.
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
파일을 지정하거나 와일드카드를 사용하여 DBMS_CLOUD.LIST_FILES를 DIRECTORY:FILE 구문과 함께 사용할 수도 있습니다. 지원되는 와일드카드 문자는 * 및 ?입니다.
예: 와일드카드를 사용하여 DATA_PUMP_DIR 디렉토리에 "f"로 시작하는 모든 CSV 파일을 나열합니다.
SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR:f*.csv');
예: 파일 이름을 지정하여 DATA_PUMP_DIR 디렉토리에 f1.csv 파일을 나열합니다.
SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR:f1.csv');
LIST_OBJECTS 함수
이 함수는 객체 저장소의 지정된 위치에 있는 객체를 나열합니다. 결과에는 크기, 체크섬, 생성 시간 기록 및 마지막 수정 시간 기록과 같은 객체에 대한 객체 이름과 추가 메타 데이터가 포함됩니다.
구문
DBMS_CLOUD.LIST_OBJECTS (
credential_name IN VARCHAR2,
location_uri IN VARCHAR2)
RETURN TABLE;
매개변수
| 매개변수 | 설명 |
|---|---|
credential_name |
클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다. |
location_uri |
오브젝트 스토리지 버킷 또는 폴더 URI입니다. URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오. 와일드카드는 URI의 파일 또는 하위 폴더를 선택적으로 나열하는 데 지원됩니다. " 와일드카드를 사용하는 예: |
사용법 참고
-
객체 저장소의 기능에 따라
DBMS_CLOUD.LIST_OBJECTS는 특정 속성에 대한 값을 반환하지 않으며 이 경우 필드에 대한 반환 값은NULL입니다.지원되는 모든 객체 저장소는
OBJECT_NAME,BYTES및CHECKSUM필드에 대한 값을 반환합니다. 다음 표에서는 객체 저장소별CREATED및LAST_MODIFIED필드에 대한 지원을 보여줍니다.객체 저장소 CREATEDLAST_MODIFIEDOracle Cloud Infrastructure 네이티브 반환 시간기록 반환 시간기록 Oracle Cloud Infrastructure 스와프트 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은 버킷 이름입니다. 자세한 내용은 객체 스토리지 네임스페이스 이해를 참조하십시오.
MOVE_OBJECT 프로시저
이 절차에서는 Cloud Object Storage 버킷 또는 폴더 간에 객체를 이동합니다.
소스 및 대상 버킷 또는 폴더는 동일하거나 다른 클라우드 객체 저장소 제공자에 있을 수 있습니다.
소스 및 대상이 고유한 객체 저장소에 있거나 동일한 클라우드 제공자의 계정이 서로 다른 경우 소스 및 대상 위치에 대해 별도의 인증서 이름을 지정할 수 있습니다.
소스 인증서 이름은 기본적으로 대상 인증서 이름이 제공되지 않은 경우 대상 위치에서도 사용됩니다.
구문
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_object_uri |
소스 오브젝트 스토리지 버킷 또는 폴더 위치를 가리키는 URI를 지정합니다. 이 매개변수는 필수입니다. URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오. |
target_object_uri |
파일을 이동해야 하는 대상 오브젝트 스토리지 버킷 또는 폴더에 대한 URI를 지정합니다. 이 매개변수는 필수입니다. URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오. |
target_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 프로시저
이 프로시저는 오버로드됩니다. 이 절차에서는 자율운영 AI 데이터베이스의 파일을 클라우드 오브젝트 스토리지로 복사합니다. 다른 형태의 절차에서는 자율운영 AI 데이터베이스에서 클라우드 객체 스토리지로 BLOB를 복사합니다.
구문
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 |
데이터베이스의 디렉토리 이름입니다. (아래 각주 1 참조) |
contents |
자율운영 AI 데이터베이스에서 클라우드 객체 스토리지로 복사할 BLOB을 지정합니다. |
file_name |
지정된 디렉토리에 있는 파일의 이름입니다. |
compression |
객체를 저장하는 데 사용되는 압축을 지정합니다. 기본값: |
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 스토리지 | 256 MB |
| Amazon S3 호환 | 객체 저장소 제공자에 의해 설정됩니다. 자세한 내용은 제공자의 설명서를 참조하십시오. |
Oracle Cloud Infrastructure 객체 저장소에서는 인증서를 제공하지 않고는 퍼블릭 버킷에 파일을 쓸 수 없습니다. 사용자는 Oracle Cloud Infrastructure를 사용하여 퍼블릭 버킷에서 객체를 다운로드할 수 있습니다. 따라서 PUT_OBJECT를 사용하여 객체를 Oracle Cloud Infrastructure 퍼블릭 버킷에 저장하려면 적합한 인증서로 인증서 이름을 제공해야 합니다.
자세한 내용은 Cloud Object Storage 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 프로시저
이 프로시저는 외부 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. 오버로드된 폼을 사용하여 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 프로시저
이 프로시저는 외부 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. 오버로드된 폼을 사용하여 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 |
행이 거부될 때 검증이 정지되어야 하는지 여부를 결정합니다. 기본값은 External Table이 Avro, ORC 또는 Parquet 파일을 참조하면 첫 번째 거부된 행에서 검증이 중지됩니다. 외부 테이블에서 |
사용 노트
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE는 분할된 외부 테이블과 하이브리드 분할 테이블 모두에서 작동합니다. 이 경우 rowcount에 도달하거나 stop_on_error가 적용될 때까지 모든 외부 분할 영역에서 데이터를 읽을 수 있습니다. 어떤 분할 영역 또는 분할 영역의 일부가 어떤 순서로 읽혀지는지에 대한 제어 권한이 없습니다.
VALIDATE_HYBRID_PART_TABLE 프로시저
이 절차에서는 하이브리드 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 하이브리드 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. 오버로드된 폼을 사용하여 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 매개변수에 대해 지정된 값까지 모든 행을 검증합니다. |