2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

dmpファイルインポート中に「警告: 文字セット変換でデータが失われた可能性があります」と表示された時の対応

Last updated at Posted at 2022-06-25

事象

オンプレミスの本番環境Oracle DBからRDS for OralceにData Pumpを用いたデータ移行リハーサルを実施していました。
dmpファイルをRDSにダウンロードし、スキーマをインポートしている時、インポートログに下記のようなメッセージが表示されました。

JA16SJISTILDE文字セットおよびAL16UTF16 NCHAR文字セットでインポートを実行します
JA16SJISTILDE文字セットおよびUTF8 NCHAR文字セットでエクスポートを実行します
警告: 文字セット変換でデータが失われた可能性があります

どうやら文字コードの変換に関して問題が生じたようです。

原因

オンプレミスDBとRDSで各国語キャラクタセットの文字コード指定が異なっていました。
下記のSQLを実行して確認しました。

select * from NLS_DATABASE_PARAMETERS
where parameter = 'NLS_NCHAR_CHARACTERSET'

その結果、オンプレミスDBにはUTF8が、RDSにはAL16UTF16が設定されており、上記メッセージの原因になっていることが分かりました。
Oracle公式に記載されている各国語キャラクタセットが影響するデータ型はNCHARとNVARCHAR2であるという事実から、テーブルにそれらのデータ型がなければ特に影響はないようです。

感想

警告がデータ不整合を連想させるものだったので大変びっくりし、全件テーブル比較して差異を探す必要があるのかと不安になっておりましたが、NCHARとNVARCHAR2は使用していなかったので安心しました。データベースキャラクタセットだけでなく、各国語キャラクタセットも影響するのだなと勉強になりました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?