Memigrasikan pengguna Oracle® ke Cloud SQL untuk PostgreSQL: Terminologi dan fungsi

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 mencakup bagian berikut:

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. Perbandingan ini membedakan antara versi Oracle 11g dan 12c karena 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 tingkat rendah akan dibahas secara detail nanti di dokumen ini.

Oracle 11g Deskripsi Cloud SQL untuk PostgreSQL Perbedaan utama
instance Satu instance Oracle 11g hanya dapat menyimpan satu database. instance Satu instance Cloud SQL untuk PostgreSQL menyimpan tepat satu cluster database. Cluster database adalah kumpulan database yang disimpan di area data umum.
database Database dapat diklasifikasikan sebagai instance tunggal (nama database identik dengan nama instance). database Satu atau beberapa database menyajikan beberapa aplikasi.
skema Skema dan pengguna bersifat identik karena keduanya dianggap sebagai pemilik objek database (pengguna dapat dibuat tanpa menentukan atau dialokasikan ke skema). skema Database berisi satu atau beberapa skema. Objek seperti tabel dimuat dalam skema. Nama objek yang sama dapat digunakan dalam skema yang berbeda dalam database yang sama tanpa konflik.
pengguna Sama dengan skema karena keduanya merupakan pemilik objek database—misalnya, instance → database → skema/pengguna → objek database. peran Peran dapat berupa pengguna database atau sekelompok pengguna database, bergantung pada cara penyiapannya. Peran dapat memiliki objek database seperti tabel.

Peran mencakup seluruh cluster database, dan Anda dapat memberikan keanggotaan peran ke peran lain.
peran Kumpulan izin database yang ditentukan yang bisa digabungkan sebagai grup dan dapat ditetapkan kepada pengguna database
admin/
admin/
Pengguna administrator Oracle dengan tingkat akses tertinggi:
SYS
SYSTEM
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
ALL_TableName
DBA_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 tampilan statistik dinamis berikut:
pg_stat_ViewName
pg_statio_ViewName
tablespace Struktur penyimpanan logis utama dari database Oracle; setiap tablespace dapat menyimpan satu atau beberapa file data. tablespace Di Cloud SQL untuk PostgreSQL, file data disimpan bersama dalam direktori data cluster database PGDATA 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 Cloud mengelola 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 menyimpan data dan ditentukan dalam tablespace tertentu.

File data tunggal ditentukan oleh ukuran awal dan ukuran maksimum, serta dapat menyimpan data untuk beberapa tabel.

