---
title: "Migracja Oracle do MySQL w przeglądarce"
description: "Migruj bazę Oracle do MySQL: zamień eksport z SQL Developer lub SQLcl w skrypt z tymi samymi tabelami, kluczami i danymi oraz raportem każdej zmiany."
canonical: https://intosql.com/pl/oracle-do-mysql
last_updated: 2026-10-15
---

# Migracja Oracle do MySQL w przeglądarce

Upuść plik .sql zapisany przez Database Export w SQL Developer lub przez SQLcl, z tabelami i instrukcjami Insert, i pobierz skrypt MySQL z tymi samymi tabelami, kluczami, indeksami i danymi. Każda wartość, której MySQL nie może przechować bez zmian, i każdy obiekt, którego nie przenosi, są wymienione w raporcie.

[Przewodnik migracji Oracle do MySQL](https://intosql.com/docs/migrations/oracle-to-mysql)

[Typy danych z Oracle do MySQL](https://intosql.com/docs/types/oracle-to-mysql)

## Co zmienia się między Oracle a MySQL

Każdy wiersz to reguła stosowana przez konwerter, z wpisem, który dodaje do raportu, gdy reguła coś zmienia w twoich danych.

| W Oracle | W MySQL | Wpis w raporcie |
| --- | --- | --- |
| BOOLEAN (23ai) | tinyint(1) |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | varchar(n) do 1024 znaków, powyżej typy text |  |
| NUMBER, NUMBER(p,s), FLOAT(b) | decimal(p,s) lub bigint |  |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | varchar(100) z tekstem Oracle, np. +01-06 | `type_replaced` |
| DATE, TIMESTAMP(p) | datetime(p) |  |
| TIMESTAMP(7) to TIMESTAMP(9) | sześć cyfr ułamka sekundy, siódma obcięta | `fraction_cut` |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | datetime(p) w UTC | `moments_as_utc` |
| JSON (21c), and CLOB holding JSON | json |  |
| BLOB, RAW(n), LONG RAW | binary(n), varbinary(n) i typy blob |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | text | `type_replaced` |
| collations that ignore case (BINARY_CI) | dokładne porównanie (utf8mb4_bin) | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | AUTO_INCREMENT, kontynuowane po najwyższym id |  |
| identity columns the target can't count | zwykła liczba całkowita | `counter_dropped` |
| CREATE SEQUENCE | nie jest tworzone | `sequence_not_converted` |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | kolumny generowane, STORED przy PERSISTED, w przeciwnym razie VIRTUAL |  |
| virtual columns with functions IntoSQL doesn't write, and the || operator | zwykła kolumna | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | brak wartości domyślnej | `default_not_translated` |
| CHECK constraints | przetłumaczone |  |
| CHECK constraints with functions IntoSQL doesn't write | nie jest tworzone | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | nie jest tworzone | `check_not_enforced` |
| function-based, bitmap and domain indexes | nie jest tworzone | `index_skipped` |
| foreign keys | klucze obce, ładowane z FOREIGN_KEY_CHECKS=0 |  |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | nie jest tworzone | `foreign_key_skipped` |
| partitioned tables | jedna tabela z wierszami wszystkich partycji | `partitions_dropped` |
| several schemas in one export | jedna baza danych, nazwa każdej tabeli zaczyna się od nazwy jej schematu | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL usunięte | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | wymienione w raporcie | `not_converted_objects` |
| exports without CREATE TABLE (data only) | typy odczytane z wartości | `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 | zachowane |  |
| text that isn't valid in its encoding | błędne bajty jako znak zastępczy | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | skopiowane bez zmian | `mojibake_suspected` |

## Załaduj skrypt do MySQL

Skrypt tworzy tabele, kopiuje wiersze, a potem dodaje klucze, indeksy i klucze obce, więc ładuje się szybko i zatrzymuje przy pierwszym błędzie.

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

Klucze obce są tworzone tak, jak deklaruje je zrzut, z FOREIGN_KEY_CHECKS=0 podczas ładowania wierszy, więc wiersz wskazujący na brakujący wiersz nie zatrzymuje ładowania.

Przy dużym zrzucie uruchom klienta na tej samej maszynie co serwer i zwiększ max_allowed_packet, jeśli pojedynczy wiersz jest bardzo duży.

IntoSQL Pro ładuje plik prosto do MySQL z aplikacji na komputer lub wiersza poleceń, bez pisania skryptu.

## Jak zrobić zrzut Oracle dla najlepszego wyniku

Konwerter odczytuje to, co zawiera zrzut. Te opcje zachowują w nim więcej twoich danych:

- W SQL Developer wybierz Tools, Database Export, z DDL i formatem danych Insert. SQLcl zapisuje to samo z SET SQLFORMAT INSERT.
- Przed eksportem uruchom ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS': domyślny format zapisuje daty bez godziny i stulecia.
- Plik .dmp z exp lub expdp jest binarny: zaimportuj go do bazy Oracle, np. Oracle Database Free w Dockerze, i wyeksportuj przez SQL Developer.

## Co nie jest konwertowane

Widoki, pakiety, procedury, funkcje, wyzwalacze, typy i synonimy są pisane w PL/SQL. Raport wymienia je z nazwy i nigdy nie pomija ich po cichu, więc możesz je przepisać dla MySQL.

## Pytania o konwersję Oracle do MySQL

### Czy mój zrzut jest wysyłany?

Nie. Konwerter działa w przeglądarce i odczytuje zrzut z dysku po kawałku, więc nigdy nie opuszcza on twojego komputera. Aplikacja na komputer i wiersz poleceń też konwertują na twoim komputerze.

### Jak duży może być zrzut?

Konwerter nigdy nie trzyma całego zrzutu w pamięci: czyta plik dwa razy, fragmentami, i zapisuje skrypt na bieżąco. Zrzuty wielogigabajtowe konwertują się w przeglądarce, w aplikacji na komputer i w wierszu poleceń.

### Czy mogę przekonwertować plik .dmp z exp lub expdp?

Nie bezpośrednio: Data Pump i oryginalny Export zapisują format binarny, który czyta tylko Oracle. Zaimportuj plik do dowolnej bazy Oracle (Oracle Database Free działa w Dockerze) i wyeksportuj go przez Database Export w SQL Developer lub przez SQLcl. Konwerter informuje o tym, gdy dostanie plik .dmp.

### Z jakich wersji Oracle może pochodzić eksport?

Eksporty z SQL Developer i SQLcl, z definicjami tabel z DBMS_METADATA, z Oracle od wersji 11g. Każdy testowy eksport pochodzi z Oracle 21c i 23ai, w sesjach amerykańskich, niemieckich i ISO, i jest porównywany ze źródłem komórka po komórce.

### Co dzieje się z NUMBER, DATE i innymi typami Oracle?

NUMBER staje się decimal, bigint dla liczb całkowitych, a powyżej 65 cyfr tekstem; DATE staje się datetime i zachowuje godzinę; CLOB staje się longtext, BLOB blob, a interwały zachowują tekst Oracle. NaN i Infinity stają się NULL, a raport je liczy.

### Czy kolumny identity i sekwencje są zachowywane?

Kolumny identity stają się AUTO_INCREMENT i idą dalej po najwyższym id. MySQL nie ma sekwencji, więc trafiają one do raportu, podobnie jak wartości domyślne, które z nich pobierają.

### A pakiety PL/SQL, procedury i wyzwalacze?

Raport wymienia je z nazwy, ale nie są konwertowane, bo każda baza danych zapisuje je we własnym języku.

### Na jakich wersjach MySQL ładuje się skrypt?

MySQL 5.7 i nowsze. Każdy testowy eksport ładuje się na 5.7 i 9 i zatrzymuje przy pierwszym błędzie, jeśli coś pójdzie nie tak.

## Z Oracle

- [Oracle do PostgreSQL](https://intosql.com/pl/oracle-do-postgresql)
- [Oracle do MariaDB](https://intosql.com/pl/oracle-do-mariadb)
- [Oracle do SQLite](https://intosql.com/pl/oracle-do-sqlite)
- [Oracle do SQL Server](https://intosql.com/pl/oracle-do-sql-server)
- [Oracle do Oracle](https://intosql.com/pl/oracle-do-oracle)

## Do MySQL

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

## Przewodnik i każda para

- [MySQL do Oracle](https://intosql.com/pl/mysql-do-oracle)
- [Przewodnik migracji Oracle do MySQL](https://intosql.com/docs/migrations/oracle-to-mysql)
- [Typy danych z Oracle do MySQL](https://intosql.com/docs/types/oracle-to-mysql)
- [Każda para baz danych](https://intosql.com/pl/migracja-bazy-danych)
