質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Q&A

2回答

16206閲覧

新バージョンのOracle(12c)から旧バージョンのOracle(10g)へのデータ移行

tss

総合スコア12

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

0グッド

1クリップ

投稿2017/08/18 02:20

###前提・実現したいこと
テスト用にOracle 12c のデータベースからOracle10gのデータベースにexpdp/impdpを利用して
データの移行をしようとしていますが、いくつかのテーブルでエラーが発生しています。
<発行しているコマンド>
expdp ユーザ名/パスワード@xxxxx dumpfile=PUMP_DIR:ファイル名.dmp content=DATA_ONLY tables=テーブル名 VERSION=10.2.0

ご教示の程よろしくお願いします。

###発生している問題・エラーメッセージ
expdp時に以下のエラーが発生

ORA-39166: オブジェクト"テーブル名"が見つかりません。 ORA-31655: ジョブに対してデータまたはメタデータ・オブジェクトが選択されていません

上記はexpdp時の「VERSION=10.2.0」を付与した場合のみ発生し、外すと発生せずに成功しますが、
移行先のバージョンが古いため、impdp時に失敗してしまいます。

###該当のソースコード
<発行しているコマンド>
expdp ユーザ名/パスワード@xxxxx dumpfile=PUMP_DIR:ファイル名.dmp content=DATA_ONLY tables=テーブル名 VERSION=10.2.0

###試したこと
ネット上で調べたところ12cには存在し10gには存在しない機能を利用している場合や外部キーなどを使用していると発生するということはわかったのですが、該当テーブルは特殊なテーブルではなく、特殊な項目もなければ外部キーも張っていません。
念のため、INDEXもDROPして試しましたが駄目でした。
<使用しているデータ型>
CHAR,VARCHAR2,TIMESTAMP,NUMBER
制約等は特になし

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

昔から、exp/imp, expdp/impdp 共に下位バージョンへの移行が動作保障されていません。新しい機能についてはパッチが提供されているかもしれないのでVERSIONがらみのパッチがないか、Oracle サポートに確認されては?(要サポート契約)

有償ソフトの Object BrowserでデータをINSERT文に落として移行することもできますが、CLOBがあるならOracle11.2を経由してDB LINKで持っていくことを考えないといけません。

既にあるOracle10.2を11.2にバージョンを上げることも検討されては?

投稿2017/08/19 02:31

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tss

2017/08/22 10:27

コメントありがとうございます。 また、返信が遅くなり申し訳ありません。 借り物の環境なので、基本的に環境をいじるのは難しいです。 そもそも新バージョンから旧バージョンにデータを移そうとしていることがいけないのかもしれませんね。
Orlofsky

2017/09/01 21:42

Oracleはサポート契約が有効ならライセンスのバージョンアップは無料のはずです。オラクルの担当営業に確認されては?
guest

0

ちょっと検索した感じだと、impdpで上がっている話ですが、ユーザーを指定する必要があるということですが
expdpでも試されていますか。

またDATA_ONYLであればcsvファイルで移行することも可能です。

投稿2017/08/18 04:32

szk.

総合スコア1400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tss

2017/08/18 04:46

コメントありがとうございます。 ユーザ指定というのはtablesに「ユーザ名(スキーマ).テーブル名」にするという話でしょうか?であれば、実施しています。 csvの件ですが、一部テーブルにCLOBのデータがあるため、出来ればexpdp/impdpでと考えています。
tss

2017/08/18 06:37

たびたびありがとうございます。 確かにそのサイトです。 やはり11を経由しないと無理なんでしょうか。 1点謎なのが、該当テーブルは別に履歴テーブルを持っていてそちらはまったく同じレイアウトに追加で日付項目をもっているだけなのですが、そのテーブルは問題なくexpdp出来るんですよね。 謎です。。。
szk.

2017/08/18 07:10

サイトにも具体的に何がダメだったか記載がないので、 別の方法はまた探さないといけません。 知見のある方の回答を待つのもいいかと思います。 DDLもoracle内部でどういう持ち方をしているかは分かりませんので、 何かが怪しい動きをしているとしか推測できません。 履歴テーブルとの違いは、、  外部参照していないし別のテーブルから参照されてもいない  Viewなど別の何かから利用もされていない  PKがない?  シーケンスがない? くらいでしょうか。 履歴テーブルが持ってこれるなら、 対象のテーブルと全く同じtmpテーブルを作って、 そこからexpdpでダンプ取得したらいけそうな気がします。
tss

2017/08/18 10:01

助言ありがとうございます。 履歴テーブルとの違いをいろいろ見てみたのですが、特にありませんでした。 確かにPKの有無の違いはあったのですが、CHAR項目のPKで同じようにPKを持っている他のテーブルは出来ています。 助言の通り、tmpテーブルを作ってやってみたら出来ました。何故かはわかりませんが。。。 とりあえず先には進めましたが、問題自体は気になるので質問はしばらくこのままで知見のある方の回答を待ってみます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問