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-bagian berikut:
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Terminologi dan fungsionalitas (dokumen ini)
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Jenis data, pengguna, dan tabel
- 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
Terminologi
Bagian ini menjelaskan persamaan dan perbedaan terminologi database antara Oracle dan Cloud SQL untuk PostgreSQL. Bagian ini meninjau dan membandingkan aspek inti dari setiap platform database tersebut. Perbandingan ini membedakan antara Oracle versi 11g dan 12c karena adanya perbedaan arsitektur (misalnya, Oracle 12c memperkenalkan fitur multi-tenant). Versi Cloud SQL untuk PostgreSQL yang dirujuk di sini adalah 12.
Bagian ini menekankan perbedaan terminologi utama antara Oracle dan Cloud SQL untuk PostgreSQL. Deskripsi terperinci akan dibahas secara mendetail nanti dalam dokumen ini.
| Oracle 11g | Deskripsi | Cloud SQL untuk PostgreSQL | Perbedaan utama |
|---|---|---|---|
| instance | Satu instance Oracle 11g hanya dapat menampung satu database. | instance | Satu instance Cloud SQL untuk PostgreSQL menampung tepat satu cluster database. Cluster database adalah sekumpulan database yang disimpan di sebuah area data bersama. |
| database | Sebuah database memenuhi syarat sebagai instance tunggal (nama database sama dengan nama instance). | database | Satu atau beberapa database melayani sejumlah aplikasi. |
| skema | Skema sama dengan pengguna karena keduanya dianggap sebagai pemilik objek database (pengguna dapat dibuat tanpa menentukan atau dialokasikan ke skema). | skema | Sebuah database berisi satu atau beberapa skema. Objek seperti tabel dimuat dalam skema. Nama objek yang sama dapat digunakan di skema berbeda dalam database yang sama tanpa menimbulkan konflik. |
| pengguna | Sama dengan skema karena keduanya merupakan pemilik objek database—misalnya instance → database → skema/pengguna → objek database. | peran | Sebuah peran dapat berupa satu pengguna database atau sekelompok pengguna database, bergantung pada penyiapannya. Peran dapat memiliki objek database seperti tabel.
Peran mencakup seluruh cluster database, dan keanggotaan dalam suatu peran dapat diberikan kepada peran lain. |
| peran | Kumpulan izin database yang ditentukan yang dapat dirangkai sebagai sebuah grup dan dapat ditetapkan ke pengguna database | ||
| pengguna admin/ SISTEM |
Pengguna administrator Oracle dengan tingkat akses tertinggi:SYS
|
cloudsqlsuperuser | Cloud SQL untuk PostgreSQL disertai dengan pengguna postgres default. Pengguna ini adalah bagian dari peran cloudsqlsuperuser, dan memiliki atribut (hak istimewa) berikut: CREATEROLE, CREATEDB, dan LOGIN. Karena merupakan layanan terkelola, Cloud SQL untuk PostgreSQL membatasi akses ke prosedur dan tabel sistem tertentu yang memerlukan hak istimewa lanjutan. Oleh karena itu, pengguna postgres tidak memiliki atribut SUPERUSER atau REPLICATION. Anda tidak dapat membuat atau memiliki akses ke pengguna dengan atribut superuser. |
| kamus/ metadata |
Oracle menggunakan tabel metadata berikut:USER_TableName
|
kamus/ metadata |
Cloud SQL untuk PostgreSQL menggunakan INFORMATION_SCHEMA berstandar ANSI untuk memberikan informasi kamus dan metadata. |
| tabel virtual dinamis sistem | Tabel virtual dinamis Oracle:V$ViewName |
tabel virtual dinamis sistem |
Cloud SQL untuk PostgreSQL memiliki tabel virtual statistik dinamis berikut:pg_stat_ViewNamepg_statio_ViewName |
| tablespace | Struktur penyimpanan logis primer database Oracle; setiap tablespace dapat menampung satu atau beberapa file data. | tablespace | Di Cloud SQL untuk PostgreSQL, file data disimpan bersama dalam direktori data PGDATA cluster database menggunakan struktur direktori yang telah ditetapkan. Tablespace di Cloud SQL untuk PostgreSQL menyediakan mekanisme untuk menentukan lokasi kustom dalam sistem file tempat file data dapat disimpan.Karena Cloud SQL untuk PostgreSQL adalah layanan terkelola, Google Cloudmengelola sistem file dasar mesin host untuk Anda. Anda tidak dapat membuat tablespace baru di Cloud SQL untuk PostgreSQL. |
| file data | Elemen fisik database Oracle yang menampung data dan ditentukan dalam tablespace tertentu. Sebuah file data ditentukan berdasarkan ukuran awal dan ukuran maksimumnya, serta dapat menampung data untuk beberapa tabel. File data Oracle menggunakan akhiran .dbf (tidak wajib). |
file data | Cloud SQL untuk PostgreSQL menyimpan setiap database dalam sebuah cluster database di subdirektorinya sendiri. Setiap tabel dan indeks dalam database disimpan dalam file terpisah di subdirektori tersebut. |
| tablespace sistem | Berisi objek tabel dan tabel virtual kamus data untuk seluruh database Oracle. | Tidak ada | Objek tabel dan tabel virtual kamus data disimpan dalam INFORMATION_SCHEMA di direktori data PGDATA cluster database menggunakan struktur direktori yang telah ditetapkan. |
| tablespace sementara | Berisi objek skema yang valid selama durasi sesi, serta mendukung operasi yang sedang berjalan yang tidak dapat dimuat dalam memori server. |
file sementara | File sementara digunakan untuk menyimpan operasi yang sedang berjalan yang tidak dapat dimuat dalam memori server. File ini disimpan dalam direktori bernama pgsql_tmp yang dibuat hanya saat pernyataan SQL dieksekusi. |
| tablespace Undo | Jenis khusus tablespace permanen sistem yang digunakan Oracle untuk mengelola operasi rollback saat menjalankan database dalam mode automatic undo management (default). |
Tidak ada | Agar operasi rollback dapat dilakukan, Cloud SQL untuk PostgreSQL mempertahankan baris yang telah diperbarui atau dihapus dalam file data tabel itu sendiri. Vacuuming adalah proses memulihkan atau menggunakan kembali ruang disk yang ditempati oleh baris yang telah diperbarui atau dihapus. |
| ASM | Pengelolaan Penyimpanan Otomatis Oracle adalah pengelola disk dan sistem file database terintegrasi berperforma tinggi yang semuanya dijalankan secara otomatis oleh database Oracle yang dikonfigurasi dengan ASM. | Tidak didukung | Cloud SQL untuk PostgreSQL mengandalkan sistem file OS untuk menyimpan file data dan tidak memiliki fitur yang setara dengan ASM Oracle. Namun, Cloud SQL untuk PostgreSQL mendukung banyak fitur yang menyediakan otomatisasi penyimpanan, seperti peningkatan, performa, dan skalabilitas penyimpanan otomatis. |
| tabel/tabel virtual | Objek database dasar buatan pengguna. | tabel/tabel virtual | Sama dengan di Oracle. |
| tampilan terwujud | Ditetapkan dengan pernyataan SQL tertentu dan dapat diperbarui secara manual atau otomatis berdasarkan konfigurasi tertentu. |
tampilan terwujud | Tampilan terwujud berfungsi mirip seperti di Oracle. Tampilan ini diperbarui secara manual menggunakan pernyataan REFRESH
MATERIALIZED VIEW. |
| urutan | Generator nilai unik Oracle. | urutan | Mirip dengan di Oracle. |
| sinonim | Objek database Oracle yang berfungsi sebagai ID alternatif untuk objek database lainnya. | Tidak didukung | Cloud SQL untuk PostgreSQL tidak menawarkan sinonim. Sebagai alternatif, tabel virtual dapat digunakan saat menetapkan izin yang sesuai. |
| partisi | Oracle menyediakan banyak solusi pembuatan partisi untuk membagi tabel berukuran besar menjadi beberapa bagian lebih kecil yang mudah dikelola. | partisi | Cloud SQL untuk PostgreSQL mendukung partisi deklaratif gaya Oracle dan partisi menggunakan pewarisan, yang memberikan fleksibilitas lebih besar dalam membuat partisi. |
| database Flashback | Fitur eksklusif Oracle yang dapat digunakan untuk menginisialisasi database Oracle ke waktu yang ditetapkan sebelumnya, sehingga Anda dapat mengkueri atau memulihkan data yang telah dimodifikasi atau rusak secara tidak sengaja. | Tidak didukung | Sebagai solusi alternatif, Anda dapat menggunakan cadangan dan pemulihan point-in-time Cloud SQL untuk memulihkan database ke status sebelumnya (misalnya, memulihkan ke status sebelum sebuah tabel dihapus). |
| sqlplus | Antarmuka command line Oracle yang dapat Anda gunakan untuk mengkueri dan mengelola instance database. | psql | Antarmuka command line yang setara di Cloud SQL untuk PostgreSQL untuk mengkueri dan mengelola instance database. Dapat dihubungkan ke Cloud SQL dari klien mana pun dengan izin yang sesuai. |
| PL/SQL | Bahasa prosedural tambahan Oracle untuk ANSI SQL. | PL/pgSQL | Cloud SQL untuk PostgreSQL memiliki bahasa proseduralnya sendiri yang disebut PL/pgSQL, yang dalam banyak hal mirip dengan PL/SQL Oracle. Untuk ringkasan perbedaan utama antara kedua bahasa tersebut, lihat Melakukan porting dari PL/SQL Oracle. |
| paket & isi paket | Fungsionalitas eksklusif Oracle untuk mengelompokkan prosedur dan fungsi tersimpan berdasarkan referensi logis yang sama. | Tidak didukung | Cloud SQL untuk PostgreSQL mengatur fungsi menggunakan skema. |
| prosedur & fungsi tersimpan | Menggunakan PL/SQL untuk mengimplementasikan fungsionalitas kode. | Prosedur & fungsi tersimpan | Cloud SQL untuk PostgreSQL mendukung implementasi prosedur dan fungsi tersimpan menggunakan berbagai bahasa pemrograman seperti PL/pgSQL dan C. |
| pemicu: | Objek Oracle yang digunakan untuk mengontrol implementasi DML atas tabel. | pemicu: | Mirip dengan di Oracle. |
| PFILE/SPFILE | Parameter tingkat instance dan tingkat database di Oracle disimpan dalam file biner yang disebut SPFILE (dalam versi sebelumnya, disebut PFILE), yang dapat digunakan sebagai file teks untuk menetapkan parameter secara manual. |
Flag database Cloud SQL untuk PostgreSQL | Anda dapat menetapkan atau mengubah parameter Cloud SQL untuk PostgreSQL melalui utilitas flag database. |
| SGA/PGA/ AMM |
Parameter memori Oracle yang mengontrol alokasi memori ke instance database. | Berbagai parameter terkait memori | Cloud SQL untuk PostgreSQL memiliki parameter memorinya sendiri. Beberapa parameter yang mirip adalah shared_buffers, temp_buffers, dan work_mem. Di Cloud SQL untuk PostgreSQL, parameter ini ditetapkan sebelumnya berdasarkan jenis instance yang dipilih, dan nilainya berubah sesuai pilihan tersebut. Anda dapat menyesuaikan beberapa parameter ini menggunakan utilitas flag database. |
| cache buffer | Mengurangi operasi I/O SQL dengan mengambil data yang di-cache dari cache buffer. Parameter memori dapat dikelola di tingkat database dan tingkat sesi melalui petunjuk kueri. | Fungsionalitas yang mirip | Ukuran cache buffer Cloud SQL untuk PostgreSQL dikontrol oleh parameter shared_buffer, yang tidak diekspos di Cloud SQL. Cloud SQL menyediakan metrik penggunaan memori, yang digunakan untuk menyesuaikan ukuran instance. |
| petunjuk database | Kemampuan Oracle untuk memberikan dampak terkontrol terhadap pernyataan SQL yang akan memengaruhi perilaku pengoptimal untuk memperoleh performa yang lebih baik. Oracle memiliki lebih dari 50 petunjuk database berbeda. | Tidak didukung | Cloud SQL untuk PostgreSQL tidak mendukung petunjuk database. Hingga batasan tertentu, Anda dapat mengontrol perencana kueri Cloud SQL untuk PostgreSQL dengan menggunakan sintaksis JOIN eksplisit. |
| RMAN | Utilitas Recovery Manager Oracle. Digunakan untuk mengambil cadangan database dengan fungsionalitas yang diperluas guna mendukung berbagai skenario disaster recovery dan banyak lagi (pembuatan clone, dll.). | Pencadangan Cloud SQL untuk PostgreSQL | Cloud SQL untuk PostgreSQL menawarkan dua metode untuk menerapkan pencadangan penuh: sesuai permintaan dan otomatis. |
| Data Pump (EXPDP/ IMPDP) |
Utilitas pembuatan dump di Oracle yang dapat digunakan untuk banyak fitur, seperti ekspor/impor, pencadangan database (di tingkat skema atau objek), metadata skema, pembuatan file SQL skema, dan lain-lain. | Ekspor/impor Cloud SQL untuk PostgreSQL | Cloud SQL untuk PostgreSQL menawarkan dua format ekspor/impor ke dan dari bucket Cloud Storage: SQL dan CSV. Atau, Anda dapat terhubung ke instance database menggunakan utilitas ekspor/impor seperti pg_dump. |
| SQL*Loader | Alat yang memungkinkan Anda mengupload data dari file eksternal seperti file teks, file CSV, dan sebagainya. | psql \copy |
Perintah \copy di klien psql memungkinkan Anda memuat file teks, CSV, atau biner (Oracle mendukung format file lainnya) ke dalam tabel database dengan struktur yang sesuai. |
| Data Guard | Solusi disaster recovery Oracle yang menggunakan instance standby, sehingga pengguna dapat menjalankan operasi READ dari instance standby. |
Ketersediaan tinggi dan replikasi Cloud SQL untuk PostgreSQL | Untuk mencapai disaster recovery atau ketersediaan tinggi, Cloud SQL untuk PostgreSQL menawarkan arsitektur replika failover dan untuk operasi hanya baca (pemisahan READ/WRITE) menggunakan Replika Baca. |
| Active Data Guard/ GoldenGate |
Solusi replikasi utama di Oracle yang dapat digunakan untuk berbagai keperluan seperti Standby (DR), instance Hanya Baca, replikasi Dua Arah (multi-master), data warehousing, dan banyak lagi. | Replika Baca Cloud SQL untuk PostgreSQL | Replika Baca di Cloud SQL untuk PostgreSQL untuk mengimplementasikan pengelompokan dengan pemisahan READ/WRITE. Saat ini, tidak ada dukungan untuk konfigurasi multi-master, seperti replikasi Dua Arah GoldenGate, atau replikasi heterogen. |
| RAC | Real Application Cluster Oracle. Solusi pengelompokan eksklusif Oracle untuk memberikan ketersediaan tinggi dengan men-deploy beberapa instance database menggunakan satu unit penyimpanan. | Tidak didukung | Cloud SQL untuk PostgreSQL tidak mendukung arsitektur multi-master. Cloud SQL untuk PostgreSQL menawarkan ketersediaan tinggi melalui instance standby dan peningkatan skalabilitas baca melalui replika baca. |
| Grid/Cloud Control (OEM) | Software Oracle untuk mengelola dan memantau database serta layanan terkait lainnya dalam format aplikasi web. Alat ini berguna untuk analisis database real-time guna memahami workload yang tinggi. | KonsolGoogle Cloud , Cloud Monitoring |
Gunakan Cloud SQL untuk PostgreSQL untuk pemantauan, yang mencakup grafik berbasis waktu dan berbasis resource yang mendetail. Gunakan juga Cloud Monitoring untuk menampung metrik pemantauan dan analisis log Cloud SQL untuk PostgreSQL spesifik guna memberikan kapabilitas pemantauan lanjutan. |
| REDO log | Log transaksi Oracle yang terdiri atas dua (atau lebih) file yang ditetapkan dan dialokasikan sebelumnya yang menyimpan semua modifikasi data saat hal itu terjadi. Kegunaan utama redo log adalah untuk melindungi database jika terjadi kegagalan instance. | Log WAL | Cloud SQL untuk PostgreSQL menggunakan Write-Ahead Logging (WAL) sehingga perubahan pada file data dipindahkan ke penyimpanan permanen untuk memungkinkan pemulihan dari error. |
| log arsip | Log arsip memberikan dukungan untuk operasi pencadangan dan replikasi, serta banyak lagi. Oracle menulis ke log arsip (jika diaktifkan) setelah setiap operasi pengalihan redo log. | Pengarsipan WAL | Implementasi retensi log WAL di Cloud SQL untuk PostgreSQL. Pengarsipan WAL digunakan dan diaktifkan dengan pemulihan point-in-time. |
| file kontrol | File kontrol Oracle menampung informasi tentang database, seperti file data, nama redo log, lokasi, nomor urut log saat ini, dan informasi tentang checkpoint instance. | PGDATA and pg_control
|
Arsitektur Cloud SQL untuk PostgreSQL tidak menggunakan konsep yang sama dengan file kontrol Oracle. File terkait database diatur dalam direktori yang biasa disebut PGDATA. Informasi WAL yang terkait dengan kumpulan data dan checkpoint disimpan di pg_control. |
| System Change Number (SCN) | SCN menandai titik waktu tertentu dalam database Oracle. | Nomor Urut Log (LSN) | Mekanisme yang setara di Cloud SQL untuk PostgreSQL disebut LSN. Sama seperti SCN, LSN meningkat secara monoton dari waktu ke waktu. |
| AWR | AWR (Automatic Workload Repository) Oracle adalah laporan panjang yang memberikan informasi mendetail tentang performa instance database Oracle dan dianggap sebagai alat DBA untuk diagnostik performa. | kolektor statistik | Cloud SQL untuk PostgreSQL tidak memiliki laporan yang setara dengan AWR Oracle, tetapi PostgreSQL menghimpun data performa yang dikumpulkan oleh kolektor statistik. Statistik yang terkumpul diekspos melalui tabel virtual pg_stat_* dan pg_statio_*. |
DBMS_SCHEDULER
|
Utilitas Oracle yang digunakan untuk menetapkan dan mengatur waktu operasi yang telah ditentukan. | Tidak didukung | Cloud SQL untuk PostgreSQL tidak menyediakan utilitas penjadwalan bawaan. Google Cloud menyediakan Cloud Scheduler, yang memungkinkan Anda menjadwalkan tugas database seperti ekspor. |
| Enkripsi data transparan | Mengenkripsi data yang disimpan di disk sebagai perlindungan data dalam penyimpanan. | Advanced Encryption Standard Cloud SQL | Cloud SQL untuk PostgreSQL menggunakan Advanced Encryption Standard 256 bit (AES-256) untuk melindungi data dalam penyimpanan dan dalam transit. |
| Kompresi lanjutan | Untuk memperbaiki jejak penyimpanan, mengurangi biaya penyimpanan, dan meningkatkan performa database, Oracle menyediakan kapabilitas kompresi lanjutan data (tabel/indeks). | TOAST | Meskipun tidak dapat dibandingkan langsung dengan kompresi lanjutan Oracle, Cloud SQL untuk PostgreSQL menggunakan infrastruktur yang disebut TOAST untuk secara otomatis dan transparan mengompresi data dengan panjang bervariasi yang terlalu besar untuk dimuat dalam satu halaman data. |
| SQL Developer | GUI SQL gratis di Oracle untuk mengelola dan menjalankan pernyataan SQL dan PL/SQL. | pgAdmin | GUI SQL gratis di Cloud SQL untuk PostgreSQL untuk mengelola dan menjalankan pernyataan kode SQL dan PostgreSQL. |
| Log Pemberitahuan | Log utama Oracle untuk operasi dan error database umum. | Pelaporan dan logging error PostgreSQL | Gunakan Logs Viewer Cloud Logging untuk memeriksa log error PostgreSQL. |
| Tabel DUAL | Tabel khusus Oracle untuk mengambil nilai kolom pseudo seperti SYSDATE atau USER. |
Tidak ada | Cloud SQL untuk PostgreSQL memungkinkan klausa FROM dihilangkan dari pernyataan SQL. Misalnya:SELECT NOW();
adalah pernyataan yang valid di PostgreSQL. |
| tabel eksternal | Oracle memungkinkan pengguna membuat tabel eksternal yang data sumbernya adalah file di luar database. | Tidak didukung | Sebagai layanan terkelola, Cloud SQL untuk PostgreSQL tidak mengekspos sistem file dasar host yang menjalankan instance database. Sebagai solusinya, Anda dapat mengimpor data sumber ke tabel PostgreSQL untuk mengkueri data. |
| Pemroses | Proses jaringan Oracle yang bertugas memproses koneksi database yang masuk. | Jaringan yang Diizinkan Cloud SQL | Cloud SQL untuk PostgreSQL menerima koneksi dari sumber jarak jauh setelah diizinkan di halaman konfigurasi jaringan yang diizinkan Cloud SQL. |
| TNSNAMES | File konfigurasi jaringan Oracle yang menetapkan alamat database untuk membuat koneksi menggunakan alias koneksi. | Tidak ada | Cloud SQL untuk PostgreSQL menerima koneksi eksternal yang menggunakan nama koneksi instance Cloud SQL atau alamat IP pribadi/publik. Proxy Cloud SQL adalah metode akses aman tambahan untuk terhubung ke Cloud SQL untuk PostgreSQL tanpa harus mengizinkan alamat IP tertentu atau mengonfigurasi SSL. |
| Port default instance | 1521 | Port default instance | 5432 |
| Link database | Objek skema Oracle yang dapat digunakan untuk berinteraksi dengan objek database lokal/jarak jauh. | Foreign Data Wrapper (FDW) | Ekstensi postgres_fdw di Cloud SQL untuk PostgreSQL memungkinkan tabel dari database PostgreSQL lain ("asing") diekspos sebagai tabel "asing" dalam database saat ini. Tabel tersebut kemudian tersedia untuk digunakan, hampir menyerupai tabel lokal. |
Perbedaan terminologi antara Oracle 12c dan Cloud SQL untuk PostgreSQL
| Oracle 12c | Deskripsi | Cloud SQL untuk PostgreSQL | Perbedaan utama |
|---|---|---|---|
| Instance | Kemampuan multi-tenant yang diperkenalkan di Oracle 12c memungkinkan sebuah instance menampung beberapa database sebagai pluggable database (PDB). Di Oracle 11g, sebuah instance Oracle hanya dapat menghosting satu database. | Instance | Satu instance Cloud SQL untuk PostgreSQL menampung tepat satu cluster database. Cluster database adalah sekumpulan database yang disimpan di sebuah area data bersama. |
| CDB | Database container (CDB) multi-tenant dapat mendukung satu atau beberapa PDB, sedangkan objek global CDB (memengaruhi semua PDB) dapat dibuat, contohnya peran. | Instance PostgreSQL | Instance Cloud SQL untuk PostgreSQL mirip dengan CDB Oracle. Keduanya menyediakan lapisan sistem untuk database yang dihosting. |
| PDB | PDB (pluggable database) dapat digunakan untuk mengisolasi layanan dan aplikasi dari satu sama lain, serta dapat digunakan sebagai kumpulan skema portabel. | Database/skema PostgreSQL |
Database Cloud SQL untuk PostgreSQL dapat melayani bermacam layanan dan aplikasi, serta banyak pengguna database. |
| Urutan sesi | Mulai dari Oracle 12c, urutan dapat dibuat di tingkat sesi (menampilkan nilai unik hanya dalam sesi) atau di tingkat global (misalnya, saat menggunakan tabel sementara). | Urutan sementara | Urutan sementara dibuat untuk sesi database saat ini dan akan otomatis dihapus saat pengguna keluar dari sesi. |
| Kolom identitas | Jenis IDENTITY di Oracle 12c menghasilkan urutan dan mengaitkannya dengan kolom tabel tanpa perlu membuat objek urutan terpisah secara manual. |
Kolom SERIAL | Dengan menentukan jenis data kolom sebagai SERIAL, Cloud SQL untuk PostgreSQL otomatis membuat urutan dan mengisi nilai kolom menggunakan urutan tersebut saat baris baru disisipkan ke dalam tabel. |
| Sharding | Sharding Oracle adalah solusi yang mempartisi satu database Oracle menjadi beberapa database lebih kecil (shard) untuk memberikan skalabilitas, ketersediaan, dan distribusi geografis bagi lingkungan OLTP. | Tidak didukung (sebagai fitur) | Cloud SQL untuk PostgreSQL tidak memiliki fitur sharding yang setara. Sharding dapat diimplementasikan menggunakan Cloud SQL untuk PostgreSQL (sebagai platform data) dengan lapisan aplikasi pendukung. |
| Database dalam memori | Oracle menyediakan serangkaian fitur yang dapat meningkatkan performa database untuk OLTP dan juga untuk workload campuran. | Tidak didukung | Cloud SQL untuk PostgreSQL tidak memiliki fitur bawaan yang setara. Sebagai alternatif, Anda dapat menggunakan layanan Redis terkelola kami, yaitu Memorystore. |
| Penyamaran | Sebagai bagian dari fitur keamanan lanjutan di Oracle, penyamaran dapat menyamarkan kolom agar pengguna dan aplikasi tidak mengambil data sensitif. | Tidak didukung | Cloud SQL untuk PostgreSQL tidak memiliki fitur bawaan yang setara. Namun, Sensitive Data Protection dapat dimanfaatkan untuk mende-identifikasi data sensitif. |
Fungsionalitas
Meskipun database Oracle 11g/12c dan Cloud SQL untuk PostgreSQL dibangun di atas arsitektur (infrastruktur dan bahasa prosedural tambahan) yang berbeda, keduanya memiliki aspek dasar yang sama sebagai sistem database relasional. Keduanya mendukung objek database, workload konkurensi multi-pengguna, dan transaksi dengan properti ACID. Keduanya juga mengelola pertentangan penguncian dengan isolasi multi-tingkat (sesuai kebutuhan aplikasi) dan melayani persyaratan aplikasi yang berkelanjutan baik untuk operasi Pemrosesan Transaksi Online (OLTP) maupun Pemrosesan Analitik Online (OLAP).
Bagian berikut meringkas beberapa perbedaan fungsional utama antara Oracle dan Cloud SQL untuk PostgreSQL. Dalam beberapa kasus, jika dianggap perlu untuk menekankan perbedaan tersebut, perbandingan teknis yang mendetail akan disertakan.
Membuat dan melihat database yang ada
| Oracle 11g/12c | Cloud SQL untuk PostgreSQL 12 |
|---|---|
Biasanya, Anda membuat database, dan melihat database yang sudah ada, menggunakan utilitas Database Creation Assistant (DBCA) Oracle. Database atau instance yang dibuat secara manual mengharuskan Anda menentukan parameter tambahan:SQL> CREATE DATABASE ORADB
|
Menggunakan pernyataan dengan format CREATE DATABASE Name;, seperti dalam contoh ini:postgres=> CREATE DATABASE PGSQLDB;
|
| Oracle 12c | Cloud SQL untuk PostgreSQL 12 |
Di Oracle 12c, Anda dapat membuat PDB dari seed, entah itu dari template database container (CDB) atau dengan meng-clone PDB dari PDB yang sudah ada. Anda menggunakan beberapa parameter:SQL> CREATE PLUGGABLE DATABASE PDB
|
Menggunakan pernyataan dengan format CREATE DATABASE Name;, seperti dalam contoh ini:postgres=> CREATE DATABASE PGSQLDB;
|
Menampilkan daftar semua PDB:SQL> SHOW is PDBS; |
Menampilkan daftar semua database yang ada:postgres=> \list |
Membuat koneksi ke PDB berbeda:SQL> ALTER SESSION SET CONTAINER=pdb; |
Membuat koneksi ke database berbeda:postgres=> \connect databaseName;
Atau: postgres=> \c databaseName |
Membuka atau menutup PDB tertentu (buka/hanya baca):SQL> ALTER PLUGGABLE DATABASE pdb CLOSE; |
Tidak didukung untuk database tunggal. Semua database berada di instance Cloud SQL untuk PostgreSQL yang sama, sehingga semua database selalu dalam status aktif semua atau nonaktif semua. |
Mengelola database melalui Konsol Google Cloud
Di Konsol Google Cloud , buka Databases>SQL>Instance>(Pilih Instance PostgreSQL Anda)>Databases.
Kamus data dan tabel virtual dinamis
Database Oracle menyediakan kamus data beserta tabel virtual performa dinamis (Tabel Virtual V$) yang mempermudah berbagai tugas pemeliharaan dan pemantauan database. Kamus data menyimpan semua informasi yang digunakan untuk mengelola objek di database, sedangkan tabel virtual performa dinamis berisi banyak informasi yang terkait dengan performa database. Tabel virtual ini terus diperbarui saat database berjalan.
Sebaliknya, PostgreSQL menyediakan sejumlah katalog metadata yang memiliki kegunaan serupa dengan kamus data dan tabel virtual performa dinamis di Oracle:
- Katalog sistem: Metadata tentang semua objek database.
- Tabel virtual pengumpulan statistik: Pelaporan tentang aktivitas PostgreSQL.
- Tabel virtual skema informasi: Metadata tentang semua objek database yang dilaporkan sesuai dengan standar ANSI SQL.
Melihat metadata dan tabel virtual dinamis sistem
Bagian ini meringkas beberapa tabel metadata dan tabel virtual dinamis sistem paling umum yang digunakan di Oracle dan objek database terkaitnya di Cloud SQL untuk PostgreSQL versi 12.
Oracle menyediakan ratusan tabel dan tabel virtual metadata sistem (dalam skema sistem tertentu, misalnya SYS atau SYSTEM), sedangkan PostgreSQL hanya memiliki beberapa puluh. Untuk setiap kasus, bisa ada lebih dari satu objek database, yang melayani tujuan tertentu.
Oracle menyediakan beberapa tingkat objek metadata, yang masing-masing memerlukan hak istimewa berbeda:
USER_TableName: dapat dilihat oleh pengguna yang bersangkutan.ALL_TableName: dapat dilihat oleh semua pengguna.DBA_TableName: hanya dapat dilihat oleh pengguna yang memiliki hak istimewa DBA, sepertiSYSdanSYSTEM.
Untuk tabel virtual performa dinamis, Oracle menggunakan awalan V$/GV$. Sebaliknya, metadata dan tabel virtual Cloud SQL untuk PostgreSQL berada dalam skema information_schema dan pg_catalog.
| Jenis metadata | Tabel/tabel virtual Oracle | Tabel/tabel virtual/kueri Cloud SQL untuk PostgreSQL |
|---|---|---|
| Sesi terbuka | V$SESSION |
pg_catalog.pg_stat_activity |
| Transaksi berjalan | V$TRANSACTION |
Tidak didukung. Sebagai solusinya, pg_locks menyediakan daftar transaksi terbuka yang memiliki satu atau beberapa penguncian. |
| Objek database | DBA_OBJECTS |
pg_catalog.pg_class |
| Tabel | DBA_TABLES |
pg_catalog.pg_tables |
| Kolom tabel | DBA_TAB_COLUMNS |
pg_catalog.pg_attribute |
| Hak istimewa tabel dan kolom | TABLE_PRIVILEGES |
information_schema.table_privileges
information_schema.column_privileges |
| Partisi | DBA_TAB_PARTITIONS
DBA_TAB_SUBPARTITIONS |
pg_catalog.pg_partitioned_table |
| Tabel virtual | DBA_VIEWS |
pg_catalog.pg_views |
| Batasan | DBA_CONSTRAINTS |
pg_catalog.pg_constraint |
| Indeks | DBA_INDEXES |
pg_catalog.pg_index |
| Tampilan terwujud | DBA_MVIEWS |
pg_catalog.pg_matviews |
| Prosedur tersimpan | DBA_PROCEDURES |
pg_catalog.pg_proc |
| Fungsi tersimpan | DBA_PROCEDURES |
pg_catalog.pg_proc |
| Pemicu | DBA_TRIGGERS |
pg_catalog.pg_trigger |
| Pengguna | DBA_USERS |
pg_catalog.pg_user |
| Hak istimewa pengguna | DBA_SYS_PRIVS |
pg_catalog.pg_roles |
| Tugas/ scheduler |
DBA_JOBS |
Tidak didukung. |
| Tablespace | DBA_TABLESPACES |
pg_catalog.pg_tablespace |
| File data | DBA_DATA_FILES |
Tidak didukung. |
| Sinonim | DBA_SYNONYMS |
Tidak didukung. |
| Urutan | DBA_SEQUENCES |
pg_catalog.pg_sequence |
| Link database | DBA_DB_LINKS |
pg_catalog.pg_foreign_server |
| Statistik | DBA_TAB_STATISTICS
DBA_TAB_COL_STATISTICS
DBA_SQLTUNE_STATISTICS
DBA_CPU_USAGE_STATISTICS |
pg_catalog.pg_stats |
| Penguncian | DBA_LOCK |
pg_catalog.pg_locks |
| Parameter database | V$PARAMETER |
pg_catalog.pg_settings
show |
| Segmen | DBA_SEGMENTS |
Tidak didukung. |
| Peran | DBA_ROLES |
pg_catalog.pg_roles |
| Histori sesi | V$ACTIVE_SESSION_HISTORY |
Tidak didukung. |
| Versi | V$VERSION |
select version(); |
| Peristiwa tunggu | V$WAITCLASSMETRIC |
Tidak didukung. |
| Tuning dan analisis SQL |
V$SQL |
Tidak didukung. |
| Tuning memori instance |
V$SGA
V$SGASTAT
V$SGAINFO
V$SGA_CURRENT_RESIZE_OPS
V$SGA_RESIZE_OPS
V$SGA_DYNAMIC_COMPONENTS
V$SGA_DYNAMIC_FREE_MEMORY
V$PGASTAT |
Tidak disertakan dalam Cloud SQL untuk PostgreSQL. Gunakan ekstensi pg_buffercache untuk memeriksa cache buffer bersama secara real time. |
Parameter sistem
Baik database Oracle maupun Cloud SQL untuk PostgreSQL dapat dikonfigurasi secara spesifik untuk mencapai fungsionalitas tertentu di luar konfigurasi defaultnya. Untuk mengubah parameter konfigurasi di Oracle, diperlukan izin administrasi tertentu (terutama izin pengguna SYS/SYSTEM).
Berikut adalah contoh pengubahan konfigurasi Oracle menggunakan pernyataan ALTER SYSTEM. Dalam contoh ini, pengguna hanya mengubah parameter "Maximum attempts for failed logins" di tingkat konfigurasi spfile (dengan perubahan yang hanya valid setelah reboot):
SQL> ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=2 SCOPE=spfile;
Pada contoh berikutnya, pengguna meminta untuk melihat parameter value Oracle:
SQL> SHOW PARAMETER SEC_MAX_FAILED_LOGIN_ATTEMPTS;
Outputnya mirip dengan berikut:
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sec_max_failed_login_attempts integer 2
Modifikasi parameter Oracle bekerja dalam tiga cakupan:
- SPFILE: Modifikasi parameter ditulis ke
spfileOracle; reboot instance diperlukan untuk menerapkan parameter. - MEMORY: Modifikasi parameter diterapkan di lapisan memori saja; perubahan parameter statis tidak diizinkan.
- BOTH: Modifikasi parameter diterapkan di file parameter server dan juga memori instance; perubahan parameter statis tidak diizinkan.
Flag konfigurasi Cloud SQL untuk PostgreSQL
Anda dapat mengubah parameter sistem Cloud SQL untuk PostgreSQL menggunakan flag konfigurasi di Konsol Google Cloud , gcloud CLI, atau CURL. Lihat daftar lengkap semua parameter yang didukung Cloud SQL untuk PostgreSQL yang dapat Anda ubah.
Parameter PostgreSQL dapat dibagi menjadi beberapa cakupan:
- Parameter dinamis: Dapat diubah saat runtime.
- Parameter database: Hanya berlaku pada database tertentu dalam instance PostgreSQL.
- Parameter peran: Hanya berlaku pada peran database tertentu.
- Parameter statis: Memerlukan reboot instance agar dapat diterapkan.
- Parameter sesi: Dapat diubah di tingkat sesi untuk masa aktif sesi saat ini saja, dan diisolasi dari sesi lain.
- Parameter global: Akan memiliki efek global terhadap semua sesi saat ini dan yang akan datang.
Contoh pengubahan parameter Cloud SQL untuk PostgreSQL
Konsol
Gunakan Konsol Google Cloud untuk mengaktifkan parameter log_connections.
Buka halaman Edit instance di Cloud Storage.
Di bagian Flags, klik Add item dan telusuri
log_connectionsseperti pada screenshot berikut.
gcloud
- Gunakan gcloud CLI untuk mengaktifkan parameter
log_connections:
gcloud sql instances patch INSTANCE_NAME \
--database-flags log_connections=on
Outputnya adalah sebagai berikut:
WARNING: This patch modifies database flag values, which may require your instance to be restarted. Check the list of supported flags - /sql/docs/postgres/flags - to see if your instance will be restarted when this patch is submitted. Do you want to continue (Y/n)?
Cloud SQL untuk PostgreSQL
Tetapkan timezone di tingkat sesi. Perubahan ini tetap berlaku untuk sesi saat ini dan bertahan hanya selama masa aktif sesi.
Tampilkan parameter konfigurasi
timezone:postgres=> SHOW timezone;Anda akan melihat output berikut, dengan
timezoneberstatusset to UTC:TimeZone ---------- UTC (1 row)
Tetapkan
timezoneke UTC-9:postgres=> SET timezone='UTC-9';Tampilkan parameter konfigurasi
timezone:postgres> SHOW timezone;Anda akan melihat output berikut, dengan
timezoneditetapkan keUTC-9:TimeZone ---------- UTC-9 (1 row)
Tingkat transaksi dan isolasi
Bagian ini menjelaskan perbedaan utama antara Oracle dan Cloud SQL untuk PostgreSQL dalam hal tingkat eksekusi transaksi dan tingkat isolasi.
Mode commit
Secara default, Oracle bekerja dalam mode non-autocommit, yang berarti setiap transaksi DML harus ditentukan dengan pernyataan COMMIT/ROLLBACK. Salah satu perbedaan mendasar antara Oracle dan PostgreSQL adalah bahwa PostgreSQL secara implisit memberikan perintah COMMIT setelah setiap perintah yang tidak mengikuti START TRANSACTION (atau BEGIN). Di beberapa mesin database lain, hal ini juga dikenal sebagai autocommit.
Meskipun diaktifkan secara default, autocommit dapat dinonaktifkan di tingkat sesi menggunakan SET AUTOCOMMIT OFF.
Tingkat isolasi
Standar ANSI/ISO SQL (SQL:92) menetapkan empat tingkat isolasi. Setiap tingkat memiliki pendekatan berbeda dalam menangani eksekusi serentak transaksi database:
- Read Uncommitted: Transaksi yang sedang diproses dapat melihat data belum di-commit yang dibuat oleh transaksi lain. Jika rollback dilakukan, semua data akan dipulihkan ke status sebelumnya.
- Read Committed: Transaksi hanya melihat perubahan data yang telah di-commit; perubahan yang belum di-commit ("pembacaan kotor") tidak dimungkinkan.
- Repeatable Read: Transaksi dapat melihat perubahan yang dilakukan oleh transaksi lain hanya setelah kedua transaksi memberikan perintah
COMMITatau keduanya di-roll back. - Serializable: Tingkat isolasi yang paling ketat/terkuat. Tingkat ini mengunci semua kumpulan data yang diakses, dan mengunci resource sehingga kumpulan data tidak dapat ditambahkan ke tabel.
Tingkat transaction isolation mengelola visibilitas data yang telah diubah sebagaimana yang terlihat oleh transaksi lain yang sedang berjalan. Selain itu, jika data yang sama diakses oleh beberapa transaksi serentak, tingkat transaction isolation yang dipilih akan memengaruhi cara transaksi yang berbeda berinteraksi.
Oracle mendukung tingkat isolasi berikut:
- Read Committed (default)
- Serializable
- Read-Only (bukan bagian dari standar ANSI/ISO SQL (SQL:92)
MVCC (Kontrol Konkurensi Multiversi) Oracle:
- Oracle menggunakan mekanisme MVCC untuk memberikan konsistensi baca otomatis di seluruh database dan semua sesi.
- Oracle mengandalkan System Change Number (SCN) transaksi saat ini untuk mendapatkan tampilan database yang konsisten. Oleh karena itu, semua kueri database hanya menampilkan data yang telah di-commit dalam kaitannya dengan SCN pada saat eksekusi kueri.
- Tingkat isolasi dapat diubah di tingkat transaksi dan sesi.
Berikut adalah contoh penetapan tingkat isolasi:
-- Transaction Level
SQL> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SQL> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SQL> SET TRANSACTION READ ONLY;
-- Session Level
SQL> ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLE;
SQL> ALTER SESSION SET ISOLATION_LEVEL = READ COMMITTED;
Cloud SQL untuk PostgreSQL mendukung empat tingkat transaction isolation berikut yang ditentukan dalam standar ANSI SQL:92:
- Read Uncommitted (setara dengan Read Committed)
- Read Committed (default)
- Repeatable Read
- Serializable
Tingkat isolasi default Cloud SQL untuk PostgreSQL adalah READ COMMITTED.
Tingkat isolasi ini dapat diubah di level SESSION, TRANSACTION, dan INSTANCE.
Untuk memverifikasi tingkat isolasi saat ini di level TRANSACTION dan juga SESSION, gunakan pernyataan berikut:
postgres=> SELECT CURRENT_SETTING('TRANSACTION_ISOLATION');
Outputnya adalah sebagai berikut:
current_setting ----------------- read committed (1 row)
Anda dapat mengubah sintaksis tingkat isolasi sebagai berikut:
SET [SESSION CHARACTERISTICS AS] TRANSACTION ISOLATION LEVEL [ REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE]
Anda juga dapat mengubah tingkat isolasi di level SESSION:
postgres=> SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- Verify
postgres=> SELECT CURRENT_SETTING('TRANSACTION_ISOLATION');
Outputnya adalah sebagai berikut:
current_setting ----------------- repeatable read (1 row)
Tingkat isolasi di level INSTANCE dikontrol menggunakan flag database default_transaction_isolation. Anda dapat memverifikasi hal ini menggunakan pernyataan berikut:
postgres=> SHOW DEFAULT_TRANSACTION_ISOLATION;
Outputnya adalah sebagai berikut:
default_transaction_isolation ------------------------------- repeatable read (1 row)
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.