Вот хранимая процедура PL / SQL, которая предоставляет объектные привилегии (SELECT, UPDATE и т. Д.) Для всех таблиц, принадлежащих текущему пользователю другому пользователю, например - «appuser».
CREATE OR REPLACE PROCEDURE grant_privs
IS
CURSOR ut_cur IS SELECT table_name from user_tables;
ut_rec ut_cur%rowtype;
BEGIN
FOR ut_rec IN ut_cur
LOOP
EXECUTE IMMEDIATE 'GRANT ALL ON ' || ut_rec.table_name || ' TO appuser';
END LOOP;
END;
/
Он был выполнен автоматически после развертывания изменений базы данных для веб-приложения.Текущий пользователь владеет таблицами базы данных.После развертывания любых изменений в базе данных хранимая процедура была выполнена, чтобы гарантировать, что «appuser» сможет выполнять операторы SQL для всех таблиц.По соображениям безопасности веб-приложение подключено как «appuser», которое имеет только ограниченные системные привилегии.
Это и решение проблемы, и солидный вариант использования решения.