6RDS(Oracle)にDMPをインポート(datapump)してみた!AWSoracleRDSdatapumpOracleRDSにDMPをインポートちょっとハマってしまったので、以下参考までに。・SQLで処理している頭に切り替える。(OSコマンドは使えない。・DMPは大きいのでgzipにしたいのですがアップロードしても解凍できないので回答してからファイル転送が必要そもそもRDSとは?アマゾンが提供しているデータベースサービスです。今回はOracleデータベースを前提に、そこにDMPデータをインポートするときのコツを記載します!いろいろサイトがあったんですが、おそらくAWSのサービスを利用される人向けが多く、Oracleの知識はあるけど。人向けが少なかったんで。(仕事じゃなきゃ、投げ出してたかも。)やりたいことRDSの準備ができたら、そこにテーブルやデータ、ストアド、VIEWなんかのオブジェクトを一括でインポートしたいです。旧来のimpコマンドはサポート外なので、サポートされているimpdpつまり、datapumpを使ってインポートを行おうと思います!必要なものS3バケットが必須です!S3にDMPファイルをアップロードして、RDSにアップロード(転送みたいなイメージ)し、インポートを行いました。解説サイトにはAWSのEC2にOracleデータベースサーバがあれば、DBリンクでインポートできる等々が記載がありますが、EC2にOracleデータベースサーバがあればRDSいらないですよね。使ったSQLRDSはOSコマンド等が使えないので、OracleのSQLを変更した専用のコマンドをSQLで使用します。SQLPLUSが一番いいみたいですが、ちょっとわかりにくいのでosqleditでも十分操作できます。(私的にはosqleditのほうがわかり易かったです。下記SQLでファイルをコピーする指示を出します。最所SELECT文なので、意味がわからなかったですが、パッケージを実行してS3にアップロードしたファイルを転送指示を行い、そのタスクIDを結果として返す処理のようです。S3の指定ディレクトリ(バケット)にあるファイルをすべて移送する処理です。アップロード指示確認タスクIDごとの状況を確認するSQLです。数ギガのファイルだと数分処理に時間がかかり、最終的にfinishedとなった結果がエラーなのかSUCCESS!なのかを確認します。何度かSELECTとして結果が変わらない事を確認します。table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890-30.log'));結果が下記。successfully.プリフィックスを間違えていて、空振りしてもSUCCESS!になるので、よく読まないといけません。これで3時間くらいにらめっこしていて、「大文字小文字!」って気がついたとき泣きそうになりました。(みんなには内緒です。)ディレクトリの内容確認ディレクトリのファイル名等を確認します。MTIME;結果はディレクトリのみであれば、ディレクトリのレコードが1レコードかえってきます。ファイルがあれば、ファイルレコードがかえってきます。処理の途中でもかえってくるので、上記のログをしっかりと確認する必要があります。下記のSQLで実行します。エラーがわかりにくいです。引数値が無効です」となり、全くわかりません。他の解説サイトと少し変えてエラーの詳細をコマンドラインに返すように変更しています。DBMS_OUTPUT.PUT_LINE(vMsg);END;実行結果は、実行しました!のみなので、下記のSQLやログを確認です。途中の内容は下記のSQLでテーブル数を確認します。owner='HOGE';※目安ですね。ログをS3にダウンロードして、S3からファイルをダウンロードして確認します。table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890-30.log'));で確認できます!S3にディレクトリが作成され、ファイルがダウンロードされていると思うので、WinSCP等でローカルにダウンロードしてファイルを確認や別のサーバに持っていくことができますね。そもそものAWSのS3の設定は下記を参考にしました。https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/oracle-s3-integration.htmlまとめ通常のWindowsサーバやLinuxサーバにOracleデータベースをインストールする手間とを考えるとかなり早くサービスインできます。細かなパラメータや設定等は自動なのでパフォーマンス障害や接続障害への事前の備えがどこまでできるかはこれから実践して、またフィードバックします!個人的にですが、定期、随時バックアップや機能改修を考慮したステージング環境を考えると基幹システムのデータベースに利用はちょっと難有りな気がします。逆に社内テスト環境を爆速で構築したいときにはかなり有用です!ライセンス費用や保守料の心配もいらないので。お客様への導入を前提にすると、コストとリスクを考えてEC2にデータベースサーバをインストールする方を選択するかも。