File data Oracle menggunakan akhiran .dbf (tidak wajib).
file data Cloud SQL untuk PostgreSQL menyimpan setiap database dalam cluster database di subdirektorinya sendiri. Setiap tabel dan indeks dalam database disimpan dalam file terpisah di subdirektori tersebut.
tablespace sistem Berisi objek tabel virtual dan tabel kamus data untuk seluruh database Oracle. Tidak ada Objek tabel virtual dan tabel 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 pengurungan Jenis khusus tablespace permanen sistem yang digunakan oleh Oracle untuk mengelola
operasi rollback saat menjalankan database dalam mode pengelolaan pengurungan otomatis (default).
Tidak ada Guna memungkinkan operasi rollback, Cloud SQL untuk PostgreSQL mempertahankan baris yang diperbarui atau dihapus dalam file data tabel itu sendiri. Vacuuming adalah proses pemulihan atau penggunaan kembali ruang disk yang terisi oleh baris yang diperbarui atau dihapus.
ASM Pengelolaan Penyimpanan Otomatis Oracle adalah pengelola disk dan sistem file database berperforma tinggi yang terintegrasi dan prosesnya dilakukan secara otomatis oleh database Oracle yang dikonfigurasi dengan ASM. Tidak didukung Cloud SQL untuk PostgreSQL bergantung pada sistem file OS untuk menyimpan file data serta tidak memiliki ASM Oracle yang setara. Namun, Cloud SQL untuk PostgreSQL mendukung banyak fitur yang menyediakan otomatisasi penyimpanan, seperti peningkatan penyimpanan, performa, dan skalabilitas otomatis.
tabel/tabel virtual Objek database dasar buatan pengguna. tabel/tabel virtual Sama seperti Oracle.
tabel virtual terwujud Ditentukan dengan
pernyataan SQL tertentu dan dapat diperbarui secara manual atau otomatis berdasarkan konfigurasi tertentu.
tabel virtual terwujud Tabel virtual terwujud berfungsi mirip seperti Oracle, dan diperbarui secara manual menggunakan pernyataan REFRESH MATERIALIZED VIEW.
urutan Pembuat nilai unik Oracle. urutan Mirip seperti Oracle.
sinonim Objek database Oracle yang berfungsi sebagai ID alternatif untuk objek database lainnya. Tidak didukung Cloud SQL untuk PostgreSQL tidak menawarkan sinonim. Sebagai alternatifnya, tabel virtual dapat digunakan dengan menetapkan izin yang sesuai.
partisi Oracle menyediakan banyak solusi partisi untuk membagi tabel berukuran besar menjadi beberapa bagian kecil yang terkelola. partisi Cloud SQL untuk PostgreSQL mendukung partisi deklaratif gaya Oracle dan partisi menggunakan pewarisan, yang memungkinkan fleksibilitas partisi yang lebih besar.
Database flashback Fitur eksklusif Oracle yang dapat digunakan untuk menginisialisasi database Oracle ke waktu yang ditentukan 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 tabel dihapus).
sqlplus Antarmuka command line Oracle yang dapat Anda gunakan untuk mengkueri dan mengelola instance database. psql Antarmuka command line yang setara dengan Cloud SQL untuk PostgreSQL guna membuat kueri dan melakukan pengelolaan. Dapat dihubungkan dari klien mana pun dengan izin yang sesuai untuk Cloud SQL.
PL/SQL Oracle memperluas bahasa prosedur ke ANSI SQL. PL/pgSQL Cloud SQL untuk PostgreSQL memiliki bahasa proseduralnya sendiri yang disebut PL/pgSQL, yang mirip seperti PL/SQL Oracle dalam berbagai aspek. Untuk ringkasan perbedaan utama antara kedua bahasa tersebut, lihat Melakukan porting dari PL/SQL Oracle.
paket & isi paket Fungsi khusus Oracle untuk mengelompokkan prosedur dan fungsi yang tersimpan dalam referensi logis yang sama. Tidak didukung Cloud SQL untuk PostgreSQL mengatur fungsi menggunakan skema.
prosedur & fungsi yang tersimpan Menggunakan PL/SQL untuk mengimplementasikan fungsi kode. Prosedur & fungsi yang tersimpan Cloud SQL untuk PostgreSQL mendukung implementasi prosedur dan fungsi yang tersimpan menggunakan berbagai bahasa pemrograman seperti PL/pgSQL dan C.
pemicu Objek Oracle yang digunakan untuk mengontrol implementasi DML atas tabel. pemicu Mirip seperti Oracle.
PFILE/SPFILE Parameter tingkat instance dan database Oracle disimpan dalam file biner yang disebut SPFILE (di versi sebelumnya, file ini 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 serupa adalah shared_buffers, temp_buffers, dan work_mem. Di Cloud SQL untuk PostgreSQL, parameter ini sudah ditetapkan oleh jenis instance yang dipilih, dan nilainya juga akan disesuaikan. 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 pada tingkat database dan tingkat sesi melalui petunjuk kueri. Fungsi serupa Ukuran cache buffer Cloud SQL untuk PostgreSQL dikontrol oleh parameter shared_buffer, yang tidak ditampilkan di Cloud SQL. Cloud SQL menyediakan metrik penggunaan memori, yang digunakan untuk menyesuaikan ukuran instance.
petunjuk database Kemampuan Oracle dalam memberikan dampak terkontrol pada pernyataan SQL yang akan memengaruhi perilaku pengoptimal untuk mendapatkan performa yang lebih baik. Oracle memiliki lebih dari 50 petunjuk database yang berbeda. Tidak didukung Cloud SQL untuk PostgreSQL tidak mendukung petunjuk database. Pada tingkat tertentu, Anda dapat mengontrol perencana kueri Cloud SQL untuk PostgreSQL dengan menggunakan sintaksis JOIN eksplisit.
RMAN Utilitas Oracle Recovery Manager. Digunakan untuk mengambil cadangan database dengan fungsi tambahan untuk mendukung beberapa skenario pemulihan dari bencana (disaster recovery), dan lainnya (kloning, dll.). Pencadangan Cloud SQL untuk PostgreSQL Cloud SQL untuk PostgreSQL menawarkan dua metode untuk menerapkan pencadangan penuh: pencadangan sesuai permintaan dan otomatis.
Data Pump
(EXPDP/
IMPDP)
Utilitas pembuatan dump Oracle yang dapat digunakan untuk banyak fitur, seperti ekspor/impor, pencadangan database (pada tingkat skema atau objek), metadata skema, pembuatan file SQL skema, dan lainnya. Ekspor/impor Cloud SQL untuk PostgreSQL Cloud SQL untuk PostgreSQL menawarkan dua format export/import 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 lainnya. psql \copy Perintah \copy di klien psql memungkinkan Anda memuat file teks, CSV, atau biner (Oracle mendukung format file tambahan) ke dalam tabel database dengan struktur yang sesuai.
Data Guard Solusi pemulihan dari bencana (disaster recovery) Oracle menggunakan instance standby, yang memungkinkan pengguna melakukan operasi READ dari instance standby. Ketersediaan tinggi dan replikasi Cloud SQL untuk PostgreSQL Untuk mencapai pemulihan dari bencana (disaster recovery) atau ketersediaan tinggi, Cloud SQL untuk PostgreSQL menawarkan replika failover arsitektur dan untuk operasi hanya-baca (pemisahan READ/WRITE) menggunakanReplika Baca.
Active Data Guard/
GoldenGate
Solusi replikasi utama Oracle, yang dapat digunakan untuk berbagai tujuan seperti Standby (DR), instance Hanya Baca, replikasi Dua Arah (multi-master), data warehousing, dan banyak lagi. Replikasi Baca Cloud SQL untuk PostgreSQL Replika Baca Cloud SQL untuk PostgreSQL guna mengimplementasikan pengelompokan dengan pemisahan BACA/TULIS. Saat ini, tidak ada dukungan untuk konfigurasi multi-master, seperti replikasi Dua Arah GoldenGate, atau replikasi heterogen.
RAC Cluster Oracle Real Application. 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 multimaster. Cloud SQL untuk PostgreSQL menawarkan ketersediaan tinggi melalui instance standby dan meningkatkan 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 secara real-time guna memahami workload yang tinggi. Konsol Google Cloud,
Cloud Monitoring
Gunakan Cloud SQL untuk PostgreSQL untuk pemantauan, yang mencakup grafik berbasis waktu dan resource yang mendetail. Selain itu, gunakan Cloud Monitoring untuk menyimpan metrik pemantauan dan analisis log Cloud SQL untuk PostgreSQL tertentu untuk kemampuan pemantauan tingkat lanjut.
Log REDO Log transaksi Oracle yang terdiri dari dua (atau beberapa) file yang telah ditentukan dan dialokasikan sebelumnya yang menyimpan semua modifikasi data saat terjadi. Tujuan utama log redo 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 error.
log arsip Log arsip memberikan dukungan untuk operasi pencadangan dan replikasi, serta banyak lagi. Oracle menulis untuk mengarsipkan log (jika diaktifkan) setelah setiap operasi pengalihan log redo. 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 menyimpan informasi tentang database, seperti file data, nama log redo, 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 catatan dan checkpoint disimpan di pg_control.
Nomor Perubahan Sistem (SCN) SCN menandai titik waktu tertentu dalam database Oracle. Nomor Urut Log (LSN) LSN setara dengan Cloud SQL untuk PostgreSQL. Sama seperti SCN, LSN meningkat secara monoton dari waktu ke waktu.
AWR Oracle AWR (Automatic Workload Repository) 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 Oracle AWR, tetapi PostgreSQL mengumpulkan data performa yang dikumpulkan oleh kolektor statistik. Statistik yang dikumpulkan ditampilkan melalui tabel virtual pg_stat_* dan pg_statio_*.
DBMS_SCHEDULER Utilitas Oracle yang digunakan untuk menetapkan dan menyesuaikan 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 (AES-256) 256 bit untuk melindungi data dalam penyimpanan dan dalam transit.
Kompresi lanjutan Untuk meningkatkan jejak penyimpanan database, mengurangi biaya penyimpanan, dan meningkatkan performa database, Oracle menyediakan kemampuan kompresi lanjutan data (tabel/indeks). TOAST Meskipun tidak sebanding dengan kompresi lanjutan Oracle, Cloud SQL untuk PostgreSQL menggunakan infrastruktur yang disebut TOAST untuk mengompresi data dengan panjang yang berubah-ubah secara otomatis dan transparan yang terlalu besar untuk dimasukkan dalam satu halaman data.
SQL Developer GUI SQL gratis dari Oracle untuk mengelola dan menjalankan pernyataan SQL dan PL/SQL. pgAdmin GUI SQL gratis Cloud SQL untuk PostgreSQL guna mengelola dan menjalankan pernyataan kode SQL dan PostgreSQL.
Log Peringatan Log utama Oracle untuk operasi dan error database umum. Logging dan error reporting 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 berisi data sumber pada file di luar database. Tidak didukung Sebagai layanan terkelola, Cloud SQL untuk PostgreSQL tidak mengekspos sistem file yang mendasarinya dari host yang menjalankan instance database.

Sebagai solusinya, Anda dapat mengimpor data sumber ke tabel PostgreSQL untuk membuat kueri 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 menentukan alamat database untuk membuat koneksi menggunakan alias koneksi. Tidak ada Cloud SQL untuk PostgreSQL menerima koneksi eksternal 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) Dengan ekstensi postgres_fdw di Cloud SQL untuk PostgreSQL, tabel dari database PostgreSQL ("asing") lainnya dapat diekspos sebagai tabel "asing" dalam database saat ini. Tabel tersebut kemudian tersedia untuk digunakan, seperti selayaknya 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 instance menyimpan beberapa database sebagai database yang dapat di-plug (PDB), tidak seperti Oracle 11g, di mana instance Oracle dapat menghosting satu database. Instance Satu instance Cloud SQL untuk PostgreSQL menyimpan tepat satu cluster database. Cluster database adalah kumpulan database yang disimpan di area data umum.
CDB Database container multitenant (CDB) dapat mendukung satu atau beberapa PDB, sedangkan objek global CDB (memengaruhi semua PDB) dapat dibuat, contohnya peran. Instance PostgreSQL Instance Cloud SQL untuk PostgreSQL sebanding dengan Oracle CDB. Keduanya menyediakan lapisan sistem untuk database yang dihosting.
PDB PDB (database yang dapat di-plug) dapat digunakan untuk mengisolasi layanan dan aplikasi dari satu sama lain, dan dapat digunakan sebagai kumpulan skema portabel. Database/skema
PostgreSQL
Database Cloud SQL untuk PostgreSQL dapat menyajikan beberapa layanan dan aplikasi, serta banyak pengguna database.
Urutan sesi Mulai dari Oracle 12c, urutan dapat dibuat di tingkat sesi (hanya menampilkan nilai unik dalam sesi) atau di tingkat global (misalnya, saat menggunakan tabel sementara). Urutan sementara Urutan sementara dibuat untuk sesi database saat ini dan dihapus secara otomatis saat keluar dari sesi.
Kolom identitas Jenis IDENTITY 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 di mana satu database Oracle dipartisi menjadi beberapa database yang berukuran lebih kecil (potongan) untuk memungkinkan skalabilitas, ketersediaan, dan distribusi geografis untuk 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 serta 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 Oracle, penyamaran dapat melakukan penyamaran kolom agar pengguna dan aplikasi tidak dapat mengambil data sensitif. Tidak didukung Cloud SQL untuk PostgreSQL tidak memiliki fitur bawaan yang setara. Namun, Perlindungan Data Sensitif dapat dimanfaatkan untuk melakukan de-identifikasi data sensitif.

