Estou tentando criar um ambiente de treinador/estagiário no Oracle 18c XE. Até agora, tenho 4 usuários estagiários, todos com o hr-sample instalado. Agora, pretendo ter um usuário treinador que possa ver tudo o que os usuários estão fazendo em tempo real e que possa ajustar se necessário.
Este tópico parece ser discutido com frequência, mas não vi uma solução em que o beneficiário possa ver objetos recém-criados após a execução de um script como este:
BEGIN
FOR t IN (SELECT object_name, object_type FROM all_objects WHERE owner='TEST1' AND object_type IN ('TABLE','VIEW','PROCEDURE','FUNCTION','PACKAGE')) LOOP
IF t.object_type IN ('TABLE','VIEW') THEN
EXECUTE IMMEDIATE 'GRANT SELECT, UPDATE, INSERT, DELETE ON SOURCEUSER.'||t.object_name||' TO TEST2';
ELSIF t.object_type IN ('PROCEDURE','FUNCTION','PACKAGE') THEN
EXECUTE IMMEDIATE 'GRANT EXECUTE ON TEST1.'||t.object_name||' TO TEST2';
END IF;
END LOOP;
END;
Deve haver uma maneira de dar a outro usuário privilégios de seleção e criação em todos os objetos, incluindo aqueles que serão escritos no futuro. Claro que existe a possibilidade de escrever um gatilho, mas isso parece muito complicado para um requisito tão fácil.
É possível conceder a um usuário a equivalência de propriedade sobre um esquema de outro usuário?
Não há uma maneira direta de fazer o que você está descrevendo, que é privilégio por asserção em esquemas específicos. A coisa mais próxima que você poderia fazer seria conceder ao treinador privilégios de proxy para fazer logon como o aluno para ver seus objetos ou conceder uma série de privilégios de sistema "QUALQUER" (selecionar qualquer tabela, alterar qualquer tabela, inserir qualquer tabela, etc.). .) para o treinador que lhes permitiria ver tudo no banco de dados. Eu escrevi um breve blog sobre autenticação de proxy aqui: https://pmdba.wordpress.com/2014/09/05/shared-application-accounts-and-developers/ . Você também pode encontrar informações sobre ele aqui: https://oracle-base.com/articles/misc/proxy-users-and-connect-through .