4 クラウド・ストレージの使用
SQLclリリース21.2以降、DBMS_CLOUD
パッケージを認証に使用して、クラウド・ストレージ内のオブジェクトにアクセスできます。
OCI
またはDBMS_CLOUD
を使用して、次の処理を実行できます。
- クラウド・ストレージでオブジェクトを配置、取得、削除およびピークします。
- クラウド・ストレージ内のオブジェクトからデータベース・オブジェクトをロードします。
- データベース表をクラウド・ストレージ内のオブジェクトにアンロードします。
表4-1 クラウド・ストレージへのアクセス
OCIを使用 | DBMS_CLOUD を使用 |
---|---|
オンプレミス・データベースとクラウド・データベースにアクセスできます | クラウド・データベースのみにアクセスできます |
デフォルトのクラウド・ストレージURLを設定し、コンパートメント、バケットおよびオブジェクトをリストし、クラウド・ストレージ内のオブジェクトの内容の一部を表示します | デフォルトのクラウド・ストレージURLを設定し、オブジェクトをリストし、クラウド・ストレージ内のオブジェクトの内容の一部を表示します |
認証およびアクセス用のOCIプロファイルを前提条件ステップとして作成します | 認証は既存のOCIまたはSwift資格証明を使用して実行されます |
クラウド・ストレージ(cs
)コマンドを使用して、デフォルトのクラウド・ストレージURIを設定し、コンパートメント、バケットおよびオブジェクトをリストし、クラウド・ストレージ内のオブジェクトの内容の一部を表示します。
トピック
4.1 認証でのDBMS_CLOUDの使用
クラウド・ストレージには、DBMS_CLOUD
Credentialコマンドを使用してアクセスできます。現在、DBMS_CLOUD
CredentialはOracle Cloudデータベースをサポートしています。
DBMS_CLOUD
Credentialコマンド(dbcc
)を使用すると、次のことができます。
- Swift、OCI資格証明または既存のOCIプロファイルを使用して資格証明を作成します。
- 資格証明を有効化、無効化、更新および削除します。
- 資格証明をリストします。
- デフォルトの資格証明を設定します。
資格証明の作成
Swift資格証明を使用して認証を作成するには、次のコマンドを使用します。
dbcc create <new-credential-name> user <username> pass <password>
OCI資格証明を使用して認証を作成するには、次のコマンドを使用します。
dbcc create <new-credential-name> fingerprint <fingerprint> user_ocid <user-id> tenancy_ocid <tenancy-id> private_path <path-to-private-key>
OCIプロファイルを使用して認証を作成するには、次のコマンドを使用します。
dbcc create <new-credential-name> profile <oci-profile-name>
資格証明の有効化、無効化、更新および削除
資格証明を有効にするには、次のコマンドを使用します。
dbcc enable <credential-name>
資格証明を無効にするには、次のコマンドを使用します。
dbcc disable <credential-name>
資格証明を更新するには、次のコマンドを使用します。
dbcc update <credential-name> <attribute> <value>
ここで、<attribute> : [user_ocid] [tenancy | tenancy_id] [key_path | private_key_path] [print | fingerprint]
資格証明を削除するには、次のコマンドを使用します。
dbcc drop <credential-name>
資格証明のリスト
使用可能な資格証明のリストを表示するには、次のコマンドを使用します。
dbcc list
デフォルトの資格証明の設定
mycred
をデフォルトの資格証明として設定するには、次のコマンドを使用します。
dbcc mycred
dbcc
コマンドのヘルプを検索するには、次のコマンドを使用します。
help dbccred
DBMS_CLOUD資格証明を作成して設定する例
次の例では、様々なタイプのDBMS_CLOUD
資格証明を作成して設定するステップを詳しく説明します。
--Set the path to the Wallet zip file on your system
SQL> set cloudconfig <path-to-Wallet-file>
Operation is successfully completed.
--Supply the database user name, password and the database service name provided in the tnsnames.ora
SQL> connect admin/<password>@adw20200526_high
Connected.
--Set Cloud Storage URL to the bucket
SQL> cs https://objectstorage.us-ashburn-1.example.com/n/test/b/example
DBMS_CLOUD Credential: Not Set
OCI Profile: Not Set
Transer Method: Not Set
URI as specified: https://objectstorage.us-ashburn-1.example.com/n/test/b/example
--create CREDENTIAL using Swift authentication
SQL> dbcc create swiftcred user <username> pass <password>
Credential SWIFTCRED created.
DBMS_CLOUD Credential set to SWIFTCRED.
Transfer method set to DBMS_CLOUD.
--create CREDENTIAL using OCI authentication
SQL> dbcc create ocicred fingerprint ec:98:83:**:**:**:b5
user_ocid ocid1.user.oc1......**g4xoca
tenancy_ocid ocid1.tenancy.oc1.....a**3n3a
private_path C:\\Users\\test\\.oci/freedb_api_key.pem
Credential OCICRED created.
DBMS_CLOUD Credential set to OCICRED.
Transfer method set to DBMS_CLOUD.
--create CREDENITAL using an existing OCI profile called freedb
--If profile name is not passed as a parameter, it takes the default
OCI profile details which is already set.
SQL> dbcc create profcred profile [freedb]
Credential PROFCRED created.
DBMS_CLOUD Credential set to PROFCRED.
Transfer method set to DBMS_CLOUD.
4.2 OCI認証用のOCIプロファイルの作成
OCI認証方式を使用するには、まずOCIプロファイルを設定する必要があります。
必要なSSHキーの設定方法およびOracle Cloud Infrastructureソフトウェア開発キットの構成方法の詳細は、Oracle Cloud Infrastructureドキュメントの設定および前提条件を参照してください。
次の点に注意してください:
-
RSAキー・ペアを、PEM形式(2048ビット以上が必要)およびパスフレーズなしで生成します。このkey_fileをプロファイルで使用します。
-
相対パスはSQLclの起動ディレクトリに基づいて解決されるため、構成ファイル内で相対パスを使用しないでください。使用した場合、key_fileが見つからない可能性があります。
-
Windowsでkey_fileのパスを指定するには、単一の円記号(\)のかわりに二重の円記号(\\)を使用します。
OCI構成ファイル(~/.oci/config
)に含まれるプロファイルのリストを表示するには、次のコマンドを使用します。
oci profile
プロファイルにdemo
を設定するには、次のコマンドを使用します。
oci profile demo
4.3 クラウド・ストレージ・コマンドのオプション
SQLclでcloudstorage
、cloud_storage
またはcs
を使用して、クラウド・ストレージ・コマンドを起動できます。
- デフォルトのクラウド・ストレージURIを設定および表示します
- 転送方法、プロファイルおよび資格証明を設定および表示します
- クラウド・ストレージのコンパートメント、バケットおよびオブジェクトをリストします
- クラウド・ストレージ・オブジェクトを取得、配置、削除およびピークします。
SQLclのCloud Storageコマンドのオプションのリストを表示するには、次のように入力します。
help cs
コマンド・オプションは次のとおりです。-
cs [ uri ] <uri>
: デフォルトのクラウド・ストレージURIを設定します。URIには、ホストとオプションでネームスペース、バケットおよびオブジェクトが含まれている必要があります。Example: --host cs https://objectstorage.us-ashburn-1.oraclecloud.com --namespace cs https://objectstorage.us-ashburn-1.oraclecloud.com/n/test –-bucket cs https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example --object cs https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example/o/employees.csv
-
cs oci [<profile>]
: デフォルトの転送をOCIに設定します。オプションで、使用するプロファイルを指定します。 cs {DBC | DBMS_CLOUD} [<credential>]
: デフォルトの転送をDBMS_CLOUDに設定します。オプションで、使用する資格証明を指定します。-
cs clear
: URIおよび転送のオプションを含むクラウド・ストレージの設定をクリアします。 -
cs show
: 現在のデフォルトのクラウド・ストレージURI、転送方法、プロファイルおよび資格証明を表示します。 -
cs listc [ <compartment> ]
: 指定されたコンパートメント内のコンパートメントをリストします。コンパートメントが指定されていない場合は、プロファイルで指定されているネームスペース内のコンパートメントをリストします。(OCIのみ) -
cs listb <compartment>
: コンパートメント内のバケットをリストします。(OCIのみ) -
cs listo [ <bucket> ]
: バケット内のオブジェクトをリストします。バケットは、URIまたはlisto
コマンドで指定する必要があります。 cs delete [<qualifier>]
: オブジェクトをクラウド・ストレージから削除します。cs get [<qualifier>]
: オブジェクトをクラウド・ストレージから取得します。cs PUT [file-to-send-as-body] <qualifier>
: ファイルをクラウド・ストレージにコピーします。-
cs peek [ <qualifier> ] [ { pos | position} <position> ] [ size <size> ]
: オブジェクトの内容を表示します:qualifierはオブジェクトの名前で、オプションでネームスペースおよびバケットによって修飾されます。修飾された名前と指定されたデフォルトURIの組合せによって、オブジェクトURIが完全に識別される必要があります。
positionは、オブジェクト内での表示の開始位置です。
sizeは、表示する文字数です。省略した場合、2000文字が表示されます。
4.4 例
この項では、いくつかの例を示します。
表へのクラウド・ストレージ・ファイルのロード
次の例は、クラウド・ストレージ・ファイルをデータベース表にロードする方法を示しています。
ユースケース1: DBMS_CLOUD
認証方式を使用している場合、DBMS_CLOUD
資格証明が設定され、転送方法がdbms_cloud
に設定されます。
--Set the DBMS_CLOUD credential
SQL> cs dbc swiftcred
--Set Cloud Storage URI to the bucket
SQL> cs https://objectstorage.us-ashburn-1.example.com/n/test/b/example
DBMS_CLOUD Credential: SWIFTCRED
OCI Profile: Not Set
Transfer Method: dbms_cloud
URI as specified: https://objectstorage.us-ashburn-1.example.com/n/test/b/example
ユース・ケース2: OCIプロファイル認証方式を使用している場合、OCIプロファイルが設定され、転送方法がoci
に設定されます。
--Set the OCI profile
SQL> cs oci demo
--Set Cloud Storage URI to the bucket
SQL> cs https://objectstorage.us-ashburn-1.example.com/n/test/b/example
DBMS_CLOUD Credential: Not Set
OCI Profile: Demo
Transfer Method: oci
URI as specified: https://objectstorage.us-ashburn-1.example.com/n/test/b/example
--Create Table "locations"
SQL> create table locations(location_id NUMBER(5),location_name VARCHAR2(40));
Table LOCATIONS created
--Load data from LOCATIONS_DATA_TABLE.csv in cloud storage into "locations" table of the schema for the current user
SQL> load locations cs /o/LOCATIONS_DATA_TABLE.csv
format csv
column_names on
delimiter ,
enclosure_left "
enclosure_right "
encoding UTF8
row_limit off
row_terminator default
skip_rows 0
skip_after_names
--Number of rows processed: 50
--Number of rows in error: 0
--Last row processed in final committed batch: 50
0 - SUCCESS: Load processed without errors
SQL> select count(*) from locations;
COUNT(*)
–--------
50
--Load data from LOCATIONS_DATA_TABLE.csv in your current local folder into "locations" table
of the schema for the current user
SQL> load locations cs LOCATIONS_DATA_TABLE.csv
クラウド・ストレージへの表データのアンロード
次の例は、locations
表からクラウド・ストレージにデータをアンロードする方法を示しています。データはクラウド・ストレージの場所にアンロードされ、LOCATIONS_DATA_TABLE.csv
という名前が付けられます。
--Set Cloud Storage URI to the bucket
SQL> cs https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example
–-Specify delimiter as | and terminator as <eol>
SQL> set loadformat delimiter | term <eol> csv
--Unload locations table into cloud storage
SQL> unload locations cs
DBMS_CLOUD Credential: SWIFTCRED --Using DBMS_CLOUD authentication
OCI Profile: Not Set
Transfer Method: dbms_cloud
URI as specified: https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example/o/
Final URI: https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example/o/
format csv
column_names on
delimiter |
enclosure_left "
enclosure_right "
encoding UTF8
row_terminator <eof>
** UNLOAD Start ** at 2020.09.10-17.08.34
Export Separate Files to https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example
DATA TABLE LOCATIONS
File Name: LOCATIONS_DATA_TABLE.csv
Number of Rows Exported: 23
** UNLOAD End ** at 2020.09.10-17.08.39
-- Show file contents
SQL> cs peek /o/LOCATIONS_DATA_TABLE.csv
"LOCATION_ID"|"LOCATION_NAME"<eof>01|"California"<eof>02|"Alaska<eof>03|"Florida"<eof>04|"Texas"<eof>05|"Virginia"<eof>
06|"Louisiana"<eof>07|"Massachusetts"<eof>08|"Arkansas"<eof>09|"Oregon"<eof>10|"Hawaii"<eof>11|"Maryland"<eof>
12|"Pennsylvania"<eof>13|"Colorado<eof>14|"Michigan"<eof>15|"Minnesota"<eof>16|"Ohio"<eof>17|"Maine"<eof>18|"Arizona"<eof>
19|"Missouri"<eof>20|"Vermont"<eof>21|"Kansas"<eof>22|"Nevada"<eof>23|"Illinois"
コンパートメント、バケットおよびオブジェクトのリスト
ノート:
DBMS_CLOUD
資格証明を使用する場合、バケット内のオブジェクトのみをリストできます。DBMS_CLOUD
の転送方法は、コンパートメントおよびバケットのリストをサポートしていません。
cs https://objectstorage.us-ashburn-1.oraclecloud.com/n/test
--Lists the compartments in the namespace
SQL> cs listc
COMP_APEX
dbtst
old
ords
pdf-fn-compartment
sandbox
sqldev
--Lists the compartments in the compartment sqldev
SQL> cs listc sqldev
sqldev1
--Lists the buckets in the compartment sqldev
SQL> cs listb sqldev
example
test
--Lists the objects in the bucket transfer
SQL> cs listo /b/example
COUNTRIES_DATA_TABLE.csv
DEPARTMENTS_DATA_TABLE.csv
REGIONS_DATA_TABLE.csv
LOCATIONS_DATA_TABLE.csv
--Displays the first 2000 characters of LOCATIONS_DATA_TABLE file
SQL> cs peek /o/LOCATIONS_DATA_TABLE.csv
PUTコマンドを使用したクラウド・ストレージへのローカル・ファイルのロード
次の例は、CS PUT
コマンドおよびCloud Storageコマンドを使用して、ローカル・ファイルをクラウド・ストレージにロードする方法を示しています。
--Set Cloud Storage URI to the bucket
SQL> cs https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example
--Put an object from local directory into cloud storage
SQL> cs put C:\\Users\\JDOE\\EMPLOYEES_DATA_TABLE.csv /o/myemployees.csv
Put C:\\Users\\JDOE\\EMPLOYEES_DATA_TABLE.csv copied
to https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example/o/myemployees.csv
--List the objects in the bucket
SQL> cs listo
COUNTRIES_DATA_TABLE.csv
DEPARTMENTS_DATA_TABLE.csv
REGIONS_DATA_TABLE.csv
LOCATIONS_DATA_TABLE.csv
myemployees.csv
GETコマンドを使用したクラウド・ストレージからのファイルの取得
次の例は、CS GET
コマンドとCloud Storageコマンドを使用してクラウド・ストレージからファイルを取得する方法を示しています。
--Set Cloud Storage URI to the bucket
SQL> cs https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example/o/
--Set the local directory
SQL> cd C:\\Users\JDOE\\TempCS
--Get the myemployees.csv file from cloud storage
SQL> cs get /o/myemployees.csv
Get Object https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example/o/myemployees.csv
copied to C:\Users\JDOE\TempCSemployees.csv
DELETEコマンドを使用したクラウド・ストレージ内のファイルの削除
次の例は、CS DELETE
コマンドとCloud Storageコマンドを使用してクラウド・ストレージ内のファイルを削除する方法を示しています。
--Set Cloud Storage URI to the bucket
SQL> cs https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example/o/
--Set the local directory
SQL> cd C:\\Users\JDOE\\TempCS
--Delete the myemployees.csv file in cloud storage
SQL> cs delete /n/test/b/example/o/myemployees.csv
Deleted Object
https://objectstorage.us-ashburn-1.oraclecloud.com/n/test/b/example/o/myemployees.csv
別のユーザーへのDBMS_CLOUD
資格証明の付与
次の例は、DBMS_CLOUD
資格証明を作成して別のユーザーに付与する方法を示しています。
-- Create a DBMS_CLOUD credential using oci-profile
SQL> dbcc create jdoecred profile freedb
DBMS_CLOUD Credential: JDOECRED
OCI Profile: Not Set
Transfer Method: dbms_cloud
URI as specified: https://objectstorage.us-ashburn-1.example.com/n/test/b/example
-- Grant jdoecred to user jdoe
SQL> grant all on jdoecred to jdoe;
-- Connect to the Cloud instance as jdoe
SQL> connect jdoe/********@adw20200526_high
-- Create a synonym for jdoecred
SQL> create synonym mycred for admin.jdoecred;
-- Set the transfer method using the synonym mycred
SQL> cs dbc mycred
-- User can now list the objects in the Cloud Storage 'test' bucket
because jdoe.mycred exists (as synonym)
SQL> cs listo