Fungsi

Meskipun database Oracle 11g/12c dan Cloud SQL untuk PostgreSQL dibangun di arsitektur yang berbeda (infrastruktur dan bahasa prosedural yang diperluas), keduanya memiliki aspek dasar yang sama dari sistem database relasional. Keduanya mendukung objek database, workload konkurensi multi-pengguna, dan transaksi dengan properti ACID. Keduanya juga mengelola pertentangan penguncian dengan beberapa tingkat isolasi (berdasarkan kebutuhan aplikasi), dan melayani persyaratan aplikasi yang berkelanjutan untuk operasi Pemrosesan Transaksi Online (OLTP) dan Pemrosesan Analisis Online (OLAP) ).

Bagian berikut memberikan ringkasan beberapa perbedaan fungsi utama antara Oracle dan Cloud SQL untuk PostgreSQL. Dalam beberapa kasus, jika perlu mengetahui perbedaannya, bagian ini menyertakan perbandingan teknis yang mendetail.

Membuat dan melihat database yang ada

Oracle 11g/12c Cloud SQL untuk PostgreSQL 12
Anda umumnya membuat database dan melihat database yang sudah ada dengan menggunakan utilitas Database Creation Assistant (DBCA) Oracle. Untuk membuat database atau instance secara manual, Anda harus menentukan parameter tambahan berikut:

