All Products
Search
Document Center

PolarDB:Perbedaan antara PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 dan PolarDB for PostgreSQL (Kompatibel dengan Oracle) 1.0

Last Updated:Jul 15, 2025

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0, dibandingkan dengan Versi 1.0, menampilkan arsitektur kompatibilitas yang sepenuhnya baru, dengan kompatibilitas sintaksis Oracle sebagai dasar pengembangannya. Versi 2.0 mencapai peningkatan performa signifikan dalam beban kerja konkurensi tinggi, beban tulis tinggi, kueri paralel, dan replikasi logis di bawah kondisi beban terdistribusi. Topik ini menjelaskan secara rinci perbedaan spesifik antara kedua versi untuk referensi Anda. Silakan merujuk pada versi PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 yang dirilis saat ini (20250630). Beberapa fitur akan didukung secara bertahap di versi berikutnya.

Peningkatan performa yang signifikan

Uji performa untuk skenario hanya-baca (select-only) dan skenario baca-tulis (tpcb-like) dilakukan menggunakan pgbench pada kluster spesifikasi polar.o.x8.xlarge. Hasil uji adalah sebagai berikut:

Skenario

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 1.0

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0

Peningkatan performa

Skema hanya-baca (select-only)

109.141,30

120.803,95

10,69%

Skema baca-tulis (tpcb-like)

49.226,71

64.752,41

31,54%

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 menunjukkan peningkatan performa signifikan dibandingkan Versi 1.0, terutama dalam skenario baca-tulis tpcb-like di mana performa meningkat lebih dari 30%. Selain itu, dalam skenario dengan banyak koneksi, PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memiliki peningkatan throughput transaksi hingga 100% dalam skenario uji.

Untuk lebih meningkatkan performa, Versi 2.0 menambahkan banyak fitur kueri paralel. Misalnya, RETURN QUERY dalam fungsi PL/pgSQL sekarang mendukung komputasi paralel saat mengembalikan hasil, dan perintah REFRESH MATERIALIZED VIEW juga dapat menggunakan kueri paralel. Selain itu, pemindaian urutan paralel chunk didukung, meningkatkan throughput I/O untuk pemindaian data berskala besar, mendekati batas throughput I/O perangkat blok.

Peningkatan indeks

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 mengoptimalkan penanganan data duplikat dalam indeks B-tree (indeks database standar), mengurangi penggunaan ruang keseluruhan indeks B-tree sambil meningkatkan performa kueri keseluruhan. Secara khusus, memperkenalkan kebijakan kompresi indeks teknologi deduplikasi untuk secara otomatis mendeduplikasi dan menekan data duplikat dalam indeks B-tree dan mengurangi ruang yang ditempati oleh indeks. Pada saat yang sama, Versi 2.0 juga menangani masalah konsumsi sumber daya dengan indeks B-tree, termasuk masalah pembengkakan tabel yang disebabkan oleh pembaruan indeks yang sering.

Selain itu, versi ini menyediakan indeks GiST yang melakukan pra-pengurutan data selama proses pembuatan, secara signifikan meningkatkan kecepatan pembuatan indeks GiST dan SP-GiST serta mengurangi ukuran indeks.

Peningkatan tabel partisi

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 telah meningkatkan sistem partisi, menghasilkan performa yang lebih baik saat menanyakan tabel partisi. Sekarang, Anda dapat menggunakan pemangkasan partisi yang lebih fleksibel dan operasi JOIN cerdas. Selain itu, versi ini telah meningkatkan dukungan untuk pemicu dan menambahkan dukungan untuk replikasi logis, membuat replikasi dan sinkronisasi data lebih efisien dan andal.

Selain itu, Versi 2.0 mengoptimalkan kemampuan pemangkasan partisi, mengurangi SubPlans partisi anak dan rencana cache yang duplikat, memungkinkan eksekusi kueri yang lebih cepat. Pada saat yang sama, ketika menambahkan atau menghapus partisi, menggunakan mode alter table detach|attach PARTITION concurrently menghindari konflik kunci, meningkatkan ketersediaan dan stabilitas database.

VACUUM Paralel (pengumpulan sampah)

