https://oracle-japan.github.io/ocitutorials/adb/adb303-datapump/
sqlplusとimpdpはCentOS 7から実行
-- 1. コンパートメント作成
oci iam compartment create \
--compartment-id ocid1.tenancy.oc1..111111111111111111111111111111111111111111111111111111111111 \
--description cmp01 \
--name cmp01
oci iam compartment list \
--query 'data[?"name"==`'cmp01'`].id | [0]' \
--raw-output
-- 2. ADB作成
oci db autonomous-database list \
--compartment-id ocid1.compartment.oc1..111111111111111111111111111111111111111111111111111111111111
oci db autonomous-database list \
--compartment-id ocid1.compartment.oc1..111111111111111111111111111111111111111111111111111111111111 \
--display-name adb12
oci db autonomous-database create \
--compartment-id ocid1.compartment.oc1..111111111111111111111111111111111111111111111111111111111111 \
--admin-password 'passwordpassword' \
--db-name adb12 \
--db-version 19c \
--db-workload OLTP \
--display-name adb12 \
--is-auto-scaling-enabled FALSE \
--is-auto-scaling-for-storage-enabled FALSE \
--is-local-data-guard-enabled FALSE \
--is-mtls-connection-required FALSE \
--whitelisted-ips '[
"192.0.2.1"
]' \
--is-free-tier TRUE
oci db autonomous-database list \
--compartment-id ocid1.compartment.oc1..111111111111111111111111111111111111111111111111111111111111 \
--query 'data[].{"db-name":"db-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table
-- 3. クレデンシャル・ウォレットで接続
※デフォルトポートは1522
mkdir -p /tmp/client_credentials
unzip Wallet_adb12.zip -d /tmp/client_credentials
export TNS_ADMIN=/tmp/client_credentials
cd /tmp/client_credentials
vim sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
↓
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY=$TNS_ADMIN)))
sqlplus admin/passwordpassword@adb12_low
-- 4. オブジェクトストレージへのアクセストークンを取得
-- 5. バケット作成
oci os bucket list \
--compartment-id ocid1.compartment.oc1..111111111111111111111111111111111111111111111111111111111111
oci os bucket create \
--compartment-id ocid1.compartment.oc1..111111111111111111111111111111111111111111111111111111111111 \
--name bucket01 \
--auto-tiering Disabled \
--object-events-enabled false \
--public-access-type NoPublicAccess \
--storage-tier Standard \
--versioning Disabled
-- 6. ダンプファイルをオブジェクトストレージにアップロード
oci os object list \
--bucket-name bucket01
oci os object put \
--bucket-name bucket01 \
--file export_hr_01.dmp
oci os object put \
--bucket-name bucket01 \
--file export_hr_02.dmp
oci os object put \
--bucket-name bucket01 \
--file export_hr_03.dmp
oci os object put \
--bucket-name bucket01 \
--file export_hr_04.dmp
-- 7. クレデンシャルの登録
sqlplus admin/passwordpassword@adb12_low
sho user
show con_name
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'CRED01',
username => 'oracleidentitycloudservice/hoge@example.net',
password => 'xxxx'
);
END;
/
exit
-- 8. インポート・スクリプトを用意
cat <<-'EOF' > impdp_hr.sh
#!/bin/sh
impdp userid=admin/passwordpassword@adb12_low \
credential=CRED01 \
parallel=4 \
schemas=HR \
directory=DATA_PUMP_DIR \
dumpfile=https://objectstorage.us-ashburn-1.oraclecloud.com/n/111111111111/b/bucket01/o/export_hr_%u.dmp \
logfile=DATA_PUMP_DIR:import_hr.log
EOF
cat impdp_hr.sh
-- 9. インポートを実施
chmod +x impdp_hr.sh
./impdp_hr.sh
sqlplus admin/passwordpassword@adb12_low
select count(1) from hr.COUNTRIES ;
exit
-- 10. クリーンアップ
oci os object list \
--bucket-name bucket01
oci os bucket delete \
--name bucket01 \
--empty \
--force
oci db autonomous-database list \
--compartment-id ocid1.compartment.oc1..111111111111111111111111111111111111111111111111111111111111 \
--query 'data[?"db-name"==`'adb12'`]."id" | [0]' \
--raw-output
oci db autonomous-database delete \
--autonomous-database-id ocid1.autonomousdatabase.oc1.iad.111111111111111111111111111111111111111111111111111111111111 \
--force
oci iam compartment list \
--query 'data[?"name"==`'cmp01'`].id | [0]' \
--raw-output
oci iam compartment delete \
--compartment-id ocid1.compartment.oc1..111111111111111111111111111111111111111111111111111111111111 \
--force