---
title: "Oracle のエクスポートを別のバージョンへ"
description: "Oracle 11g 以降の SQL Developer か SQLcl のエクスポートを、Oracle 19c 以降で読み込めるスクリプトに変換。同じテーブル、キー、データを保ちます。"
canonical: https://intosql.com/ja/oracle-to-oracle
last_updated: 2026-10-15
---

# Oracle のエクスポートを別のバージョンへ

SQL Developer のデータベース・エクスポートか SQLcl が書き出す、テーブルと Insert 文を含む .sql ファイルをドロップすると、Oracle 19c 以降で読み込めるスクリプトをダウンロードできます。NUMBER、DATE、TIMESTAMP、LOB、IDENTITY、シーケンスはそのまま残り、XMLTYPE と JSON はテキストを CLOB に保ちます。すべての変更はレポートに記載されます。

[Oracle から Oracle への移行ガイド](https://intosql.com/docs/migrations/oracle-to-oracle)

[Oracle から Oracle へのデータ型](https://intosql.com/docs/types/oracle-to-oracle)

## ファイルとスクリプトで変わること

各行はコンバーターが適用するルールです。ルールによってデータが変わったときにレポートに書かれる行も示します。

| ファイルでは | スクリプトでは | レポートの行 |
| --- | --- | --- |
| BOOLEAN (23ai) | 23ai では BOOLEAN、それ以外は 0 と 1 の CHECK 付きの NUMBER(1) |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | 同じ型、BYTE または CHAR の長さ付き |  |
| VARCHAR2 and NVARCHAR2 past what the target's own types hold | すべての値が 4000 バイトに収まれば VARCHAR2(4000 CHAR)、それ以外は CLOB | `text_as_lob` |
| NUMBER, NUMBER(p,s), FLOAT(b) | 同じ NUMBER 型 |  |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | 同じ INTERVAL 型 |  |
| DATE, TIMESTAMP(p) | 宣言どおりの DATE と TIMESTAMP(p) |  |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | 同じ型 |  |
| JSON (21c), and CLOB holding JSON | 21c 以降は JSON、それ以外は CLOB |  |
| BLOB, RAW(n), LONG RAW | 同じ型、LONG RAW は BLOB |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | テキストを持つ CLOB | `type_replaced` |
| collations that ignore case (BINARY_CI) | 厳密な比較 | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | GENERATED BY DEFAULT ON NULL AS IDENTITY、最大の ID の後から継続 |  |
| identity columns the target can't count | 普通の整数 | `counter_dropped` |
| CREATE SEQUENCE | 同じオプションの CREATE SEQUENCE |  |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | 仮想列 | `stored_as_virtual` |
| virtual columns with functions IntoSQL doesn't write, and the || operator | 普通の列 | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | デフォルト値なし | `default_not_translated` |
| CHECK constraints | 変換済み |  |
| CHECK constraints with functions IntoSQL doesn't write | 作成しない | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | 作成しない | `check_not_enforced` |
| function-based, bitmap and domain indexes | 作成しない | `index_skipped` |
| foreign keys | データの後に ENABLE NOVALIDATE で作成してから検証し、孤立した行があれば警告 |  |
| ON DELETE CASCADE that cascades in a cycle or along a second path | 削除 | `foreign_key_action_unsupported` |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | 作成しない | `foreign_key_skipped` |
| names longer than Oracle 12.1 allows | 短縮 | `name_shortened` |
| partitioned tables | すべてのパーティションの行を持つ 1 つのテーブル | `partitions_dropped` |
| several schemas in one export | 1 つのスキーマ、テーブル名の先頭にスキーマ名 | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL を削除 | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | レポートに記載 | `not_converted_objects` |
| exports without CREATE TABLE (data only) | 値から読み取った型 | `no_schema` |
| expressions in INSERT values other than the ones exports write | NULL | `expression_value` |
| types IntoSQL doesn't know, and object types | CLOB | `unknown_type` |
| dates before year 1 and time zones given as region names | NULL | `date_out_of_range` |
| NaN and Infinity in BINARY_FLOAT and BINARY_DOUBLE | NaN と Infinity を保持 |  |
| NUL characters in text | 保持 |  |
| text that isn't valid in its encoding | 不正なバイトを置換文字に | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | そのままコピー | `mojibake_suspected` |

## スクリプトを Oracle に読み込む

スクリプトはテーブルを作成して行をコピーしてから、キー、インデックス、外部キーを追加します。そのため読み込みが速く、最初のエラーで止まります。

```shell
NLS_LANG=.AL32UTF8 sqlplus -S -L user@//localhost/mydb @oracle.oracle.sql
```

外部キーは ENABLE NOVALIDATE で追加するため新しい行はすぐにチェックされ、その後に検証します。古い行が存在しない行を参照していれば、途中で失敗する代わりに、どの制約かをスクリプトが示し、その制約は未検証のまま残します。

大きなダンプでは、データベースと同じマシンで SQL*Plus を実行してください。スクリプトは 100 行ごとにコミットします。実行するユーザーには CREATE TABLE、CREATE SEQUENCE、CREATE TRIGGER、CREATE PROCEDURE の権限と、表領域の割り当てが必要です。

## Oracle を最適な方法でダンプする

コンバーターはダンプの内容を読み取ります。次のオプションを使うと、より多くのデータがダンプに残ります。

- SQL Developer で Tools、Database Export を選び、DDL と Insert データ形式を指定します。SQLcl では SET SQLFORMAT INSERT で同じものを書き出せます。
- エクスポートの前に ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' を実行してください。デフォルトの形式では日付が時刻や世紀なしで書き出されます。
- exp や expdp の .dmp ファイルはバイナリです。Oracle データベース (たとえば Docker 上の Oracle Database Free) にインポートし、SQL Developer でエクスポートしてください。

## 変換されないもの

ビュー、トリガー、プロシージャ、関数など Oracle 独自の言語で書かれたオブジェクトは、黙って削除されることなくレポートに名前で記載されます。読み込む先の Oracle のバージョンで確認してから作り直せます。

## Oracle のバージョン間の移行に関する質問

### ダンプはアップロードされますか？

いいえ。コンバーターはブラウザ上で動作し、ダンプをディスクから少しずつ読み込むため、ダンプがコンピューターの外に出ることはありません。デスクトップアプリとコマンドラインも、お使いのコンピューター上で変換します。

### ダンプはどのくらいの大きさまで扱えますか？

コンバーターはダンプ全体をメモリに保持しません。ファイルを範囲ごとに 2 回読み、読みながらスクリプトを書き出します。数 GB のダンプも、ブラウザ、デスクトップアプリ、コマンドラインで変換できます。

### exp や expdp の .dmp ファイルは変換できますか？

直接はできません。Data Pump と従来の Export は Oracle だけが読めるバイナリ形式で書き出します。任意の Oracle データベース (Oracle Database Free は Docker で動きます) にインポートし、SQL Developer の Database Export または SQLcl でエクスポートしてください。.dmp ファイルを受け取ると、コンバーターがその旨を表示します。

### どの Oracle バージョンのエクスポートに対応していますか？

Oracle 11g 以降から SQL Developer と SQLcl で書き出した、DBMS_METADATA のテーブル定義を含むエクスポートです。すべてのテスト用エクスポートは Oracle 21c と 23ai でアメリカ式、ドイツ式、ISO のセッションから作成し、ソースとセル単位で比較しています。

### NUMBER、DATE などの Oracle の型はどうなりますか？

そのまま残ります。NUMBER は精度付き、DATE、TIMESTAMP、interval、CHAR と VARCHAR2 は長さ付きで、RAW と LOB もそのままです。XMLTYPE と JSON はテキストを CLOB に保つため、スクリプトは 19c で読み込めます。

### IDENTITY 列とシーケンスは保たれますか？

はい。IDENTITY 列とシーケンスはそのまま残り、エクスポートに記録された位置から続きます。

### PL/SQL のパッケージ、プロシージャ、トリガーはどうなりますか？

変換はせず、レポートに名前で一覧するので、テーブルを読み込んだ後に作り直せます。

### スクリプトはどの Oracle バージョンで読み込めますか？

Oracle 19c 以降です。すべてのテスト用エクスポートを 21c と 23ai で読み込み、問題があれば最初のエラーで止まります。

## Oracle から

- [Oracle から PostgreSQL へ](https://intosql.com/ja/oracle-to-postgresql)
- [Oracle から MySQL へ](https://intosql.com/ja/oracle-to-mysql)
- [Oracle から MariaDB へ](https://intosql.com/ja/oracle-to-mariadb)
- [Oracle から SQLite へ](https://intosql.com/ja/oracle-to-sqlite)
- [Oracle から SQL Server へ](https://intosql.com/ja/oracle-to-sql-server)

## Oracle へ

- [MySQL から Oracle へ](https://intosql.com/ja/mysql-to-oracle)
- [MariaDB から Oracle へ](https://intosql.com/ja/mariadb-to-oracle)
- [PostgreSQL から Oracle へ](https://intosql.com/ja/postgresql-to-oracle)
- [SQL Server から Oracle へ](https://intosql.com/ja/sql-server-to-oracle)
- [SQLite から Oracle へ](https://intosql.com/ja/sqlite-to-oracle)

## ガイドとすべての組み合わせ

- [Oracle から Oracle への移行ガイド](https://intosql.com/docs/migrations/oracle-to-oracle)
- [Oracle から Oracle へのデータ型](https://intosql.com/docs/types/oracle-to-oracle)
- [すべてのデータベースの組み合わせ](https://intosql.com/ja/database-migration)
