DBMS_CLOUD Avro, ORC 및 Parquet Support

이 섹션에서는 자율운영 AI 데이터베이스와 함께 제공되는 DBMS_CLOUD Avro, ORC 및 Parquet 지원에 대해 다룹니다.

Avro, ORC 또는 Parquet에 대한 DBMS_CLOUD 패키지 형식 옵션

DBMS_CLOUD의 형식 인수는 소스 파일의 형식을 지정합니다.

형식 인수를 지정하는 두 가지 방법은 다음과 같습니다.

format => '{"format_option" : "format_value" }'

and

format => json_object('format_option' value 'format_value')

예를 들면 다음과 같습니다.

format => json_object('type' VALUE 'CSV')

여러 형식 옵션을 지정하려면 값을 ","로 구분합니다.

예:

format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
형식 옵션 설명 구문
regexuri

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

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

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

External Table의 경우 이 옵션은 Object Storage의 파일에 생성되는 테이블에서만 지원됩니다.

예:

format => JSON_OBJECT('regexuri' value TRUE)

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

regexuri: True

기본값:False

type 파일 유형을 지정합니다.

type: avro | orc | parquet

schema

스키마가 first 또는 all로 설정된 경우 외부 테이블 열 및 데이터 유형은 Avro, ORC 또는 Parquet 파일 메타데이터에서 자동으로 파생됩니다.

열 이름은 Avro, ORC 또는 Parquet에 있는 이름과 일치합니다. 데이터 유형은 Avro, ORC 또는 Parquet 데이터 유형에서 Oracle 데이터 유형으로 변환됩니다. 모든 열은 테이블에 추가됩니다.

first 값은 file_uri_list의 첫번째 Avro, ORC 또는 Parquet 파일의 메타데이터를 사용하여 열 및 해당 데이터 유형을 자동으로 생성하도록 지정합니다. 모든 파일의 스키마가 동일한 경우 first를 사용합니다.

all 값은 file_uri_list에 있는 모든 Avro, ORC 또는 Parquet 파일의 메타데이터를 사용하여 열 및 해당 데이터 유형을 자동으로 생성하도록 지정합니다. 파일에 다른 스키마가 있을 수 있는 경우 all(느림)을 사용합니다.

기본값: column_list가 지정된 경우 schema 값이 무시됩니다. column_list가 지정되지 않은 경우 schema 기본값은 first입니다.

주: Avro, ORC 또는 Parquet 형식 파일의 경우 schema 형식 옵션을 사용할 수 없으며 DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE 프로시저를 사용하여 분할된 External Table에 대해 column_list 매개변수를 지정해야 합니다.

schema : first | all

DBMS_CLOUD 패키지 Avro와 Oracle 데이터 유형 매핑

Oracle 데이터 유형에 대한 Avro 데이터 유형 매핑을 설명합니다.

주: 맵, 배열 및 구조와 같은 복잡한 유형은 Oracle Database 19c부터 지원됩니다. Avro 복합 유형 사용에 대한 자세한 내용은 DBMS_CLOUD Package Avro, ORC, and Parquet Complex Types을 참조하십시오.

평균 유형 Oracle 유형
INT NUMBER(10)
LONG 번호(19)
부울 번호(1)
UTF8 바이트 배열 RAW(2000)
사이트맵 BINARY_FLOAT
DBL BINARY_DOUBLE
소수(p) 숫자(p)
소수(p,s) 숫자(p,s)
DATE DATE
STRING VARCHAR2
시간 밀리초 VARCHAR2(20바이트)
시간_마이크로 VARCHAR2(20바이트)
타임스탬프 밀리스 TIMESTAMP(3)
타임스탬프_마이크로 TIMESTAMP(6)
열거 VARCHAR2(n) 여기서 "n"은 AVRO ENUM의 가능한 값의 실제 최대 길이입니다.
DURATION RAW(2000)
고정됨 RAW(2000)
NULL VARCHAR2(1) 바이트

Avro 복합 유형 사용에 대한 자세한 내용은 DBMS_CLOUD Package Avro, ORC, and Parquet Complex Types을 참조하십시오.

DBMS_CLOUD 패키지 ORC와 Oracle 데이터 유형 매핑

Oracle 데이터 유형에 대한 ORC 데이터 유형의 매핑을 설명합니다.

