Nếu bạn có quyền kiểm soát cách ứng dụng của mình kết nối (ví dụ:câu lệnh khởi tạo cho nhóm kết nối của bạn), tất cả những gì bạn cần làm là chạy:
ALTER SESSION SET CURRENT_SCHEMA = PRODUCTS;
Từ thời điểm đó trở đi (trong suốt thời gian của phiên) bất kỳ tên đối tượng không đủ tiêu chuẩn nào sẽ được tìm kiếm trong PRODUCTS
lược đồ.
Tất cả các khoản tài trợ được trao cho PRODUCTS_READONLY
sẽ có hiệu lực. Phiên sẽ chạy dưới thông tin đăng nhập (và các hạn chế bảo mật) của người dùng ban đầu được sử dụng để đăng nhập.
Nếu bạn không thể thay đổi cách kết nối được thiết lập hoặc khởi tạo, trình kích hoạt đăng nhập cũng sẽ thực hiện điều này:
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;
/
Lưu ý rằng điều quan trọng là phải bẫy bất kỳ ngoại lệ, bởi vì nếu không, một lỗi tiềm ẩn trong SQL được thực thi sẽ đăng xuất mọi người ra khỏi cơ sở dữ liệu một cách hiệu quả. Vì vậy, hãy sử dụng cẩn thận và kiểm tra kỹ trước khi đưa vào sản xuất.