Oracle Cloud上で展開される世界初の自律型データベースであるAutonomous Databaseは、パッチ適用やチューニングなどの従来では人が介在する管理タスクを自動化した、革新的なサービスです。
今回はこのAutonomous Databaseへ、Oracle Databaseではおなじみのデータ移行ユーティリティData Pumpを使用してデータを投入する手順をご紹介します。
Autonomous Databaseは、Oracle OpenWorld 2019
で発表された無期限かつ無償でOracle Cloud Infrastructureを利用可能な「Always Free」でも提供されています。
この記事では、そのAlways Freeで利用可能なサービスのみを使用して検証を行っているので、無料でもお試しいただけます。
データ投入の概要
オンプレミス環境のデータベースからData Pumpを用いてエクスポートしたダンプファイルを、OCI上のオブジェクト・ストレージへ配置し、Autonomous Databaseへインポートする手順を検証しました。
今回の検証にあたり下記の環境設定は完了している状態から開始しています。
前提事項
- Autonomous Data WarehouseまたはAutonomous Transaction Prcessingが構築済み
- オブジェクト・ストレージが作成済み
- クライアント端末にOracle Client 18.3がインストール済み
- 構築済みのAutonomous DatabaseからWalletをダウンロードしクライアント端末へ配置済み
- Oracle Clientのtnsnames.oraやsqlnet.oraにSSL接続の設定済み
- オンプレミス環境のデータベースからデータをエクスポート済み
データ投入手順
1. ダンプファイルをオブジェクト・ストレージへアップロード
オンプレミス環境のデータベースからエクスポートしたダンプファイルを、オブジェクト・ストレージへアップロードします。
OCIコンソールの左上のハンバーガーメニューから「オブジェクト・ストレージ」を選択します。
オブジェクト・ストレージの一覧から、ダンプファイルをアップロードする対象のオブジェクト・ストレージを選択します。
「バケットの詳細」画面から「オブジェクトのアップロード」を選択すると、「オブジェクトのアップロード」画面が表示されます。
ファイルをドロップするかファイルを選択しアップロードします。
「バケットの詳細」画面上でオブジェクトの一覧に表示されたら、ファイルのアップロード完了です。
2. OCIユーザーの認証トークンを作成する
後続の手順でオブジェクト・ストレージへの資格証明を作成するにあたり、OCIユーザーに紐づく認証トークンが必要です。
※以下の手順は個人アカウントでの場合です。企業アカウントの場合は操作が異なりますのでマニュアルをご確認ください。
OCIのコンソール画面右上部のプロファイルよりユーザー名を押すと、ユーザーの詳細ページが開きます。
左側の「リソース」メニューから「認証トークン」を選択のうえ、「トークンの生成」で認証トークンを作成します。
作成されたトークン文字列は作成時にのみ表示されるため、必ずこのタイミングで控えるようにご留意ください。
3. オブジェクト・ストレージの資格証明をAutonomous Databaseへ格納
データ投入に際し、Autonomous Databaseからオブジェクト・ストレージ上のデータをロードするために、DBMS_CLOUD.CREATE_CREDENTIALプロシージャ
にて資格証明を格納します。
次の実行例では、SQL*PlusでAutonomous Databaseにログインし、OCIユーザー名と手順2で作成した認証トークンを使って実行しました。
$ sqlplus admin/*********@adw_high
SQL*Plus: Release 18.0.0.0.0 - Production on 日 3月 22 07:03:05 2020
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
最終正常ログイン時間: 日 3月 22 2020 07:01:39 +09:00
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
に接続されました。
SQL> begin
2 DBMS_CLOUD.CREATE_CREDENTIAL(
3 credential_name => 'OBJ_STORE_CRED',
4 username => '<OCIユーザー名>',
5 password => '<手順2. で作成した認証トークン>'
6 );
7 end;
8 /
PL/SQLプロシージャが正常に完了しました。
4. Data Pumpインポートの実行
クライアント端末のData PumpユーティリティからAutonomous Databaseへ対象データを投入します。
impdpコマンドで、dumpfile = “ダンプファイルのURL”で対象データを指定しますが、ダンプファイルのURLはOCIのコンソール画面から、オブジェクト・ストレージの「オブジェクトの詳細」で確認することが可能です。
作成した資格証明とダンプファイルのURLを指定して、SCOTTスキーマをインポートします。
$ impdp admin/*********@adw_high credential=OBJ_STORE_CRED schemas=SCOTT \
> dumpfile="https://objectstorage.ap-tokyo-1.oraclecloud.com/n/*********/b/bucket-Nakagaki/o/full_data.dmp"
Import: Release 18.0.0.0.0 - Production on 月 3月 23 00:28:48 2020
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
マスター表"ADMIN"."SYS_IMPORT_SCHEMA_01"は正常にロード/アンロードされました
"ADMIN"."SYS_IMPORT_SCHEMA_01"を起動しています: admin/********@adw_high credential=OBJ_STORE_CRED schemas=SCOTT dumpfile=https://objectstorage.ap-tokyo-1.oraclecloud.com/n/*********/b/bucket-Nakagaki/o/full_data.dmp
オブジェクト型DATABASE_EXPORT/SCHEMA/USERの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANTの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/ROLE_GRANTの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/DEFAULT_ROLEの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/TABLEの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATAの処理中です
. . "SCOTT"."EMP" 8.695 KB 12行がインポートされました
. . "SCOTT"."DEPT" 6.023 KB 4行がインポートされました
. . "SCOTT"."SALGRADE" 5.953 KB 5行がインポートされました
. . "SCOTT"."BONUS" 0 KB 0行がインポートされました
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型DATABASE_EXPORT/STATISTICS/MARKERの処理中です
ジョブ"ADMIN"."SYS_IMPORT_SCHEMA_01"が日 3月 22 15:29:44 2020 elapsed 0 00:00:54で正常に完了しました
問題なくSCOTTスキーマのインポートが完了しました。
Data Pumpを使用したデータ投入における注意点
・Autonomous Databaseのキャラクタセット
Autonomous Databaseのデータベース・キャラクタセットはAL32UTF8です。
マルチバイトのデータを持った表をインポートする場合、列定義以上のデータサイズとなりデータ投入が失敗する可能性があります。
事前に列定義を変更する、またはAutonomous Databaseに列定義を考慮したオブジェクトをあらかじめ作成のうえ、データのみData Pumpで投入するなど対処してください。
・EXCLUDEが推奨されるオブジェクト
Autonomous Databaseでは多くの制限や、ORACLE社の開発思想によりユーザー作成の索引やパーティションを作成しない推奨などがあります。
Autonomous Data Warehouseのドキュメント
では、索引、クラスタ、マテリアライズド・ビュー、データベース・リンクなどのEXCLUDEが推奨されています。
・Data Pumpユーティリティのバージョン
今回の検証ではData Pumpバージョン18.3を使用しました。
18.3以降のバージョンでは、オブジェクト・ストレージへのアクセスにあたりCREDENTIALパラメータを指定すればインポートが可能です。
12.2.0.1以前のData PumpにはCREDENTIALパラメータは存在しないため、Autonomous Databaseのデータベース・プロパティDEFAULT_CREDENTIALを設定する必要があります。
詳細はAutonomous Data Warehouseのドキュメントをご参照ください。
Oracle Cloud
Oracle Autonomous Data Warehouseの使用
Oracle Data Pump (バージョン12.2.0.1および以前)を使用したデータのインポート
・その他
Autonomous Databaseを使用するにあたり、通常のデータベースとは異なる動作が多くあるため、下記のドキュメントやFAQをご参考にまず触ってみることをお勧めします。
Oracle Cloud
Oracle Autonomous Data Warehouseの使用
Autonomous Data Warehouse上のOracle Data Pumpを使用したデータのインポート
B 経験豊富なOracle DatabaseユーザーのためのAutonomous Data Warehouse
日本オラクル | Integrated Cloud Applications and Platform Services
Oracle Autonomous DatabaseのFAQ
まとめ
クラウドプラットフォームへのデータ投入と聞くとイメージがわかず、ハードルが高いと感じてしまう方もいるのではないでしょうか。多くの方にまず触ってみていただくために、本記事は全てAlways Freeのサービスでの検証に臨みました。
Autonomous Databaseは、長年ORACLE社が開発投資してきたOracle Database、Oracle Exadata Database Machine、そしてOracle Cloudの技術が集結したベストプラクティスと呼べるソリューションです。これまでの人的な管理タスクが自動化され、ユーザーはデータを「利用する」ことに注力することが可能となります。
Always FreeのAutonomous Databaseのリソースは1OCPU、ストレージは20GBと小規模ではありますが、Oracle Cloud活用の入り口としてぜひ試使用してみてはいかがでしょうか。
今後「オンプレミスで稼働するデータベースからPaaSへの移行を検討している」、「アプリケーション開発にあたり実際にAutonomous Databaseにデータを持たせて検証したい」、というようなご要望をお持ちのお客様のご参考となれば幸いです。
なお、本記事の情報は、2020年4月現在のものです。
Oracle Cloudは頻繁にアップデートされているため、本番環境でご利用を検討される際はぜひアシストへご相談ください。
アシスト北海道
2016年アシスト北海道へ入社後、Oracle Databaseのサポート業務に従事。入社2年目より夜間休日帯など営業時間外の緊急対応を主に担当。現在は通常時間帯のサポート業務を担当しており、第一線で日々奮闘中。...show more