SQL> CREATE DATABASE ORADB
USER SYS IDENTIFIED BY password
USER SYSTEM IDENTIFIED BY password
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
UNDO TABLESPACE undotbs1
DEFAULT TABLESPACE users;
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, baik dari template database container (CDB) atau dengan meng-clone PDB dari PDB yang sudah ada. Anda menggunakan beberapa parameter:

SQL> CREATE PLUGGABLE DATABASE PDB
ADMIN USER usr IDENTIFIED BY passwd
ROLES = (dba)
DEFAULT TABLESPACE sales
DATAFILE '/disk1/ora/dbs/db/db.dbf'
SIZE 250M AUTOEXTEND ON
FILE_NAME_CONVERT =
('/disk1/oracle/dbs/pdbseed/',
'/disk1/oracle/dbs/salespdb/')
STORAGE (MAXSIZE 2G)
PATH_PREFIX =
'/disk1/oracle/dbs/salespdb/';
Menggunakan pernyataan dengan format CREATE DATABASE Name;, seperti dalam contoh ini:

postgres=> CREATE DATABASE PGSQLDB;
Mencantumkan semua PDB:

SQL> SHOW is PDBS;
Menampilkan daftar semua database yang ada:

postgres=> \list
Menghubungkan ke PDB yang berbeda:

