---
title: "Een Oracle-export naar een andere versie"
description: "Zet een export van SQL Developer of SQLcl uit Oracle 11g of later om naar een script dat laadt op Oracle 19c en later, met dezelfde tabellen, sleutels en data."
canonical: https://intosql.com/nl/oracle-naar-oracle
last_updated: 2026-10-15
---

# Een Oracle-export naar een andere versie

Sleep het .sql-bestand dat Database Export van SQL Developer of SQLcl schrijft, met de tabellen en Insert-statements, hierheen en download een script dat laadt op Oracle 19c en later. NUMBER, DATE, TIMESTAMP, LOB's, identities en sequences blijven zoals ze zijn, XMLTYPE en JSON bewaren hun tekst in een CLOB, en elke wijziging staat in het rapport.

[Migratiehandleiding Oracle naar Oracle](https://intosql.com/docs/migrations/oracle-to-oracle)

[Datatypen van Oracle naar Oracle](https://intosql.com/docs/types/oracle-to-oracle)

## Wat er verandert tussen het bestand en het script

Elke rij is een regel die de converter toepast, met de rapportregel die hij schrijft als de regel iets in je data verandert.

| In het bestand | In het script | Rapportregel |
| --- | --- | --- |
| BOOLEAN (23ai) | BOOLEAN op 23ai, anders NUMBER(1) met een CHECK op 0 en 1 |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | dezelfde typen, met hun BYTE- of CHAR-lengtes |  |
| VARCHAR2 and NVARCHAR2 past what the target's own types hold | VARCHAR2(4000 CHAR) als elke waarde in 4000 bytes past, anders CLOB | `text_as_lob` |
| NUMBER, NUMBER(p,s), FLOAT(b) | dezelfde NUMBER-typen |  |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | dezelfde INTERVAL-typen |  |
| DATE, TIMESTAMP(p) | DATE en TIMESTAMP(p), zoals gedeclareerd |  |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | dezelfde typen |  |
| JSON (21c), and CLOB holding JSON | JSON op 21c en later, anders CLOB |  |
| BLOB, RAW(n), LONG RAW | dezelfde typen; LONG RAW als BLOB |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | CLOB met hun tekst | `type_replaced` |
| collations that ignore case (BINARY_CI) | exacte vergelijking | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | GENERATED BY DEFAULT ON NULL AS IDENTITY, verdergaand na het hoogste id |  |
| identity columns the target can't count | een geheel getal zonder teller | `counter_dropped` |
| CREATE SEQUENCE | CREATE SEQUENCE met dezelfde opties |  |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | virtuele kolommen | `stored_as_virtual` |
| virtual columns with functions IntoSQL doesn't write, and the || operator | een gewone kolom | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | geen standaardwaarde | `default_not_translated` |
| CHECK constraints | vertaald |  |
| CHECK constraints with functions IntoSQL doesn't write | niet aangemaakt | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | niet aangemaakt | `check_not_enforced` |
| function-based, bitmap and domain indexes | niet aangemaakt | `index_skipped` |
| foreign keys | na de data, ENABLE NOVALIDATE, daarna gevalideerd met een waarschuwing bij wezen |  |
| ON DELETE CASCADE that cascades in a cycle or along a second path | weggelaten | `foreign_key_action_unsupported` |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | niet aangemaakt | `foreign_key_skipped` |
| names longer than Oracle 12.1 allows | ingekort | `name_shortened` |
| partitioned tables | één tabel met de rijen van elke partitie | `partitions_dropped` |
| several schemas in one export | één schema, tabellen met de naam van hun schema ervoor | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL weggelaten | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | vermeld in het rapport | `not_converted_objects` |
| exports without CREATE TABLE (data only) | typen afgeleid uit de waarden | `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 en Infinity behouden |  |
| NUL characters in text | behouden |  |
| text that isn't valid in its encoding | de foute bytes als het vervangingsteken | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | ongewijzigd gekopieerd | `mojibake_suspected` |

## Het script in Oracle laden

Het script maakt de tabellen aan, kopieert de rijen en voegt daarna sleutels, indexen en refererende sleutels toe, zodat het snel laadt en bij de eerste fout stopt.

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

Refererende sleutels worden toegevoegd met ENABLE NOVALIDATE, zodat nieuwe rijen meteen worden gecontroleerd, en daarna gevalideerd. Verwijst een oude rij naar een rij die niet bestaat, dan vertelt het script welke constraint het is en laat het die ongevalideerd, in plaats van halverwege te mislukken.

Voer bij een grote dump SQL*Plus uit op dezelfde machine als de database. Het script commit elke 100 rijen. De gebruiker die het uitvoert, heeft CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER en CREATE PROCEDURE nodig, en quota op zijn tablespace.

## Een dump van Oracle maken voor het beste resultaat

De converter leest wat de dump bevat. Met deze opties blijft er meer van je data in staan:

- Kies in SQL Developer Tools, Database Export, met DDL en het dataformaat Insert. SQLcl schrijft hetzelfde met SET SQLFORMAT INSERT.
- Voer ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' uit voordat je exporteert: het standaardformaat schrijft datums zonder tijd of eeuw.
- Een .dmp-bestand van exp of expdp is binair: importeer het in een Oracle-database, bijvoorbeeld Oracle Database Free in Docker, en exporteer het met SQL Developer.

## Wat niet wordt geconverteerd

Weergaven, triggers, procedures, functies en andere objecten in de eigen taal van Oracle staan op naam in het rapport en worden nooit stilletjes weggelaten, zodat je elk ervan kunt controleren tegen de Oracle-versie waarin je laadt voordat je het opnieuw aanmaakt.

## Vragen over Oracle verhuizen tussen versies

### Wordt mijn dump geüpload?

Nee. De converter draait in je browser en leest de dump in delen van je schijf, dus hij verlaat je computer nooit. De desktopapp en de opdrachtregel converteren ook op je computer.

### Hoe groot mag de dump zijn?

De converter houdt nooit de hele dump in het geheugen: hij leest het bestand twee keer, in bereiken, en schrijft het script gaandeweg. Dumps van meerdere gigabytes worden geconverteerd in de browser, in de desktopapp en met de opdrachtregel.

### Kan ik een .dmp-bestand van exp of expdp converteren?

Niet direct: Data Pump en de oorspronkelijke Export schrijven een binair formaat dat alleen Oracle leest. Importeer het bestand in een willekeurige Oracle-database (Oracle Database Free draait in Docker) en exporteer het met Database Export van SQL Developer of met SQLcl. De converter meldt dat wanneer hij een .dmp-bestand krijgt.

### Van welke Oracle-versies kan de export komen?

Exports uit SQL Developer en SQLcl, met de tabeldefinities van DBMS_METADATA, vanaf Oracle 11g. Elke testexport komt van Oracle 21c en 23ai, in Amerikaanse, Duitse en ISO-sessies, en wordt cel voor cel met zijn bron vergeleken.

### Wat gebeurt er met NUMBER, DATE en de andere Oracle-typen?

Ze blijven zoals ze zijn: NUMBER met zijn precisie, DATE, TIMESTAMP, intervallen, CHAR en VARCHAR2 met hun lengtes, RAW en de LOB's. XMLTYPE en JSON behouden hun tekst in een CLOB, zodat het script laadt op 19c.

### Blijven identity-kolommen en sequences behouden?

Ja. Identity-kolommen en sequences blijven zoals ze zijn en gaan verder vanaf waar ze volgens de export waren gekomen.

### En PL/SQL-packages, procedures en triggers?

Ze staan op naam in het rapport en worden niet geconverteerd, zodat je ze opnieuw kunt maken zodra de tabellen er zijn.

### Op welke Oracle-versies laadt het script?

Oracle 19c en later. Elke testexport laadt op 21c en 23ai en stopt bij de eerste fout als er iets misgaat.

## Vanuit Oracle

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

## Naar Oracle

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

## Handleiding en elke combinatie

- [Migratiehandleiding Oracle naar Oracle](https://intosql.com/docs/migrations/oracle-to-oracle)
- [Datatypen van Oracle naar Oracle](https://intosql.com/docs/types/oracle-to-oracle)
- [Elke databasecombinatie](https://intosql.com/nl/databasemigratie)
