O porquê de não ser a melhor opção, em primeiro lugar é por que pra 
implementar isso vc VAI TER QUE, como eu disse, criar triggers/jobs 
que criem SQLs dinâmicos com DDL, e há "imposto de performance" se 
houver abuso tanto para SQL dinâmico (parses extras) quanto para DDLs 
(invalidação de objs, etc), e rotina automática vai ser executada 
SEMPRE, é porta aberta pra abusos... Pesquise em asktom.oracle.com 
para refs e exemplos de DDLs e SQLs dinãmicos em relação à queda de 
performance. O segundo ponto é em relação à Administração, 
inicialmente não me entra que possa haver segurança AUTOMÁTICA, ie, 
sem que nem o DBA nem o DA analisem a tabela recém-criada já seria 
automaticamente liberado SELECT ou o que for... Além disso, em vc 
tendo um schema/usuário dono da aplicação é um schema só que vc tem 
que proteger a senha, é um schema só que vc tem que auditar 
diferentemente... Aliás, no caso lá de DBA e DA analisarem CADA 
criação/alteração em Produção é ** crítico ** se vc quer Máxima 
segurança e Máxima performance, e procedimentos "automágicos" do tipo 
sempre me parecem vias de escape á isso... São basicamente estas as 
razões do meu conselho.
 Quanto à nota, antes de a citar uma dica : como já referido algumas 
vezes aqui no Grupo mesmo, vc pode obter acesso a QUALQUER dos textos 
do metalink registrando/suportando qquer produto Oracle, até o mais 
baratinho deles - assim, se vc ainda não tem nem sequer acesso aos 
textos do metalink, dada a ENORME importância de se ter acesso à 
isso, eu recomendo FORTEMENTE que vc tente obter,explique a quem de 
direito, recomendo esse (pequeno!) investimento pro teu patrão, há 
documentos ali que por si só resolvem problemas dificílimos no banco, 
que dão dicas PRECIOSAS, eu considero o metalink como parte da 
Documentação do banco... Na nota a idéia básica é a seguinte : quando 
uma trigger de DDL dispara (ao menos no 9i, não testei no 10g mas 
creio que é o mesmo) vc ** não ** recebe nas variáveis de sistema da 
trigger o SQL exato mas recebe um evento dizendo se é CREATE ou o que 
foi o DDL, e recebe o owner, tipo e nome do objeto sendo DDLzado - o 
procedimento é vc inserir essas infos numa tabela sua e imediatamente 
após disparar um job Oracle que leia a tabela e faça o GRANT : no 
exemplo da nota ele ainda resgata o SQL completo na V$SQL e 
derivadas, mas no caso discutido no grupo o que o colega lá queria é 
uma lógica simples, se é CREATE e o owner (schema) é X, então faça um 
GRANT SELECT pra uma determinada lista fixa de usuários (ou mais 
adequadamente pra uma role), pra essa lógica simplesm acho que o 
passo de recuperar o SQL é dispensável...
 
 []s
 
  Chiappa
  
--- Em oracle_br@yahoogrupos.com.br, Josir Gomes <[EMAIL PROTECTED]> escreveu
>
> Chiappa,
> me interessei pelo post :)
> 
> 1) Vc podia dissertar sobre o porque não se deve administrar a 
segurança 
> dessa forma. Se um grupo de usuários tiver sempre direito a SELECT 
em 
> uma base, porque não utilizar o fictício:
> 
> GRANT SELECT ON [schema] to [role]
> 
> Acho que isso tá mais para uma limitação do Oracle (facilmente 
> contornável, eu sei, mas ainda assim uma limitação).
> 
> 2) Como eu não tenho acesso ao Metalink, vc poderia falar mais 
sobre 
> esse artigo "How to Automate Grant
> Operations When New Objects Are Created in a SCHEMA/DATABASE" ?
> 
> Um abraço,
> Josir.
> -----
> Não, não tem GRANTs a nível de schema, não é assim que se deve
> administrar segurança num bd Oracle.
> Porém, apenas para complementar, o que ele em tese ** PODE ** sim
> fazer pra obter um automatismo do tipo, se for o caso, poderia ser:
> 
> a) ter uma TRIGGER que após o DDL de criação do objeto faz o GRANT
> (como triggers de DDL tem restrições à SQL dinâmico, usar uma tabela
> de jobs cfrme mostrado na nota 210693.1 "How to Automate Grant
> Operations When New Objects Are Created in a SCHEMA/DATABASE" do
> Suporte Oracle/metalink
>


Responder a