SQL> ALTER SESSION SET CONTAINER=pdb;
Menghubungkan ke database yang berbeda:

postgres=> \connect databaseName;
Atau:

postgres=> \c databaseName
Membuka atau menutup PDB tertentu (hanya baca/buka):

SQL> ALTER PLUGGABLE DATABASE pdb CLOSE;
Tidak didukung untuk satu database.

Semua database berada di instance Cloud SQL untuk PostgreSQL yang sama, sehingga semua database dalam status aktif atau nonaktif.

Mengelola database melalui Konsol Google Cloud

  • Di Konsol Google Cloud, buka Databases>SQL>Instance>(Pilih Instance PostgreSQL Anda)>Database.

    Mengelola database melalui Konsol Google Cloud.

Kamus data dan tabel virtual dinamis

Database Oracle menyediakan kamus data beserta tampilan performa dinamis (Tampilan V$) yang memfasilitasi berbagai tugas pemantauan dan pemeliharaan database. Kamus data menyimpan semua informasi yang digunakan untuk mengelola objek dalam database, sedangkan tampilan performa dinamis berisi banyak informasi terkait performa database. Tampilan ini terus diperbarui saat database berjalan.

Sebaliknya, PostgreSQL menyediakan beberapa katalog metadata yang memiliki tujuan serupa dengan kamus data Oracle dan tampilan performa dinamis:

  • Katalog sistem: Metadata tentang semua objek database.
  • Tampilan koleksi statistik: Melaporkan aktivitas PostgreSQL.
  • Tampilan skema informasi: Metadata tentang semua objek database yang dilaporkan sesuai dengan standar ANSI SQL.

Melihat tabel virtual dinamis sistem dan metadata

Bagian ini berisi ringkasan beberapa tabel metadata yang paling umum dan tabel virtual dinamis sistem yang digunakan di Oracle dan objek database yang sesuai 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 puluhan. Untuk setiap kasus, mungkin terdapat lebih dari satu objek database, yang melayani tujuan tertentu.

Oracle menyediakan beberapa level objek metadata, yang masing-masing memerlukan hak istimewa yang berbeda:

  • USER_TableName: dapat dilihat oleh pengguna.
  • ALL_TableName: dapat dilihat oleh semua pengguna.
  • DBA_TableName: hanya dapat dilihat oleh pengguna dengan hak istimewa DBA, seperti SYS dan SYSTEM.

