Dokumen ini adalah bagian dari rangkaian yang memberikan informasi dan panduan penting terkait perencanaan dan pelaksanaan migrasi database Oracle® 11g/12c ke Cloud SQL untuk PostgreSQL versi 12. Selain bagian penyiapan pendahuluan, rangkaian ini meliputi bagian berikut:
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Terminologi dan fungsi
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Jenis data, pengguna, dan tabel (dokumen ini)
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Kueri, prosedur tersimpan, fungsi, dan pemicu
- 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 beberapa jenis data yang sepenuhnya setara atau mirip dengan jenis data yang disediakan Oracle. Tabel berikut mencantumkan jenis data PostgreSQL yang paling umum, diikuti dengan perbandingan antara jenis data primitif Oracle dan Cloud SQL yang sesuai untuk jenis data Cloud SQL for PostgreSQL; jika jenis data tidak didukung, tipe 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 variabel jumlah karakter, hingga maksimum n karakter. Alias dari CHARACTER
VARYING(n) . |
|
CHARACTER VARYING(n) |
Menyimpan variabel jumlah karakter, 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 -32.768 | Nilai maks adalah 32.767. |
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 Pertambahan Otomatis. Nilai min adalah 1 | Nilai maks adalah 32.767. | |
SERIAL |
Bilangan Bulat Pertambahan Otomatis. Nilai min adalah 1 | Nilai maks adalah 2147483647. | |
BIGSERIAL |
Bilangan Bulat Pertambahan 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 akan menentukan kapan Anda ingin menggunakan model data berikut. |
POINT |
Nilai (x,y) . |
|
LINE |
Tuple (A, B, C) dengan Ax +
By + C = 0 dan A serta
B bukan keduanya 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, efektif jalur tertutup. | |
CIRCLE |
(x,y),r) (titik tengah dan radius) |
|
Logis | BOOLEAN |
- Menyimpan nilai true, false, atau null. - Menerima nilai seperti yes , true ,
t , on , dan 1 sebagai true. |
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 |
Ringkasan 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 Oracle yang setara | Korespondensi/alternatif Cloud SQL untuk PostgreSQL |
---|---|---|---|---|
String/karakter | CHAR(n) |
Ukuran maksimum 2.000 byte. | Ya | CHAR(n) |
CHARACTER(n) |
Ukuran maksimum 2.000 byte. | Ya | CHARACTER(n) |
|
NCHAR(n) |
Ukuran maksimum 2.000 byte. | Tidak | CHAR(n) |
|
VARCHAR(n) |
Ukuran maksimum 2.000 byte. | Ya | VARCHAR(n) |
|
NCHAR VARYING(n) |
Ukuran maksimum string UTF-8 dengan panjang bervariasi 4.000 byte. |
Tidak | CHARACTER VARYING(n) |
|
VARCHAR2(n)
11g |
Ukuran maksimum 4000 byte, ukuran maksimum 32 KB dalam PL/SQL. | Ya* | VARCHAR(n) |
|
VARCHAR2(n) |
Ukuran maksimum 32.767 byte MAX_STRING_SIZE= EXTENDED . |
Ya* | VARCHAR(n) |
|
NVARCHAR2(n) |
Ukuran maksimum 4.000 byte. | Tidak | VARCHAR(n) |
|
LONG |
Ukuran maksimum 2 GB. | Ya* | TEXT |
|
RAW(n) |
Ukuran maksimum 2.000 byte. | Ya* | BYTEA |
|
LONG RAW |
Ukuran maksimum 2 GB. | Ya* | BYTEA |
|
Numerik | NUMBER |
Angka floating-point | Ya* | NUMERIC(p,s) |
NUMBER(*) |
Angka floating-point | Ya* | DOUBLE PRECISION |
|
NUMERIC(p,s) |
Presisi dapat berkisar dari 1 hingga 38. | Ya | NUMERIC(p,s) |
|
FLOAT(p,s) |
Angka 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 |
Angka floating-point | Ya* | DOUBLE PRECISION |
|
DOUBLE PRECISION |
Angka 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) |
|
Logis | BOOLEAN |
Nilai TRUE , FALSE , dan NULL . Tidak dapat ditetapkan ke kolom tabel database. |
Ya | BOOLEAN |
XML | XMLTYPE |
Data XML. | Tidak | XML |
LOB | BFILE |
Pointer 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 dengan panjang variabel dengan ukuran file maksimum 4 GB. | Tidak | TEXT |
|
ROWID | ROWID |
Alamat baris fisik. | Tidak | CTID |
UROWID(n) |
ID baris universal dari alamat baris logis. | Tidak | CTID |
|
Spasial | SDO_ GEOMETRY |
Deskripsi geometris objek spasial. | Ya | Postgres memiliki berbagai 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 Gambar dan Komunikasi Digital dalam Kedokteran (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 terkait di Cloud SQL untuk PostgreSQL sebagian besar kompatibel dengan Oracle, tetapi menggunakan nama yang berbeda.
Jenis yang ditentukan pengguna
Oracle merujuk pada jenis yang ditentukan pengguna (UDT) sebagai OBJECT TYPES
, yang dikelola
menggunakan PL/SQL. Jenis yang ditentukan pengguna memungkinkan pengguna membuat jenis data kompleks khusus aplikasi yang didasarkan pada dan diperluas dari daftar jenis data Oracle bawaan.
Jenis Oracle yang ditentukan pengguna | Ringkasan atau implementasi Oracle | Dukungan Cloud SQL untuk PostgreSQL | Solusi alternatif atau solusi alternatif 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 oleh daftar nama atribut dan jenis data:
|
Jenis VARRAY | CREATE TYPE VARRAY_DEMO AS VARRAY (5) OF VARCHAR2(25); |
Tidak | Sebagai solusinya, Cloud SQL untuk PostgreSQL memungkinkan kolom ditentukan sebagai array:
|
Jenis tabel bertingkat | CREATE TYPE NTT_DEMO AS OBJECT ( |
Tidak | Sebagai solusinya, gunakan kombinasi jenis komposit dan definisi kolom array di Cloud SQL untuk PostgreSQL guna mencapai fungsi yang serupa dengan jenis tabel Bertingkat Oracle.
|
Jenis tidak lengkap | Jenis yang tidak lengkap adalah jenis tanpa atribut dan metode. LLM dapat dirujuk
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 (Oracle "pengguna" dan "skema" identik) dapat digunakan untuk mengautentikasi dan terhubung ke sesi database, sedangkan akses otorisasi ditetapkan di tingkat individual pengguna untuk objek database tertentu/permissions.
Secara umum, ada dua jenis pengguna database:
- Administrator: mengelola instance, pengguna, dan resource database.
- Akun Pengguna: yang melayani operasi logika seperti aplikasi.
Administrator memberikan hak istimewa ke akun pengguna aplikasi dan pengguna untuk
mengakses objek database. Izin database Oracle diberikan kepada pengguna untuk operasi tertentu (misalnya, membuat sesi/connect) atau objek database tertentu (misalnya, SELECT
pada tabel tertentu atauEXECUTE
pada prosedur tersimpan tertentu).
Di Oracle, ada konsep pengguna dan peran. Pengguna digunakan untuk melakukan autentikasi dengan database dan peran memberikan pengelompokan izin yang dapat diberikan secara keseluruhan.
Di Cloud SQL untuk PostgreSQL, pengguna dan peran identik. 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 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.
Buat User Oracle | |
---|---|
CREATE USER user_name IDENTIFIED BY password; |
|
Pengguna Create Cloud SQL untuk PostgreSQL | |
CREATE USER user WITH PASSWORD 'password';
ATAU
|
Pertimbangan konversi
- Pengguna ditetapkan di level root dan berlaku untuk semua database yang ada dalam cluster Cloud SQL untuk PostgreSQL yang sama. Ini serupa dengan "pengguna umum" di Oracle 12c.
- Sintaksis
CREATE USER
Cloud SQL untuk PostgreSQL berbeda dengan Oracle dan tidak dapat dimigrasikan apa adanya.CREATE USER
di Cloud SQL untuk PostgreSQL adalah alias untukCREATE ROLE
, kecuali bahwa opsiLOGIN
diaktifkan secara default.
Tabel
Tabel Oracle dibuat dari banyak elemen seperti jenis data kolom, batasan tabel, indeks, partisi, fitur eksklusif tabel Oracle, dan banyak lagi. Agar berhasil bermigrasi ke tabel database Cloud SQL untuk PostgreSQL, semua elemen tabel Oracle harus dikonversi menjadi tabel Cloud SQL untuk PostgreSQL. Beberapa elemen didukung tanpa atau tanpa modifikasi kecil, sementara beberapa elemen harus diubah 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 adalah tahap krusial yang memiliki arti penting dan berimplikasi lebih lanjut terhadap performa dan ukuran data.
Berikut adalah perbedaan utama antara tabel Oracle dan Cloud SQL untuk PostgreSQL serta fitur terkait. Perbedaan ini akan dibahas di bagian lainnya dalam seri.
- Membuat sintaksis tabel
- Metadata tabel dan indeks
- Dukungan batasan
- Dukungan dan batasan jenis data
- Indeks
- Pengelolaan partisi dan partisi
- Pemeliharaan tabel dan indeks
- Tabel sementara
- Tabel Virtual
- Kolom yang terlihat dan tidak terlihat (Oracle 12c)
- Himpunan karakter tabel dan kolom
Langkah selanjutnya
- Pelajari akun pengguna Cloud SQL untuk PostgreSQL lebih lanjut.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.