ORC 복합 유형 사용에 대한 자세한 내용은 DBMS_CLOUD Package Avro, ORC, and Parquet Complex Types을 참조하십시오.

ORC 유형 Oracle 유형 추가 정보
배열 VARCHAR2(n) JSON 형식 DBMS_CLOUD 패키지 Avro, ORC 및 Parquet Complex 유형
bigint(64비트) 번호(19)  
바이너리 BLOB  
부울(1비트) 번호(1)  
char CHAR(n)  
날짜 DATE  
double BINARY_DOUBLE  
float BINARY_FLOAT  
int(32비트) NUMBER(10)  
list VARCHAR2(n) JSON 형식 DBMS_CLOUD 패키지 Avro, ORC 및 Parquet Complex 유형
VARCHAR2(n) JSON 형식 DBMS_CLOUD 패키지 Avro, ORC 및 Parquet Complex 유형
smallint(16비트) 숫자(5)  
string VARCHAR2(4000)  
struct VARCHAR2(n) JSON 형식 DBMS_CLOUD 패키지 Avro, ORC 및 Parquet Complex 유형
시간기록 TIMESTAMP  
tinyint(8비트) 번호(3)  
union VARCHAR2(n) JSON 형식 DBMS_CLOUD 패키지 Avro, ORC 및 Parquet Complex 유형
varchar VARCHAR2(n)  

DBMS_CLOUD 패키지와 Oracle 데이터 유형 간 매핑

Oracle 데이터 유형에 대한 Parquet 데이터 유형의 매핑을 설명합니다.

주: 맵, 배열 및 구조와 같은 복잡한 유형은 Oracle Database 19c부터 지원됩니다. Parquet 복합 유형 사용에 대한 자세한 내용은 DBMS_CLOUD Package Avro, ORC, and Parquet Complex Types을 참조하십시오.

연회 유형 Oracle 유형
UINT_64 번호(20)
INT_64 번호(19)
UINT_32 NUMBER(10)
INT_32 NUMBER(10)
UINT_16 숫자(5)
INT_16 숫자(5)
UINT_8 번호(3)
INT_8 번호(3)
부울 번호(1)
UTF8 바이트 배열 VARCHAR2(4000바이트)
사이트맵 BINARY_FLOAT
DBL BINARY_DOUBLE
소수(p) 숫자(p)
소수(p,s) 숫자(p,s)
DATE DATE
STRING VARCHAR2(4000)
시간 밀리초 VARCHAR2(20바이트)
시간_밀리_UTC VARCHAR2(20바이트)
시간_마이크로 VARCHAR2(20바이트)
시간_마이크로_UTC VARCHAR2(20바이트)
타임스탬프 밀리스 TIMESTAMP(3)
타임스탬프_밀리스_UTC TIMESTAMP(3)
타임스탬프_마이크로 TIMESTAMP(6)
타임스탬프_마이크로_UTC TIMESTAMP(6)
TIMESTAMP_NANOS TIMESTAMP(9)

Parquet 복합 유형 사용에 대한 자세한 내용은 DBMS_CLOUD Package Avro, ORC, and Parquet Complex Types을 참조하십시오.

DBMS_CLOUD 패키지 Oracle 데이터 유형-파케 매핑

Parquet 데이터 유형에 대한 Oracle 데이터 유형 매핑을 설명합니다.

Oracle 유형 연회 유형
BINARY_DOUBLE DBL
BINARY_FLOAT 사이트맵
DATE DATE
숫자(p,s) 소수(p,s)
숫자(p) 소수(p)
TIMESTAMP(3) 타임스탬프 밀리스
TIMESTAMP(3) 타임스탬프_밀리스_UTC
TIMESTAMP(6) 타임스탬프_마이크로
TIMESTAMP(6) 타임스탬프_마이크로_UTC
TIMESTAMP(9) TIMESTAMP_NANOS
VARCHAR2(4000) STRING

NLS 세션 매개변수

NLS 세션 매개변수 NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT, NLS_TIMESTAMP_TZ_FORMATNLS_NUMERIC_CHARACTERS는 해당 열 유형이 있는 테이블을 질의할 때 날짜, 시간기록, 시간대 형식이 있는 시간기록 및 소수 표시자가 있는 시간기록에 대한 반지름 구분 기호를 표시하는 방법을 정의합니다.