Mekanisme VACUUM sangat penting dalam manajemen database di PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0, karena dapat melepaskan ruang tabel yang tidak lagi digunakan untuk meringankan masalah pembengkakan tabel umum. Untuk lebih mengoptimalkan efisiensi dan performa pengumpulan sampah, Versi 2.0 memperkenalkan mekanisme pemulihan indeks paralel. Selain itu, Anda dapat menentukan jumlah pekerja paralel untuk lebih memenuhi kebutuhan Anda.

Melalui optimasi ini, manajemen database di PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memiliki efisiensi, keandalan, dan stabilitas yang lebih tinggi, sehingga lebih mudah bagi Anda untuk mengelola dan memelihara data Anda.

Optimasi kueri

  • Memperkenalkan pengurutan inkremental, di mana data yang diurutkan dari langkah-langkah awal dalam kueri dapat mempercepat pengurutan di langkah-langkah berikutnya. Optimasi ini dapat secara signifikan meningkatkan performa dan efisiensi kueri.

  • Menambahkan lebih banyak jenis kueri agregat dan set pengelompokan yang dapat memanfaatkan fungsi agregasi hash PostgreSQL yang efisien. Ini berarti bahwa kueri dengan agregasi besar tidak perlu dimuat sepenuhnya ke dalam memori, secara signifikan mengurangi penggunaan memori dan overhead I/O.

  • Mendukung linear search TO hash table probe, yang dapat secara signifikan meningkatkan performa pemrosesan pernyataan IN. Peningkatan performa lebih signifikan, terutama dalam SQL dengan beberapa kondisi atau memerlukan penyaringan sejumlah besar data.

Dukungan untuk algoritma kompresi LZ4 dan fitur keamanan yang ditingkatkan

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memperkenalkan beberapa fitur baru, termasuk dukungan untuk memilih algoritma LZ4 untuk kompresi kolom data untuk meningkatkan performa kompresi, sambil tetap mempertahankan dukungan untuk metode kompresi pglz asli. Selain itu, Anda dapat menggunakan peran yang telah ditentukan sebelumnya pg_read_all_data dan pg_write_all_data untuk memberikan izin baca-saja atau tulis-saja untuk objek tabel/tampilan/urutan sekaligus, memberikan Anda opsi manajemen data yang lebih fleksibel.

Versi 2.0 mengadopsi granularitas izin objek untuk manajemen izin berbasis cloud, memastikan keamanan dan keandalan data. Optimasi ini melindungi data sensitif dan mencegah kebocoran data dan pelanggaran keamanan.

Fitur inti

Kompatibilitas tipe data

Dukungan komprehensif untuk tipe data standar Oracle

  • PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memperluas dukungan untuk penyimpanan tipe Date 64-bit, sepenuhnya kompatibel dengan penyimpanan dan tampilan tipe Date Oracle pada tingkat tahun, bulan, hari, jam, menit, dan detik.

  • Mendukung tipe standar Oracle seperti char, varchar2, nvarchar2, nvarchar, binary_integer, number, row, rowid, dan menyediakan nls_date_format, nls_timestamp_format untuk mengontrol format output tipe waktu.

  • Untuk perhitungan numerik, hasil pembagian untuk tipe INT2, INT4, dan INT8 semuanya adalah angka floating-point, meningkatkan kompatibilitas dengan perilaku Oracle dalam perhitungan numerik.

Dukungan JSON dan XML yang ditingkatkan

  • Mendukung tipe JSON_ELEMENT_T, JSON_OBJECT_T, JSON_ARRAY_T, meningkatkan fleksibilitas pemrosesan data JSON dan skenario operasi JSON yang lebih kompleks.

  • Mendukung XMLELEMENT, XMLAGG mengembalikan tipe XmlType, memudahkan pembuatan dan manipulasi data XML.

  • Mendukung fungsi XmlType extract dan getStringVal, memperluas kemampuan pemrosesan data XML.

  • Mendukung validasi kendala ROW tipe NULL/NOT NULL, ekstensi tipe ODCI, dan konversi antara tipe komposit dan record dengan nilai default.

Kompatibilitas fungsi dan operator

