Apex-Oracle: Phân quyền select cho table system

Ứng dụng phê duyệt theo quy trình của mình trên APEX cần thêm tính năng gửi email thông báo tới người nhận thông tin tiếp theo cũng như thông tin phê duyệt hoặc từ chối tới email của người dùng. Mình chỉ việc viết thêm hàm gửi email vào trong mỗi bước phê duyệt hoặc từ chối là xong. Code gửi email được viết bằng PL/SQL trên server Oracle mới đã có sẵn package đã được sử dụng từ trước rồi nhưng khi tiến hành dịch lại trên server này thì lại gặp lỗi thông báo bảng dba_directories không tồn tại. Lỗi này là do table không được phân quyền select trên Oracle.

Thực chất bảng dba_directories này là bảng của hệ thống nhưng với schema đang đăng nhập thì lại không có quyền gì thao tác trên bảng này. Đối với hàm gửi email cần truy cập bảng dba_directories để lấy đường dẫn nên ta phải tiến hành phân quyền select vào bảng dba_directories cho user (hay còn gọi là schema) chạy hàm gửi email này. Bởi vì bảng dba_directories là bảng của hệ thống nên ta phải sử dụng quyền sysdba để tiến hành phân quyền.

Sau đây là các bước phân quyền select cho table

Đối với server database Oracle chạy hệ điều hành Windown thì ta tiến hành các bước sau để phân quyền:

  • Bước 1: Login bằng tài khoản admin vào server database Oracle.
  • Bước 2: Mở cửa sổ command line cmd.exe lên
  • Bước 3: Bật sqlplus với quyền sysdba
    sqlplus “/ as sysdba”
  • Bước 4: Phân quyền select table cho user cần quyền select
    grant select on dba_directories to PKTUY_user;
  • Bước 5: Kết quả sau khi grant được thông báo là:
    Grant succeeded.

Sau khi đã phân quyền xong thì biên dịch lại package không còn bị lỗi nêu trên nữa.

Một số bài viết liên quan đến quản trị hệ thống Oracle: