LoginSignup
2
4

More than 5 years have passed since last update.

OracleDBのバックアップをコマンドでするときのメモ

Posted at

業務でシステムを納品する際にコンティンジェンシープランとして行った時のメモです。

⑴コマンドプロンプトでSqlPlusにログイン。あらかじめ設定ファイルを作成しておき、その設定ファイルのディレクトリ上で下記のようにログインすると、設定ファイル通りに動作させることができる。
Sqlplus UserID/Password@接続識別子 @sql設定ファイル.sql

⑵本番環境がDBにスキーマが1つしかない状態だったので、スキーマを指定してデータをエクスポート(バックアップ)
これでディレクトリオブジェクトに指定されているフォルダ配下にdmpファイルとlogファイルが作成される。 
expdp UserID/Password directory=ディレクトリオブジェクト schemas=hirosato logfile = hirosato_expdp.log

⑶リカバリを実行したい時
⑵でエクスポートしたdmpファイルをインポートする。ただし前のデータが残っている場合を想定しているので、table_exists_action = replaceを指定する。これによりテーブル自体を一度削除してからインポートすることができる。前のデータが残っている状態だと正しくインポートできない。
impdp UserID/Password directory=ディレクトリオブジェクト table_exists_action = replace logfile = hirosato_impdp.log

table_exists_action = replaceではテーブルを削除できても、ビューやパッケージなどのオブジェクトは削除できない。それらのオブジェクトを削除するコマンドは現在impdpにはないので、きちんとリカバリを実行するのならば、ビューやパッケージを削除するdrop文を作るかスキーマ自体を一度削除してからimpdpするしかない。

*本番環境にスキーマが1つしかない状態だったのでimpdpのスキーマ単位でデータを入れ替えるremap_schemaが使用できなかった。もちろん本番環境でスキーマ自体をdropさせてからインポートさせるわけにもいかなかった。Oracleさんには早くimpdpにオブジェクト削除機能をつけてほしい。

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