Pustaka fungsi yang kompatibel dengan Oracle yang kaya

  • Mendukung fitur spesifik Oracle seperti decode, operator group_id, operator ORDER BY dalam fungsi agregat, spasi antara operator biner bawaan, operator set minus, pemanggilan fungsi dalam bentuk a.b tanpa tanda kurung, dan string kosong diperlakukan sebagai NULL.

  • Mendukung fungsi waktu termasuk to_date, add_month, dan fungsi tipe waktu bawaan lainnya.

  • Mendukung fungsi string termasuk instr, lpad, rpad, dan fungsi string bawaan lainnya.

  • Mendukung fungsi biner termasuk rawtohex, hextoraw, vsize, dan fungsi terkait biner lainnya.

  • Mendukung fungsi reguler termasuk regexp_count, regex_instr, regex_substr, regex_like, dan fungsi reguler lainnya.

Kompatibilitas fungsi yang terus ditingkatkan

  • Menambahkan fungsi JSON_OBJECT, JSON_ARRAYAGG untuk mengoptimalkan pemrosesan data JSON.

  • Mendukung pemanggilan XMLELEMENT, XMLAGG menggunakan .function, meningkatkan fleksibilitas dalam operasi komposit XML.

  • Mendukung fungsi bawaan CONVERT(date,name,name) dan NVL(interval, interval) untuk menangani data tipe tanggal dan interval.

  • Meningkatkan pemrosesan format syyyy fungsi TO_DATE/TO_CHAR untuk memastikan akurasi pemrosesan tanggal.

  • Mendukung konversi tipe implisit bertingkat untuk parameter fungsi OUT, memperluas kemampuan pemrosesan data XML fungsi XMLSEQUENCE.

  • Mendukung fungsi USERENV untuk mengelola informasi lingkungan sesi.

Kompatibilitas sintaksis SQL

Kompatibilitas sintaksis kueri komprehensif

  • Mendukung penggunaan alias yang sama dalam subkueri di level yang berbeda, nama tabel dan kolom tidak peka huruf besar/kecil, dan kompatibilitas penuh dengan alias kata kunci.

  • Mendukung penggunaan alias dalam struktur sintaksis INSERT/SELECT, mendukung DISTINCT default, klausa ORDER BY dalam kolom target, dan mendukung fungsi agregat COUNT(*) dalam klausa ORDER BY.

  • Mendukung INSERT/UPDATE diikuti sintaksis seperti namespace.table.col, mendukung operator gabungan tabel (+).

  • Mendukung penggunaan sintaksis UPDATE/DELETE dengan WHERE secara paralel dalam klausa MERGE.

Kolom semu dan sintaksis DML yang ditingkatkan

  • Mendukung sintaksis ROWNUM untuk menandai nomor baris dalam hasil kueri, dan memanggil ROWNUM dengan tanda kutip.

  • Mendukung urutan unik global.

  • Mendukung SELECT/DELETE/UPDATE yang bertindak pada subkueri.

  • Mendukung sintaksis SELECT FOR UPDATE WAIT dan SELECT FOR UPDATE ORDER BY.

  • Mendukung penggunaan sintaksis MERGE INFO dalam tampilan.

  • Mendukung sintaksis HINT dasar.

  • Mendukung klausa CONNECT BY untuk menentukan hubungan induk-anak baris saat menjalankan kueri hierarkis.

  • Mendukung penggunaan kata kunci EDITIONABLE dalam tampilan dan tabel.

  • Mendukung operasi UNION antara tipe TEXT dan tipe lainnya.

Kompatibilitas sintaksis DDL

Sintaksis manajemen tabel dan objek

  • Mendukung sintaksis ALTER SESSION ENABLE untuk mengontrol perilaku sesi.

  • Mendukung sintaksis kolom yang dihasilkan saat membuat tabel dan beberapa kata kunci khusus.

  • Mendukung kata kunci MONITORING untuk melacak penggunaan tabel.

  • Mendukung sintaksis ALTER TYPE ADD(ATTRIBUTE) untuk meningkatkan fleksibilitas dalam manajemen tipe objek.

  • Mendukung sintaksis REFRESH COMPLETE untuk memperbarui data tampilan material.

  • Mendukung WITH CHECK OPTION untuk menegakkan kendala tampilan.

  • Mendukung pembuatan dependensi sirkular manual untuk tampilan material.

  • Mendukung DROP FORCE untuk memaksa menghapus sinonim.

Keamanan dan manajemen izin

  • Mendukung fungsionalitas CREATE PROFILE, menyediakan fungsi penghitungan penggunaan ulang kata sandi, waktu, dan verifikasi kata sandi, secara signifikan meningkatkan keamanan database.

  • Mendukung sintaksis CREATE TABLE CACHE untuk mengoptimalkan strategi penyangga data.

  • Pemicu sistem mendukung sintaksis ALTER TRIGGER ENABLE/DISABLE.

  • Mendukung pembuatan sinonim PUBLIC di bawah PUBLIC SCHEMA, dan mendukung sinonim untuk PACKAGE dan TYPE BODY.

  • Mendukung sintaksis MODIFY COLUMN.

  • Mendukung penghapusan fungsi agregat menggunakan DROP AGGREGATE.

Fungsionalitas tabel partisi

Dukungan tabel partisi lengkap

  • Mendukung tabel berpartisi gaya Oracle, termasuk pembuatan partisi tingkat pertama dan tingkat kedua, serta tiga jenis partisi: LIST, RANGE, dan HASH.

  • Menyediakan operasi manajemen partisi umum seperti CREATE, COALESCE, DROP, EXCHANGE, MERGE, MODIFY, MOVE, RENAME, SPLIT, TRUNCATE.

  • Mendukung partisi tabel anak dari template partisi, pembuatan otomatis partisi interval, dan sintaks pemanggilan partisi A PARTITION(B) yang kompatibel dengan Oracle.

Fitur partisi tingkat lanjut

  • Mendukung penambahan indeks otomatis pada tabel partisi. Saat perlu membuat indeks global, mendukung pemanggilan tanpa penggunaan eksplisit GLOBAL, dan memungkinkan penggunaan sintaksis REFERENCING OLD dalam pemicu tabel partisi.

  • Mendukung penggunaan partisi Interval dalam tabel partisi, dan menggunakannya bersama dengan Global Index.

  • Mengizinkan konversi partisi MAXVALUE menjadi partisi DEFAULT dalam tabel partisi untuk menerima nilai null pada kunci partisi.

  • Memperbaiki masalah stabilitas terkait pembuatan tabel partisi dan cacat dalam kueri tampilan tabel partisi.

Kemampuan pemrosesan transaksi

Mekanisme snapshot transaksi CSN

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memperkenalkan mekanisme snapshot transaksi baru, yaitu mekanisme snapshot transaksi CSN, untuk meningkatkan performa MVCC. Tidak seperti PostgreSQL asli, yang menggunakan daftar nomor transaksi xid sebagai snapshot transaksi, snapshot CSN menggunakan nilai integer 64-bit yang meningkat secara monotonik, yang tidak hanya mempercepat pembuatan snapshot transaksi tetapi juga meningkatkan performa penentuan visibilitas baris dalam MVCC.

Transaksi otonom dan rollback tingkat pernyataan

  • Mendukung penggunaan transaksi otonom dalam prosedur tersimpan dan blok anonim, membuat status commit transaksi independen dari transaksi induk.

  • Mendukung rollback transaksi tingkat pernyataan. Ketika auto-commit dinonaktifkan, kesalahan tingkat pernyataan hanya akan membatalkan subtransaksi saat ini sambil mempertahankan status berjalan transaksi utama.

Fitur-fitur ini memberikan mekanisme kontrol transaksi yang lebih fleksibel untuk skenario bisnis yang kompleks.

Fungsionalitas pemicu

  • Mendukung pemicu sistem DDL, memudahkan penanganan pemicu terkait operasi DDL.

  • Mendukung ALTER TRIGGER ENABLE/DISABLE untuk mengelola pemicu sistem, memudahkan kontrol perilaku pemicu.

  • Mendukung pemicu sistem DDL di level Skema/Database, memudahkan penanganan operasi DDL di level yang sesuai.

  • Mendukung sintaksis updating('col') untuk subfungsi pemicu, memudahkan penanganan logika pemicu yang kompleks.

Dukungan pemrograman PL/SQL

