Jika Anda memiliki kendali atas cara aplikasi Anda terhubung (misalnya, pernyataan inisialisasi untuk kumpulan koneksi Anda), yang perlu Anda lakukan hanyalah menjalankan:
ALTER SESSION SET CURRENT_SCHEMA = PRODUCTS;
Sejak saat itu (selama masa sesi) setiap nama objek yang tidak memenuhi syarat akan dicari di PRODUCTS
skema.
Semua hibah diberikan kepada PRODUCTS_READONLY
akan berlaku. Sesi akan berjalan di bawah kredensial (dan batasan keamanan) dari pengguna asli yang digunakan untuk masuk.
Jika Anda tidak dapat mengubah cara koneksi dibuat atau diinisialisasi, pemicu logon juga harus melakukan ini:
create or replace trigger logon_trg
after logon on database
begin
if (user = 'PRODUCTS_READONLY') then
execute immediate 'alter session set current_schema = products';
end if;
exception
when others then null; -- prevent a login failure due to an exception
end logon_trg;
/
Perhatikan bahwa sangat penting untuk menjebak apa pun pengecualian, karena jika tidak, potensi kesalahan dalam SQL yang dieksekusi akan secara efektif membuat semua orang keluar dari database. Jadi gunakan dengan hati-hati dan uji dengan baik sebelum memasukkannya ke dalam produksi.