Skill Note

平凡なエンジニアがメモ代わりにプログラミング, インフラ, ネットワークを書き綴るブログ

Oracle 11g XEへのデータ移行方法を検討してみる

   

Oracleのデータ移行時は移行元と移行先の文字コードに注意する必要があります。

Windows環境のOracleでは「JA16SJIS」や「JA16SJISTILDE」が標準の文字コードであり、Oracle 11g Express Edition(XE)では「AL32UTF8」が標準の文字コードです。

文字コードの違いは、sjisが1文字あたり1~2バイトで扱い、UTFは1文字あたり1~3バイトで扱います。
1文字あたりのバイト数が異なる為、文字列型(VARCHAR, VARCHA2)のデータを移行する場合にバイト数オーバーでエラーになる場合があります。

ここでは文字コードが「JA16SJISTILDE」のDBから「AL32UTF8」のXEへデータを移行すると想定した場合の移行方法を記載します。

案1 文字コードを変更する

移行元と移行先の文字コードを同じにしてデータ移行を行います。

Oracle 11g XEで文字コードを変更する場合は、1サーバ1インスタンスの制約がある為、データベースを再作成する必要があり、再作成時に文字コードを「JA16SJISTILDE」に指定します。

案2 定義を変更する

文字型を扱う単位をバイト数から文字数に変更してデータ移行を行います。

文字型の項目をVARCHAR2→NVARCHAR2に定義を変更してデータ移行を行います。
移行元で定義変更が難しい場合は、先に表定義のみインポートして定義変更後にデータを移行します。

1.表定義のエクスポート

2.表定義のインポート

3.表定義の変更
VARCHAR2の項目をNVARCHAR2に変更する

4.データのエクスポート

5.データのインポート

または、Oracleパラメータ「NLS_LENGTH_SEMANTICS」を変更してデータ移行を行います。
 icon-check-square-o パラメータを設定後にテーブルを作成する必要があります。テーブルをインポートして作成した場合は設定は反映されません。

Google AdSense PC

Google AdSense PC

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

oracle
[Oracle]ジョブをスケジューリングして定期実行する方法

DBMS_SCHEDULERパッケージを使用したジョブスケジューリング Oracleでジョブを定期実行するには、DBMS_SCHEDULERパッケージやDBMS …

sqlserer
[SQL Server]再帰SQLで集計する

WITH(共通テーブル式)を使って集計する WITH句とは 共通テーブル式 (CTE) は、単一の SELECT、INSERT、UPDATE、DELETE、CR …

db
[Database]データベースのバージョン/エディションを確認する方法

OracleとSQLServerのバージョン/エディションを確認 Oracle

SQLServ …

oracle
[Oracle]インストールに失敗する原因と対処方法

Oracleインストールエラー時の確認事項 OracleのデータベースやクライアントをWindowsへインストール中に インストーラが途中で落ちたり、エラーが発 …

oracle
[Oracle]Data Pumpを使用したデータベースのバックアップ

Data Pump機能のexpdp/impdpコマンドを使用するとデータベース全体、スキーマ単位、表単位など対象範囲を指定したバックアップやリストアを行うことが …

oracle
[Oracle]Oracle Clientのアンインストール方法

Oracle Clientを完全にアンインストールする 環境 OS:Windows Server 2008 R2 64bitOracle Client:11g …

oracle
[Oracle]CSALTERを使用してOracle Expressのキャラクタセットを変更する

Oracle Expressでは標準のキャラクタセットとしてAL32UTF8が設定されます。キャラクタセットを意識しないでデータベースの移行やデータベース間のデ …

sqlserer
[SQL Server]IDENTITYの値を初期化する

ID値の初期化(リセット)方法 IDENTITYプロパティを設定した列のID値を初期化(リセット)する方法を記載します。 現在のID値を確認する ID値を確認す …

oracle
[Oracle]端数処理、丸めの方法

ORACLEで数値の端数処理、数値丸めをする 数値を四捨五入する場合は、ROUND関数数値を切り捨てる場合は、TRUNC関数各関数の第2引数の値で、小数部、また …

oracle
Oracle12cのPDBを自動起動にする方法

Oracle12cのプラガブル・データベース(PDB)は初期設定のままでは、毎回、手動で起動させる必要があります。 この記事ではOS起動時やOracle再起動時 …