2015-06-26 17 views
6

Tôi có một công việc plsql chạy với tư cách người dùng cụ thể và tôi cần thực hiện khoản trợ cấp để người dùng này truy cập vào các bảng cụ thể cho đến khi hoàn thành công việc. Công việc không bao giờ mất hơn 30 phút.GRANT Table Permissions trong một khoảng thời gian giới hạn

Câu hỏi của tôi là, trong oracle có cách nào để cấp cho người dùng quyền truy cập vào bảng trong một khoảng thời gian giới hạn hay tôi chỉ cần tạo một chức năng khác để thu hồi đặc quyền sau khi hoàn thành công việc? Tôi đã thực hiện một vài tìm kiếm nhanh và không thể tìm thấy bất cứ điều gì về điều này. Có ai biết nếu điều này là có thể?

Sẽ thật tuyệt vời nếu tôi có thể cấp tất cả trong 30 phút.

+1

Xem lịch trình của Oracle. – OTTA

+1

Làm cách nào để tạo người dùng đặc biệt chỉ cho công việc này? – ksa

+0

Bạn đang sử dụng dbms_job hoặc dbms_scheduler? – tbone

Trả lời

-2

Có một phương thức trong plsql được gọi là grantAccess(). Nó cho phép bạn cung cấp số giây mà người dùng được cấp quyền truy cập.

Vì vậy, nếu bạn muốn cung cấp cho họ truy cập cho, nói rằng, một năm, bạn sẽ viết như sau:

rightSideUser.grantAccess(31536000) 
2

Các bình luận từ @ksa là câu trả lời đúng cho việc này. Bạn nên tạo một người dùng mới với chính xác các quyền cần thiết và xác định thủ tục này trên lược đồ đó. Sau đó, bạn có thể GRANT EXECUTE về quy trình này cho vai trò hoặc người dùng cần chạy nó. Mặc dù là mặc định, bạn cũng có thể chỉ định rõ ràng AUTHID DEFINER. Về bản chất, điều này có nghĩa là thủ tục chạy như người giải quyết bất kể ai gọi nó. Nó giúp bạn tiết kiệm từ bất kỳ vấn đề thời gian/lập lịch và các điều khoản rõ ràng cho người kế nhiệm của bạn. Nếu bạn không muốn chỉ định lược đồ trên mọi cuộc gọi, bạn có thể xác định một từ đồng nghĩa.

Các vấn đề liên quan