Kompatibilitas sintaksis dasar

  • Mendukung pemanggilan PL/SQL tanpa simbol $$.

  • Fungsi/prosedur tersimpan mendukung parameter IN, OUT, INOUT untuk nilai parameter referensi.

  • Blok anonim mendukung pengikatan variabel dan eksekusi dua fase.

  • Mendukung kompatibilitas variabel constant.

  • Mendukung variabel loop tipe record yang dideklarasikan secara implisit.

  • Mendukung sintaksis :NEW/:OLD dalam prosedur tersimpan.

  • Mendukung penggunaan tanpa nilai pengembalian dalam pemicu.

  • Mendukung variabel Exception kustom.

Fitur PL/SQL tingkat lanjut

  • Mendukung sintaksis pengecualian PROGRAM_ERROR.

  • Mendukung pemeriksaan keberadaan bidang recfield subfungsi.

  • Mendukung pernyataan loop FOR row IN.

  • Mendukung penggunaan array record sebagai parameter fungsi.

  • Mendukung kata kunci cadangan lapisan SQL sebagai nama fungsi.

  • Mendukung penggunaan collect dan reverse sebagai nama prosedur tersimpan di lapisan PL.

  • Mendukung sintaksis goto loop.

  • Mendukung penggunaan variabel paket dalam subkueri dalam blok PL.

  • Mendukung penggunaan func.var untuk memanggil variabel yang dideklarasikan dalam fungsi.

Fungsionalitas subfungsi

  • Mendukung subfungsi menggunakan variabel eksternal sebagai nilai parameter default, menyederhanakan logika pengoperasian variabel.

  • Mendukung subfungsi pemicu menggunakan :new/:old, meningkatkan kompatibilitas subfungsi pemicu.

  • Mendukung elemen tipe koleksi dalam subfungsi menggunakan variabel eksternal.

  • Mendukung subfungsi paket menggunakan fungsi privat dalam paket, memastikan penjadwalan sumber daya paket yang seragam.

  • Mendukung penggunaan variabel paket dalam subfungsi.

  • Mendukung subfungsi dieksekusi dengan collation default.

  • Anda dapat menggunakan variabel eksternal dalam penutupan.

  • Mendukung pemanggilan variabel di bawah subfungsi.

Fungsionalitas kursor

  • Mendukung penggunaan => untuk menentukan nilai default untuk parameter kursor.

  • Mendukung sintaksis open cursor() untuk kursor tanpa parameter, menyederhanakan logika inisialisasi kursor.

  • Mendukung penentuan nilai parameter default saat mendefinisikan kursor.

  • Mendukung penggunaan cursor%rowtype untuk menentukan jenis parameter fungsi.

  • Mendukung penggunaan kursor persisten setelah ROLLBACK, memperluas kontinuitas kueri data.

  • Mendukung kursor non-gulir default, mengurangi penggunaan memori dan mengoptimalkan performa eksekusi.

  • Mendukung kursor dalam fungsi paket menggunakan fungsi lain dalam paket.

  • Mendukung penggunaan variabel paket dalam subkueri kursor.

  • Mendukung pembukaan ulang kursor eksplisit.

Fungsionalitas paket

  • Mendukung pembuatan dan penghapusan fungsionalitas paket kustom.

  • Mendukung tipe koleksi umum seperti larik asosiatif, tabel bertingkat, dan larik panjang variabel.

  • Mendukung operasi inisialisasi, pemanggilan, dan penugasan dasar untuk tipe koleksi.

  • Mendukung SUBTYPE satu dimensi dalam paket, memperluas dukungan model data untuk paket.

  • Tipe record paket mendukung constraint, memastikan integritas data.

  • Mendukung akses paket tidak peka huruf besar/kecil.

  • Mendukung fungsi paket bergantung pada tipe yang didefinisikan kemudian.

  • Mendukung prosedur tersimpan fungsi paket mengabaikan nilai default.

  • Mendukung penggunaan variabel paket untuk menentukan jenis parameter fungsi paket.

  • Mendukung variabel paket sebagai variabel prosedur tersimpan dan nilai default untuk parameter subfungsi.

