1
1

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 Base DBからオブジェクト・ストレージへデータをエクスポートする手順

Last updated at Posted at 2022-06-13

本ブログは、オラクル・クラウドの個人ブログの1つです。

初めに

OCI上の「Oracle Base Database サービス」からオブジェクト・ストレージにバックアップを出したい場合、さまざまな方法があります。以下に示す方法は一般的です。

  • Base DBサービスの自動バックアップ機能を利用する。
  • バックアップ・モジュールをインストールし、RMANで手動バックアップを実施する。
  • DBMS_CLOUDプロシージャを利用し、DBから直接にデータ・ポンプ・ファイルをオブジェクト・ストレージにエクスポートする。(※関連記事)
  • データ・ポンプ・ファイルを一時にローカルにエクスポートしてから、OCI-CLIRloneなどのツールで、オブジェクト・ストレージに転送する。

上記の各方法には、それぞれの利点と制限事項があります。今回はもう一つ選択肢を提供したいと思います。

この前の記事で紹介したように、オブジェクト・ストレージをローカルのファイル・システムにマウントできます。この方法は、OCI上のBase DBインスタンスにも適用されます。それにより、マウント・ポイントを経由し、データ・ポンプ・ファイルをオブジェクト・ストレージにエクスポートするのが可能です。

この方法の利点
✅ 自動バックアップ機能と違って、バケットに出力されたファイルを表示・管理できる
✅ 直接にオブジェクト・ストレージにエクスポートするため、ローカルへの一時保存は不要
✅ DBのバージョンに依存せず、DBMS_CLOUDプロシージャのインストールは不要。(Base DBにDBMS_CLOUDをインストールする際に、DBバージョンの制限がある)

※、この方法はBase DBサービスだけではなく、IaaS DBにも適用されます。

これから、ステップ・バイ・ステップで設定方法を説明します。

検証環境

  • DBバージョン:Base DB 19c (VM) Standard Edition (on OL7)
  • ツール:s3fs-fuse

ステップ

1. 事前準備

1-1. クレデンシャルの生成

プロファイル・アイコン(右上) → マイ・プロファイル → 顧客秘密キー → 秘密キーの生成
二度と表示しないので、メモしておいてください。

マウスを「アクセス・キー」に移動し、キーをコピーします。

1-2 ネームスペースの確認

プロファイル・アイコン(右上) → テナンシ

  • 一部の古いテナンシでは、ネームスペースとテナンシ名は同じですけど、そもそも別物なので、間違いようにご注意ください。
  • OCI-CLIを利用する場合、oci os ns getで簡単に取得できます。

2. Base DBインスタンスへのマウント

2-1. s3fs-fuseをインストール

s3fs-fuseをインストールする前に、Oracle EPELリポジトリをまず有効にしてください。そうしないと、次のようなメッセージが表示されます。

[opc@db19cse ~]$ sudo yum install s3fs-fuse
Loaded plugins: versionlock
There are no enabled repos.
 Run "yum repolist all" to see the repos you have.
 To enable custom repositories:
     yum-config-manager --enable <repo>
[opc@db19cse ~]$ sudo yum repolist all
Loaded plugins: versionlock
repolist: 0
[opc@db19cse ~]$

Oracle EPEL レポジトリを用意する
リポジトリ・ファイルをダウンロードします。
コマンド:
cd /etc/yum.repos.d
sudo wget http://yum.oracle.com/public-yum-ol7.repo

s3fs-fuseをインストール
コマンド: sudo yum install s3fs-fuse --enablerepo=ol7_developer_EPEL -y

2-2. クレデンシャルの設定

パスワード・ファイルを作成
STEP 1-1で作成したアクセス・キー(ACCESS_KEY)と秘密キー(SECRET_KEY)を利用し、パスワード・ファイルを作成します。その真ん中に、半角のコロンで結合されます。

パスとファイル名: ~/.passwd-s3fs
コマンド例:

[opc@db19cse ~]$ sudo su -
Last login: <中略> on pts/0
[root@db19cse ~]# echo ACCESS_KEY:SECRET_KEY > ~/.passwd-s3fs
[root@db19cse ~]# chmod 600 ~/.passwd-s3fs

2-3. バケットをマウント

マウント・ポイントを作成:

[root@db19cse ~]# mkdir /u01/app/oracle/dmp