또한 DBMS_CLOUD.EXPORT_DATA를 사용하여 데이터를 익스포트하고 Parquet 출력을 지정할 때 자율운영 AI 데이터베이스는 NLS_SESSION_PARAMETERS 테이블에서 해당 매개변수의 값을 읽습니다. 자율운영 AI 데이터베이스는 이 값을 사용하여 Oracle 데이터 유형 DATE 또는 TIMESTAMP을 Parquet 유형으로 변환합니다.

NLS_SESSION_PARAMETERS 매개변수는 RR 형식 마스크(2자 연도 사양)를 지원합니다.

DBMS_CLOUD.EXPORT_DATA를 사용하여 Parquet에 데이터를 익스포트하는 경우 해당 매개변수에 대해 연도의 RR 형식 마스크가 지원되지 않습니다. parquet로 내보내고 NLS_SESSION_PARAMETERSRR 형식 마스크를 사용하도록 설정된 경우 응용 프로그램 오류가 발생합니다. RR 형식의 기본값은 NLS_TERRITORY 매개변수의 값에 따라 다릅니다.

NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT 또는 NLS_TIMESTAMP_TZ_FORMAT 매개변수 중 하나가 RR 형식 마스크를 사용하는 경우 형식 값을 지원되는 값으로 변경하여 데이터를 DBMS_CLOUD.EXPORT_DATA와 함께 Parquet로 익스포트해야 합니다. 예:

ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY";
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF';
ALTER SESSION SET  NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH:MI:SS.FF TZH:TZM';

값을 변경한 후 NLS_SESSION_PARAMETERS 뷰를 질의하여 변경 사항을 확인할 수 있습니다.

SELECT value FROM NLS_SESSION_PARAMETERS
       WHERE parameter IN ('NLS_DATE_FORMAT','NLS_TIMESTAMP_FORMAT','NLS_TIMESTAMP_TZ_FORMAT');

NLS_DATE_FORMAT가 설정된 경우 데이터 유형이 DATE인 열에 적용됩니다. NLS_TIMESTAMP_FORMAT가 설정된 경우 TIMESTAMP 데이터 유형이 있는 열에 적용됩니다. NLS_TIMESTAMP_TZ_FORMAT가 설정된 경우 데이터 유형이 TIMESTAMP WITH TIME ZONE인 열에 적용됩니다.

자세한 내용은 Oracle Database 19c Database Globalization Support GuideDate and Time Parameters 또는 Oracle Database 26ai Database Globalization Support GuideOracle Database 26ai Database Globalization Support GuideNLS Data Dictionary Views를 참조하거나 Oracle Database 26ai Database Globalization Support Guide를 참조하십시오.

DBMS_CLOUD 패키지 Avro, ORC 및 Parquet Complex 유형

Avro, ORC 및 Parquet 복합 데이터 유형을 Oracle 데이터 유형과 매핑하는 방법을 설명합니다.

자율운영 AI 데이터베이스는 다음과 같은 복잡한 유형을 포함한 복잡한 데이터 유형을 지원합니다.

Avro, ORC 또는 Parquet의 소스 파일 유형을 지정하고 소스 파일에 복합 열이 포함된 경우 자율운영 AI 데이터베이스 쿼리는 복합 열에 대한 JSON을 반환합니다. 이렇게 하면 쿼리 결과 처리가 간소화됩니다. Oracle의 강력한 JSON 구문 분석 기능을 파일 유형 및 데이터 유형 전반에서 일관되게 사용할 수 있습니다. 다음 표에서는 자율운영 AI 데이터베이스의 복합 유형에 대한 형식을 보여줍니다.

주: 복합 필드는 VARCHAR2 열에 매핑되고 VARCHAR2 크기 제한이 적용됩니다.

유형 Parquet ORC Avro Oracle
List: 값 시퀀스 나열 나열 Array VARCHAR2(JSON 형식)
맵: 단일 키가 있는 객체 목록 VARCHAR2(JSON 형식)
조합: 다른 유형의 값 사용할 수 없음 결합 결합 VARCHAR2(JSON 형식)
객체: 0개 이상의 키-값 쌍 구조 구조 레코드 VARCHAR2(JSON 형식)

