読者です 読者をやめる 読者になる 読者になる

YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

DataPumpを用いたExport/Importを異なるバージョン間で行ってはまった

OracleDB

はじめに

自分はずっとアプリケーションサイドにいたので、最近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)