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

# Migrasi SQLite ke Oracle di browser Anda

Letakkan file database SQLite (.db, .sqlite, .sqlite3) atau SQL yang ditulis .dump milik sqlite3, lalu unduh skrip Oracle dengan tabel, kunci, indeks, dan data yang sama. Setiap kolom mendapat tipe yang memuat nilainya, dan setiap nilai yang tidak bisa disimpan Oracle apa adanya dicantumkan di laporan.

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

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

## Yang berubah dari SQLite ke Oracle

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

| Di SQLite | Di Oracle | Baris laporan |
| --- | --- | --- |
| declared types (any text: VARCHAR(255), DATETIME, BOOLEAN, JSON or none) | tipe yang memuat setiap nilai di kolom |  |
| BOOLEAN, BOOL | NUMBER(1) dengan CHECK 0 dan 1 |  |
| TEXT, VARCHAR(n), CHAR(n), CLOB | VARCHAR2(n CHAR) jika setiap nilai muat, selain itu CLOB |  |
| TEXT and VARCHAR(n) longer than 4000 bytes | VARCHAR2(4000 CHAR) jika setiap nilai muat dalam 4000 byte (750 karakter dalam key), selain itu CLOB | `text_as_lob` |
| DECIMAL(p,s), NUMERIC | tipe eksak jika setiap nilai muat di dalamnya, selain itu double |  |
| BLOB, and columns holding bytes | BLOB |  |
| DATE, DATETIME, TIMESTAMP holding ISO 8601 text | DATE atau TIMESTAMP(p), sesuai isi nilainya |  |
| JSON holding JSON text | CLOB |  |
| Infinity in REAL columns | dipertahankan sebagai BINARY_DOUBLE_INFINITY |  |
| INTEGER PRIMARY KEY, AUTOINCREMENT | GENERATED BY DEFAULT ON NULL AS IDENTITY, berlanjut setelah id tertinggi atau nilai sqlite_sequence |  |
| COLLATE NOCASE | perbandingan persis | `case_insensitive_collation` |
| generated columns | kolom virtual | `stored_as_virtual` |
| generated columns with functions IntoSQL doesn't write, and the || operator | kolom biasa | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (strftime, randomblob) | tanpa default | `default_not_translated` |
| CHECK constraints | diterjemahkan |  |
| CHECK constraints with functions IntoSQL doesn't write | tidak dibuat | `check_skipped` |
| partial and expression indexes | tidak dibuat | `index_skipped` |
| foreign keys (unenforced unless PRAGMA foreign_keys=ON) | setelah data ENABLE NOVALIDATE, lalu divalidasi |  |
| ON UPDATE CASCADE, SET NULL or SET DEFAULT; ON DELETE SET DEFAULT | dihapus | `foreign_key_action_unsupported` |
| empty strings and empty blobs | NULL | `empty_string_null` |
| foreign keys to tables the dump doesn't create | tidak dibuat | `foreign_key_skipped` |
| primary keys holding NULL, and NOT NULL columns with values that become NULL | NOT NULL dihapus | `not_null_relaxed` |
| views, triggers and virtual tables (FTS, R*Tree) | dicantumkan di laporan | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | tipe dibaca dari nilai | `no_schema` |
| expressions in INSERT values other than the text functions dumps write | NULL | `expression_value` |
| NUL characters in text | dipertahankan |  |
| text that isn't valid UTF-8 | byte yang rusak menjadi karakter pengganti | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | disalin apa adanya | `mojibake_suspected` |

## Muat skrip ke Oracle

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

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

Foreign key ditambahkan ENABLE NOVALIDATE, jadi baris baru langsung diperiksa, lalu divalidasi. Jika baris lama merujuk ke baris yang tidak ada, skrip menyebutkan constraint mana dan membiarkannya tidak tervalidasi, bukan gagal di tengah jalan.

Untuk dump yang besar, jalankan SQL*Plus di mesin yang sama dengan database. Skrip melakukan commit setiap 100 baris. Pengguna yang menjalankannya memerlukan CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER, dan CREATE PROCEDURE, serta kuota di tablespace-nya.

## Buat dump SQLite untuk hasil terbaik

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

- File database itu sendiri dikonversi apa adanya, dibaca halaman demi halaman di browser Anda. Tutup dulu aplikasi yang menulis ke file itu, agar tidak ada perubahan yang tertinggal di file -wal-nya.
- sqlite3 app.db .dump > app.sql menulis database yang sama sebagai SQL, yang juga bisa dikonversi, sebagai .sql atau .sql.gz.
- DB Browser for SQLite menulis SQL itu lewat File, Export, Database to SQL file, begitu juga iterdump() di Python.

## Yang tidak dikonversi

View dan trigger ditulis dalam bahasa SQLite sendiri. Semuanya dicantumkan di laporan berdasarkan nama, tidak pernah dibuang diam-diam, sehingga Anda bisa menulis ulang untuk Oracle. Tabel virtual, seperti FTS5 dan R*Tree, juga dicantumkan, dan tabel bayangannya tidak disertakan.

## Pertanyaan tentang SQLite ke Oracle

### 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 .db secara langsung?

Ya. Letakkan file .db, .sqlite, atau .sqlite3: file dibaca di browser Anda dan tidak pernah diunggah. Teks dengan karakter NUL dan setiap digit nilai double tiba persis seperti tersimpan, sesuatu yang bisa terpotong oleh .dump.

### Dump dari versi SQLite mana yang bisa dipakai?

File database dari SQLite 3.0 ke atas, dalam UTF-8 atau UTF-16, serta dump dari .dump di shell sqlite3 atau dari iterdump() di Python. Setiap file dan dump uji berasal dari sqlite3 3.31 sampai 3.54, termasuk tabel STRICT dan WITHOUT ROWID, dan dibandingkan dengan sumbernya sel demi sel.

### Bagaimana tipe kolom ditentukan jika SQLite tidak menerapkannya?

Tipe yang dideklarasikan hanyalah petunjuk dan nilainya yang menentukan: kolom menjadi NUMBER, BINARY_DOUBLE, DATE, TIMESTAMP, BLOB, VARCHAR2, atau CLOB jika setiap nilai muat di dalamnya. String kosong menjadi NULL, sebagaimana Oracle menyimpannya, dan laporan menghitungnya.

### Apakah INTEGER PRIMARY KEY dan AUTOINCREMENT dipertahankan?

Ya. INTEGER PRIMARY KEY menjadi kolom identity, setiap baris mempertahankan id-nya, dan id berikutnya berlanjut setelah id tertinggi, atau setelah nilai sqlite_sequence dengan AUTOINCREMENT.

### Bagaimana dengan view dan trigger?

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

### Di versi Oracle mana skrip bisa dimuat?

Oracle 19c dan yang lebih baru. Setiap dump uji dimuat di 21c dan 23ai, dan berhenti di galat pertama jika ada yang salah.

## Dari SQLite

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

## Ke Oracle

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

## Panduan dan setiap pasangan

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