trigger para owner
-
- 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..
-
- 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.
- dr_gori
- Moderador
- Mensagens: 5026
- 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
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
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!
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
-
- 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..!!!!
valeu..!!!!
-
- 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??
-
- Rank: Estagiário Sênior
- Mensagens: 8
- Registrado em: Qui, 11 Jan 2007 8:48 am
- Localização: SP
assim funciona
CREATE OR REPLACE TRIGGER teste_cleisson
AFTER create OR alter or drop ON SCHEMA
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot], Google [Bot] e 1 visitante