Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #107032
    Avatar de Afonso RodriguesAfonso Rodrigues
    Participante

      Eu tenho um usuário (X) que é o oficial da aplicação, e outro usuário (APP_X) que é o que os desenvolvedores usam.
      Tenho esta separação para evitar que os desenolvedores alterem o banco, uma vez que todas as alterações devem ser feitas pelo flyway -> http://flywaydb.org/.

      O usuário APP_X deve possuir grant’s de DML para o usuário X e conter sinônimos para todos os objetos do X.

      Eu estou com a seguinte necessidade:
      Como o banco está em constante desenvolvimento, no momento da criação do usuário eu gero os grant’s e sinônimos, porém depois disso eu não quero colocar a criação de sinônimos dentro flyway.
      A solução seria usar uma TRRIGER CREATE ON SCHEMA para fazer isso. Mas, eu tentei usar e não dá certo.

      [b]Fiz e refiz um exemplo: http://psoug.org/reference/ddl_trigger.html

      O tutorial funciona certinho no próprio usuário, mas dá errado quando eu uso um usuário diferente para atuar nele.
      Alguém já teve esta necessidade, ou teve que usar este tipo de trigger?
      Obrigado.

      Para testar estou usando:
      Oracle Database 11g Express Edition Release 11.2.0.2.0 – Production

      Banco de produção (ainda não testado):
      Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production

      #107033
      Avatar de rmanrman
      Participante

        @Afonso Rodrigues

        O que você quer dizer que não funciona corretamente? Em que momento é apresentado o erro? Na criação da TRIGGER? No momento do disparo da TRIGGER? Qual erro ORA é apresentado?

        Pelo que eu percebi, a TRIGGER deve ser criada no usuário X e o usuário X deve criar o SYNONYM no schema do usuário APP_X. Para criar um SYNONYM em um schema de terceiro, ou seja, em um schema que não é o próprio schema, é necessário ter privilegio de CREATE ANY SYNONYM. Detalhe, isso permite que o usuário possa criar SYNONYM em qualquer schema.

        Caso o problema seja falta de privilégio, através de um usuário DBA conceda o privilégio:


        GRANT CREATE ANY SYNONYM TO X;

        Agora vou deixar minha opinião. Por que o usuário APP_X não é uma copia idêntica do usuário X ? Por que o ambiente de desenvolvimento não é isolado da produção? Isso já resolveria o problema de criação de SYNONYM e daria mais liberdade ao desenvolvedor.

        Outra sugestão, o mais indicado é que os ambientes de desenvolvimento, homologação e produção sejam iguais em relação a versão do Oracle Database. Isso evita surpresas ao implantar uma nova versão da aplicação.

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.
      plugins premium WordPress