Untuk tampilan 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
Buka sesi V$SESSION pg_catalog.pg_stat_activity
Menjalankan transaksi V$TRANSACTION Tidak didukung. Sebagai solusinya, pg_locks menyediakan daftar transaksi terbuka yang menyimpan satu atau beberapa kunci.
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
DBA_COL_PRIVS ROLE_TAB_PRIVS
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
DBA_PART_INDEXES
pg_catalog.pg_index
Tabel virtual terwujud DBA_MVIEWS pg_catalog.pg_matviews
Prosedur tersimpan DBA_PROCEDURES pg_catalog.pg_proc
Fungsi tersimpan DBA_PROCEDURES pg_catalog.pg_proc
Triggers DBA_TRIGGERS pg_catalog.pg_trigger
Pengguna DBA_USERS pg_catalog.pg_user
Hak istimewa pengguna DBA_SYS_PRIVS
DBA_ROLE_PRIVS
SESSION_PRIVS
pg_catalog.pg_roles
Tugas/
penjadwal
DBA_JOBS
DBA_JOBS_RUNNING
DBA_SCHEDULER_JOBS
DBA_SCHEDULER_JOB_LOG
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
pg_catalog.pg_statistic
pg_catalog.pg_stat_database
pg_catalog.pg_stat_all_tables
pg_catalog.pg_stat_all_indexes
pg_catalog.pg_statio_all_tables
pg_catalog.pg_statio_all_indexes
pg_catalog.pg_statio_all_sequences
Kunci DBA_LOCK
DBA_DDL_LOCKS
DBA_DML_LOCKS
V$SESSION_BLOCKERS
V$LOCKED_OBJECT
pg_catalog.pg_locks
Parameter database V$PARAMETER
V$NLS_PARAMETERS
SHOW PARAMETER <Param>

pg_catalog.pg_settings show
Segmen DBA_SEGMENTS Tidak didukung.
Peran DBA_ROLES
DBA_ROLE_PRIVS
USER_ROLE_PRIVS
pg_catalog.pg_roles
Histori sesi V$ACTIVE_SESSION_HISTORY
DBA_HIST_*
Tidak didukung.
Versi V$VERSION select version();
Peristiwa tunggu V$WAITCLASSMETRIC
V$WAITCLASSMETRIC_HISTORY
V$WAITSTAT
V$WAIT_CHAINS
Tidak didukung.
Penyesuaian dan
analisis SQL
V$SQL
V$SQLAREA
V$SESS_IO
V$SYSSTAT
V$STATNAME
V$OSSTAT
V$ACTIVE_SESSION_HISTORY
V$SESSION_WAIT
V$SESSION_WAIT_CLASS
V$SYSTEM_WAIT_CLASS
V$LATCH
V$SYS_OPTIMIZER_ENV
V$SQL_PLAN
V$SQL_PLAN_STATISTICS
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

Database Oracle dan Cloud SQL untuk PostgreSQL dapat dikonfigurasi secara khusus untuk mencapai fungsi tertentu di luar konfigurasi default. Untuk mengubah parameter konfigurasi di Oracle, diperlukan izin administrasi tertentu (terutama izin pengguna SYS/SYSTEM).

Berikut adalah contoh perubahan 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 dimulai ulang):

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 hal berikut ini:

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_max_failed_login_attempts        integer     2

Modifikasi parameter Oracle berfungsi dalam tiga cakupan:

  • SPFILE: Modifikasi parameter ditulis ke spfile Oracle, yang memerlukan mulai ulang instance agar parameter dapat diterapkan.
  • MEMORY: Modifikasi parameter diterapkan di lapisan memori saja, tidak mengizinkan perubahan parameter statis.
  • BOTH: Modifikasi parameter diterapkan di file parameter server dan memori instance, yang tidak mengizinkan perubahan parameter statis.

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. Baca daftar lengkap semua parameter yang didukung oleh Cloud SQL untuk PostgreSQL yang dapat Anda ubah.

Parameter PostgreSQL dapat dibagi menjadi beberapa cakupan:

  • Parameter dinamis: Dapat diubah pada saat dijalankan.
  • 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 pada semua sesi saat ini dan yang akan datang.

