1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Database 26aiにDBMS_CLOUD をインストール & セットアップし、OCI Object Storageへexpdpする (26ai対応版)

1
Last updated at Posted at 2026-01-26

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プロパティ)

SYSDBACDB$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/'
);
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?