Dukungan tipe koleksi

  • Mendukung penggunaan larik asosiatif sebagai parameter dan nilai pengembalian, memudahkan penanganan struktur data yang kompleks.

  • Mendukung deklarasi data panjang variabel yang setara, menyederhanakan logika manajemen ruang tipe koleksi.

  • Rentang tipe koleksi dapat dihapus.

  • Mendukung larik asosiatif bawaan dalam paket bawaan.

  • Mendukung larik asosiatif tiga dimensi, memperluas fungsionalitas tipe koleksi.

  • Mendukung elemen larik asosiatif sebagai record dua dimensi, meningkatkan ekspresi tipe komposit, dan mendukung penyusunan bersarang dengan record.

  • Mendukung fetch bulk into ke tipe koleksi coll(idx).recfield, mengoptimalkan efisiensi eksekusi DML.

  • Mendukung penggunaan tipe koleksi dimensi tinggi dalam pernyataan DML.

  • Mendukung nilai default untuk parameter fungsi tipe koleksi.

  • Mendukung konstruktor larik asosiatif.

  • Mendukung operasi konversi dan operasi himpunan untuk tipe koleksi.

Ekosistem paket bawaan

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 menyediakan rangkaian paket bawaan yang kompatibel dengan Oracle yang mencakup berbagai aspek aplikasi perusahaan:

  • DBMS_AQ: Menyediakan fungsi untuk operasi enqueue dan dequeue antrian pesan.

  • DBMS_AQADM: Menyediakan fungsi konfigurasi dan manajemen untuk antrian pesan.

  • DBMS_ALERT: Menyediakan serangkaian prosedur tersimpan untuk pendaftaran, pengiriman, dan penerimaan notifikasi.

  • DBMS_APPLICATION_INFO: Mencatat nama modul atau transaksi yang sedang dijalankan dalam database untuk pelacakan performa dan debugging.

  • DBMS_CRYPTO: Menyediakan fungsi enkripsi dan dekripsi untuk data yang disimpan, mendukung fungsi AES, DES, hashing, dan message digest.

  • DBMS_DDL: Memfasilitasi operasi terkait DDL.

  • DBMS_JOB: Digunakan untuk membuat dan mengelola tugas terjadwal, memungkinkan pengguna mengirimkan tugas terjadwal untuk dijalankan di database pada waktu yang ditentukan.

  • DBMS_LOB: Menyediakan metode akses dan operasi untuk objek besar, termasuk BLOB dan CLOB.

  • DBMS_LOCK: Menyediakan fungsi bawaan SLEEP untuk menjeda sesi saat ini selama periode tertentu.

  • DBMS_METADATA: Menyediakan metode untuk mendapatkan informasi metadata untuk objek database, digunakan untuk merekonstruksi objek dalam database.

  • DBMS_MVIEW: Mendukung REFRESH tanpa menyertakan objek dependen.

  • DBMS_OUTPUT: Dapat mengirim pesan dari prosedur tersimpan, paket, atau pemicu.

  • DBMS_XMLGEN: Menyediakan fungsi convert untuk menangani konversi data XML.

  • DBMS_XMLPARSER: Menyediakan metode parsing untuk dokumen XML, yang dapat digunakan untuk menghasilkan objek Dokumen.

  • DBMS_PIPE: Mendukung komunikasi pipa antar sesi yang berbeda dalam instance yang sama.

  • DBMS_RANDOM: Menyediakan serangkaian fungsi dan prosedur acak.

  • DBMS_REDACT: Menyediakan fungsi untuk masking data kueri oleh pengguna atau aplikasi dengan hak istimewa rendah, melindungi keamanan data database.

  • DBMS_RLS: Memungkinkan Virtual Private Database (VPD) dijalankan pada objek database PolarDB tertentu.

  • DBMS_SESSION: Menyediakan antarmuka untuk mengakses sesi, pengguna, dan informasi lainnya dari PL/SQL.

  • DBMS_SPACE: Memfasilitasi operasi terkait manajemen ruang.

  • DBMS_SQL: Menyediakan antarmuka untuk mengeksekusi pernyataan DML dan DDL menggunakan SQL dinamis, mengeksekusi blok anonim PL/SQL, dan memanggil prosedur tersimpan dan fungsi PL/SQL.

  • DBMS_TRANSACTION: Digunakan untuk operasi terkait transaksi.

  • DBMS_UTILITY: Menyediakan berbagai subrutin utilitas, pengambilan dependensi paket.

  • DBMS_XMLDOM: Menyediakan antarmuka akses DOM untuk dokumen XML, mendukung definisi dan pembuatan berbagai objek DOM.

  • UTL_ENCODE: Menyediakan serangkaian fungsi untuk pengkodean dan dekode data, memudahkan transmisi data antar host yang berbeda.

  • UTL_I18N: Menyediakan layanan yang terdiri dari fungsi ESCAPE_REFERENCE dan UNESCAPE_REFERENCE, memberikan kemampuan globalisasi tambahan untuk aplikasi yang ditulis dalam PL/SQL.

  • UTL_MATCH: Meningkatkan fungsionalitas pencocokan pola string, menyederhanakan proses operasi teks.

  • UTL_HTTP: Memperluas fungsionalitas interaksi Web.

  • UTL_RAW: Menyediakan fungsi untuk memanipulasi data tipe RAW.

  • UTL_TCP: Memperkuat fungsionalitas komunikasi TCP, memperluas skenario transmisi jaringan.

  • UTL_URL: Menyediakan metode untuk mengonversi karakter tidak valid dan karakter cadangan dalam URL.