ORC, Parquet 또는 Avro 소스 파일에 복합 유형이 포함된 경우 이러한 공통 복합 유형에 대한 JSON 출력을 쿼리할 수 있습니다. 예를 들어, 다음은 복잡한 유형의 ORC 파일 movie-info.orc를 보여줍니다. Parquet 및 Avro 소스 파일에 대해 동일한 복잡한 유형 처리가 적용됩니다.

다음 스키마를 사용하여 movie-info.orc 파일을 고려합니다.

id    int
original_title string
overview       string
poster_path    string
release_date   string
vote_count     int
runtime        int
popularity     double
genres         array<struct<id:int,name:string>

각 동영상은 genres 배열을 사용하여 여러 genres로 분류됩니다. genres 배열은 structsarray이며 각 항목에는 id(int) 및 name(string)가 있습니다. genres 배열은 복합 유형으로 간주됩니다. 다음과 같이 DBMS_CLOUD.CREATE_EXTERNAL_TABLE를 사용하여 이 ORC 파일에 대해 테이블을 생성할 수 있습니다.

BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name =>'movie_info',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/mytenancy/b/movies/o/movie-info.orc',
        format => '{"type":"orc", "schema": "first"}');
END;
/

External Table을 생성하면 데이터베이스는 ORC 파일의 스키마를 기반으로 열을 자동으로 생성합니다(Avro 또는 Parquet를 사용 중인 경우 동일한 열이 적용됩니다). 이 예에서 DBMS_CLOUD.CREATE_EXTERNAL_TABLE는 다음과 같이 데이터베이스에 테이블을 생성합니다.

CREATE TABLE "ADMIN"."MOVIE_INFO"
    ( "ID"
      NUMBER(10,0),
      "ORIGINAL_TITLE"  VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
      "OVERVIEW"        VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
      "POSTER_PATH"     VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
      "RELEASE_DATE"    VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
      "VOTE_COUNT"      NUMBER(10,0),
      "RUNTIME"         NUMBER(10,0),
      "POPULARITY"      BINARY_DOUBLE,
      "GENRES"          VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP"
    )  DEFAULT COLLATION "USING_NLS_COMP"
    ORGANIZATION EXTERNAL
     ( TYPE      ORACLE_BIGDATA
       DEFAULT DIRECTORY "DATA_PUMP_DIR"
       ACCESS PARAMETERS
       ( com.oracle.bigdata.credential.name=OBJ_STORE_CRED
         com.oracle.bigdata.fileformat=ORC
   )
       LOCATION
        (
      'https://objectstorage.us-phoenix-1.oraclecloud.com/n/mytenancy/b/movies/o/movie-info.orc'
           )
     )
   REJECT LIMIT UNLIMITED
   PARALLEL;
 )

이제 movie 데이터를 질의할 수 있습니다.

SELECT original_title, release_date, genres
     FROM movie_info
     WHERE release_date > '2000'
     ORDER BY original_title;

이 결과는 다음과 같습니다.

original_title              release_date   genres
(500) Days of Summer        2009           [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},{"id":17,"name":"Horror"},{"id":19,"name":"Western"},{"id":18,"name":"War"},{"id":15,"name":"Romance"}]
10,000 BC                   2008           [{"id":6,"name":"Comedy"}]
11:14                       2003           [{"id":9,"name":"Thriller"},{"id":14,"name":"Family"}]
127 Hours                   2010           [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"}]
13 Going on 30              2004           [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},{"id":18,"name":"War"},{"id":15,"name":"Romance"}]
1408                        2007           [{"id":45,"name":"Sci-Fi"},{"id":6,"name":"Comedy"},{"id":17,"name":"Horror"},{"id":6,"name":"Comedy"},{"id":18,"name":"War"}]

복합 유형 genres가 JSON 배열로 반환됩니다.

JSON 데이터를 더 유용하게 만들기 위해 Oracle의 JSON 함수를 사용하여 열을 변환할 수 있습니다. 예를 들어, JSON "." 표기법과 JSON_TABLE와 같은 더 강력한 변환 함수를 사용할 수 있습니다.

"." 표기법에 대한 자세한 내용은 Oracle Database 19c JSON Developer's GuideSimple Dot-Notation Access to JSON Data 또는 Oracle Database 26ai JSON Developer's Guide를 참조하십시오.

JSON_TABLE에 대한 자세한 내용은 Oracle Database 19c JSON Developer's GuideSQL/JSON Function JSON_TABLE 또는 Oracle Database 26ai JSON Developer's Guide를 참조하십시오.

