Иногда требуется создать пользователя, который должен еще и скрипты всяческие пускать. Некоторые даже и править что-то :(
Чтобы не спотыкаться о кучу констрейнтов и процедуры, которые проверяют принадлежность к пользователям Супермага, самое простое - завести его в админском модуле, создать роль:
Код:
CREATE ROLE "SM_EDITOR" NOT IDENTIFIED;
GRANT CREATE DATABASE LINK TO "SM_EDITOR";
GRANT CREATE TABLE TO "SM_EDITOR";
GRANT CREATE VIEW TO "SM_EDITOR";
begin
for c in (select table_name from all_tables where owner='SUPERMAG')
loop
begin
execute immediate
'GRANT DELETE ON supermag.' || c.table_name || ' to SM_EDITOR';
execute immediate
'GRANT UPDATE ON supermag.' || c.table_name || ' to SM_EDITOR';
execute immediate
'GRANT INSERT ON supermag.' || c.table_name || ' to SM_EDITOR';
execute immediate
'GRANT SELECT ON supermag.' || c.table_name || ' to SM_EDITOR';
exception when others then null;
end;
end loop;
end;
/
и грантовать эту роль новому юзеру. Рекомендую не делать эту роль дефолтной, как правило, это приводит к невозможности логона по слишком большому количеству грантованных ролей.