autonomous databaseのデータをエクスポートする

Oracle Cloud always free Advent Calendar 2019の19日目です。

本日はautonomous databaseのデータをエクスポートしてみようと思います。
オンプレのOracle Databaseのデータをエクスポートする場合と異なり、Oracle Cloudのユーザが必要です。

 

エクスポートの流れとしては、
①autonomous databaseで使用するbucket操作用ユーザ&グループを作成
bucketを作成
③クレデンシャルを作成
④autonomous databaseからObject Storageへエクスポート
⑤Object Storageからエクスポートしたデータを取り出し

 

今回は、18日のswingbenchを使用するときに作成したデータをエクスポートしてみます。前提は15日のsqlplusからの接続ができていることとなります。

 

#ユーザの作成  (実行結果のid (user OCID)を控えておく)
oci iam user create --name bucketadmin --description bucketadmin
{
"data": {
"capabilities": {
"can-use-api-keys": true,
"can-use-auth-tokens": true,
"can-use-console-password": true,
"can-use-customer-secret-keys": true,
"can-use-smtp-credentials": true
},
"compartment-id": "ocid1.tenancy.oc1..aaaaaaaaeb3oom3w5bw3ebkgtvd2w2dbXXXXXXX",
・・・・・

 

#グループの作成 (実行結果のid (group OCID)を控えておく)
oci iam group create --name bucketgroup --description bucketgroup
{
"data": {
"compartment-id": "ocid1.tenancy.oc1..aaaaaaaaeb3oom3w5bw3ebkgtvd2w2dbljknl4ssgueXXXXXXX",
・・・・・


#グループへユーザの割り当て(user-idとgroup-idは先ほど作成したユーザーとグループのID)
oci iam group add-user \
--user-id ocid1.user.oc1..aaaaaaaaczvfhniqd6jses4jlgee2qsvn66lhyXXXXXXX \
--group-id ocid1.group.oc1..aaaaaaaamb25rdvw4pz3oirrgza7nbpepiqtbqlr73XXXXX

 

#bucketとobjectを管理できるポリシーの作成。ポリシーはグループに割り当てる
oci iam policy create --name bucketgroup_policy \
--statements '["Allow group bucketgroup to manage buckets in tenancy","Allow group bucketgroup to manage objects in tenancy"]' \
--description bucketgroup_policy

#AUTHトークンの作成
oci iam auth-token create \
--user-id ocid1.user.oc1..aaaaaaaaczvfhniqd6jses4jlgee2qsvn66lhymXXXXXXXX \
--description bucketgroup

#bukectの作成
oci os bucket create --name adw_bucket
{
"data": {
・・・・・
"namespace": "nrz2zsre72gm",
"object-events-enabled": false,
"object-lifecycle-policy-etag": null,
"public-access-type": "NoPublicAccess",
"storage-tier": "Standard",
"time-created": "2019-12-05T14:21:52.730000+00:00"
},
"etag": "0a2f0fbb-31bf-4de2-83ed-fb5e456103f0"
}
#後でnamespaceを使うのでメモしておく。


#expdpのインストール
sudo yum -y install oracle-instantclient18.3-tools.x86_64

 

環境変数の設定
export PATH=/usr/lib/oracle/18.3/client64/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib/oracle/18.3/client64/lib:$LD_LIBRARY_PATH
export TNS_ADMIN=~/wallet


soeユーザのオブジェクトをdata_pump_dirにエクスポート
expdp ADMIN/XXXXXXX@adw_high directory=data_pump_dir dumpfile=exp%U.dmp filesize=2G logfile=export.log schemas=soe
Export: Release 18.0.0.0.0 - Production on Thu Dec 5 13:53:25 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Starting "ADMIN"."SYS_EXPORT_SCHEMA_01": ADMIN/********@adw_high directory=data_pump_dir dumpfile=exp%U.dmp filesize=2G logfile=export.log schemas=soe
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
. . exported "SOE"."ORDER_ITEMS" 230.1 MB 4328189 rows
. . exported "SOE"."ORDERS" 129.9 MB 1439835 rows
. . exported "SOE"."ADDRESSES" 110.3 MB 1503690 rows
. . exported "SOE"."CUSTOMERS" 108.4 MB 1003687 rows
. . exported "SOE"."CARD_DETAILS" 64.06 MB 1503687 rows
. . exported "SOE"."LOGON" 51.53 MB 2396105 rows
. . exported "SOE"."INVENTORIES" 15.21 MB 898304 rows
. . exported "SOE"."PRODUCT_DESCRIPTIONS" 222.5 KB 1000 rows
. . exported "SOE"."PRODUCT_INFORMATION" 186.9 KB 1000 rows
. . exported "SOE"."WAREHOUSES" 36.21 KB 1000 rows
. . exported "SOE"."ORDERENTRY_METADATA" 5.609 KB 4 rows
ORA-39173: Encrypted data has been stored unencrypted in dump file set.
Master table "ADMIN"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ADMIN.SYS_EXPORT_SCHEMA_01 is:
/u03/dbfs/983C8A22693ADDAEE0531914000A0697/data/dpdump/exp01.dmp
Job "ADMIN"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu Dec 5 13:58:19 2019 elapsed 0 00:04:51

 

 

#data_pump_dirにエクスポートされたデータの確認

sqlplus ADMIN/XXXXXX@adw_high
SQL> SELECT OBJECT_NAME FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

OBJECT_NAME
--------------------------------------------------------------------------------
export.log
exp01.dmp

 

#CREDENTIALの作成

BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'DEF_CRED_NAME',
username => 'bucketadmin',
password => 'KA<L6Woi2_nyDglvpp3b'
);
END;
/
PL/SQL procedure successfully completed.

 

#data_pump_dirのエクスポートデータをObject Storageへコピー
#ap-tokyo-1がregion名

#nrz2zsre72gmがnamespace名

#adw_bucketbucket
BEGIN
DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
object_uri => 'https://objectstorage.ap-tokyo-1.oraclecloud.com/n/nrz2zsre72gm/b/adw_bucket/o/exp01.dmp',
directory_name => 'DATA_PUMP_DIR',
file_name => 'exp01.dmp');
END;
/
PL/SQL procedure successfully completed.

 

#Object Storageへ格納されたデータの確認
oci os object list --bucket-name adw_bucket
{
"data": [
{
"md5": "jVYyubfkNMuPKjPTgfIBLw==",
"name": "exp01.dmp",
"size": 745684992,
"time-created": "2019-12-05T14:23:09.552000+00:00"
}
],
"prefixes": []
}

 

<参考>

docs.oracle.com