Contoh perubahan parameter Cloud SQL untuk PostgreSQL

Konsol

Gunakan Konsol Google Cloud untuk mengaktifkan parameter log_connections.

  1. Buka halaman Edit instance di Cloud Storage.

    Go to Instances

  2. Di bagian Flags, klik Add item dan telusuri log_connections seperti pada screenshot berikut.

    Mengaktifkan koneksi log di konsol.

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 hanya menyimpan masa aktif sesi.

  1. Tampilkan parameter konfigurasi timezone:

    postgres=> SHOW timezone;
    

    Anda akan melihat output berikut, di mana timezone adalah set to UTC:

     TimeZone
    ----------
     UTC
    (1 row)
    
  2. Setel timezone ke UTC-9:

    postgres=> SET timezone='UTC-9';
    
  3. Tampilkan parameter konfigurasi timezone:

    postgres> SHOW timezone;
    

    Anda akan melihat output berikut, di mana timezone disetel ke UTC-9:

     TimeZone
    ----------
     UTC-9
    (1 row)
    

Tingkat transaksi dan isolasi

Bagian ini menjelaskan perbedaan utama dalam tingkat eksekusi transaksi dan isolasi antara Oracle dan Cloud SQL untuk PostgreSQL.

Mode commit

Oracle berfungsi secara default dalam mode non-autocommit, di mana setiap transaksi DML harus ditentukan dengan pernyataan COMMIT/ROLLBACK. Salah satu perbedaan mendasar antara Oracle dan PostgreSQL adalah bahwa PostgreSQL secara implisit mengeluarkan COMMIT setelah setiap perintah yang tidak mengikuti START TRANSACTION (atau BEGIN). Hal ini juga dikenal oleh beberapa mesin database lain sebagai autocommit. Meskipun diaktifkan secara default, autocommit dapat dinonaktifkan pada tingkat sesi menggunakan SET AUTOCOMMIT OFF.

Tingkat isolasi

Standar ANSI/ISO SQL (SQL:92) menentukan empat tingkat isolasi. Setiap tingkatan memberikan pendekatan yang berbeda dalam menangani eksekusi transaksi database secara serentak:

  • Read Uncommitted: Transaksi yang sedang diproses dapat melihat data yang tidak di-commit yang dibuat oleh transaksi lain. Jika rollback dilakukan, semua akan data dipulihkan ke status sebelumnya.
  • Read Committed: Transaksi hanya melihat perubahan data yang di-commit, perubahan yang tidak di-commit ("pembacaan kotor") tidak dimungkinkan.
  • Repeatable Read: Transaksi dapat melihat perubahan yang dilakukan oleh transaksi lain hanya setelah kedua transaksi mengeluarkan COMMIT atau keduanya di-roll back.
  • Serializable: Tingkat isolasi yang paling ketat/terkuat. Tingkat ini mengunci semua kumpulan data yang diakses serta mengunci resource, sehingga kumpulan data tidak dapat ditambahkan ke tabel.

Tingkat transaction isolation mengelola visibilitas data yang diubah dan dilihat 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 interaksi transaksi yang berbeda.

Oracle mendukung tingkat isolasi berikut:

  • Read Committed (default)
  • Serializable
  • Read-Only (bukan bagian dari standar ANSI/ISO SQL (SQL:92)

Oracle MVCC (Kontrol Konkurensi Multiversi):

  • Oracle menggunakan mekanisme MVCC untuk memberikan konsistensi pembacaan otomatis di seluruh database dan semua sesi.
  • Oracle mengandalkan System Change Number (SCN) dari transaksi saat ini untuk mendapatkan tampilan database yang konsisten. Oleh karena itu, semua kueri database hanya menampilkan data yang di-commit sehubungan dengan SCN pada saat eksekusi kueri.
  • Tingkat isolasi dapat diubah pada tingkat transaksi dan sesi.

Berikut adalah contoh setelan 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 pada tingkat SESSION, pada tingkat TRANSACTION, dan pada tingkat INSTANCE.

Untuk memverifikasi tingkat isolasi saat ini pada tingkat TRANSACTION dan 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 tingkat 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 pada tingkat 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 selanjutnya