다음 예제는 배열의 각 값을 가져와서 값을 결과 집합의 행으로 바꾸는 테이블에 대한 query를 보여줍니다.

SELECT original_title, release_date, m.genre_name, genres
    FROM movie_info mi,
       JSON_TABLE(mi.genres, '$.name[*]'
        COLUMNS (genre_name VARCHAR2(25) PATH
      '$')
                 ) AS m
 WHERE rownum < 10;

JSON_TABLE는 배열의 각 값에 대한 행을 생성하고, 포괄 조인을 생각하며, 구조체는 장르의 이름을 추출하기 위해 구문 분석됩니다. 그러면 다음 출력이 생성됩니다.

original_title                   release_date         genre_name        genres
(500) Days of Summer             2009                 Drama             [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 Comedy            [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 Horror            [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 Western           [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 War               [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 Romance           [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
10,000 BC                        2008                 Comedy            [{"id":6,"name":"Comedy"}]
11:14                            2003                 Family            [{"id":9,"name":"Thriller"},{"id":14,"name":"Family"}]
11:14                            2003                 Thriller          [{"id":9,"name":"Thriller"},{"id":14,"name":"Family"}]
127 Hours                        2010                 Comedy            [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"}]
127 Hours                        2010                 Drama             [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"}]
13 Going on 30                   2004                 Romance           [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
13 Going on 30                   2004                 Comedy            [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
13 Going on 30                   2004                 War               [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
13 Going on 30                   2004                 Drama             [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]

DBMS_CLOUD 패키지 Avro, ORC 및 Parquet to Oracle 열 이름 매핑

Avro, ORC 및 Parquet 열 이름이 Oracle 열 이름으로 변환되는 방법에 대한 규칙을 설명합니다.

다음은 Avro, ORC 및 Parquet 열 이름에 대해 지원되지만 External Table의 Oracle SQL 참조에 대해 큰따옴표를 사용해야 할 수도 있습니다. 따라서 사용하기 쉽고 열 이름을 참조할 때 큰따옴표를 사용할 필요가 없도록 하려면 가능한 경우 Avro, ORC 및 Parquet 열 이름에 다음을 사용하지 마십시오.

다음 표에서는 다양한 유형의 Avro, ORC 및 Parquet 열 이름과 External Table의 Oracle 열 이름에 열 이름을 사용하는 규칙을 보여줍니다.

Avro, ORC 또는 Parquet 이름 CREATE TABLE 이름 Oracle 카탈로그 적합한 SQL 참고
부품, 부품 또는 PART 부품, 부품, 부품 부분

select part

select Part

select paRt

select PART

Oracle은 따옴표로 묶이지 않은 열 이름을 암시적으로 대문자로 사용합니다.
주문 번호 "주문 번호" 주문 번호 select "Ord No" 공백이 포함된 경우 큰따옴표가 필요하며 문자 대소문자도 보존됩니다.
__인덱스_키__ "__index_key__" __인덱스_키__ select "__index_key__" 문자 대소문자를 보존하는 선행 밑줄이 있는 경우 큰따옴표가 필요합니다.
6Way "6방향" 6Way select "6Way" 문자 대소문자를 보존하는 선행 숫자가 있는 경우 큰따옴표가 필요합니다.
생성, 생성 또는 생성 등(모든 사례 변형) PARTITION, PARTITION, PARTITION 등(Oracle Reserved 단어) "파티션 생성" 파티션 생성

select "CREATE"

select "PARTITION"

Oracle SQL Reserved 단어는 큰따옴표로 묶어야 합니다. 이러한 키는 대문자로 강제되지만 SQL의 어느 곳에서나 사용될 때는 항상 큰 따옴표를 사용해야 합니다.
ROWID, ROWID, ROWID 등(ROWID는 주 참조) ROWID  

select "rowid"

select "Rowid"

select "ROWid"

select "rowid"

ROWID의 경우, 혼합 또는 소문자 변형 ROWID는 이 경우를 보존하며 항상 큰 따옴표를 붙여야 하며 원래의 대소문자 변형을 사용해야 합니다. 테이블의 Oracle ROWID와의 고유 충돌로 인해 대문자 ROWID를 지정하면 자동으로 소문자 "ROWID"로 저장되며 참조 시 항상 이중 따옴표를 사용해야 합니다.