全部产品
Search
文档中心

Hologres:Fungsi-fungsi SLPM

更新时间:Nov 20, 2025

Topik ini menjelaskan fungsi-fungsi dari model izin tingkat skema (SLPM) di Hologres. Anda dapat memanggil fungsi-fungsi ini untuk mengelola SLPM.

Ikhtisar

SLPM mendukung fungsi-fungsi berikut:

  • slpm_enable: Mengaktifkan SLPM.

  • slpm_migrate: Memigrasi objek yang ada seperti tabel, view, dan tabel asing ke SLPM.

  • slpm_create_user: Membuat pengguna di SLPM.

  • slpm_grant: Menambahkan pengguna ke grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.

  • slpm_revoke: Menghapus pengguna dari grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.

  • slpm_disable: Menonaktifkan SLPM untuk database.

  • slpm_cleanup: Menghapus grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer yang disimpan untuk SLPM.

  • slpm_rename_schema: Mengganti nama skema.

slpm_enable

  • Deskripsi

    slpm_enable: Mengaktifkan SLPM.

    Setelah memanggil fungsi slpm_enable, sistem secara otomatis membuat grup pengguna berikut: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer.

  • Sintaksis

    CALL slpm_enable ();
    Catatan

    Untuk memanggil fungsi slpm_enable, Anda harus menjadi superuser dari instance Hologres.

  • Catatan Penggunaan

    Setelah memanggil fungsi slpm_enable untuk mengaktifkan SLPM pada database, perubahan berikut terjadi pada izin pengguna:

    • Semua izin pada database dicabut dari grup PUBLIC. Ini mencegah pengguna tidak sah untuk terhubung ke database.

    • Semua izin pada semua skema database dicabut dari grup PUBLIC.

    • Pengguna dalam grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer memiliki izin untuk terhubung ke database.

    • Pengguna dalam grup {db}.admin menjadi pemilik database dan semua skema database.

    • Pengguna dalam grup {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer memiliki izin USAGE pada skema. Pengguna dalam grup {db}.{schema}.developer memiliki izin CREATE pada skema.

    • Setelah pengguna dalam grup {db}.admin dan {db}.{schema}.developer membuat objek berdasarkan skema, pengguna dalam grup {db}.{schema}.developer adalah pemilik objek tersebut. Pengguna dalam grup {db}.{schema}.writer memiliki izin baca dan tulis pada objek tersebut. Pengguna dalam grup {db}.{schema}.viewer memiliki izin hanya-baca pada objek tersebut.

    • Setelah pengguna dalam grup {db}.admin dan {db}.{schema}.developer membuat objek yang tidak memiliki skema, seperti server asing, pembungkus data asing, dan bahasa, pengguna dalam grup {db}.admin adalah pemilik objek tersebut. Pengguna dalam grup {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer memiliki izin USAGE pada objek tersebut.

slpm_migrate

  • Deskripsi

    slpm_migrate: Memigrasi objek yang ada seperti tabel, view, dan tabel asing ke SLPM.

  • Sintaksis

    CALL slpm_migrate ( [ batch_size ] );

    Tabel berikut menjelaskan parameter dalam sintaksis.

    Parameter

    Deskripsi

    Rentang Nilai

    batch_size

    Jumlah maksimum objek yang dapat dimigrasi sekaligus.

    Jika Anda mengatur parameter ini ke 0, jumlah maksimum objek yang dapat dimigrasi sekaligus ditentukan oleh parameter max_locks_per_transaction.

    [1, 64]. Parameter ini tidak valid jika nilainya di luar rentang ini.

    Jika database Anda berisi banyak objek, seperti ratusan objek, Anda harus memanggil fungsi slpm_migrate beberapa kali hingga semua objek dimigrasi.

    Jika database Anda berisi jumlah objek yang sangat besar, misalnya lebih dari ribuan atau bahkan puluhan ribu objek, kami menyarankan agar Anda menghubungi dukungan teknis di grup DingTalk untuk menaikkan nilai parameter max_locks_per_transaction sebelum memigrasikan objek. Lihat Dapatkan dukungan online untuk Hologres.

  • Catatan Penggunaan

    • Jika pesan DONE BUT NOT COMPLETED dikembalikan setelah Anda memanggil fungsi slpm_migrate, masih ada beberapa objek yang perlu dimigrasikan. Dalam hal ini, panggil kembali fungsi slpm_migrate.

    • Jika pesan COMPLETED dikembalikan, semua objek telah dimigrasikan.

  • Contoh

    CALL slpm_migrate (); // Migrasikan objek ke SLPM. Jumlah maksimum objek yang dapat dimigrasikan ditentukan oleh parameter max_locks_per_transaction. 
    
    CALL slpm_migrate (64); // Migrasikan maksimal 64 objek ke SLPM. 

slpm_create_user

  • Deskripsi

    slpm_create_user: Membuat pengguna di SLPM. Setelah memanggil fungsi ini untuk membuat pengguna, pengguna tersebut hanya memiliki izin logon. Untuk mengizinkan pengguna melakukan analitik data, Anda harus memberikan izin tertentu kepada pengguna tersebut.

    Catatan

    Untuk memanggil fungsi slpm_create_user, Anda harus menjadi superuser atau anggota grup {db}.admin dari database.

  • Sintaksis

    CALL slpm_create_user ( user_name [, role_name] );

    Tabel berikut menjelaskan parameter dalam sintaksis.

    Parameter

    Deskripsi

    user_name

    Nama pengguna yang akan dibuat. Anda dapat menentukan nama dalam salah satu format berikut:

    • ID atau nama tampilan akun Alibaba Cloud, seperti 13432193xxxx atau x*@aliyun.com.

    • UID pengguna RAM dengan awalan p4_ atau nama tampilan pengguna RAM, seperti p4_202338382183xxx atau RAM$mainaccount:subuser.

    role_name

    Grup ke mana pengguna akan ditambahkan. Anda dapat menambahkan pengguna ke salah satu grup berikut berdasarkan kebutuhan bisnis Anda:

    • {db}.admin

    • {db}.{schema}.developer

    • {db}.{schema}.writer

    • {db}.{schema}.viewer

    Untuk informasi lebih lanjut tentang izin grup pengguna, lihat Grup pengguna dan izin dalam SLPM.

  • Contoh

    CALL slpm_create_user ('my_t***@aliyun.com');
    CALL slpm_create_user ('RAM$my_test:mysubuser', 'mydb.public.developer');
    CALL slpm_create_user ('13532313103042xxx');
    CALL slpm_create_user ('p4_23319103042xxx', 'mydb.admin');

slpm_grant

  • Deskripsi

    slpm_grant: Menambahkan pengguna ke grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.

    Catatan

    Untuk memanggil fungsi slpm_grant, Anda harus menjadi superuser atau anggota grup {db}.admin dari database.

  • Sintaksis

    CALL slpm_grant ( role_name, user_name );

    Tabel berikut menjelaskan parameter dalam sintaksis.

    Parameter

    Deskripsi

    user_name

    Nama pengguna kepada mana Anda ingin memberikan izin. Anda dapat menentukan nama dalam salah satu format berikut:

    • ID atau nama tampilan akun Alibaba Cloud, seperti 13432193xxxx atau x*@aliyun.com.

    • UID pengguna RAM dengan awalan p4_ atau nama tampilan pengguna RAM, seperti p4_202338382183xxx atau RAM$mainaccount:subuser.

    role_name

    Grup ke mana pengguna akan ditambahkan. Anda dapat menambahkan pengguna ke salah satu grup berikut berdasarkan kebutuhan bisnis Anda:

    • {db}.admin

    • {db}.{schema}.developer

    • {db}.{schema}.writer

    • {db}.{schema}.viewer

    Untuk informasi lebih lanjut tentang izin grup pengguna, lihat Grup pengguna dan izin dalam SLPM.

  • Catatan Penggunaan

    • Anda hanya dapat memanggil fungsi ini setelah SLPM diaktifkan.

    • Nilai parameter user_name harus berupa ID akun atau nama tampilan akun Alibaba Cloud atau pengguna RAM.

    • Nilai parameter role_name harus dalam salah satu format berikut: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.

  • Contoh

    CALL slpm_grant ('mydb.public.developer', 'p4_202338382183xxx'); // Tambahkan Pengguna RAM yang ditentukan ke kelompok mydb.public.developer. 
    CALL slpm_grant ('mydb.admin', 'RAM$my_test:xxx'); // Tambahkan Pengguna RAM yang ditentukan ke kelompok mydb.admin. 
    CALL slpm_grant ('otherdb.admin', '13532313103042xxx'); // Fungsi ini gagal karena Anda hanya dapat menambahkan pengguna ke kelompok database saat ini. Untuk menambahkan pengguna ke kelompok database lain, sambungkan ke database tersebut dan panggil fungsi slpm_grant. 

slpm_revoke

  • Deskripsi

    slpm_revoke: Menghapus pengguna dari grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.

    Catatan

    Untuk memanggil fungsi slpm_grant, Anda harus menjadi superuser atau anggota grup {db}.admin dari database.

  • Sintaksis

    CALL slpm_revoke ( role_name, user_name );
  • Catatan Penggunaan

    • Anda hanya dapat memanggil fungsi ini setelah SLPM diaktifkan.

    • Nilai parameter user_name harus berupa ID akun atau nama tampilan akun Alibaba Cloud atau pengguna RAM.

    • Nilai parameter role_name harus dalam salah satu format berikut: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.

  • Contoh

    CALL slpm_revoke ('mydb.public.developer', 'p4_202338382183xxx'); // Hapus Pengguna RAM yang ditentukan dari kelompok mydb.public.developer. 
    CALL slpm_revoke ('mydb.admin', 'RAM$my_test:xxx'); // Hapus Pengguna RAM yang ditentukan dari kelompok mydb.admin. 
    CALL slpm_revoke ('otherdb.admin', '13532313103042xxx'); // Fungsi ini gagal karena Anda hanya dapat menghapus pengguna dari kelompok database saat ini. Untuk menghapus pengguna dari kelompok database lain, sambungkan ke database tersebut dan panggil fungsi slpm_revoke. 

slpm_disable

  • Deskripsi

    slpm_disable: Menonaktifkan SLPM untuk database.

    Catatan

    Untuk memanggil fungsi slpm_disable, Anda harus menjadi superuser.

  • Sintaksis

    CALL slpm_disable ();
  • Catatan Penggunaan

    Ketika menonaktifkan SLPM, perhatikan item berikut:

    • Grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer tetap ada. Anda dapat mengeksekusi pernyataan otorisasi dalam model otorisasi PostgreSQL standar untuk menambahkan pengguna ke grup pengguna ini. Pengguna dalam grup {db}.{schema}.developer tetap menjadi pemilik objek database.

    • Izin CONNECT dan TEMPORARY pada database diberikan ke grup PUBLIC.

    • Izin USAGE dan CREATE pada skema publik database diberikan ke grup PUBLIC.

    • Izin EXECUTE pada fungsi dan prosedur skema publik dalam database diberikan ke grup PUBLIC.

    • Izin USAGE pada bahasa yang ditentukan pengguna dari database diberikan ke grup PUBLIC.

    • Izin USAGE pada tipe yang ditentukan pengguna dari database diberikan ke grup PUBLIC.

  • Contoh

    CALL slpm_disable ();

slpm_cleanup

  • Deskripsi

    slpm_cleanup: Menghapus grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer yang disimpan untuk SLPM.

    Catatan

    Untuk memanggil fungsi slpm_cleanup, Anda harus menjadi superuser.

  • Sintaksis

    CALL slpm_cleanup ( db_name [, batch_size ] );

    Tabel berikut menjelaskan parameter dalam sintaksis.

    Parameter

    Deskripsi

    Range Nilai

    db_name

    Nama database untuk mana Anda ingin menghapus grup pengguna.

    Jika nama tersebut mengandung karakter khusus atau huruf kapital, sertakan dalam tanda kutip ganda (" "), seperti "MYDB".

    batch_size

    Jumlah maksimum objek yang dapat dimigrasi sekaligus.

    Jika Anda mengatur parameter ini ke 0, jumlah maksimum objek yang dapat dimigrasi sekaligus ditentukan oleh parameter max_locks_per_transaction. Nilai default parameter ini adalah 64.

    [0, 64]. Parameter ini tidak valid jika nilainya di luar rentang ini.

    Jika database Anda berisi banyak objek, misalnya ratusan objek, Anda harus memanggil fungsi slpm_cleanup() beberapa kali hingga semua objek dimigrasikan.

    Jika database Anda berisi jumlah objek yang sangat besar, misalnya lebih dari ribuan atau bahkan puluhan ribu objek, kami menyarankan agar Anda menghubungi dukungan teknis di grup DingTalk untuk menaikkan nilai parameter batch_size sebelum memigrasikan objek.

  • Catatan Penggunaan

    • Jika pesan DONE BUT NOT COMPLETED dikembalikan setelah Anda memanggil fungsi slpm_cleanup, masih ada beberapa objek yang perlu dimigrasikan, dan kelompok pengguna belum dihapus. Dalam hal ini, panggil kembali fungsi slpm_cleanup.

    • Jika pesan COMPLETED dikembalikan, semua objek telah dimigrasikan dan kelompok pengguna telah dihapus.

  • Contoh

    CALL slpm_cleanup ('mydb'); // Ubah Pemilik objek menjadi pengguna saat ini. Jumlah maksimum objek yang Pemiliknya dapat diubah ditentukan oleh parameter max_locks_per_transaction. 
    CALL slpm_cleanup ('mydb', 64); // Ubah Pemilik hingga 64 objek menjadi pengguna saat ini. 
    • Kasus 1: Hapus database dan kemudian grup pengguna dari database tersebut.

      drop database mydb;
      CALL slpm_cleanup ('mydb'); // Anda dapat menghapus kelompok pengguna database yang telah dihapus sekaligus. 
    • Kasus 2: Hapus grup pengguna dari database yang ada. Dalam hal ini, Anda harus terhubung ke database.

       CALL slpm_cleanup ('otherdb');
      ERROR:  Permission Denied. execute in database otherdb, or drop database before call slpm_cleanup.

slpm_rename_schema

  • Deskripsi

    slpm_rename_schema: Mengganti nama skema.

    Setelah mengganti nama database yang SLPM-nya diaktifkan, Anda juga harus mengganti nama empat grup pengguna. Fungsi slpm_rename_schema secara otomatis mengganti nama gruppengguna. Oleh karena itu, Anda harus memanggil fungsi ini untuk mengganti nama skema.

    Catatan

    Untuk memanggil fungsi slpm_rename_database, Anda harus menjadi superuser atau anggota grup {db}.admin dari database.

  • Sintaksis

    CALL slpm_rename_schema ( old_name, new_name );

    Tabel berikut menjelaskan parameter dalam sintaksis.

    Parameter

    Deskripsi

    old_name

    Nama asli skema yang akan diganti namanya. Jika nama tersebut mengandung karakter khusus atau huruf kapital, sertakan dalam tanda kutip ganda (" "), seperti "MYDB".

    new_name

    Nama baru yang ingin Anda tentukan untuk skema tersebut. Jika nama tersebut mengandung karakter khusus atau huruf kapital, sertakan dalam tanda kutip ganda (" "), seperti "MYDB".

  • Contoh

    CALL slpm_rename_schema ('oldschema', 'newschema');