0
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?

OCI BaseDatabase: ocifsを利用してObject Storageをマウントし、Data Pumpでエクスポートする方法

0
Last updated at Posted at 2026-01-08

はじめに

ocifsを利用してBase Databaseからオブジェクトストレージへexpdpをしてみる

ocifsを利用することで、ファイルシステムとしてマウントしてデータ移行をすることができます。

0. 前提条件 (事前確認事項)

  • Oracle Databaseは26aiを利用(Oracle Linux 8以上)
  • バケット: OCI上にバケット ocifstest が作成されていること。(適宜バケット名は読み替えてください)
  • APIキー: OCIのAPIキーが登録済みであること
  • ネットワーク: DBシステムから Object Storage への通信(サービス・ゲートウェイ等)が確保されていること

1. システム基盤のセットアップ (opc ユーザー / sudo)

# 1. ocifsのインストール
sudo dnf install -y ocifs

# 2. FUSEの設定変更(DBプロセスがマウント先にアクセスするため)
sudo sed -i 's/#user_allow_other/user_allow_other/' /etc/fuse.conf

# 3. マウントポイントの作成と権限変更
sudo mkdir -p /u01/mydir
sudo chown oracle:oinstall /u01/mydir
sudo chmod 755 /u01/mydir

2. 認証設定と動作確認 (oracle ユーザー)

# oracle ユーザーへスイッチ
sudo su - oracle

# 1. 構成ファイルの作成
mkdir -p ~/.oci
vi ~/.oci/config

~/.oci/config の内容:

[DEFAULT]
user=ocid1.user.oc1..[ユーザーOCID]
fingerprint=[fingerprint]
tenancy=ocid1.tenancy.oc1..[テナントOCID]
region=[利用しているリージョン]
key_file=/home/oracle/.oci/oci_api_key.pem
# 2. 権限設定と認証テスト
chmod 600 ~/.oci/config ~/.oci/oci_api_key.pem
oci os ns get

Object StorageのNamespace名が表示されていればoci cliの動作はOK

3. マウントの動作確認 & 設定

# oracle ユーザーとして手動マウントを実行
ocifs ocifstest /u01/mydir

# 書き込みテスト(ファイルが作成できればOK)
touch /u01/mydir/manual_mount_test.txt
ls -l /u01/mydir/*

書き込みテストのファイルがObject Storageにマウントされていることを確認します。
image.png

4. DBユーザー作成とデータ準備 (SYSTEM ユーザー / PDB直接接続)

# oracle ユーザーで PDB にログイン
sudo su - oracle
sqlplus system/パスワード@fstest...:1521/DB0108_pdb1...
-- 1. USER01の作成と基本権限付与
CREATE USER USER01 IDENTIFIED BY "WelCome123#123#";
GRANT CREATE SESSION, RESOURCE TO USER01;
ALTER USER USER01 QUOTA UNLIMITED ON USERS;

-- 2. ディレクトリ・オブジェクトの作成と権限付与
CREATE OR REPLACE DIRECTORY MOUNT_DIR AS '/u01/mydir';
GRANT READ, WRITE ON DIRECTORY MOUNT_DIR TO USER01;

EXIT;

5. テーブル作成とデータ投入 (USER01 ユーザー / PDB直接接続)

sqlplus USER01/"WelCome123#123#"@fstest...:1521/DB0108_pdb1...
-- テーブル作成
CREATE TABLE CUSTOMERS (
    customer_id   NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    first_name    VARCHAR2(50),
    last_name     VARCHAR2(50),
    email         VARCHAR2(100),
    created_at    TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- サンプルデータ投入 (5件)
INSERT INTO CUSTOMERS (first_name, last_name, email) VALUES ('Taro', 'Tanaka', 'taro@example.com');
INSERT INTO CUSTOMERS (first_name, last_name, email) VALUES ('Jiro', 'Suzuki', 'jiro@example.com');
INSERT INTO CUSTOMERS (first_name, last_name, email) VALUES ('Saburo', 'Sato', 'saburo@example.com');
INSERT INTO CUSTOMERS (first_name, last_name, email) VALUES ('Shiro', 'Ito', 'shiro@example.com');
INSERT INTO CUSTOMERS (first_name, last_name, email) VALUES ('Goro', 'Watanabe', 'goro@example.com');
COMMIT;

EXIT;

6. Data Pump Export の実行 (oracle ユーザー)

# oracle ユーザーの OS プロンプトで実行
expdp USER01/"WelCome123#123#"@fstest...:1521/DB0108_pdb1... \
  tables=CUSTOMERS \
  directory=MOUNT_DIR \
  dumpfile=customers.dmp \
  logfile=expdp_customers.log

必要に応じて、expdp時はダンプファイルを分割してエクスポートすることなどもご検討ください
(コマンドにfilesizeを指定する)

7. 最終確認

① Linux側でのディレクトリ確認

ls -lh /u01/mydir/customers.dmp
ls -lh /u01/mydir/expdp_customers.log
tail -n 5 /u01/mydir/expdp_customers.log

② OCI Object Storage 側での確認

oci os object list --bucket-name ocifstest --output table --query "data[].{Name:name, Size:size}"

備考

  • マウントの恒久化(再起動対策)
    • OSの再起動を行うとマウントが一時的なものになるので、適宜fstabなどで再起動後も設定を保持できるように設定ください。

参考

下記を参考にさせて頂きました。

0
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
0
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?