Я хочу предоставить grant-all
(Все объекты схемы) одного пользователя другому пользователю. Я не хочу, чтобы в таблице были все. Что такое user1, например таблица, процедура, триггеры, синонимы, функции и т. Д., Которые должны быть доступны пользователю2 в той же базе данных (Oracle). На самом деле я создал триггер, который предоставит все привилегии пользователю2, если что-то новое развертывается в user1. Но перед созданием триггера остальные объекты схемы не являются привилегированными. Вот мой вопрос СпасибоОдиночество одного пользователя одного пользователя (все объекты схемы) другому пользователю
CREATE OR REPLACE PROCEDURE myddl
(p_ddl IN VARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE p_ddl;
END;
/
CREATE OR REPLACE TRIGGER new_obj_grant_prv
AFTER CREATE ON schema
DECLARE
l_jobno NUMBER;
BEGIN
IF ora_dict_obj_type IN ('TABLE','VIEW') THEN
dbms_job.submit(l_jobno,'myddl(''GRANT ALL ON '||ora_dict_obj_owner||'.'||ora_dict_obj_name||' TO user2'');');
END IF;
IF ora_dict_obj_type IN ('SEQUENCE','PACKAGE') THEN
dbms_job.submit(l_jobno,'myddl(''GRANT ALL ON '||ora_dict_obj_owner||'.'||ora_dict_obj_name||' TO user2'');');
END IF;
IF ora_dict_obj_type IN ('TRIGGER','SYNONYMS') THEN
dbms_job.submit(l_jobno,'myddl(''GRANT ALL ON '||ora_dict_obj_owner||'.'||ora_dict_obj_name||' TO user2'');');
END IF;
IF ora_dict_obj_type IN ('PROCEDURE','FUNCTION') THEN
dbms_job.submit(l_jobno,'myddl(''GRANT ALL ON '||ora_dict_obj_owner||'.'||ora_dict_obj_name||' TO user2'');');
END IF;
END;
В принципе, вы не можете этого сделать. Вы должны предоставить гранты на основе «за объект». – Giova