バケットをマウント:
s3fs <bucket_Name> <mount_point> -o url=https://<namespace_name>.compat.objectstorage.<region>.oraclecloud.com -o nomultipart -o use_path_request_style -o endpoint=<region>,allow_other

  • <namespace_name>: ネームスペースに置き換えてください (STEP 1-2で取得)。
  • <region>: リージョン識別子に置き換えてください(例:ap-tokyo-1, ap-osaka-1)。分からない場合はこちらをご参照ください。

コマンド例:

[root@db19cse ~]# s3fs MyBucket /u01/app/oracle/dmp -o url=https://<namespace_name>.compat.objectstorage.ap-tokyo-1.oraclecloud.com -o nomultipart -o use_path_request_style -o endpoint=ap-tokyo-1,allow_other
[root@db19cse ~]# df -h /u01/app/oracle/dmp
Filesystem      Size  Used Avail Use% Mounted on
s3fs             16E     0   16E   0% /u01/app/oracle/dmp
[root@db19cse ~]#

バケットをアンマウントしたい場合、以下のコマンドを実施してください。
fusermount -u <mount_point>、或いは umount <mount_point>

3. エクスポートの実施

ディレクトリの作成
事前にディレクトリを作成する必要があります。パスは、マウント・ポイントと同じです。

次のように、管理者ユーザーでPDBに接続し、ディレクトリの作成と権限の割り当てを実施します。

sudo su - oracle
sqlplus system/<password>@<hostname_or_IP>:1521/<PDB_Service_Name>

SQL> show user;
USER is "SYSTEM"
SQL> CREATE OR REPLACE DIRECTORY MOUNT_DIR AS '/u01/app/oracle/dmp/';

Directory created.

SQL> GRANT READ, WRITE ON DIRECTORY MOUNT_DIR TO USER01;

Grant succeeded.

ディレクトリの確認

SQL> col DIRECTORY_NAME for a20
SQL> col DIRECTORY_PATH for a30
SQL> l
  1  SELECT DIRECTORY_NAME, DIRECTORY_PATH FROM DBA_DIRECTORIES
  2* WHERE DIRECTORY_NAME = 'MOUNT_DIR'
SQL> /

DIRECTORY_NAME       DIRECTORY_PATH
-------------------- ------------------------------
MOUNT_DIR            /u01/app/oracle/dmp/

エクスポートの実施
コマンド例:expdp <User_Name>/<Password>@<Host_Name_or_IP>:<Port>/<Service_Name> tables=<Table_Name> directory=<Directory_Name> dumpfile=<Data_Pump_File_Name> logfile=<Export_Log_File_Name>

[oracle@db19cse ~]$ expdp USER01/********@10.0.0.54:1521/db19cse_pdb1.publicsubnet1.vcn1.oraclevcn.com tables=CUSTOMERS directory=MOUNT_DIR dumpfile=customers.dmp logfile=expdp_customers.log

Export: Release 19.0.0.0.0 - Production on Sat Jun 11 11:13:36 2022
Version 19.15.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Starting "USER01"."SYS_EXPORT_TABLE_01":  USER01/********@10.0.0.54:1521/db19cse_pdb1.publicsubnet1.vcn1.oraclevcn.com tables=CUSTOMERS directory=MOUNT_DIR dumpfile=customers.dmp logfile=expdp_customers.log
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/IDENTITY_COLUMN
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
. . exported "USER01"."CUSTOMERS"                        32.26 KB     319 rows
ORA-39173: Encrypted data has been stored unencrypted in dump file set.
Master table "USER01"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for USER01.SYS_EXPORT_TABLE_01 is:
  /u01/app/oracle/dmp/customers.dmp
Job "USER01"."SYS_EXPORT_TABLE_01" successfully completed at Sat Jun 11 11:13:57 2022 elapsed 0 00:00:19

[oracle@db19cse ~]$ ls -l /u01/app/oracle/dmp
total 230
-rw-r----- 1 oracle asmadmin 233472 Jun 11 11:13 customers.dmp
-rw-r--r-- 1 oracle asmadmin   1385 Jun 11 11:13 expdp_customers.log
[oracle@db19cse ~]$

バックアップ後、バケットの中身を確認します。
image.png

注意
DBインスタンス再起動後、マウント・ポイントが切れないように再マウントするか、/etc/fstabを編集してください。

以上

関連記事
オラクル・クラウドの個人ブログ一覧
OCI Object StorageのバケットをLinux/Windowsのローカルにマウントする
Oracle DBからOCIオブジェクト・ストレージへデータをエクスポートする手順

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?