---
title: "Oracle zu MariaDB migrieren, im Browser"
description: "Migriere eine Oracle-Datenbank zu MariaDB: Ein Export aus SQL Developer oder SQLcl wird ein Skript mit denselben Tabellen, Schlüsseln und Daten, plus Bericht."
canonical: https://intosql.com/de/oracle-in-mariadb
last_updated: 2026-10-15
---

# Oracle zu MariaDB migrieren, im Browser

Leg die .sql-Datei ab, die Database Export in SQL Developer oder SQLcl schreibt, mit ihren Tabellen und Insert-Anweisungen, und lade ein MariaDB-Skript mit denselben Tabellen, Schlüsseln, Indizes und Daten herunter. Jeder Wert, den MariaDB nicht unverändert aufnehmen kann, und jedes Objekt, das es nicht übernimmt, steht im Bericht.

[Leitfaden: Oracle zu MariaDB migrieren](https://intosql.com/docs/migrations/oracle-to-mariadb)

[Datentypen von Oracle zu MariaDB](https://intosql.com/docs/types/oracle-to-mariadb)

## Was sich von Oracle zu MariaDB ändert

Jede Zeile ist eine Regel, die der Konverter anwendet, mit der Berichtszeile, die er schreibt, wenn die Regel etwas an deinen Daten ändert.

| In Oracle | In MariaDB | Berichtszeile |
| --- | --- | --- |
| BOOLEAN (23ai) | tinyint(1) |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | varchar(n) bis 1024 Zeichen, darüber text-Typen |  |
| NUMBER, NUMBER(p,s), FLOAT(b) | decimal(p,s) oder bigint |  |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | varchar(100) mit dem Text von Oracle, etwa +01-06 | `type_replaced` |
| DATE, TIMESTAMP(p) | datetime(p) |  |
| TIMESTAMP(7) to TIMESTAMP(9) | sechs Sekundenstellen, die siebte abgeschnitten | `fraction_cut` |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | datetime(p) in UTC | `moments_as_utc` |
| JSON (21c), and CLOB holding JSON | json |  |
| BLOB, RAW(n), LONG RAW | binary(n), varbinary(n) und blob-Typen |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | text | `type_replaced` |
| collations that ignore case (BINARY_CI) | exakter Vergleich (utf8mb4_bin) | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | AUTO_INCREMENT, weiter nach der höchsten ID |  |
| identity columns the target can't count | eine normale Ganzzahl | `counter_dropped` |
| CREATE SEQUENCE | CREATE SEQUENCE mit denselben Optionen |  |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | generierte Spalten, STORED bei PERSISTED, sonst VIRTUAL |  |
| virtual columns with functions IntoSQL doesn't write, and the || operator | eine normale Spalte | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | kein Standardwert | `default_not_translated` |
| CHECK constraints | übersetzt |  |
| CHECK constraints with functions IntoSQL doesn't write | nicht angelegt | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | nicht angelegt | `check_not_enforced` |
| function-based, bitmap and domain indexes | nicht angelegt | `index_skipped` |
| foreign keys | Fremdschlüssel, geladen mit FOREIGN_KEY_CHECKS=0 |  |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | nicht angelegt | `foreign_key_skipped` |
| partitioned tables | eine Tabelle mit den Zeilen aller Partitionen | `partitions_dropped` |
| several schemas in one export | eine Datenbank, jede Tabelle mit dem Namen ihres Schemas vorangestellt | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL entfernt | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | im Bericht aufgeführt | `not_converted_objects` |
| exports without CREATE TABLE (data only) | Typen aus den Werten gelesen | `no_schema` |
| expressions in INSERT values other than the ones exports write | NULL | `expression_value` |
| types IntoSQL doesn't know, and object types | longtext | `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 | NULL | `invalid_value_null` |
| NUL characters in text | beibehalten |  |
| text that isn't valid in its encoding | die fehlerhaften Bytes als Ersatzzeichen | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | unverändert kopiert | `mojibake_suspected` |

## Das Skript in MariaDB laden

Das Skript legt die Tabellen an, kopiert die Zeilen und fügt dann Schlüssel, Indizes und Fremdschlüssel hinzu, so lädt es schnell und hält beim ersten Fehler an.

```shell
mariadb --default-character-set=utf8mb4 mydb < oracle.mariadb.sql
```

Fremdschlüssel werden so angelegt, wie der Dump sie deklariert, mit FOREIGN_KEY_CHECKS=0, während die Zeilen laden, wie bei mysqldump.

Führe bei einem großen Dump den Client auf dem Rechner des Servers aus und erhöhe max_allowed_packet, wenn eine einzelne Zeile sehr groß ist.

IntoSQL Pro lädt die Datei aus der Desktop-App oder der Kommandozeile direkt in MariaDB, ohne ein Skript zu schreiben.

## Den Oracle-Dump für das beste Ergebnis erstellen

Der Konverter liest, was der Dump enthält. Mit diesen Optionen bleibt mehr von deinen Daten darin:

- Wähle in SQL Developer Tools, Database Export, mit DDL und dem Datenformat Insert. SQLcl schreibt dasselbe mit SET SQLFORMAT INSERT.
- Führe vor dem Export ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' aus: Das Standardformat schreibt Datumswerte ohne Uhrzeit und Jahrhundert.
- Eine .dmp-Datei aus exp oder expdp ist binär: Importiere sie in eine Oracle-Datenbank, zum Beispiel Oracle Database Free in Docker, und exportiere sie mit SQL Developer.

## Was nicht konvertiert wird

Sichten, Pakete, Prozeduren, Funktionen, Trigger, Typen und Synonyme sind in PL/SQL geschrieben. Sie stehen mit Namen im Bericht und werden nie stillschweigend weggelassen, damit du sie für MariaDB neu schreiben kannst.

## Fragen zu Oracle zu MariaDB

### Wird mein Dump hochgeladen?

Nein. Der Konverter läuft in deinem Browser und liest den Dump stückweise von deiner Festplatte, daher verlässt er nie deinen Computer. Die Desktop-App und die Kommandozeile konvertieren ebenfalls auf deinem Computer.

### Wie groß darf der Dump sein?

Der Konverter hält nie den ganzen Dump im Speicher: Er liest die Datei zweimal, in Abschnitten, und schreibt das Skript fortlaufend. Dumps von mehreren Gigabyte werden im Browser, in der Desktop-App und mit der Kommandozeile konvertiert.

### Kann ich eine .dmp-Datei aus exp oder expdp konvertieren?

Nicht direkt: Data Pump und das ursprüngliche Export-Werkzeug schreiben ein binäres Format, das nur Oracle liest. Importiere die Datei in eine beliebige Oracle-Datenbank (Oracle Database Free läuft in Docker) und exportiere sie mit Database Export in SQL Developer oder mit SQLcl. Der Konverter weist darauf hin, wenn er eine .dmp-Datei bekommt.

### Aus welchen Oracle-Versionen kann der Export stammen?

Exporte aus SQL Developer und SQLcl, mit den Tabellendefinitionen von DBMS_METADATA, ab Oracle 11g. Jeder Test-Export stammt aus Oracle 21c und 23ai, in amerikanischen, deutschen und ISO-Sitzungen, und wird Zelle für Zelle mit seiner Quelle verglichen.

### Was passiert mit NUMBER, DATE und den anderen Oracle-Typen?

NUMBER wird decimal, bei ganzen Zahlen bigint und über 65 Stellen Text; DATE wird datetime und behält seine Uhrzeit; CLOB wird longtext, BLOB blob, und Intervalle behalten den Text von Oracle. NaN und Infinity werden NULL, und der Bericht zählt sie.

### Bleiben Identity-Spalten und Sequenzen erhalten?

Ja. Identity-Spalten werden AUTO_INCREMENT und machen nach der höchsten ID weiter; Sequenzen werden MariaDB-Sequenzen, und Standardwerte, die aus einer Sequenz ziehen, ziehen weiter aus ihr.

### Was ist mit PL/SQL-Paketen, Prozeduren und Triggern?

Sie stehen mit Namen im Bericht und werden nicht konvertiert, weil jede Datenbank sie in ihrer eigenen Sprache schreibt.

### Auf welchen MariaDB-Versionen lädt das Skript?

MariaDB 10.11 und neuer. Jeder Test-Export lädt auf 10.11 und 11.4 und hält beim ersten Fehler an, falls etwas schiefgeht.

## Aus Oracle

- [Oracle zu PostgreSQL](https://intosql.com/de/oracle-in-postgresql)
- [Oracle zu MySQL](https://intosql.com/de/oracle-in-mysql)
- [Oracle zu SQLite](https://intosql.com/de/oracle-in-sqlite)
- [Oracle zu SQL Server](https://intosql.com/de/oracle-in-sql-server)
- [Oracle zu Oracle](https://intosql.com/de/oracle-in-oracle)

## Nach MariaDB

- [MySQL zu MariaDB](https://intosql.com/de/mysql-in-mariadb)
- [MariaDB zu MariaDB](https://intosql.com/de/mariadb-in-mariadb)
- [PostgreSQL zu MariaDB](https://intosql.com/de/postgresql-in-mariadb)
- [SQL Server zu MariaDB](https://intosql.com/de/sql-server-in-mariadb)
- [SQLite zu MariaDB](https://intosql.com/de/sqlite-in-mariadb)

## Leitfaden und alle Paare

- [MariaDB zu Oracle](https://intosql.com/de/mariadb-in-oracle)
- [Leitfaden: Oracle zu MariaDB migrieren](https://intosql.com/docs/migrations/oracle-to-mariadb)
- [Datentypen von Oracle zu MariaDB](https://intosql.com/docs/types/oracle-to-mariadb)
- [Alle Datenbankpaare](https://intosql.com/de/datenbankmigration)
