2014年08月02日
ORACLE 11g IMP-00038 キャラクタセットが同じ場合の原因 解決方法

今日は、ORACLE 11gのインポート中に発生するエラーで、エラーメッセージが役にたたない物の原因と解決方法について紹介したいと思います。
外国のブログなどでは、結構紹介されているようですが「日本語」で書かれたページを見つけることが出来なかったので、同じように困っている人向けの情報として書きます。
「IMP-00038:キャラクタ・セットのハンドルに変換できません」
上記エラーメッセージは、ORACLEのリリースノートのメッセージ一覧では次のように書かれています。
「IMP-00038: キャラクタ・セットのハンドルに変換できません
原因: これは内部エラーです。
処置: Oracleサポート・サービスに連絡してください。」
うん……
本題の部分を書きたいと思います。
原因1.インポート先と、エキスポートしたORACLE DBのキャラクタセットが異なっている。
インポート先と、エキスポートしたDBで下記SQLを実行する事で確認することができます。
変換できないキャラクタセットの組み合わせだった場合は、どちらかのDBのキャラクタセットを変えます。
SELECT * FROM nls_database_parameters WHERE parameter ='NLS_CHARACTERSET';
文字化けする場合は、下記の表示形式も確認してください。
SELECT * FROM nls_database_parameters WHERE parameter ='NLS_LANGUAGE';
上記の情報は、いろいろあるので「異なるキャラクタセットの環境にインポート」する方法を調べてください。
原因2.インポート先とエクスポート元のキャラクタセットは一致しているのになぜかエラーとなる場合
今回、私自身これでハマりました。
受領したファイルは、「oracle_database.dmp」だったので、「impコマンド」でインポートしようとしたのですが、「IMP-00038:キャラクタ・セットのハンドルに変換できません 」のエラーとなり、処理が続行できませんでした。
「キャラクタセット」を確認しても一緒。
日本語のWEBページで探しても「インポート先とエクスポート元のキャラクタセット」をそろえましょうだけ。
非常に困りました。
結論をいうと、「EXPDP(データ·ポンプ·エクスポート」で出力したファイルを「impコマンド」でインポートしようとすると上記のメッセージとなるようです。
そのため、「IMPDPコマンド」で、インポートを試してみてください。
※業務で対応の場合は、「ORACLEサポート」に連絡するなどして事故を防ぐように計画してから行ってください。
いきなり試すのが難しい場合は、インポートコマンドの引数に「show=y」を付けると確認だけできます。
エクスポート時に、拡張子を省略すると「dmp」が自動補完されるようです。
日本では、めったに遭遇しないパターンの例外なのかもしれません。

[てぃーだブログ広告]
Posted by Riichi at 17:37
│Comments(2)
│IT関連
この記事へのコメント
大変助かりました。
ありがとうございました。
ありがとうございました。
Posted by huangzf128 at 2017年12月11日 11:35
お役に立てて幸いです。
Posted by Riichi
at 2017年12月12日 21:24
