ADW/ATP(Autonomous DB)でOracle19cのPreviewが開始されました。
このPreview版で、Oracle Database19c 新機能 ハイブリッド・パーティション表を作成してみます。
Object Storageにアップロードしたファイルを外部表(パーティション)とします。
参考情報
- Oracle Database19c 新機能 ハイブリッド・パーティション表
- ADW/ATP(Autonomous DB)でObject StorageにアップロードされたCSVファイル(gzip圧縮済)を外部表(EXTERNAL TABLE)として直接参照する。(OCI, Oracle Cloud Infrastructure)
ADW/ATP(Autonomous DB)でOracle19c版の作成
今回はWebコンソールを使ってAutonomous Databaseを作成します。
作成ウィザードの中盤に「新しいデータベース・プレビュー・バージョン19cが使用可能」の選択が可能になっています。
(Preview機関の取り扱いには留意ください)
事前認証済リクエストのURLの利用の例
事前認証済リクエストのURLの取得
1.アップロードしたファイル(オブジェクト)の右側のメニューから「事前認証済リクエストの作成」を選択
2.「事前認証済リクエストの作成」をクリック(すべてデフォルトのままでOK)
3.表示される「事前認証済リクエストのURL」をメモ(右側のボタンでクリックボードにコピーが可能)
スキーマユーザでDDL文の実行
BEGIN
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
table_name =>'hybrid_partition_table',
format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii', 'skipheaders' value '1', 'dateformat' value 'RR-MM-DD'),
column_list => ' prod_id NUMBER,
cust_id NUMBER ,
time_id DATE ,
quantity_sold NUMBER(10,2),
amount_sold NUMBER(10,2)',
partitioning_clause => 'partition by range (time_id)
(
PARTITION sales_2018 VALUES LESS THAN (TO_DATE(''01-01-2019'',''dd-mm-yyyy'')) EXTERNAL LOCATION (''https://objectstorage.ap-tokyo-1.oraclecloud.com/p/YwSPf/o/sales2018_data.csv''),
PARTITION sales_2019 VALUES LESS THAN (TO_DATE(''01-01-2020'',''dd-mm-yyyy''))'
);
END;
/
EXTERNAL LOCATION に「事前認証済リクエストのURL」のURLを指定
DBMS_CLOUDパッケージ・フォーマット・オプション
[https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/format-options.html#GUID-08C44CDA-7C81-481A-BA0A-F7346473B703] (https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/format-options.html#GUID-08C44CDA-7C81-481A-BA0A-F7346473B703)
スキーマユーザでDDL文の実行(圧縮ファイル指定)
BEGIN
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
table_name =>'hybrid_partition_table',
format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii', 'skipheaders' value '1', 'dateformat' value 'RR-MM-DD','compression' value 'auto'),
column_list => ' prod_id NUMBER,
cust_id NUMBER ,
time_id DATE ,
quantity_sold NUMBER(10,2),
amount_sold NUMBER(10,2)',
partitioning_clause => 'partition by range (time_id)
(
PARTITION sales_2018 VALUES LESS THAN (TO_DATE(''01-01-2019'',''dd-mm-yyyy'')) EXTERNAL LOCATION (''https://objectstorage.ap-seoul-1.oraclecloud.com/p/YwSPf/o/sales2018_data.csv.gz''),
PARTITION sales_2019 VALUES LESS THAN (TO_DATE(''01-01-2020'',''dd-mm-yyyy''))'
);
END;
/
CREDENTIALの利用の例
認証トークンの生成
こちらの記事の「4. OCIユーザーの作成とGROUP設定、Auth Token生成」を参照ください。
CREDENTIALを作成
begin
DBMS_CLOUD.create_credential (
credential_name => 'OBJ_STORE_CRED', -- 任意の文字列
username => ‘<your username>’, -- 認証トークンを生成したOCIユーザー名
password => ‘<your Auth Token>‘ -- 生成した認証トークン
) ;
end;
/
Oracle Cloud Infrastructure Object Storage URI の取得
Object Storage のメニューから アップロードされた外部表に使用するCSVファイルの「オブジェクト詳細の表示」を選択し、「URLパス(URI)」をコピー
スキーマユーザでCredential を使用したDDL文の実行
BEGIN
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
table_name =>'hybrid_partition_table',
credential_name =>'OBJ_STORE_CRED',
format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii', 'skipheaders' value '1', 'dateformat' value 'RR-MM-DD'),
column_list => ' prod_id NUMBER,
cust_id NUMBER ,
time_id DATE ,
quantity_sold NUMBER(10,2),
amount_sold NUMBER(10,2)',
partitioning_clause => 'partition by range (time_id)
(
PARTITION sales_2018 VALUES LESS THAN (TO_DATE(''01-01-2019'',''dd-mm-yyyy'')) EXTERNAL LOCATION (''https://objectstorage.ap-tokyo-1.oraclecloud.com/p/_ZakYhMb5-1e_yiKxUCzgqyPT-nFL4kyVLWNsELD-Ps/n/nrzbmmnby7ly/b/bucket/o/*.csv''),
PARTITION sales_2019 VALUES LESS THAN (TO_DATE(''01-01-2020'',''dd-mm-yyyy''))'
);
END;
/
作成した「CREDENTIAL」のcredential_name を指定しEXTERNAL LOCATIONにObject Storage の「URLパス(URI)」を指定( EXTERNAL LOCATION には ワイルドカードが指定可能 )
--
Autonomous Databaseでもハイブリッド・パーティション表が利用できることを確認しました。
Object Storageのファイルを利用することで利便性を維持しながら、効率的な運用ができそうです。