NEWSニュース&ブログ

RDSへのデータ移行方法三選!(①オリジナルExport/Import編)

この記事は最終更新から10年以上経過しています。内容が古くなっている可能性があります。

 

初めまして、今回より定期的にブログを更新していくことになりました、東京支社 クラウド事業部 佐々木と申します。
「Oracle+AWS」というキーワードを軸として色々な記事を書かせて頂ければと思っていますのでよろしくお願いします。今回はタイトルにもある通り、Oracleのオリジナルexport/importを使用してオンプレミスの環境から、AWSのサービスの一つであるRDS(Oracle)へのデータ移行に関して簡単にやり方を書いていきますので、RDSを触ったことがない方などはご参考にして頂ければ幸いです。

まず本題に入る前に、Oracleの標準機能として用意されているオリジナルexport/importを知らない方の為に簡単に紹介していきます。


オリジナルExport/Importとは

OracleデータベースのデータをOSファイルに書き込み(Export)、データを再びOracleデータベースに読み込ませることができる(Import)ユーティリティツールで、バックアップやデータ移行で使用されます。

※Oracle11gからは原則サポートされない機能なので10gよりも前のバージョンからの移行等で使用する以外は、極力Datapump(Export/Import)を使用するようにしましょう。

オリジナルExport/Importには様々なオプションが用意されていて、表単位、スキーマ単位、データベース全体でデータを抽出することができます。その他にも色々なオプションがありますがこの記事内では割愛します。気になる方はOracleが提供しているマニュアルを参照して下さい。
URL:http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05768-02/exp_imp.html

それでは、OracleオリジナルExport/Importを使用したデータ移行に関して記載します。

検証で使用する環境と実施する内容

検証で使用する環境を紹介します。RDSの構築方法に関しては別途記事としてあげると思いますので、今回は割愛渇愛します。

AWS上にRDS(Oracle 11gR2)を一つ作成し、検証用の私の端末に入っているOracle11gR1のデータをオリジナルExport/Importを使用してスキーマ単位でのデータ移行をやっていきたいと思います。


図1:検証環境の構成説明・手順
① 持ち物確認
② 検証用の端末よりOracleのデータをExportします。
③ 検証用の端末からネットワーク経由でRDSに向けてデータのImportを行います。
④ 移行後の接続確認
以上です。以下にコマンドを含めた詳細なものを載せていきます。

<<検証用の端末>>
まず、抽出の前に移行対象であるスキーマHR(Oracleで用意されているサンプルスキーマ)の持ち物確認等を行います。


①持ち物確認

(1)オブジェクトタイプとその個数確認
select object_type , count(1) from user_objects group by object_type order by 1;

select ‘select count(1) from ‘||table_name||’;’ from user_tables order by table_name;

(2)テーブルの件数カウント
select count(1) from HR.テーブル名;

(3)テーブルとインデックスにセットされている統計情報の確認
select table_name ,num_rows , to_char(last_analyzed,’yyyy/mm/dd hh24:mi:ss’) last_analyzed from user_tables order by table_name;

select index_name , table_name , num_rows , to_char(last_analyzed,’yyyy/mm/dd hh24:mi:ss’) last_analyzedfrom user_indexes order by index_name , table_name;

図2:HRが所持しているオブジェクトの一覧

図3:テーブルの件数確認

図4:テーブルとインデックスにセットされている統計情報の確認結果


②検証用の端末よりOracleのデータをExportします。

■exportコマンド
今回はスキーマHRで所有しているオブジェクトを全てRDS側に移行していきますので、
オプションにOWNERというものを入れて実行していきます。

expsystem@orcl file=export_hr.dmp log=export_hr.log owner=HR statistics=none

※fileオプションでOSファイル名を指定することができます。出力先まで指定したい場合にはフルパスで指定をしましょう。

図5:オリジナルexport実行画面
③ 検証用の端末からネットワーク経由でRDSに向けてデータのImportを行います。

■RDSへデータのimport
Exportで出力されたダンプファイルをRDSへimportしていきます。
RDS側にはHRというスキーマは存在していない為、事前に作成しておきましょう。
「create user」コマンド等はRDSになっても変わりませんので、特にRDSだからと気にする必要はありません。

(1)スキーマHR作成(事前作業)

図6:RDSでスキーマHR作成

図7:RDSへオリジナルimport実行

警告なしで正常終了したので、事前に確認をした情報と比較をしてオブジェクトの数やテーブルの件数を確認していきましょう。


④ 移行後の確認

RDSへの接続は、簡易接続方式を使用していきます。
sqlplus<ユーザ名>/<パスワード>@:<ポート番号>/DB名
 ※EndpointとはRDSを起動したときに自動で割り振られるDNS名のことです。

SQLは事前確認で使用したものをそのまま流して結果が同一であるかを確認します。


図8:HRが所持しているオブジェクトの一覧

図9:テーブルの件数確認

図10:テーブルとインデックスにセットされている統計情報の確認結果

お気づきの方もいるかと思いますが統計情報がテーブルにセットされていません。
インデックスは再作成の際に取得し直される為、セットされているように見えておりますが実際に移行をされる場合には、SQL性能に大きくかかわってくる為、十分に注意しましょう!!!

今回の検証はこれで終わりになります。
最後にRDS特有で気にしないといけないポイントとしては、「RDSのOSへはログインができない」「OSファイルの配置ができない」ということでしょうか。 なので、ネットワーク経由でのimportを今回は行いました。

ブログを書いたのは初めてなので、文章の構成や文言に読みづらい個所があると思いますが、今後慣れてくればましになっていくと思いますので、ご了承いただければ幸いです。

次回は、その他の方法について記載します。

今年に入って月1のペースで風邪を引いています。体調管理にはみなさん気を付けていきましょう!!!

以上