---
title: "Przenieś eksport Oracle do innej wersji"
description: "Konwertuj eksport z SQL Developer lub SQLcl z Oracle 11g lub nowszego na skrypt, który ładuje się na Oracle 19c i nowszych, z tymi samymi tabelami, kluczami i danymi."
canonical: https://intosql.com/pl/oracle-do-oracle
last_updated: 2026-10-15
---

# Przenieś eksport Oracle do innej wersji

Upuść plik .sql zapisany przez Database Export w SQL Developer lub przez SQLcl, z tabelami i instrukcjami Insert, i pobierz skrypt, który ładuje się na Oracle 19c i nowszych. NUMBER, DATE, TIMESTAMP, LOB, kolumny identity i sekwencje zostają bez zmian, XMLTYPE i JSON zachowują tekst w CLOB, a każda zmiana jest wymieniona w raporcie.

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

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

## Co się zmienia między plikiem a skryptem

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 pliku | W skrypcie | Wpis w raporcie |
| --- | --- | --- |
| BOOLEAN (23ai) | BOOLEAN na 23ai, w przeciwnym razie NUMBER(1) z CHECK 0 i 1 |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | te same typy, z długościami w BYTE lub CHAR |  |
| VARCHAR2 and NVARCHAR2 past what the target's own types hold | VARCHAR2(4000 CHAR), gdy każda wartość mieści się w 4000 bajtach, w przeciwnym razie CLOB | `text_as_lob` |
| NUMBER, NUMBER(p,s), FLOAT(b) | te same typy NUMBER |  |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | te same typy INTERVAL |  |
| DATE, TIMESTAMP(p) | DATE i TIMESTAMP(p), jak zadeklarowano |  |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | te same typy |  |
| JSON (21c), and CLOB holding JSON | JSON od 21c, w przeciwnym razie CLOB |  |
| BLOB, RAW(n), LONG RAW | te same typy; LONG RAW jako BLOB |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | CLOB z ich tekstem | `type_replaced` |
| collations that ignore case (BINARY_CI) | dokładne porównanie | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | GENERATED BY DEFAULT ON NULL AS IDENTITY, kontynuowane po najwyższym id |  |
| identity columns the target can't count | zwykła liczba całkowita | `counter_dropped` |
| CREATE SEQUENCE | CREATE SEQUENCE z tymi samymi opcjami |  |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | kolumny wirtualne | `stored_as_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 | po danych z ENABLE NOVALIDATE, potem walidowany z ostrzeżeniem o osieroconych wierszach |  |
| ON DELETE CASCADE that cascades in a cycle or along a second path | usunięte | `foreign_key_action_unsupported` |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | nie jest tworzone | `foreign_key_skipped` |
| names longer than Oracle 12.1 allows | skrócone | `name_shortened` |
| partitioned tables | jedna tabela z wierszami wszystkich partycji | `partitions_dropped` |
| several schemas in one export | jeden schemat, 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 | 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 i Infinity zachowane |  |
| 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 Oracle

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
NLS_LANG=.AL32UTF8 sqlplus -S -L user@//localhost/mydb @oracle.oracle.sql
```

Klucze obce są dodawane z ENABLE NOVALIDATE, więc nowe wiersze są sprawdzane od razu, a potem walidowane. Jeśli stary wiersz wskazuje na nieistniejący wiersz, skrypt podaje, którego ograniczenia to dotyczy, i zostawia je niezwalidowane, zamiast przerwać w połowie.

Przy dużym zrzucie uruchom SQL*Plus na tej samej maszynie co baza danych. Skrypt zatwierdza co 100 wierszy. Użytkownik, który go uruchamia, potrzebuje CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER i CREATE PROCEDURE oraz limitu w swojej przestrzeni tabel.

## 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, wyzwalacze, procedury, funkcje i inne obiekty napisane we własnym języku Oracle są wymienione w raporcie z nazwy i nigdy nie są pomijane po cichu, więc możesz sprawdzić każdy z nich w wersji Oracle, do której ładujesz, zanim go odtworzysz.

## Pytania o przenoszenie Oracle między wersjami

### 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?

Pozostają bez zmian: NUMBER z precyzją, DATE, TIMESTAMP, interwały, CHAR i VARCHAR2 z długościami, RAW i LOB-y. XMLTYPE i JSON zachowują swój tekst w CLOB, więc skrypt ładuje się na 19c.

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

Tak. Kolumny identity i sekwencje pozostają bez zmian i kontynuują od miejsca, do którego według eksportu doszły.

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

Raport wymienia je z nazwy, ale nie są konwertowane, więc możesz je odtworzyć, gdy tabele będą już na miejscu.

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

Oracle 19c i nowsze. Każdy testowy eksport ładuje się na 21c i 23ai 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 MySQL](https://intosql.com/pl/oracle-do-mysql)
- [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)

## Do Oracle

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

## Przewodnik i każda para

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