---
title: "Pasar una exportación de Oracle a otra versión"
description: "Convierte una exportación de SQL Developer o SQLcl de Oracle 11g o posterior en un script que carga en Oracle 19c y posteriores, con las mismas tablas, claves y datos."
canonical: https://intosql.com/es/oracle-a-oracle
last_updated: 2026-10-15
---

# Pasar una exportación de Oracle a otra versión

Suelta el archivo .sql que escribe Database Export de SQL Developer o SQLcl, con sus tablas e Insert, y descarga un script que carga en Oracle 19c y posteriores. NUMBER, DATE, TIMESTAMP, los LOB, las identidades y las secuencias quedan igual, XMLTYPE y JSON guardan su texto en un CLOB, y cada cambio aparece en el informe.

[Guía de migración de Oracle a Oracle](https://intosql.com/docs/migrations/oracle-to-oracle)

[Tipos de datos de Oracle a Oracle](https://intosql.com/docs/types/oracle-to-oracle)

## Qué cambia entre el archivo y el script

Cada fila es una regla que aplica el convertidor, con la línea que escribe en el informe cuando la regla cambia algo en tus datos.

| En el archivo | En el script | Línea del informe |
| --- | --- | --- |
| BOOLEAN (23ai) | BOOLEAN en 23ai, si no NUMBER(1) con un CHECK de 0 y 1 |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | los mismos tipos, con sus longitudes BYTE o CHAR |  |
| VARCHAR2 and NVARCHAR2 past what the target's own types hold | VARCHAR2(4000 CHAR) cuando cada valor cabe en 4000 bytes, si no CLOB | `text_as_lob` |
| NUMBER, NUMBER(p,s), FLOAT(b) | los mismos tipos NUMBER |  |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | los mismos tipos INTERVAL |  |
| DATE, TIMESTAMP(p) | DATE y TIMESTAMP(p), como se declararon |  |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | los mismos tipos |  |
| JSON (21c), and CLOB holding JSON | JSON en 21c y posteriores, si no CLOB |  |
| BLOB, RAW(n), LONG RAW | los mismos tipos; LONG RAW como BLOB |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | CLOB con su texto | `type_replaced` |
| collations that ignore case (BINARY_CI) | comparación exacta | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | GENERATED BY DEFAULT ON NULL AS IDENTITY, siguiendo después del id más alto |  |
| identity columns the target can't count | un entero simple | `counter_dropped` |
| CREATE SEQUENCE | CREATE SEQUENCE con las mismas opciones |  |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | columnas virtuales | `stored_as_virtual` |
| virtual columns with functions IntoSQL doesn't write, and the || operator | una columna simple | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | sin valor predeterminado | `default_not_translated` |
| CHECK constraints | traducidos |  |
| CHECK constraints with functions IntoSQL doesn't write | no se crea | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | no se crea | `check_not_enforced` |
| function-based, bitmap and domain indexes | no se crea | `index_skipped` |
| foreign keys | después de los datos, ENABLE NOVALIDATE, luego validada con una advertencia si hay huérfanas |  |
| ON DELETE CASCADE that cascades in a cycle or along a second path | se descarta | `foreign_key_action_unsupported` |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | no se crea | `foreign_key_skipped` |
| names longer than Oracle 12.1 allows | acortado | `name_shortened` |
| partitioned tables | una tabla con las filas de todas las particiones | `partitions_dropped` |
| several schemas in one export | un esquema, con el nombre del esquema delante de cada tabla | `schemas_merged` |
| NOT NULL columns with values that become NULL | sin NOT NULL | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | listados en el informe | `not_converted_objects` |
| exports without CREATE TABLE (data only) | tipos leídos de los valores | `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 e Infinity se conservan |  |
| NUL characters in text | se conserva |  |
| text that isn't valid in its encoding | los bytes incorrectos como carácter de reemplazo | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | se copia tal cual | `mojibake_suspected` |

## Carga el script en Oracle

El script crea las tablas, copia las filas y luego agrega claves, índices y claves foráneas, así que carga rápido y se detiene en el primer error.

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

Las claves foráneas se agregan ENABLE NOVALIDATE, así que las filas nuevas se comprueban de inmediato, y luego se validan. Si una fila antigua apunta a una fila que no existe, el script dice qué restricción es y la deja sin validar, en lugar de fallar a medias.

Para un volcado grande, ejecuta SQL*Plus en la misma máquina que la base de datos. El script confirma cada 100 filas. El usuario que lo ejecuta necesita CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER y CREATE PROCEDURE, y cuota en su tablespace.

## Haz el volcado de Oracle para el mejor resultado

El convertidor lee lo que contiene el volcado. Estas opciones conservan más de tus datos en él:

- En SQL Developer, elige Tools, Database Export, con DDL y el formato de datos Insert. SQLcl escribe lo mismo con SET SQLFORMAT INSERT.
- Ejecuta ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' antes de exportar: el formato predeterminado escribe las fechas sin su hora ni su siglo.
- Un archivo .dmp de exp o expdp es binario: impórtalo en una base de datos Oracle, por ejemplo Oracle Database Free en Docker, y expórtalo con SQL Developer.

## Qué no se convierte

Las vistas, disparadores, procedimientos, funciones y otros objetos escritos en el propio lenguaje de Oracle aparecen en el informe por nombre, nunca se descartan en silencio, para que revises cada uno contra la versión de Oracle en la que cargas antes de recrearlo.

## Preguntas sobre pasar Oracle entre versiones

### ¿Se sube mi volcado?

No. El convertidor se ejecuta en tu navegador y lee el volcado de tu disco por partes, así que nunca sale de tu computadora. La app de escritorio y la línea de comandos también convierten en tu computadora.

### ¿Qué tan grande puede ser el volcado?

El convertidor nunca tiene todo el volcado en memoria: lee el archivo dos veces, por rangos, y escribe el script sobre la marcha. Los volcados de varios gigabytes se convierten en el navegador, en la app de escritorio y con la línea de comandos.

### ¿Puedo convertir un archivo .dmp de exp o expdp?

No directamente: Data Pump y el Export original escriben un formato binario que solo Oracle lee. Impórtalo en cualquier base de datos Oracle, Oracle Database Free funciona en Docker, y expórtalo con Database Export de SQL Developer o con SQLcl. El convertidor te lo indica cuando recibe un archivo .dmp.

### ¿De qué versiones de Oracle puede venir la exportación?

Exportaciones de SQL Developer y SQLcl, con las definiciones de tabla de DBMS_METADATA, desde Oracle 11g en adelante. Cada exportación de prueba viene de Oracle 21c y 23ai, en sesiones estadounidenses, alemanas e ISO, y se compara con su origen celda por celda.

### ¿Qué pasa con NUMBER, DATE y los demás tipos de Oracle?

Se quedan tal cual: NUMBER con su precisión, DATE, TIMESTAMP, los intervalos, CHAR y VARCHAR2 con sus longitudes, RAW y los LOB. XMLTYPE y JSON conservan su texto en un CLOB, así que el script carga en 19c.

### ¿Se conservan las columnas de identidad y las secuencias?

Sí. Las columnas de identidad y las secuencias se quedan tal cual y siguen desde donde la exportación dice que llegaron.

### ¿Qué pasa con los paquetes, procedimientos y disparadores de PL/SQL?

Aparecen en el informe por nombre y no se convierten, para que puedas volver a crearlos una vez cargadas las tablas.

### ¿En qué versiones de Oracle carga el script?

Oracle 19c y posteriores. Cada exportación de prueba carga en 21c y 23ai, y se detiene en el primer error si algo sale mal.

## Desde Oracle

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

## Hacia Oracle

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

## Guía y todos los pares

- [Guía de migración de Oracle a Oracle](https://intosql.com/docs/migrations/oracle-to-oracle)
- [Tipos de datos de Oracle a Oracle](https://intosql.com/docs/types/oracle-to-oracle)
- [Todos los pares de bases de datos](https://intosql.com/es/migracion-de-bases-de-datos)
