LoginSignup
1
1

マウント・ポイントを経由して、Oracle Base DBからオブジェクト・ストレージへデータをエクスポートする手順

Last updated at Posted at 2022-06-13

初めに
OCI上の「Oracle DBクラウド・サービス」からオブジェクト・ストレージにバックアップを出したい場合、いろいろな方法があります。以下のようなやり方は、一般的です。

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

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

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

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

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

検証環境

項目 内容 コメント
DB version DB System VM
19c Standard Edition
この方法はBase DBだけではなく、IaaS DBにも適用する
ツール s3fs-fuse

STEP

1. 事前準備

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

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

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

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

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

一部の古いテナンシでは、ネームスペースとテナンシ名は同じですけど、そもそも別物なので、間違いようにご注意ください。

2. 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

リポジトリ・ファイルを編集します。
コマンド:sudo vi public-yum-ol7.repo
編集対象:[ol7_developer_EPEL]の部分
編集方法:enabled=0enabled=1に変更する。

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

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

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

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

[opc@db19cse ~]$ sudo echo <ACCESS_KEY>:<SECRET_KEY> > $HOME/.passwd-s3fs
[opc@db19cse ~]$ sudo mv $HOME/.passwd-s3fs /etc/passwd-s3fs
[opc@db19cse ~]$ sudo chown root:root /etc/passwd-s3fs
[opc@db19cse ~]$ sudo chmod 600 /etc/passwd-s3fs
[opc@db19cse ~]$

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

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

[opc@db19cse ~]$ sudo mkdir /u01/app/oracle/dmp
[opc@db19cse ~]$

バケットをマウント:
sudo 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>をリージョン識別子に置き換えてください。分からない場合はこちらをご確認ください。

コマンド例:

[opc@db19cse ~]$ sudo 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
[opc@db19cse ~]$ sudo df -h /u01/app/oracle/dmp
Filesystem      Size  Used Avail Use% Mounted on
s3fs             16E     0   16E   0% /u01/app/oracle/dmp
[opc@db19cse ~]$

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

3. エクスポートの実施

ディレクトリの準備
事前にディレクトリを作成しておきます。パスは、マウント・ポイントと同じです。

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

Directory created.

エクスポートの実施
コマンド例: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=TEST_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=TEST_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