はじめに
OCI Object Storageバケットをファイルシステムとしてマウントが可能なOCIFSユーティリティは、Oracle Linux 8以降の対応です。Base Databaseで Oracle Linux 8 が利用可能になったため、Base Database からOCIFSを使用してObject Storageバケットをマウントした後、そのバケット内にある dmp ファイルをインポートしてみました。
作業の前提
- Object Storageのバケットは事前に作成
- OCIFS ユーティリティ ( ocifs ) パッケージは、Oracle Linux 8 以降で使用可能
- Oracle Linux8 で稼働するBase Databaseとして以下の環境を準備
- DBシステム・バージョン: 23.3.0.23.09
- データベースのバージョン:23.3.0.23.09
- Oracle Linux8 で稼働するBase Databaseとして以下の環境を準備
OCIFSユーティリティをインストール
- ocifsパッケージをインストール (opcユーザ)
$ sudo dnf install ocifs
Repository ol8_baseos_latest is listed more than once in the configuration
Repository ol8_appstream is listed more than once in the configuration
Repository ol8_codeready_builder is listed more than once in the configuration
Repository ol8_addons is listed more than once in the configuration
Repository ol8_UEKR6 is listed more than once in the configuration
Repository ol8_UEKR6_RDMA is listed more than once in the configuration
Last metadata expiration check: 1:09:14 ago on Mon 29 Apr 2024 12:03:02 AM UTC.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
ocifs x86_64 1.1.0-2.el8 ol8_oci_included 73 k
Installing dependencies:
fuse x86_64 2.9.7-17.0.1.el8 ol8_baseos_latest 82 k
fuse-common x86_64 3.3.0-17.0.1.el8 ol8_baseos_latest 21 k
Transaction Summary
================================================================================
Install 3 Packages
Total download size: 177 k
Installed size: 365 k
Is this ok [y/N]: y
Downloading Packages:
(1/3): ocifs-1.1.0-2.el8.x86_64.rpm 678 kB/s | 73 kB 00:00
(2/3): fuse-2.9.7-17.0.1.el8.x86_64.rpm 709 kB/s | 82 kB 00:00
(3/3): fuse-common-3.3.0-17.0.1.el8.x86_64.rpm 172 kB/s | 21 kB 00:00
--------------------------------------------------------------------------------
Total 1.3 MB/s | 177 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : fuse-common-3.3.0-17.0.1.el8.x86_64 1/3
Installing : fuse-2.9.7-17.0.1.el8.x86_64 2/3
Installing : ocifs-1.1.0-2.el8.x86_64 3/3
Running scriptlet: ocifs-1.1.0-2.el8.x86_64 3/3
Verifying : fuse-2.9.7-17.0.1.el8.x86_64 1/3
Verifying : fuse-common-3.3.0-17.0.1.el8.x86_64 2/3
Verifying : ocifs-1.1.0-2.el8.x86_64 3/3
Installed:
fuse-2.9.7-17.0.1.el8.x86_64 fuse-common-3.3.0-17.0.1.el8.x86_64
ocifs-1.1.0-2.el8.x86_64
Complete!
OCI認証の設定
APIキーベースの認証
Base Database でoracleユーザにスイッチし、CLI 構成ファイル ( ~/.oci/config) を準備します。
[DEFAULT]プロファイルに以下のエントリが必要です。
- user
- tenancy
- region
- key_file
- finderprint
構成ファイルの例
~/.oci/config
[DEFAULT]user=ocid1.user.oc1..aaaaaaaaXXXXX
fingerprint=fa:56:8a:e9:42:c8:8a:07:49:73:XX:XX:XX:XX
tenancy=ocid1.tenancy.oc1..aaaaaaaaXXXXX
region=ap-tokyo-1
key_file=/home/opc/.ssh/private.pem
OCIFSでのマウント
- マウントディレクトリの準備 (opcユーザ)
$ sudo mkdir /u01/mydir/
$ sudo chown oracle:oinstall /u01/mydir/
- マウント (oracleユーザ)
$ ocifs <バケット名> <ディレクトリ名>
ocifs_bucket バケットを /u01/mydir にマウントする例
$ ocifs ocifs_bucket /u01/mydir
OCI Webコンソールなどで Object Storage に dmpファイルをアップロードし、マウント後のファイルを確認
$ ls /u01/mydir/
/u01/mydir/products.dmp /u01/mydir/scott.log
$ oci os object list -ns <namespace> -bn ocifs_bucket
{
"data": [
{
"archival-state": null,
"etag": "461e60ef-ef80-4c8c-8b13-946a8590ad32",
"md5": "Lcp+IILR2gHJc/gsdlkYBg==",
"name": "products.dmp",
"size": 192512,
"storage-tier": "Standard",
"time-created": "2024-04-28T00:00:00.298000+00:00",
"time-modified": "2024-04-28T00:00:00.516000+00:00"
},
{
"archival-state": null,
"etag": "88634c45-2293-44a0-9a87-9e278a860542",
"md5": "G6+vzswrSfei9OGp3chE0Q==",
"name": "scott.log",
"size": 1294,
"storage-tier": "Standard",
"time-created": "2024-04-28T00:00:00.169000+00:00",
"time-modified": "2024-04-28T00:00:00.169000+00:00"
}
],
"prefixes": []
}
インポートの実施
- データ・ポンプを使用するデータベース・ユーザの準備
- マウントした領域へディレクトリオブジェクトの作成とREAD/WRITE権限付与
SQL> create directory dpump_dir as '/u01/mydir';
SQL> grant read, write on directory dpump_dir to test;
- impdpの実行
$ impdp test/<Password>#Welcome1#@pdb1 directory=dpump_dir full=y ignore=y dumpfile=products.dmp logfile=import.log
Import: Release 23.0.0.0.0 - Production on Sun Apr 28 00:00:00 2024
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 23c EE High Perf Release 23.0.0.0.0 - Production
Legacy Mode Active due to the following parameters:
Legacy Mode Parameter: "ignore=TRUE" Location: Command Line, Replaced with: "table_exists_action=append"
Master table "SCOTT"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SCOTT"."SYS_IMPORT_FULL_01": test/********@pdb1 directory=dpump_dir full=y table_exists_action=append dumpfile=products.dmp logfile=import.log
Processing object type TABLE_EXPORT/TABLE/TABLE
Table "SCOTT"."PRODUCTS" exists. Data will be appended to existing table but all dependent metadata will be skipped due to table_exists_action of append
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."PRODUCTS" 6.093 KB 3 rows
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SCOTT"."SYS_IMPORT_FULL_01" successfully completed at Sun Apr 28 00:00:00 2024 elapsed 0 00:00:09
OCIFS のアンマウント
fusermount コマンドで アンマウントします。
fusermount -u /u01/mydir
留意点
- OCIFS は共有ファイル システムではありません。
- オブジェクト・データの破損を避けるため、OCIFSを使用して同じオブジェクト・ストレージ・バケット(または重複するバケットのサブフォルダ)を同時にマウントしないでください。
- Oracle Database 19c の Base Databaseでは、記事投稿時点では、同様の操作でエラーが発生し、完了しませんでした。
補足
-
ocifsパッケージを含むoci_includedリポジトリを有効化
- 有効になっていなかった場合以下の作業を実施
- Base Database にopcユーザでログイン
- /etc/yum.repos.d/ol8.repo に以下を追記
- Base Database にopcユーザでログイン
$ sudo vi /etc/yum.repos.d/ol8.repo
[ol8_oci_included] name=Oracle Software for OCI users on Oracle Linux $releasever ($basearch) baseurl=https://yum$ociregion.$ocidomain/repo/OracleLinux/OL8/oci/included/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle gpgcheck=1 enabled=1
- 有効になっていなかった場合以下の作業を実施
-
ocifsパッケージを含むoci_includedリポジトリを有効化 (opcユーザ)
$ sudo dnf install oci-included-release-el8 $ sudo dnf install oci-included-release-el8 Oracle Linux 8 Addons (x86_64) 145 kB/s | 3.0 kB 00:00 Latest Unbreakable Enterprise Kernel Release 6 112 kB/s | 3.0 kB 00:00 Oracle Linux 8 BaseOS Latest (x86_64) 153 kB/s | 3.6 kB 00:00 Oracle Linux 8 Application Stream (x86_64) 129 kB/s | 3.9 kB 00:00 Oracle Linux 8 CodeReady Builder (x86_64) - Uns 169 kB/s | 3.3 kB 00:00 Oracle Software for OCI users on Oracle Linux 8 92 MB/s | 127 MB 00:01 Package oci-included-release-el8-1.0-4.el8.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete! $ sudo dnf config-manager --enable ol8_oci_included
おわりに
OCIFS経由で Object Storage 上のファイルをimportすることができました。