Kompatibilitas tampilan sistem

  • Mendukung tampilan umum Oracle seperti ALL_PART_KEY_COLUMNS, USER_PART_KEY_COLUMNS, DBA_PART_KEY_COLUMNS, DBA_ROLE_PRIVS, USER_ROLE_PRIVS.

  • Mendukung tampilan DBA_COL_COMMENTS untuk melihat dan mengelola informasi komentar kolom.

  • Mendukung tampilan parameter nls, memperluas dukungan untuk parameter internasionalisasi, meningkatkan manajemen konfigurasi multibahasa.

  • Mendukung tampilan DBA_TAB_COLUMNS dengan semua parameter, memberikan informasi kolom tabel yang lebih komprehensif.

  • Mendukung tampilan bawaan SESSION_ROLE, memperluas fungsionalitas manajemen peran sesi.

  • Mendukung tampilan USER_TAB_PARTITIONS bidang HIGH_VALUE, mengoptimalkan manajemen nilai tinggi tabel partisi.

  • Mendukung tampilan DBA_OBJECTS bidang CREATED untuk melihat waktu pembuatan objek.

Fitur tingkat lanjut lainnya

Koneksi heterogen DBLink

Mendukung fungsionalitas DBLink, memungkinkan koneksi ke database PostgreSQL dan Oracle. Fitur ini memberikan Anda kemampuan akses lintas database, memudahkan skenario integrasi dan migrasi data.

Dukungan pengkodean karakter

Mendukung pengkodean server-sisi GBK dan GB18030 untuk mengurangi biaya konversi pengkodean tambahan dalam lingkungan klien GBK. Fitur ini sangat cocok untuk skenario aplikasi dalam lingkungan Cina, meningkatkan kemampuan dukungan lokalisasi sistem.

Perbedaan kompatibilitas sintaksis

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memiliki perbedaan berikut dibandingkan Versi 1.0:

Tipe

Deskripsi

Tipe data

Tidak mendukung tipe ABSTIME.

Sintaksis DDL

  • Tidak mendukung penggunaan sintaksis CASCADE setelah DROP USER.

  • Tidak mendukung sintaksis GRANT EXEMPT ACCESS POLICY TO USERNAME.

  • Tidak mendukung sintaksis SHOW ROLE.

  • Tidak mendukung penggunaan sintaksis NOLOGGING setelah CREATE INDEX.

Tampilan dan tabel partisi

  • Beberapa definisi tampilan yang kompatibel dengan Oracle tidak memiliki kolom SCHEMA_NAME.

  • Dalam tabel partisi, tabel induk memiliki setidaknya satu partisi anak secara default.

  • Tidak mendukung penyisipan nilai null ke dalam partisi non-DEFAULT.

  • Tidak mengizinkan operasi ATTACH pada partisi HASH.

  • Untuk tabel partisi tipe LIST, jika mereka berisi partisi default, operasi ADD partisi tidak diizinkan.

