DBMS_CLOUD インストール & セットアップガイド (26ai対応版)
本ガイドには、DBMS_CLOUDパッケージのインストールから、SSLウォレットの構成、ネットワークアクセス制御(ACE)の設定、OCIクレデンシャルの登録、およびクラウドへの直接エクスポート(expdp)までの手順を記載しています。
参考:DBMS_CLOUDインストール
https://docs.oracle.com/cd/G47991_01/sutil/dbms_cloud-family-packages.html
1. DBMS_CLOUD パッケージのインストール
oracle ユーザーで実行します。CDBに対してインストールを行います。
(配下のPDBに対しての実行は不要です。本スクリプトでPDBに対してもインストールされます。)
# 1-1. スキーマ (C##CLOUD$SERVICE) の作成
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl \
-u sys/[SYS_PASSWORD] \
-force_pdb_mode 'READ WRITE' \
-b dbms_cloud_install \
-d $ORACLE_HOME/rdbms/admin/ \
-l /tmp \
catclouduser.sql
# 1-2. パッケージ本体のインストール
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl \
-u sys/[SYS_PASSWORD] \
-force_pdb_mode 'READ WRITE' \
-b dbms_cloud_install \
-d $ORACLE_HOME/rdbms/admin/ \
-l /tmp \
dbms_cloud_install.sql
2. SSLウォレット(証明書)の作成
HTTPS通信(OCI Object Storage等)を許可するために必要です。
# 証明書の格納場所とウォレットの場所を作成
mkdir -p /home/oracle/dbc
mkdir -p /u01/app/oracle/wallets/ssl
# Oracle共通証明書セットをダウンロード
cd /home/oracle/dbc
wget https://objectstorage.us-phoenix-1.oraclecloud.com/p/KB63IAuDCGhz_azOVQ07Qa_mxL3bGrFh1dtsltreRJPbmb-VwsH2aQ4Pur2ADBMA/n/adwcdemo/b/CERTS/o/dbc_certs.tar
tar -xvf dbc_certs.tar
# ウォレットの作成
cd /u01/app/oracle/wallets/ssl
orapki wallet create -wallet . -pwd [WALLET_PASSWORD] -auto_login
# 全ての証明書(*.cer)をウォレットに追加
for i in $(ls /home/oracle/dbc/*.cer); do
orapki wallet add -wallet . -trusted_cert -cert $i -pwd [WALLET_PASSWORD]
done
3. データベース全体の構成 (ACEとDBプロパティ)
SYSDBA で CDB$ROOT に接続して実行します。
-- 3-1. ウォレットのパスをデータベースプロパティに登録 (Data Pumpに必要)
ALTER DATABASE PROPERTY SET ssl_wallet = '/u01/app/oracle/wallets/ssl';
-- 3-2. 初期化パラメータの設定
ALTER SYSTEM SET ssl_wallet = '/u01/app/oracle/wallets/ssl' SCOPE=BOTH;
-- 3-3. 共通ユーザーへの権限付与
GRANT INHERIT PRIVILEGES ON USER sys TO "C##CLOUD$SERVICE";
BEGIN
-- HTTPS通信許可
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'C##CLOUD$SERVICE',
principal_type => xs_acl.ptype_db
)
);
-- ウォレット使用許可
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE(
wallet_path => 'file:/u01/app/oracle/wallets/ssl',
ace => xs$ace_type(
privilege_list => xs$name_list('use_client_certificates', 'use_passwords'),
principal_name => 'C##CLOUD$SERVICE',
principal_type => xs_acl.ptype_db
)
);
END;
/
4. 利用ユーザー (MYUSER) の作成と権限付与 (PDB単位)
対象のPDB(例: DB0119_PDB1)に接続して実行します。
-- 4-1. ユーザーの作成 (パスワードポリシーに注意: 記号2つ以上など)
CREATE USER MYUSER IDENTIFIED BY "Cloud_Pass_123##";
GRANT CREATE SESSION TO MYUSER;
ALTER USER MYUSER QUOTA UNLIMITED ON USERS;
-- 4-2. DBMS_CLOUD および Data Pump 権限の付与
DECLARE
l_user VARCHAR2(30) := 'MYUSER';
BEGIN
EXECUTE IMMEDIATE 'GRANT EXECUTE ON DBMS_CLOUD TO ' || l_user;
EXECUTE IMMEDIATE 'GRANT DATAPUMP_EXP_FULL_DATABASE TO ' || l_user;
EXECUTE IMMEDIATE 'GRANT CREATE TABLE TO ' || l_user;
EXECUTE IMMEDIATE 'GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO ' || l_user;
-- DBMS_CLOUD実行に必要な継承権限
EXECUTE IMMEDIATE 'GRANT INHERIT PRIVILEGES ON USER ' || l_user || ' TO "C##CLOUD$SERVICE"';
-- ネットワークとウォレットの許可
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http'),
principal_name => l_user,
principal_type => xs_acl.ptype_db
)
);
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE(
wallet_path => 'file:/u01/app/oracle/wallets/ssl',
ace => xs$ace_type(
privilege_list => xs$name_list('use_client_certificates'),
principal_name => l_user,
principal_type => xs_acl.ptype_db
)
);
END;
/
5. OCI クレデンシャルの登録
対象のPDB(例: DB0119_PDB1)、利用ユーザー (MYUSER) で接続して実行します。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OCI_CRED',
username => 'oracleidentitycloudservice/xxx@xxx.com',
password => '[認証トークン]'
);
END;
/
認証トークンの取得方法は下記を参照ください
6. 動作確認 (ファイル一覧の表示)
あらかじめOCIのコンソール画面からダミーファイルをバケットにアップロードし、ファイルがDBから一覧で表示されているか動作確認を行ってください。
正しく表示されていれば、以降のexpdp実行の準備が整います。
SELECT object_name, bytes, last_modified
FROM DBMS_CLOUD.LIST_OBJECTS(
credential_name => 'OCI_CRED',
location_uri => 'https://objectstorage.[REGION].oraclecloud.com/n/[NAMESPACE]/b/[BUCKET]/o/'
);
7. クラウドへの直接エクスポート (expdp)
OSのターミナル(oracleユーザ)から実行します。
# 大規模データ(数GB以上)の場合は、%Uによるマルチファイル出力とfilesize指定が推奨されます
expdp MYUSER/[PASSWORD]@[TNS_SERVICE_NAME] \
schemas=MYUSER \
credential=OCI_CRED \
dumpfile=https://objectstorage.[REGION].oraclecloud.com/n/[NAMESPACE]/b/[BUCKET]/o/myuser_exp_%U.dmp \
filesize=5G \
logfile=DATA_PUMP_DIR:myuser_exp.log
8. 動作確認 (ダンプファイルの表示)
ダンプファイルが出力されていることを確認
SELECT object_name, bytes, last_modified
FROM DBMS_CLOUD.LIST_OBJECTS(
credential_name => 'OCI_CRED',
location_uri => 'https://objectstorage.[REGION].oraclecloud.com/n/[NAMESPACE]/b/[BUCKET]/o/'
);