Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle:Akses baca-saja ke skema untuk pengguna lain?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Terapkan OFFSET dan LIMIT di ORACLE untuk Query Gabung yang kompleks?

  2. CASE WHEN dalam klausa WHERE gagal dengan kesalahan kata kunci yang hilang

  3. Mengapa kueri Oracle 12c memerlukan tanda kutip ganda di sekitar tabel?

  4. kesalahan node-Oracledb saat menjalankan prosedur tersimpan NJS-012

  5. Tidak dapat menarik hasil dengan meneruskan input sebagai jalur xml di Oracle