---
title: "Passer un export Oracle à une autre version"
description: "Convertissez un export SQL Developer ou SQLcl de Oracle 11g ou plus en script qui se charge sur Oracle 19c et suivants, avec les mêmes tables et données."
canonical: https://intosql.com/fr/oracle-en-oracle
last_updated: 2026-10-15
---

# Passer un export Oracle à une autre version

Déposez le fichier .sql qu'écrit Database Export de SQL Developer ou SQLcl, avec ses tables et ses Insert, et téléchargez un script qui se charge sur Oracle 19c et suivants. NUMBER, DATE, TIMESTAMP, les LOB, identités et séquences restent tels quels, XMLTYPE et JSON gardent leur texte dans un CLOB, et chaque changement figure dans le rapport.

[Guide de migration de Oracle vers Oracle](https://intosql.com/docs/migrations/oracle-to-oracle)

[Types de données de Oracle vers Oracle](https://intosql.com/docs/types/oracle-to-oracle)

## Ce qui change entre le fichier et le script

Chaque ligne est une règle appliquée par le convertisseur, avec la ligne de rapport qu'il écrit quand la règle change quelque chose dans vos données.

| Dans le fichier | Dans le script | Ligne du rapport |
| --- | --- | --- |
| BOOLEAN (23ai) | BOOLEAN sur 23ai, sinon NUMBER(1) avec un CHECK de 0 et 1 |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | les mêmes types, avec leurs longueurs BYTE ou CHAR |  |
| VARCHAR2 and NVARCHAR2 past what the target's own types hold | VARCHAR2(4000 CHAR) si chaque valeur tient en 4000 octets, sinon CLOB | `text_as_lob` |
| NUMBER, NUMBER(p,s), FLOAT(b) | les mêmes types NUMBER |  |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | les mêmes types INTERVAL |  |
| DATE, TIMESTAMP(p) | DATE et TIMESTAMP(p), tels que déclarés |  |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | les mêmes types |  |
| JSON (21c), and CLOB holding JSON | JSON à partir de 21c, sinon CLOB |  |
| BLOB, RAW(n), LONG RAW | les mêmes types ; LONG RAW en BLOB |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | CLOB avec leur texte | `type_replaced` |
| collations that ignore case (BINARY_CI) | comparaison exacte | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | GENERATED BY DEFAULT ON NULL AS IDENTITY, qui reprend après l'identifiant le plus élevé |  |
| identity columns the target can't count | un entier simple | `counter_dropped` |
| CREATE SEQUENCE | CREATE SEQUENCE avec les mêmes options |  |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | colonnes virtuelles | `stored_as_virtual` |
| virtual columns with functions IntoSQL doesn't write, and the || operator | une colonne simple | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | aucune valeur par défaut | `default_not_translated` |
| CHECK constraints | traduites |  |
| CHECK constraints with functions IntoSQL doesn't write | non créée | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | non créée | `check_not_enforced` |
| function-based, bitmap and domain indexes | non créée | `index_skipped` |
| foreign keys | après les données ENABLE NOVALIDATE, puis validée avec un avertissement sur les orphelins |  |
| ON DELETE CASCADE that cascades in a cycle or along a second path | supprimé | `foreign_key_action_unsupported` |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | non créée | `foreign_key_skipped` |
| names longer than Oracle 12.1 allows | raccourci | `name_shortened` |
| partitioned tables | une seule table avec les lignes de chaque partition | `partitions_dropped` |
| several schemas in one export | un seul schéma, tables préfixées par le nom de leur schéma | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL retiré | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | listés dans le rapport | `not_converted_objects` |
| exports without CREATE TABLE (data only) | types déduits des valeurs | `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 et Infinity conservés |  |
| NUL characters in text | conservé |  |
| text that isn't valid in its encoding | les octets invalides deviennent le caractère de remplacement | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | copié tel quel | `mojibake_suspected` |

## Charger le script dans Oracle

Le script crée les tables, copie les lignes, puis ajoute les clés, les index et les clés étrangères ; il se charge donc vite et s'arrête à la première erreur.

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

Les clés étrangères sont ajoutées ENABLE NOVALIDATE, donc les nouvelles lignes sont vérifiées tout de suite, puis validées. Si une ancienne ligne pointe vers une ligne qui n'existe pas, le script indique quelle contrainte et la laisse non validée, au lieu d'échouer à mi-chemin.

Pour un gros dump, exécutez SQL*Plus sur la machine de la base de données. Le script valide toutes les 100 lignes. L'utilisateur qui l'exécute a besoin de CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER et CREATE PROCEDURE, et d'un quota sur son tablespace.

## Faire le dump Oracle pour un meilleur résultat

Le convertisseur lit ce que contient le dump. Ces options y gardent davantage de vos données :

- Dans SQL Developer, choisissez Tools, Database Export, avec DDL et le format de données Insert. SQLcl écrit la même chose avec SET SQLFORMAT INSERT.
- Exécutez ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' avant l'export : le format par défaut écrit les dates sans leur heure ni leur siècle.
- Un fichier .dmp de exp ou expdp est binaire : importez-le dans une base Oracle, par exemple Oracle Database Free dans Docker, et exportez-le avec SQL Developer.

## Ce qui n'est pas converti

Les vues, triggers, procédures, fonctions et autres objets écrits dans le propre langage de Oracle sont listés par nom dans le rapport, jamais supprimés en silence, pour que vous vérifiiez chacun face à la version de Oracle cible avant de le recréer.

## Questions sur le passage de Oracle d'une version à l'autre

### Mon dump est-il envoyé ?

Non. Le convertisseur s'exécute dans votre navigateur et lit le dump depuis votre disque par morceaux ; il ne quitte donc jamais votre ordinateur. L'application de bureau et la ligne de commande convertissent aussi sur votre ordinateur.

### Quelle taille peut avoir le dump ?

Le convertisseur ne garde jamais tout le dump en mémoire : il lit le fichier deux fois, par plages, et écrit le script au fur et à mesure. Les dumps de plusieurs gigaoctets se convertissent dans le navigateur, dans l'application de bureau et avec la ligne de commande.

### Puis-je convertir un fichier .dmp de exp ou expdp ?

Pas directement : Data Pump et l'Export d'origine écrivent un format binaire que seul Oracle lit. Importez-le dans n'importe quelle base Oracle, Oracle Database Free tourne dans Docker, et exportez-le avec Database Export de SQL Developer ou SQLcl. Le convertisseur le signale quand il reçoit un fichier .dmp.

### De quelles versions de Oracle l'export peut-il venir ?

Les exports de SQL Developer et SQLcl, avec les définitions de tables de DBMS_METADATA, depuis Oracle 11g. Chaque export de test vient de Oracle 21c et 23ai, dans des sessions américaine, allemande et ISO, et est comparé à sa source cellule par cellule.

### Que deviennent NUMBER, DATE et les autres types Oracle ?

Ils restent tels quels : NUMBER avec sa précision, DATE, TIMESTAMP, les intervalles, CHAR et VARCHAR2 avec leurs longueurs, RAW et les LOB. XMLTYPE et JSON gardent leur texte dans un CLOB, pour que le script se charge sur 19c.

### Les colonnes d'identité et les séquences sont-elles gardées ?

Oui. Les colonnes d'identité et les séquences restent telles quelles et reprennent là où l'export indique qu'elles en étaient.

### Et les packages, procédures et déclencheurs PL/SQL ?

Ils sont listés par nom dans le rapport et ne sont pas convertis, pour que vous puissiez les recréer une fois les tables en place.

### Sur quelles versions de Oracle le script se charge-t-il ?

Oracle 19c et versions ultérieures. Chaque export de test se charge sur 21c et 23ai, et s'arrête à la première erreur en cas de problème.

## Depuis Oracle

- [Oracle vers PostgreSQL](https://intosql.com/fr/oracle-en-postgresql)
- [Oracle vers MySQL](https://intosql.com/fr/oracle-en-mysql)
- [Oracle vers MariaDB](https://intosql.com/fr/oracle-en-mariadb)
- [Oracle vers SQLite](https://intosql.com/fr/oracle-en-sqlite)
- [Oracle vers SQL Server](https://intosql.com/fr/oracle-en-sql-server)

## Vers Oracle

- [MySQL vers Oracle](https://intosql.com/fr/mysql-en-oracle)
- [MariaDB vers Oracle](https://intosql.com/fr/mariadb-en-oracle)
- [PostgreSQL vers Oracle](https://intosql.com/fr/postgresql-en-oracle)
- [SQL Server vers Oracle](https://intosql.com/fr/sql-server-en-oracle)
- [SQLite vers Oracle](https://intosql.com/fr/sqlite-en-oracle)

## Guide et toutes les paires

- [Guide de migration de Oracle vers Oracle](https://intosql.com/docs/migrations/oracle-to-oracle)
- [Types de données de Oracle vers Oracle](https://intosql.com/docs/types/oracle-to-oracle)
- [Toutes les paires de bases de données](https://intosql.com/fr/migration-de-base-de-donnees)
