Dokumen ini adalah bagian dari sebuah seri yang menyajikan informasi dan panduan penting terkait perencanaan dan pelaksanaan migrasi database Oracle® 11g/12c ke Cloud SQL untuk PostgreSQL versi 12. Selain bagian penyiapan pendahuluan, seri ini mencakup bagian berikut:
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Terminologi dan fungsionalitas
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Jenis data, pengguna, dan tabel (dokumen ini)
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Kueri, serta prosedur, fungsi, dan pemicu tersimpan
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Keamanan, operasi, pemantauan, dan logging
- Memigrasikan pengguna dan skema Oracle Database ke Cloud SQL untuk PostgreSQL
Jenis data
Cloud SQL untuk PostgreSQL menyediakan beragam jenis data yang sepenuhnya setara atau mirip dengan jenis data yang disediakan oleh Oracle. Tabel berikut mencantumkan jenis data PostgreSQL yang paling umum, diikuti dengan perbandingan antara jenis data primitif Oracle dan jenis data padanannya di Cloud SQL untuk PostgreSQL; jika jenis data tidak didukung, jenis data alternatif akan dicantumkan.
Jenis data primitif Cloud SQL untuk PostgreSQL 12
| Kelompok jenis data Cloud SQL untuk PostgreSQL | Nama jenis data Cloud SQL untuk PostgreSQL | Spesifikasi jenis data |
|---|---|---|
| String/karakter | CHAR(n) |
Menyimpan tepat n karakter. Alias CHARACTER(n). |
CHARACTER(n) |
Menyimpan tepat n karakter. |
|
VARCHAR(n) |
Menyimpan karakter dalam jumlah bervariasi, hingga maksimum n karakter. Alias CHARACTER
VARYING(n). |
|
CHARACTER VARYING(n) |
Menyimpan karakter dalam jumlah bervariasi, hingga maksimum n karakter. |
|
TEXT |
Varian spesifik VARCHAR yang tidak mengharuskan Anda menentukan batas maksimum jumlah karakter. String karakter terpanjang yang dapat disimpan adalah 1 GB (sama untuk semua jenis data karakter string). |
|
| Numerik | SMALLINT |
Nilai min adalah -32768 | Nilai maks adalah 32767. |
INTEGER |
Nilai min adalah -2147483648 | Nilai maks adalah 2147483647. | |
BIGINT |
Nilai min adalah -2^63 | Nilai maks adalah 2^63-1. | |
REAL |
Angka floating point presisi tunggal (4 byte). | |
DOUBLE PRECISION |
Angka floating point presisi ganda (8 byte). | |
DECIMAL (p,s) |
Dapat menyimpan nilai apa pun dengan p digit dan s desimal. |
|
NUMERIC(p,s) |
Dapat menyimpan nilai apa pun dengan p digit dan s desimal. |
|
SMALLSERIAL |
Bilangan bulat bertambah otomatis. Nilai min adalah 1 | Nilai maks adalah 32.767. | |
SERIAL |
Bilangan bulat bertambah otomatis. Nilai min adalah 1 | Nilai maks adalah 2147483647. | |
BIGSERIAL |
Bilangan bulat bertambah otomatis. Nilai min adalah 1 | Nilai maks adalah 2^63-1. | |
| Moneter | MONEY |
Jumlah mata uang dengan presisi pecahan tetap. Nilai min adalah -92233720368547758.08 | Nilai maks adalah +92233720368547758.07. |
| Tanggal & waktu | DATE |
- Nilai dengan bagian tanggal, tetapi tanpa bagian waktu. - Rentang yang didukung adalah 4713 BC hingga 5874897 AD dengan resolusi 1 hari. |
TIMESTAMP (p) |
- Nilai yang berisi bagian tanggal dan waktu. - Rentang yang didukung adalah 4713 BC hingga 294276 AD. - Resolusi adalah p digit pecahan dalam detik (atau 1 mikrodetik jika tidak ditentukan). |
|
TIMESTAMP (p) with time zone |
- Nilai yang berisi tanggal, waktu, dan zona waktu. - Rentang yang didukung adalah 4713 BC hingga 294276 AD. - Resolusi adalah p digit pecahan dalam detik (atau 1 mikrodetik jika tidak ditentukan). |
|
TIME (p) |
- Nilai dengan bagian waktu, tetapi tanpa bagian tanggal. - Rentang yang didukung adalah 00:00:00 hingga 24:00:00. - Resolusi adalah p digit pecahan dalam detik (atau 1 mikrodetik jika tidak ditentukan). |
|
TIME (p) with time zone |
- Nilai dengan waktu dan zona waktu, tetapi tanpa bagian tanggal. - Rentang yang didukung adalah 00:00:00 hingga 24:00:00. - Resolusi adalah p digit pecahan dalam detik (atau 1 mikrodetik jika tidak ditentukan). |
|
INTERVAL (p) |
- Interval waktu - Rentang yang didukung adalah -178000000 hingga 178000000 tahun. - Resolusi adalah p digit pecahan dalam detik (atau 1 mikrodetik jika tidak ditentukan). |
|
| JSON | JSON |
Data JSON tekstual. |
JSONB |
Data JSON biner. | |
| XML | XML |
Data XML. |
Geometrik |
GEOMETRY |
Jenis kolom yang harus ditentukan jika Anda ingin menggunakan model data berikut. |
POINT |
Nilai (x,y). |
|
LINE |
Tuple (A, B, C) di mana Ax +
By + C = 0 serta A dan B keduanya tidak bernilai 0.ATAU Titik 1 dan poin 2 dalam format berikut:
|
|
LSEG |
Segmen garis ((x1,y1),(x2,y2)). |
|
BOX |
Kotak persegi panjang ((x1,y1),(x2,y2)). |
|
PATH |
Urutan titik ((x1,y1),...). |
|
POLYGON |
Urutan titik, yang berarti jalur tertutup. | |
CIRCLE |
(x,y),r) (titik tengah dan radius) |
|
| Logika | BOOLEAN |
- Berisi nilai benar, salah, atau null. - Menerima nilai seperti yes, true, t, on, dan 1 sebagai benar. |
| Data bit/biner | BIT (n) |
String bit dengan panjang tetap. |
BYTEA |
Data biner/array byte. | |
| Jenis alamat jaringan | CIDER |
Jaringan IPv4 dan IPv6. |
INET |
Host dan jaringan IPv4 dan IPv6. | |
MACADDR |
Alamat MAC. | |
MACADDR8 |
Alamat MAC (format EUI-64). | |
| Lainnya | PG_LSN |
Nomor urut log Cloud SQL untuk PostgreSQL. |
TSQUERY |
Kueri penelusuran teks. | |
TSVECTOR |
Dokumen penelusuran teks. | |
TXID_SNAPSHOT |
Snapshot ID transaksi tingkat pengguna. | |
UUID |
ID unik universal. |
Konversi jenis data Oracle ke Cloud SQL untuk PostgreSQL
| Kelompok jenis data Oracle | Nama jenis data Oracle | Spesifikasi jenis data Oracle | Cloud SQL untuk PostgreSQL ke padanan di Oracle | Padanan/alternatif di Cloud SQL untuk PostgreSQL |
|---|---|---|---|---|
| String/karakter | CHAR(n) |
Ukuran maksimum 2000 byte. | Ya | CHAR(n) |
CHARACTER(n) |
Ukuran maksimum 2000 byte. | Ya | CHARACTER(n) |
|
NCHAR(n) |
Ukuran maksimum 2000 byte. | Tidak | CHAR(n) |
|
VARCHAR(n) |
Ukuran maksimum 2000 byte. | Ya | VARCHAR(n) |
|
NCHAR VARYING(n) |
String UTF-8 panjang bervariasi dengan ukuran maksimum 4000 byte. |
Tidak | CHARACTER VARYING(n) |
|
VARCHAR2(n)
11g |
Ukuran maksimum 4000 byte, ukuran maksimum 32 KB di PL/SQL. | Ya* | VARCHAR(n) |
|
VARCHAR2(n) |
Ukuran maksimum 32767 byte MAX_STRING_SIZE= EXTENDED. |
Ya* | VARCHAR(n) |
|
NVARCHAR2(n) |
Ukuran maksimum 4000 byte. | Tidak | VARCHAR(n) |
|
LONG |
Ukuran maksimum 2 GB. | Ya* | TEXT |
|
RAW(n) |
Ukuran maksimum 2000 byte. | Ya* | BYTEA |
|
LONG RAW |
Ukuran maksimum 2 GB. | Ya* | BYTEA |
|
| Numerik | NUMBER |
Bilangan floating point. | Ya* | NUMERIC(p,s) |
NUMBER(*) |
Bilangan floating point. | Ya* | DOUBLE PRECISION |
|
NUMERIC(p,s) |
Presisi dapat berkisar mulai dari 1 hingga 38. | Ya | NUMERIC(p,s) |
|
FLOAT(p,s) |
Bilangan floating point. | Ya* | DOUBLE PRECISION |
|
DEC(p,s) |
Bilangan titik tetap. | Ya | DEC(p,s) |
|
DECIMAL(p,s) |
Bilangan titik tetap. | Ya | DECIMAL(p,s) |
|
INT |
Bilangan bulat 38 digit. | Ya | INT |
|
INTEGER |
Bilangan bulat 38 digit. | Ya | INTEGER |
|
SMALLINT |
Bilangan bulat 38 digit. | Ya | SMALLINT |
|
REAL |
Bilangan floating point. | Ya* | DOUBLE PRECISION |
|
DOUBLE PRECISION |
Bilangan floating point. | Ya | DOUBLE PRECISION |
|
| Tanggal & waktu | DATE |
Menyimpan data tanggal dan waktu (tahun, bulan, hari, jam, menit, dan detik). | Ya* | TIMESTAMP(0) |
TIMESTAMP(p) |
Tanggal dan waktu dengan pecahan. | Ya | TIMESTAMP(p) |
|
TIMESTAMP(p) WITH TIME ZONE |
Tanggal dan waktu dengan pecahan dan zona waktu. | Ya | TIMESTAMP (p) WITH TIME ZONE |
|
INTERVAL YEAR(p) TO MONTH |
Interval tanggal. | Ya* | INTERVAL YEAR TO MONTH |
|
INTERVAL DAY(p) TO SECOND(s) |
Interval hari dan waktu. | Ya* | INTERVAL DAY TO SECOND(s) |
|
| Logika | BOOLEAN |
Nilai TRUE, FALSE, dan NULL. Tidak dapat ditetapkan ke kolom tabel database. |
Ya | BOOLEAN |
| XML | XMLTYPE |
Data XML. | Tidak | XML |
| LOB | BFILE |
Pointer ke file biner, dengan ukuran maksimum 4 GB. | Tidak | VARCHAR(255) |
CLOB |
Objek besar karakter dengan ukuran file maksimum 4 GB. | Tidak | TEXT |
|
BLOB |
Objek besar biner dengan ukuran maksimum 4 GB. | Tidak | BYTEA |
|
NCLOB |
String Unicode panjang bervariasi dengan ukuran file maksimum 4 GB. | Tidak | TEXT |
|
| ROWID | ROWID |
Alamat baris fisik. | Tidak | CTID |
UROWID(n) |
ID baris universal alamat baris logika. | Tidak | CTID |
|
| Spasial | SDO_ GEOMETRY |
Deskripsi geometris objek spasial. | Ya | Postgres memiliki beragam jenis geometri termasuk point, line, path, polygon, circle, .... |
SDO_TOPO_ GEOMETRY |
Menjelaskan geometri topologi. | Ya | PostGIS, ekstensi Postgres yang banyak digunakan, menyediakan beberapa jenis topologi. | |
SDO_GEORASTER |
Petak raster atau objek gambar disimpan dalam satu baris. | Ya | PostGIS, ekstensi Postgres yang banyak digunakan, menyediakan alat untuk memuat file raster ke dalam database. | |
| Jenis media | ORDDicom |
Mendukung penyimpanan dan pengelolaan file Digital Imaging and Communications in Medicine (DICOM). | Ya, dengan solusi | Postgres menyediakan jenis biner, bytea, untuk menyimpan objek besar. |
ORDDoc |
Mendukung penyimpanan dan pengelolaan semua jenis data media. | Ya, dengan solusi | Postgres menyediakan jenis biner, bytea, untuk menyimpan objek besar. |
|
ORDImage |
Mendukung penyimpanan dan pengelolaan data gambar. | Ya, dengan solusi | Postgres menyediakan jenis biner, bytea, untuk menyimpan objek besar. |
|
ORDVideo |
Mendukung penyimpanan dan pengelolaan data video. | Solusi | Postgres menyediakan jenis biner, bytea, untuk menyimpan objek besar. |
* Jenis data yang terkait di Cloud SQL untuk PostgreSQL sebagian besar kompatibel dengan Oracle, tetapi memiliki nama yang berbeda.
Jenis yang ditentukan pengguna
Oracle menyebut jenis yang ditentukan pengguna (UDT) sebagai OBJECT TYPES, yang dikelola menggunakan PL/SQL. UDT memungkinkan pengguna membuat jenis data kompleks khusus aplikasi yang didasarkan pada, dan merupakan perluasan dari, daftar jenis data Oracle bawaan.
| Jenis yang ditentukan pengguna di Oracle | Ringkasan atau implementasi di Oracle | Dukungan di Cloud SQL untuk PostgreSQL | Solusi padanan atau alternatif di Cloud SQL untuk PostgreSQL |
|---|---|---|---|
| Jenis data abstrak (ADT) | CREATE TYPE ADT_DEMO AS OBJECT ( |
Sebagian dengan sintaksis yang berbeda | Jenis komposit Cloud SQL untuk PostgreSQL ditentukan berdasarkan daftar nama atribut dan jenis data:
|
| Jenis VARRAY | CREATE TYPE VARRAY_DEMO AS VARRAY (5) OF VARCHAR2(25); |
Tidak | Sebagai solusi, Cloud SQL untuk PostgreSQL memungkinkan kolom ditentukan sebagai array:
|
| Jenis tabel bertingkat | CREATE TYPE NTT_DEMO AS OBJECT ( |
Tidak | Sebagai solusi, gunakan kombinasi antara jenis komposit dan definisi kolom array di Cloud SQL untuk PostgreSQL guna mencapai fungsionalitas yang serupa dengan Jenis tabel bertingkat di Oracle.
|
| Jenis tidak lengkap | Jenis tidak lengkap adalah jenis yang tidak memiliki atribut dan metode. Jenis ini dapat direferensikan oleh jenis lain. Namun, Anda harus memberikan definisi jenis sebelum menggunakannya.
|
Tidak | N/A |
Pengguna
Bagian ini membahas cara membuat pengguna dan menetapkan izin, serta perlunya mengonversi tabel Oracle menjadi tabel Cloud SQL untuk PostgreSQL.
Pembuatan dan izin pengguna
Akun pengguna database Oracle ("pengguna" dan "skema" Oracle itu sama) dapat digunakan untuk mengautentikasi dan terhubung ke sesi database, sedangkan akses otorisasi ditetapkan di tingkat masing-masing pengguna untuk objek/izin database tertentu.
Secara umum, ada dua jenis pengguna database:
- Administrator: mengelola instance, pengguna, dan resource database.
- Akun Pengguna: melayani operasi logika seperti aplikasi.
Administrator memberikan hak istimewa ke akun pengguna dan pengguna aplikasi untuk mengakses objek database. Izin database di Oracle diberikan kepada pengguna untuk operasi tertentu (misalnya membuat sesi/koneksi) atau objek database tertentu (misalnya SELECT di tabel tertentu atau EXECUTE pada prosedur tersimpan tertentu).
Di Oracle, ada konsep pengguna dan peran. Pengguna digunakan untuk melakukan autentikasi dengan database, sedangkan peran menyediakan pengelompokan izin yang dapat diberikan secara keseluruhan.
Di Cloud SQL untuk PostgreSQL, pengguna dan peran itu sama. Pengguna di Cloud SQL untuk PostgreSQL adalah peran dengan izin connect. Anda dapat menggunakan pernyataan CREATE USER atau CREATE ROLE untuk membuat pengguna database. Tidak seperti di Oracle, di Cloud SQL untuk PostgreSQL, skema dan pengguna dibuat secara terpisah. Skema adalah kumpulan objek (misalnya tabel, jenis data, fungsi, dll.) dan dimiliki oleh pengguna.
| Create User di Oracle | |
|---|---|
CREATE USER user_name IDENTIFIED BY password; |
|
| Create User di Cloud SQL untuk PostgreSQL | |
CREATE USER user WITH PASSWORD 'password';
ATAU
|
Pertimbangan konversi
- Pengguna ditetapkan di tingkat root dan berlaku untuk semua database yang ada dalam cluster Cloud SQL untuk PostgreSQL yang sama. Hal ini mirip dengan "common users" (pengguna global) di Oracle 12c.
- Sintaksis
CREATE USERdi Cloud SQL untuk PostgreSQL berbeda dengan di Oracle dan tidak dapat dimigrasikan begitu saja.CREATE USERdi Cloud SQL untuk PostgreSQL adalah alias untukCREATE ROLE, kecuali bahwa opsiLOGINdiaktifkan secara default.
Tabel
Tabel Oracle tersusun atas banyak elemen seperti jenis data kolom, batasan tabel, indeks, partisi, fitur eksklusif tabel Oracle, dan banyak lagi. Agar proses migrasi ke tabel database Cloud SQL untuk PostgreSQL berhasil, semua elemen tabel Oracle harus dikonversi menjadi tabel Cloud SQL untuk PostgreSQL. Ada elemen yang didukung tanpa perlu modifikasi, ada yang perlu sedikit modifikasi, dan ada juga yang harus dimodifikasi sepenuhnya.
Dari perspektif migrasi, mengonversi PL/SQL menjadi Cloud SQL untuk PostgreSQL mungkin memerlukan lebih banyak upaya karena mengonversi tabel Oracle menjadi tabel Cloud SQL untuk PostgreSQL merupakan tahap krusial yang memiliki arti penting dan dampak lanjutan terhadap performa dan ukuran data.
Berikut adalah perbedaan utama antara tabel Oracle dan Cloud SQL untuk PostgreSQL serta fitur-fitur terkaitnya. Perbedaan ini akan dibahas di bagian lainnya dalam seri ini.
- Sintaksis create table
- Metadata tabel dan indeks
- Dukungan batasan
- Dukungan dan keterbatasan jenis data
- Indeks
- Partisi dan pengelolaan partisi
- Pemeliharaan tabel dan indeks
- Tabel sementara
- Tabel virtual
- Kolom terlihat dan tidak terlihat (Oracle 12c)
- Himpunan karakter tabel dan kolom
Langkah berikutnya
- Pelajari lebih lanjut akun pengguna Cloud SQL untuk PostgreSQL.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.