---
title: "Migrasi Oracle ke SQLite di browser Anda"
description: "Migrasi database Oracle ke SQLite: konversi ekspor SQL Developer atau SQLcl menjadi skrip dengan tabel, kunci, dan data yang sama, plus laporan perubahan."
canonical: https://intosql.com/id/oracle-ke-sqlite
last_updated: 2026-10-15
---

# Migrasi Oracle ke SQLite di browser Anda

Letakkan file .sql yang ditulis Database Export di SQL Developer atau SQLcl, dengan tabel dan pernyataan Insert-nya, lalu unduh skrip SQLite dengan tabel, kunci, indeks, dan data yang sama. Setiap nilai yang tidak bisa disimpan SQLite apa adanya, dan setiap objek yang tidak didukungnya, dicantumkan di laporan.

[Panduan migrasi Oracle ke SQLite](https://intosql.com/docs/migrations/oracle-to-sqlite)

[Tipe data Oracle ke SQLite](https://intosql.com/docs/types/oracle-to-sqlite)

## Yang berubah dari Oracle ke SQLite

Setiap baris adalah aturan yang diterapkan konverter, beserta baris laporan yang ditulisnya saat aturan itu mengubah sesuatu di data Anda.

| Di Oracle | Di SQLite | Baris laporan |
| --- | --- | --- |
| BOOLEAN (23ai) | INTEGER 0 atau 1 dengan CHECK |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | TEXT |  |
| NUMBER, NUMBER(p,s), FLOAT(b) | INTEGER, atau NUMERIC yang disimpan tepat sebagai teks di atas 15 digit | `decimal_as_text` |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | TEXT berisi teks Oracle, misalnya +01-06 | `type_replaced` |
| DATE, TIMESTAMP(p) | DATETIME sebagai teks ISO 8601, setiap digit dipertahankan |  |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | TIMESTAMP sebagai teks ISO 8601 dalam UTC | `moments_as_utc` |
| JSON (21c), and CLOB holding JSON | TEXT |  |
| BLOB, RAW(n), LONG RAW | BLOB |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | TEXT | `type_replaced` |
| collations that ignore case (BINARY_CI) | perbandingan persis | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | INTEGER PRIMARY KEY AUTOINCREMENT, berlanjut setelah id tertinggi |  |
| identity columns the target can't count | INTEGER tanpa penghitung | `counter_dropped` |
| CREATE SEQUENCE | tidak dibuat | `sequence_not_converted` |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | GENERATED ALWAYS AS, STORED jika PERSISTED, selain itu VIRTUAL |  |
| virtual columns with functions IntoSQL doesn't write, and the || operator | kolom biasa | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | tanpa default | `default_not_translated` |
| CHECK constraints | diterjemahkan |  |
| CHECK constraints with functions IntoSQL doesn't write | tidak dibuat | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | tidak dibuat | `check_not_enforced` |
| function-based, bitmap and domain indexes | tidak dibuat | `index_skipped` |
| foreign keys | di CREATE TABLE, dimuat tanpa pemeriksaan, lalu dicantumkan oleh PRAGMA foreign_key_check |  |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | tidak dibuat | `foreign_key_skipped` |
| partitioned tables | satu tabel dengan baris dari setiap partisi | `partitions_dropped` |
| several schemas in one export | satu file, nama tabel diawali nama skemanya | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL dihapus | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | dicantumkan di laporan | `not_converted_objects` |
| exports without CREATE TABLE (data only) | tipe dibaca dari nilai | `no_schema` |
| expressions in INSERT values other than the ones exports write | NULL | `expression_value` |
| types IntoSQL doesn't know, and object types | TEXT | `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 | Infinity sebagai 9e999; NaN sebagai NULL |  |
| NUL characters in text | dipertahankan |  |
| text that isn't valid in its encoding | byte yang rusak menjadi karakter pengganti | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | disalin apa adanya | `mojibake_suspected` |

## Muat skrip ke SQLite

Skrip membuat tabel, menyalin baris, lalu menambahkan kunci, indeks, dan foreign key, jadi pemuatan berjalan cepat dan berhenti di galat pertama.

```shell
sqlite3 -bail mydb.sqlite < oracle.sqlite.sql
```

Foreign key dideklarasikan di setiap tabel dan baris dimuat dengan pemeriksaan foreign key nonaktif. Lalu skrip mencantumkan setiap baris yang merujuk ke baris yang tidak ada, bukan gagal di tengah jalan.

Untuk dump yang besar, muat ke file baru di disk lokal. Skrip memuat semuanya dalam satu transaksi dengan sinkronisasi nonaktif, jadi berjalan secepat disk, dan pemuatan yang berhenti di tengah jalan tidak meninggalkan tabel setengah jadi.

Command line memuat file langsung ke database SQLite, tanpa menulis skrip. Gratis.

## Buat dump Oracle untuk hasil terbaik

Konverter membaca apa yang ada di dump. Opsi berikut membuat lebih banyak data Anda tetap ada di dalamnya:

- Di SQL Developer, pilih Tools, Database Export, dengan DDL dan format data Insert. SQLcl menulis hal yang sama dengan SET SQLFORMAT INSERT.
- Jalankan ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' sebelum mengekspor: format default menulis tanggal tanpa jam atau abadnya.
- File .dmp dari exp atau expdp bersifat biner: impor ke database Oracle, misalnya Oracle Database Free di Docker, lalu ekspor dengan SQL Developer.

## Yang tidak dikonversi

View, paket, prosedur, fungsi, trigger, tipe, dan sinonim ditulis dalam PL/SQL. Semuanya dicantumkan di laporan berdasarkan nama, tidak pernah dibuang diam-diam, sehingga Anda bisa menulis ulang untuk SQLite.

## Pertanyaan tentang Oracle ke SQLite

### Apakah dump saya diunggah?

Tidak. Konverter berjalan di browser Anda dan membaca dump dari disk Anda sepotong demi sepotong, jadi dump tidak pernah meninggalkan komputer Anda. Aplikasi desktop dan command line juga mengonversi di komputer Anda.

### Seberapa besar dump yang bisa dipakai?

Konverter tidak pernah menyimpan seluruh dump di memori: file dibaca dua kali, per rentang, dan skrip ditulis sambil berjalan. Dump berukuran beberapa gigabyte bisa dikonversi di browser, di aplikasi desktop, dan dengan command line.

### Bisakah saya mengonversi file .dmp dari exp atau expdp?

Tidak secara langsung: Data Pump dan Export versi asli menulis format biner yang hanya bisa dibaca Oracle. Impor ke database Oracle mana pun, Oracle Database Free berjalan di Docker, lalu ekspor dengan Database Export di SQL Developer atau SQLcl. Konverter memberi tahu hal ini saat menerima file .dmp.

### Ekspor dari versi Oracle mana yang bisa dipakai?

Ekspor dari SQL Developer dan SQLcl, dengan definisi tabel dari DBMS_METADATA, dari Oracle 11g ke atas. Setiap ekspor uji berasal dari Oracle 21c dan 23ai, dalam sesi Amerika, Jerman, dan ISO, dan dibandingkan dengan sumbernya sel demi sel.

### Apa yang terjadi pada NUMBER, DATE, dan tipe Oracle lainnya?

NUMBER menjadi INTEGER untuk bilangan bulat dan mempertahankan setiap digit untuk lainnya; DATE menjadi teks DATETIME dengan waktunya; CLOB menjadi TEXT, BLOB dan RAW menjadi BLOB. Infinity dipertahankan; NaN menjadi NULL.

### Apakah kolom identity dan sequence dipertahankan?

Kolom identity yang menjadi seluruh primary key tabel menjadi INTEGER PRIMARY KEY AUTOINCREMENT dan berlanjut setelah id tertinggi. SQLite tidak punya sequence, jadi sequence dilaporkan.

### Bagaimana dengan paket PL/SQL, prosedur, dan trigger?

Semuanya dicantumkan di laporan berdasarkan nama dan tidak dikonversi, karena setiap database menulisnya dalam bahasanya sendiri.

### Di versi SQLite mana skrip bisa dimuat?

SQLite 3.31 dan yang lebih baru. Setiap ekspor uji dimuat di 3.31 dan 3.54, dan berhenti di galat pertama jika ada yang salah.

## Dari Oracle

- [Oracle ke PostgreSQL](https://intosql.com/id/oracle-ke-postgresql)
- [Oracle ke MySQL](https://intosql.com/id/oracle-ke-mysql)
- [Oracle ke MariaDB](https://intosql.com/id/oracle-ke-mariadb)
- [Oracle ke SQL Server](https://intosql.com/id/oracle-ke-sql-server)
- [Oracle ke Oracle](https://intosql.com/id/oracle-ke-oracle)

## Ke SQLite

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

## Panduan dan setiap pasangan

- [SQLite ke Oracle](https://intosql.com/id/sqlite-ke-oracle)
- [Panduan migrasi Oracle ke SQLite](https://intosql.com/docs/migrations/oracle-to-sqlite)
- [Tipe data Oracle ke SQLite](https://intosql.com/docs/types/oracle-to-sqlite)
- [Setiap pasangan database](https://intosql.com/id/migrasi-database)
