2015-06-26 4 views
6

У меня есть plsql работа, выполняемая как конкретный пользователь, и мне нужно выполнить грант, чтобы дать этому пользователю доступ к определенным таблицам до завершения задания. Работа не занимает больше 30 минут.Разрешения для таблиц GRANT в течение ограниченного периода времени

Мой вопрос в том, что в oracle существует ли какой-либо доступ к конкретному пользователю для доступа к таблице в течение ограниченного промежутка времени, или я должен просто создать еще одну функцию для отзыва привилегий после завершения задания? Я сделал несколько быстрых поисков и не смог ничего найти на этом. Кто-нибудь знает возможно ли это?

Было бы здорово, если бы я мог предоставить все на 30 минут.

+1

Посмотрите на планировщик Oracle. – OTTA

+1

Как насчет создания специального пользователя только для этой работы? – ksa

+0

Вы используете dbms_job или dbms_scheduler? – tbone

ответ

-2

Существует метод в plsql, называемый grantAccess(). Он позволяет указать количество секунд, на которые пользователю предоставляется доступ.

Итак, если вы хотите, чтобы дать им доступ, скажем, через год, можно было бы написать следующее:

rightSideUser.grantAccess(31536000) 
2

Комментарий от @ksa правильный ответ на это. Вы должны создать нового пользователя с требуемыми разрешениями и определить эту процедуру на этой схеме. Затем вы можете выполнить GRANT EXECUTE роль или пользователей, которым необходимо ее запустить. Хотя это значение по умолчанию, вы также можете явно указать AUTHID DEFINER. По сути, это означает, что процедура выполняется как определитель независимо от того, кто ее называет. Это избавляет вас от любых проблем времени/планирования, а разрешения для ваших преемников ясны. Если вам не нравится указывать схему для каждого вызова, вы можете определить синоним.

Смежные вопросы