SYSTEM создает несколько таблиц и хочет предоставить пользователю A возможность усекать таблицы. На документах oracle минимальная привилегия составляет:
GRANT DROP ANY TABLE TO userA
https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10007.htm#SQLRF01707
DROP ANY TABLE, как указано, слишком мощная привилегия для предоставления пользователю, и от просмотра тамнет способа ограничить таблицы, которые пользователь может усекать с ним.
Правильный способ, о котором говорилось в предыдущих темах, - это использовать хранимые процедуры:
CREATE OR REPLACE procedure truncateTables
AS
BEGIN
execute immediate 'TRUNCATE TABLE table1';
end;
/
GRANT EXECUTE on system.truncateTables TO userA;
Однако, если я хочувообще избегать использования каких-либо хранимых процедур, есть ли альтернативный способ, позволяющий пользователю, который не является владельцем таблицы, обрезать таблицы, но не с привилегией, которая потенциально разрушительна, как "DROP ANY TABLE"?