trigger para owner

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
cleisson padua mello
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qui, 11 Jan 2007 8:48 am
Localização: SP

alguém sabe se existe trigger para owner..
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Como assim, trigger para owner?
Você quer que dispare a trigger quando?
cleisson padua mello
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qui, 11 Jan 2007 8:48 am
Localização: SP

quando houver alguma alteracao em procedures, triggers, funcoes dentro do owner.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Daí é DDL triggers!

Vou te dar um exemplo:
Essa trigger só permite que alguns usuários criem/alterem coisas no banco!

Uma vez eu vi um exemplo (acho que foi no blog do Marcio Portes). Uma trigger que não permitia criar EXCEPTION WHEN OTHERS THEN NULL nos objetos! Muito bom!

Selecionar tudo

CREATE OR REPLACE TRIGGER trg_log_ddl
 AFTER DDL ON DATABASE
 DECLARE
   PRAGMA autonomous_transaction;
   lv_osuser       varchar2(30);
   lv_machine      varchar2(64);
   lv_program      varchar2(100);
   sql_text        ora_name_list_t;
   stmt            LONG;
   n               INTEGER;
   lv_isauthorized NUMBER(1); 

BEGIN
 -- get some of the values to be logged
 BEGIN
  SELECT osuser, machine, program
  INTO lv_osuser, lv_machine, lv_program
  FROM v$session
  WHERE audsid=userenv('sessionid');

 EXCEPTION WHEN OTHERS THEN 
  NULL;
 END; 

  -- retrieve statement fired
  n := ora_sql_txt( sql_text );
  FOR i IN 1..n LOOP
    stmt := stmt || sql_text(i);
  END LOOP;
  stmt := substr(stmt, 1, 4000); 
 
 -- only log if the object type is one of the following. Developers still have to be able to compile code, views etc. 
 IF ora_dict_obj_type IN ( 'COLUMN', 'INDEX', 'OBJECT PRIVILEGE', 'ROLE PRIVILEGE', 'SYSTEM PRIVILEGE', 'USER') THEN 

   -- only allow some users to make changes
   IF lv_osuser IN ('oracle', 'qsanmam', 'Thomas', 'qtombar', 'mcrospe') THEN
     lv_isauthorized := 1; 
     INSERT INTO ulog.ddl_logging ( user_name, osuser, machine, ddl_date, ddl_type, object_type, owner, object_name, what, isauthorized, program)
     VALUES ( ora_login_user, lv_osuser, lv_machine, sysdate, ora_sysevent, ora_dict_obj_type, ora_dict_obj_owner, ora_dict_obj_name, stmt, lv_isauthorized, lv_program);
   ELSE
     lv_isauthorized := 0; 
     INSERT INTO ulog.ddl_logging ( user_name, osuser, machine, ddl_date, ddl_type, object_type, owner, object_name, what, isauthorized)
     VALUES ( ora_login_user, lv_osuser, lv_machine, sysdate, ora_sysevent, ora_dict_obj_type, ora_dict_obj_owner, ora_dict_obj_name, stmt, lv_isauthorized);
     COMMIT; 

     RAISE_APPLICATION_ERROR(-20001,'You are not allowed to make DDL changes in this DB. The CIA and the Queen have been notified about this attempt!');
   END IF;
 END IF; 
 COMMIT; 
END;
/

sho err
cleisson padua mello
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qui, 11 Jan 2007 8:48 am
Localização: SP

legal... com isso da pra criar uma trigger de log das alteracoes... eu ainda não abilitei o recurso de check in check out

valeu..!!!!
cleisson padua mello
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qui, 11 Jan 2007 8:48 am
Localização: SP

reparei que ela é uma trigger geral.. e não por owner.. correto??
cleisson padua mello
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qui, 11 Jan 2007 8:48 am
Localização: SP

assim funciona

Selecionar tudo

CREATE OR REPLACE TRIGGER teste_cleisson
AFTER create OR alter or drop ON SCHEMA
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

SHOW !!!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Google Adsense [Bot] e 23 visitantes