はじめに
自分はずっとアプリケーションサイドにいたので、最近DBを使う中で結構忘れてたり知らないことが出ています。今回は異なるバージョンのDB間で気をつけることメモ。
メモ
想定しているのは下記のような状況。
項目 | Source | Target |
---|---|---|
DB | 11g R1 | 10g R2 |
スキーマ | FOO | BAR |
表領域 | HOGE | PIYO |
特定のテーブルの定義だけを移したい。
Export
- DBでの設定
- directoryの作成&実行ユーザへの書込・読取権限追加
- expdpのパラメータ
- tables
ワイルドカードも使えます。tables=('PRE_%')でPRE_XXXXというテーブルをexportできる。
-
- version
Targetのバージョンを指定しておく。version=10.2.0
-
- content
定義だけ(METADATA_ONLY)、データだけ(DATA_ONLY)、全部(ALL)から。今回はcontent=METADATA_ONLY
Import
- DBでの設定
- directoryの作成&実行ユーザへの書込・読取権限追加
- ユーザへIMP_FULL_DATABASEロールの付与
- impdpのパラメータ
- remap_schema
FOOユーザのスキーマをBARユーザに変更する場合は、remap_schema=(FOO:BAR)
-
- remap_tablespace
表領域HOGEにあったものを表領域PIYOに変更する場合は、remap_tablespace=(HOGE:PIYO)