Fungsi, prosedur tersimpan, dan pemicu

  • Tidak mendukung fungsi dan prosedur tersimpan dengan nama yang sama, dan tidak mendukung fungsi dan prosedur tersimpan dengan parameter sebagai subkueri.

  • Tidak mendukung input parameter keempat fungsi REGEXP_REPLACE menjadi 'n'.

  • Tidak mendukung fungsi DECODE dengan hanya dua parameter input, tidak mendukung penggunaan pengubah COLLATE pada parameter karakter.

  • Tidak mendukung fungsi GET_RAW_PAGE dengan tanda kutip ganda sebagai parameter pertama.

  • Tidak mendukung penggunaan ROWNUM sebagai parameter fungsi.

  • Jika prosedur tersimpan tidak memiliki tipe input ANYELEMENT, maka tidak boleh ada tipe ANYELEMENT dalam output.

  • Dalam fungsi SQL, jika parameter memiliki nilai default, parameter berikutnya juga harus memiliki nilai default.

  • Nama pemicu harus memiliki panjang 54 karakter.

Transaksi

Jika operasi tulis terjadi dalam transaksi otonom, transaksi tersebut harus dikomit atau dibatalkan secara eksplisit. Jika tidak, transaksi gagal.

Kueri SQL

  • Tidak mendukung metode optimasi berikut: CHOOSE/FIRST_ROWS/FIRST_ROWS_10/FIRST_ROWS_100/FIRST_ROWS_1000.

  • Anda tidak dapat menggunakan sinonim dalam subkueri untuk memanggil objek dalam kueri induk.

  • Tidak mendukung sintaksis tanpa VALUES xxx di antara INSERT ALL INTO xxx dan SELECT xxx.

  • Tidak mendukung perbandingan kolom DUMMY dalam tabel DUAL dengan tipe numerik.

  • Tidak mendukung penggunaan '!!a' untuk mewakili faktorial a.

  • Anda tidak dapat memanggil fungsi lain dalam fungsi non-invarian.

  • Tidak mendukung pengaturan ICU_SHOR_FORM ke 'AN_CX_EX_LROOT_NO_S3' saat membuat COLLATION.

  • Tidak mendukung penggunaan tipe BIT untuk memberikan nilai default pada tipe BOOL.

  • Anda tidak dapat menggunakan kolom untuk memberikan nilai default ke kolom lain.

Paket

  • Anda tidak dapat menggunakan variabel paket dalam pernyataan SQL.

  • Tidak mendukung penggunaan DBMS_SQL.TO_REFCURSOR dan DBMS_SQL.TO_CURSOR_NUMBER dalam paket DBMS_SQL.

  • Tidak mendukung penggunaan pernyataan SELECT INTO dalam paket DBMS_SQL, tidak mendukung penggunaan DEFINE_COLUMN untuk pernyataan non-SELECT, tidak mendukung penugasan nilai menggunakan konstanta DBMS_SQL.NATIVE.

  • Tidak mendukung penggunaan angka murni sebagai nama tabel dalam paket DBM_UTILITY, tidak mendukung penggunaan NULL sebagai parameter input untuk GET_HASH_VALUE.

  • Tidak mendukung penggunaan 0 sebagai parameter input untuk RANDOMBYTES dalam paket DBMS_CRYPTO.

  • Tidak mendukung pengaturan posisi awal melebihi panjang total RAW dalam fungsi SUBSTR dalam paket UTLRAW.

  • Tidak mendukung penggunaan angka negatif untuk parameter TIMEOUT dalam fungsi SEND_MESSAGE dalam paket DBMS_PIPE.

  • Tidak mendukung fungsi kebijakan DBMS_RLS yang mengembalikan NULL.

  • Tidak mendukung penggunaan angka negatif sebagai parameter input dalam fungsi INSTR dari paket DBMS_LOB.

PL/SQL dan tipe koleksi

  • Tidak mendukung pemanggilan SQLCODE dan SQLERRM dalam kondisi non-pengecualian.

  • Pernyataan SQL dinamis tidak dapat diikat ke kursor bertipe kuat.

  • Operasi DDL tidak dapat dieksekusi dalam pernyataan SQL dinamis yang memiliki parameter.

  • Tidak mendukung penggunaan tipe STRING atau LONG sebagai tipe indeks untuk larik asosiatif.

  • Anda tidak dapat mendeklarasikan properti non-null secara global untuk tipe set.