Re: [oracle_br] Trigger de logon...
Sim, ai cabe ao DBA, verificar na v$session por qual programa ele está conectando com o nome do programa renomeado, agora o que você falou é a mais pura verdade, para burlar é fácil. Em Quinta-feira, 28 de Maio de 2015 16:46, Andre Santos andre.psantos...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Rafael / Cristiano Mas se o desenvolvedor/analista for um pouco mais safo, basta renomear o executável para burlar isso. [ ]'s André 2015-05-28 16:24 GMT-03:00 Rafael Mendonca raffaell.t...@yahoo.com [oracle_br] oracle_br@yahoogrupos.com.br: Acrescenta também nas ferramentas, o SQLTools muito utilizada por desenvolvedores e analistas. Em Quinta-feira, 28 de Maio de 2015 13:40, Rafael Mendonca raffaell.t...@yahoo.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Outra coisa que reparei na sua trigger, é que você utiliza UPPER(OWNER) comparando com os nomes dos usuários em minúsculo: 'cbarbosa' entre outros... Ou seja, o usuário que entrar com cbarbosa, oracle, administrador irá passar pela trigger após a correção do seu problema. Em Quinta-feira, 28 de Maio de 2015 12:34, 'Schiavini' et...@schiavini.inf.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Boa tarde Qual é o resultado de: alter trigger TG_LOGON_AUDIT_TRIGGER compile; Étore From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Sent: quinta-feira, 28 de maio de 2015 11:50 To: Lista de Usuários Oracle; Grupo OraOracle; Oracle in Brazil Subject: [oracle_br] Trigger de logon... Bom dia! Caros amigos, em pesquisa na net, também com sugestões recebidas de alguns amigos, compilei a seguinte trigger abaixo, apesar de não apresentar erros na compilação, quando tento acessar com o usuário cbarbosa é mostrado o ERRO descrito ao final da trigger: Gostaria da ajuda dos amigos que possuem maior experiência com oracle para a identificação do erro e sua solução. Obrigado... DROP TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD; CREATE OR REPLACE TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD AFTER LOGON ON DATABASE DECLARE v_prog SYS.v_$session.program%TYPE; v_module SYS.v_$session.module%TYPE; -- Parametro acrescentado para evitar programa renomeado. owner SYS.v_$session.username%TYPE; v_osuser SYS.v_$session.osuser%TYPE; BEGIN SELECT program, module, username, osuser INTO v_prog, v_module, owner, v_osuser FROM sys.v_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 -- Não verificar conexões SYS AND ROWNUM = 1; -- Processos paralelos terá o mesmo do AUDSID IF UPPER (owner) NOT IN ('cbarbosa', 'oracle', 'administrador', 'IUSR_ISSEC', 'APACHE', 'OEM', 'OEM22', 'SCOTT', 'SI_INFORMTN_SCHEMA', 'TSMSYS', 'WKPROXY', 'WKSYS', 'WMSYS', 'XDB', 'SYS', 'DBSNMP', 'SYSMAN', 'SYSTEM') THEN IF UPPER (v_prog) LIKE '%TOAD%' -- Toad OR UPPER (v_module) LIKE '%TOAD%' -- Toad OR UPPER (v_prog) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_module) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_prog) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_module) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_prog) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_module) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_module) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%SQL%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL%' -- SQL Developer OR UPPER (v_prog) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_prog) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_module) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_prog) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_module) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_prog) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_module) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_prog) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_module) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_prog) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_module) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_prog) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_module) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_prog) LIKE '%RAPTOR%' -- Oracle Raptor OR UPPER (v_module) LIKE '%RAPTOR%' -- Oracle Raptor THEN RAISE_APPLICATION_ERROR ( -2, 'A Ferramenta de desenvolvimento ' || v_module || ' não é permitida na PRODUÇÃO! (' || v_osuser || ' - ' || owner || ' - ' || v_prog || ' - ' || v_module -- Parametro acrescentado. || ')'); END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / = ERRO == # -- Erro apresentado quando da tentativa de conexao com usuario (cbarbosa) # Ocorreu um erro ao executar a operação solicitada: ORA-04098: gatilho 'SYS.TG_LOGON_AUDIT_TRIGGER' é inválido e a revalidação falhou 04098. 0 - trigger
Re: [oracle_br] Trigger de logon...
Rafael / Cristiano Mas se o desenvolvedor/analista for um pouco mais safo, basta renomear o executável para burlar isso. [ ]'s André 2015-05-28 16:24 GMT-03:00 Rafael Mendonca raffaell.t...@yahoo.com [oracle_br] oracle_br@yahoogrupos.com.br: Acrescenta também nas ferramentas, o SQLTools muito utilizada por desenvolvedores e analistas. Em Quinta-feira, 28 de Maio de 2015 13:40, Rafael Mendonca raffaell.t...@yahoo.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Outra coisa que reparei na sua trigger, é que você utiliza UPPER(OWNER) comparando com os nomes dos usuários em minúsculo: 'cbarbosa' entre outros... Ou seja, o usuário que entrar com cbarbosa, oracle, administrador irá passar pela trigger após a correção do seu problema. Em Quinta-feira, 28 de Maio de 2015 12:34, 'Schiavini' et...@schiavini.inf.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Boa tarde Qual é o resultado de: alter trigger TG_LOGON_AUDIT_TRIGGER compile; Étore From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Sent: quinta-feira, 28 de maio de 2015 11:50 To: Lista de Usuários Oracle; Grupo OraOracle; Oracle in Brazil Subject: [oracle_br] Trigger de logon... Bom dia! Caros amigos, em pesquisa na net, também com sugestões recebidas de alguns amigos, compilei a seguinte trigger abaixo, apesar de não apresentar erros na compilação, quando tento acessar com o usuário cbarbosa é mostrado o ERRO descrito ao final da trigger: Gostaria da ajuda dos amigos que possuem maior experiência com oracle para a identificação do erro e sua solução. Obrigado... DROP TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD; CREATE OR REPLACE TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD AFTER LOGON ON DATABASE DECLARE v_prog SYS.v_$session.program%TYPE; v_module SYS.v_$session.module%TYPE; -- Parametro acrescentado para evitar programa renomeado. owner SYS.v_$session.username%TYPE; v_osuser SYS.v_$session.osuser%TYPE; BEGIN SELECT program, module, username, osuser INTO v_prog, v_module, owner, v_osuser FROM sys.v_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 -- Não verificar conexões SYS AND ROWNUM = 1; -- Processos paralelos terá o mesmo do AUDSID IF UPPER (owner) NOT IN ('cbarbosa', 'oracle', 'administrador', 'IUSR_ISSEC', 'APACHE', 'OEM', 'OEM22', 'SCOTT', 'SI_INFORMTN_SCHEMA', 'TSMSYS', 'WKPROXY', 'WKSYS', 'WMSYS', 'XDB', 'SYS', 'DBSNMP', 'SYSMAN', 'SYSTEM') THEN IF UPPER (v_prog) LIKE '%TOAD%' -- Toad OR UPPER (v_module) LIKE '%TOAD%' -- Toad OR UPPER (v_prog) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_module) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_prog) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_module) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_prog) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_module) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_module) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%SQL%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL%' -- SQL Developer OR UPPER (v_prog) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_prog) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_module) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_prog) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_module) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_prog) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_module) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_prog) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_module) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_prog) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_module) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_prog) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_module) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_prog) LIKE '%RAPTOR%' -- Oracle Raptor OR UPPER (v_module) LIKE '%RAPTOR%' -- Oracle Raptor THEN RAISE_APPLICATION_ERROR ( -2, 'A Ferramenta de desenvolvimento ' || v_module || ' não é permitida na PRODUÇÃO! (' || v_osuser || ' - ' || owner || ' - ' || v_prog || ' - ' || v_module -- Parametro acrescentado. || ')'); END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / = ERRO == # -- Erro apresentado quando da tentativa de conexao com usuario (cbarbosa) # Ocorreu um erro ao executar a operação solicitada: ORA-04098: gatilho 'SYS.TG_LOGON_AUDIT_TRIGGER' é inválido e a revalidação falhou 04098. 0 - trigger '%s.%s' is invalid and failed re-validation *Cause: A trigger was attempted to be retrieved for execution and was found to be invalid. This also means that compilation/authorization failed for the trigger. *Action: Options are to resolve
Re: [oracle_br] Trigger de logon...
Acrescenta também nas ferramentas, o SQLTools muito utilizada por desenvolvedores e analistas. Em Quinta-feira, 28 de Maio de 2015 13:40, Rafael Mendonca raffaell.t...@yahoo.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Outra coisa que reparei na sua trigger, é que você utiliza UPPER(OWNER) comparando com os nomes dos usuários em minúsculo: 'cbarbosa' entre outros... Ou seja, o usuário que entrar com cbarbosa, oracle, administrador irá passar pela trigger após a correção do seu problema. Em Quinta-feira, 28 de Maio de 2015 12:34, 'Schiavini' et...@schiavini.inf.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Boa tarde Qual é o resultado de: alter trigger TG_LOGON_AUDIT_TRIGGER compile; Étore From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Sent: quinta-feira, 28 de maio de 2015 11:50 To: Lista de Usuários Oracle; Grupo OraOracle; Oracle in Brazil Subject: [oracle_br] Trigger de logon... Bom dia! Caros amigos, em pesquisa na net, também com sugestões recebidas de alguns amigos, compilei a seguinte trigger abaixo, apesar de não apresentar erros na compilação, quando tento acessar com o usuário cbarbosa é mostrado o ERRO descrito ao final da trigger: Gostaria da ajuda dos amigos que possuem maior experiência com oracle para a identificação do erro e sua solução. Obrigado... DROP TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD; CREATE OR REPLACE TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD AFTER LOGON ON DATABASE DECLARE v_prog SYS.v_$session.program%TYPE; v_module SYS.v_$session.module%TYPE; -- Parametro acrescentado para evitar programa renomeado. owner SYS.v_$session.username%TYPE; v_osuser SYS.v_$session.osuser%TYPE; BEGIN SELECT program, module, username, osuser INTO v_prog, v_module, owner, v_osuser FROM sys.v_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 -- Não verificar conexões SYS AND ROWNUM = 1; -- Processos paralelos terá o mesmo do AUDSID IF UPPER (owner) NOT IN ('cbarbosa', 'oracle', 'administrador', 'IUSR_ISSEC', 'APACHE', 'OEM', 'OEM22', 'SCOTT', 'SI_INFORMTN_SCHEMA', 'TSMSYS', 'WKPROXY', 'WKSYS', 'WMSYS', 'XDB', 'SYS', 'DBSNMP', 'SYSMAN', 'SYSTEM') THEN IF UPPER (v_prog) LIKE '%TOAD%' -- Toad OR UPPER (v_module) LIKE '%TOAD%' -- Toad OR UPPER (v_prog) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_module) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_prog) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_module) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_prog) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_module) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_module) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%SQL%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL%' -- SQL Developer OR UPPER (v_prog) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_prog) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_module) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_prog) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_module) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_prog) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_module) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_prog) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_module) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_prog) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_module) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_prog) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_module) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_prog) LIKE '%RAPTOR%' -- Oracle Raptor OR UPPER (v_module) LIKE '%RAPTOR%' -- Oracle Raptor THEN RAISE_APPLICATION_ERROR ( -2, 'A Ferramenta de desenvolvimento ' || v_module || ' não é permitida na PRODUÇÃO! (' || v_osuser || ' - ' || owner || ' - ' || v_prog || ' - ' || v_module -- Parametro acrescentado. || ')'); END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / = ERRO == # -- Erro apresentado quando da tentativa de conexao com usuario (cbarbosa) # Ocorreu um erro ao executar a operação solicitada: ORA-04098: gatilho 'SYS.TG_LOGON_AUDIT_TRIGGER' é inválido e a revalidação falhou 04098. 0 - trigger '%s.%s' is invalid and failed re-validation *Cause: A trigger was attempted to be retrieved for execution and was found to be invalid. This also means that compilation/authorization failed for the trigger. *Action: Options are to resolve the compilation/authorization errors, disable the trigger, or drop the trigger. Código de fornecedor 4098 = ATT == # -- A TRIGGER NÃO APRESENTA ERROS DE COMPILAÇÃO SELECT LINE, POSITION, REPLACE (TEXT, CHR (10), ' '), attribute FROM SYS.ALL_ERRORS A WHERE A.NAME = 'TG_BLOCK_TOOLS_FROM_PROD' AND
Re: [oracle_br] Trigger de logon...
Yep : provavelmente, como eu disse numa msg anterior, o DBA teria um JOB de banco que roda a cada um ou dois minutos, varre a V$SESSION e mata as sessões (ou envia email, se matar é muito radical) cujo nome de programa não seja o talequal da aplicação, ou que o IP é o do web server/servidor de aplicação, ou sei lá que info seria usada para identificar que a sessão se originou da app... []s Chiappa
Re: [oracle_br] Trigger de logon...
Outra coisa que reparei na sua trigger, é que você utiliza UPPER(OWNER) comparando com os nomes dos usuários em minúsculo: 'cbarbosa' entre outros... Ou seja, o usuário que entrar com cbarbosa, oracle, administrador irá passar pela trigger após a correção do seu problema. Em Quinta-feira, 28 de Maio de 2015 12:34, 'Schiavini' et...@schiavini.inf.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Boa tarde Qual é o resultado de: alter trigger TG_LOGON_AUDIT_TRIGGER compile; Étore From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Sent: quinta-feira, 28 de maio de 2015 11:50 To: Lista de Usuários Oracle; Grupo OraOracle; Oracle in Brazil Subject: [oracle_br] Trigger de logon... Bom dia! Caros amigos, em pesquisa na net, também com sugestões recebidas de alguns amigos, compilei a seguinte trigger abaixo, apesar de não apresentar erros na compilação, quando tento acessar com o usuário cbarbosa é mostrado o ERRO descrito ao final da trigger: Gostaria da ajuda dos amigos que possuem maior experiência com oracle para a identificação do erro e sua solução. Obrigado... DROP TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD; CREATE OR REPLACE TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD AFTER LOGON ON DATABASE DECLARE v_prog SYS.v_$session.program%TYPE; v_module SYS.v_$session.module%TYPE; -- Parametro acrescentado para evitar programa renomeado. owner SYS.v_$session.username%TYPE; v_osuser SYS.v_$session.osuser%TYPE; BEGIN SELECT program, module, username, osuser INTO v_prog, v_module, owner, v_osuser FROM sys.v_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 -- Não verificar conexões SYS AND ROWNUM = 1; -- Processos paralelos terá o mesmo do AUDSID IF UPPER (owner) NOT IN ('cbarbosa', 'oracle', 'administrador', 'IUSR_ISSEC', 'APACHE', 'OEM', 'OEM22', 'SCOTT', 'SI_INFORMTN_SCHEMA', 'TSMSYS', 'WKPROXY', 'WKSYS', 'WMSYS', 'XDB', 'SYS', 'DBSNMP', 'SYSMAN', 'SYSTEM') THEN IF UPPER (v_prog) LIKE '%TOAD%' -- Toad OR UPPER (v_module) LIKE '%TOAD%' -- Toad OR UPPER (v_prog) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_module) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_prog) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_module) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_prog) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_module) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_module) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%SQL%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL%' -- SQL Developer OR UPPER (v_prog) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_prog) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_module) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_prog) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_module) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_prog) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_module) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_prog) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_module) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_prog) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_module) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_prog) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_module) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_prog) LIKE '%RAPTOR%' -- Oracle Raptor OR UPPER (v_module) LIKE '%RAPTOR%' -- Oracle Raptor THEN RAISE_APPLICATION_ERROR ( -2, 'A Ferramenta de desenvolvimento ' || v_module || ' não é permitida na PRODUÇÃO! (' || v_osuser || ' - ' || owner || ' - ' || v_prog || ' - ' || v_module -- Parametro acrescentado. || ')'); END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / = ERRO == # -- Erro apresentado quando da tentativa de conexao com usuario (cbarbosa) # Ocorreu um erro ao executar a operação solicitada: ORA-04098: gatilho 'SYS.TG_LOGON_AUDIT_TRIGGER' é inválido e a revalidação falhou 04098. 0 - trigger '%s.%s' is invalid and failed re-validation *Cause: A trigger was attempted to be retrieved for execution and was found to be invalid. This also means that compilation/authorization failed for the trigger. *Action: Options are to resolve the compilation/authorization errors, disable the trigger, or drop the trigger. Código de fornecedor 4098 = ATT == # -- A TRIGGER NÃO APRESENTA ERROS DE COMPILAÇÃO SELECT LINE, POSITION, REPLACE (TEXT, CHR (10), ' '), attribute FROM SYS.ALL_ERRORS A WHERE A.NAME = 'TG_BLOCK_TOOLS_FROM_PROD' AND A.TYPE = 'TRIGGER' AND A.OWNER = 'SYS' ORDER BY ATTRIBUTE, LINE, POSITION; Time Start: 28/05/2015 10:07:29 no rows selected. (SEM ERROS DE COMPILACAO...) Time End: 28/05/2015 10:07:30 Elapsed Time for Script Execution: 514 msecs Atenciosamente,
RE: [oracle_br] Trigger de logon...
Boa tarde Qual é o resultado de: alter trigger TG_LOGON_AUDIT_TRIGGER compile; Étore From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Sent: quinta-feira, 28 de maio de 2015 11:50 To: Lista de Usuários Oracle; Grupo OraOracle; Oracle in Brazil Subject: [oracle_br] Trigger de logon... Bom dia! Caros amigos, em pesquisa na net, também com sugestões recebidas de alguns amigos, compilei a seguinte trigger abaixo, apesar de não apresentar erros na compilação, quando tento acessar com o usuário cbarbosa é mostrado o ERRO descrito ao final da trigger: Gostaria da ajuda dos amigos que possuem maior experiência com oracle para a identificação do erro e sua solução. Obrigado... DROP TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD; CREATE OR REPLACE TRIGGER SYS.TG_BLOCK_TOOLS_FROM_PROD AFTER LOGON ON DATABASE DECLARE v_prog SYS.v_$session.program%TYPE; v_module SYS.v_$session.module%TYPE; -- Parametro acrescentado para evitar programa renomeado. owner SYS.v_$session.username%TYPE; v_osuser SYS.v_$session.osuser%TYPE; BEGIN SELECT program, module, username, osuser INTO v_prog, v_module, owner, v_osuser FROM sys.v_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 -- Não verificar conexões SYS AND ROWNUM = 1; -- Processos paralelos terá o mesmo do AUDSID IF UPPER (owner) NOT IN ('cbarbosa', 'oracle', 'administrador', 'IUSR_ISSEC', 'APACHE', 'OEM', 'OEM22', 'SCOTT', 'SI_INFORMTN_SCHEMA', 'TSMSYS', 'WKPROXY', 'WKSYS', 'WMSYS', 'XDB', 'SYS', 'DBSNMP', 'SYSMAN', 'SYSTEM') THEN IFUPPER (v_prog) LIKE '%TOAD%' -- Toad OR UPPER (v_module) LIKE '%TOAD%' -- Toad OR UPPER (v_prog) LIKE '%T.O.A.D%'-- Toad OR UPPER (v_module) LIKE '%T.O.A.D%' -- Toad OR UPPER (v_prog) LIKE '%SQLNAV%'-- SQL Navigator OR UPPER (v_module) LIKE '%SQLNAV%' -- SQL Navigator OR UPPER (v_prog) LIKE '%PLSQLDEV%'-- PLSQL Developer OR UPPER (v_module) LIKE '%PLSQLDEV%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%PL/SQL Developer%'-- PLSQL Developer OR UPPER (v_module) LIKE '%PL/SQL Developer%' -- PLSQL Developer OR UPPER (v_prog) LIKE '%SQL%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL%' -- SQL Developer OR UPPER (v_prog) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_module) LIKE '%SQL Developer%' -- SQL Developer OR UPPER (v_prog) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_module) LIKE '%BUSOBJ%' -- Business Objects OR UPPER (v_prog) LIKE '%EXCEL%' -- MS-Excel plug-in OR UPPER (v_module) LIKE '%EXCEL%'-- MS-Excel plug-in OR UPPER (v_prog) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_module) LIKE '%SQLPLUS%' -- SQLPLUS OR UPPER (v_prog) LIKE '%DEVELOPER%' -- Oracle SQL Developer OR UPPER (v_module) LIKE '%DEVELOPER%'-- Oracle SQL Developer OR UPPER (v_prog) LIKE '%IFBLD%'-- Oracle Forms Developer Builder OR UPPER (v_module) LIKE '%IFBLD%' -- Oracle Forms Developer Builder OR UPPER (v_prog) LIKE '%RWBUILDER%'-- Oracle Reports Builder OR UPPER (v_module) LIKE '%RWBUILDER%' -- Oracle Reports Builder OR UPPER (v_prog) LIKE '%RAPTOR%'-- Oracle Raptor OR UPPER (v_module) LIKE '%RAPTOR%' -- Oracle Raptor THEN RAISE_APPLICATION_ERROR ( -2, 'A Ferramenta de desenvolvimento ' || v_module || ' não é permitida na PRODUÇÃO! (' || v_osuser || ' - ' || owner || ' - ' || v_prog || ' - ' || v_module -- Parametro acrescentado. || ')'); END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / = ERRO
Re: [oracle_br] Trigger para Fechamento Diário
Agende um job para rodar a meia noite. Sent from my LG NEXUS 5 Att,/Regards, Vitor Jr. Infraestrutura / Infrastructure Team Oracle 11g DBA Certified Professional - OCP Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid Infrastructure Administrator - OCE Oracle Database 11g Performance Tuning Certified Expert - OCE Oracle Exadata 11g Certified Implementation Specialist Oracle Certified Associate, MySQL 5 mail, gtalk e msn: vitorj...@gmail.com http://certificacaobd.com.br/ skype: vjunior1981 https://mybizcard.co/vitor.jr.385628 Em 24/09/2014 08:58, samuel.calleg...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Prezados, Bom Dia, Estou desenvolvendo um sistema em Delphi6 com Oracle 11g. Neste sistema existe uma funcionalidade que fica calculando o desempenho diário do processo de trabalho dos operadores para ser exibido em um painel. Os calculos e as consultas estão funcionando todas corretamente, porém existe uma função que faz o fechamento do saldo diário das notas fiscais e que é para ser executado à meia noite. O problema é que para este procecimento ser executado o módulo do painel informativo tem que estar rodando e o cliente desliga o computador todo dia à noite e torna-o a ligar pela manhã, porém ele faz isso após o início das atividades, o que faz com que os valores obtidos sejam diferentes dos que realmente deveriam ser. A minha pergunta é : É possível fazer uma trigger no banco de dados que se autoexecute à meia noite ( ou outro horário a ser definido ) sem a necessidade de iniciar alguma operação no banco pelo sistema? Antecipadamente agradeço Samuca
Re: [oracle_br] TRIGGER SIMPRES
Obrigado por responder, mas parece que compila sem erros mas dá erro abaixo ao editar a descricao e tentar salvar : 13:42:10 ORA-04098: trigger 'LOCAL.PRODUTO_IGUALACAMPO' is invalid and failed re-validation 2014-08-15 13:36 GMT-03:00 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br: Olá boa tarde.. :new. DESCRICAO2 := :new. DESCRICAO; No lugar do update. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:33 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* [oracle_br] TRIGGER SIMPRES Boa tarde. O que está errado nessa trigger simples para igualar dois campos : CREATE OR REPLACE TRIGGER PRODUTO_IGUALACAMPO after insert or update ON PRODUTO FOR EACH ROW BEGIN UPDATE PRODUTO set DESCRICAO2 = DESCRICAO; END; -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br
Re: [oracle_br] TRIGGER SIMPRES
Continua mesmo erro mesmo dropando.. Em 15 de agosto de 2014 13:50, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Drop a trigger e crie novamente. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:46 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Obrigado por responder, mas parece que compila sem erros mas dá erro abaixo ao editar a descricao e tentar salvar : 13:42:10 ORA-04098: trigger 'LOCAL.PRODUTO_IGUALACAMPO' is invalid and failed re-validation 2014-08-15 13:36 GMT-03:00 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br: Olá boa tarde.. :new. DESCRICAO2 := :new. DESCRICAO; No lugar do update. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:33 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* [oracle_br] TRIGGER SIMPRES Boa tarde. O que está errado nessa trigger simples para igualar dois campos : CREATE OR REPLACE TRIGGER PRODUTO_IGUALACAMPO after insert or update ON PRODUTO FOR EACH ROW BEGIN UPDATE PRODUTO set DESCRICAO2 = DESCRICAO; END; -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br
Re: [oracle_br] TRIGGER SIMPRES
O descricao é varchar 40 e o descricao2 é varchar 45... :-( Em 15 de agosto de 2014 14:01, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Eduardo, O erro é ao editar um registro ? Se sim os campos DESCRICAO2 é igual ao campo DESCRICAO ? Seguindo a mesma estrutura ? como tamanhos e tipos ? *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:59 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Continua mesmo erro mesmo dropando.. Em 15 de agosto de 2014 13:50, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Drop a trigger e crie novamente. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:46 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Obrigado por responder, mas parece que compila sem erros mas dá erro abaixo ao editar a descricao e tentar salvar : 13:42:10 ORA-04098: trigger 'LOCAL.PRODUTO_IGUALACAMPO' is invalid and failed re-validation 2014-08-15 13:36 GMT-03:00 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br: Olá boa tarde.. :new. DESCRICAO2 := :new. DESCRICAO; No lugar do update. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:33 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* [oracle_br] TRIGGER SIMPRES Boa tarde. O que está errado nessa trigger simples para igualar dois campos : CREATE OR REPLACE TRIGGER PRODUTO_IGUALACAMPO after insert or update ON PRODUTO FOR EACH ROW BEGIN UPDATE PRODUTO set DESCRICAO2 = DESCRICAO; END; -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br
Re: [oracle_br] TRIGGER SIMPRES
mesmo :new.descricao2 := 'teste'; dá o mesmo erro... Em 15 de agosto de 2014 14:08, Eduardo Perdomo panc...@gmail.com escreveu: O descricao é varchar 40 e o descricao2 é varchar 45... :-( Em 15 de agosto de 2014 14:01, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Eduardo, O erro é ao editar um registro ? Se sim os campos DESCRICAO2 é igual ao campo DESCRICAO ? Seguindo a mesma estrutura ? como tamanhos e tipos ? *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:59 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Continua mesmo erro mesmo dropando.. Em 15 de agosto de 2014 13:50, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Drop a trigger e crie novamente. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:46 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Obrigado por responder, mas parece que compila sem erros mas dá erro abaixo ao editar a descricao e tentar salvar : 13:42:10 ORA-04098: trigger 'LOCAL.PRODUTO_IGUALACAMPO' is invalid and failed re-validation 2014-08-15 13:36 GMT-03:00 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br: Olá boa tarde.. :new. DESCRICAO2 := :new. DESCRICAO; No lugar do update. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:33 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* [oracle_br] TRIGGER SIMPRES Boa tarde. O que está errado nessa trigger simples para igualar dois campos : CREATE OR REPLACE TRIGGER PRODUTO_IGUALACAMPO after insert or update ON PRODUTO FOR EACH ROW BEGIN UPDATE PRODUTO set DESCRICAO2 = DESCRICAO; END; -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br
Re: [oracle_br] TRIGGER SIMPRES
CREATE OR REPLACE TRIGGER PCPRODUT_IGUALACAMPO before insert or update ON pcPRODUT FOR EACH ROW BEGIN :new.descricao7 := 'teste'; END; simples assim dá o erro 14:29:36 ORA-04098: trigger 'LOCAL.PCPRODUT_IGUALA_CAMPO' is invalid and failed re-validation Em 15 de agosto de 2014 14:23, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Isso não teria problema.. Me passe o código da trigger ... *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 14:08 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES O descricao é varchar 40 e o descricao2 é varchar 45... :-( Em 15 de agosto de 2014 14:01, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Eduardo, O erro é ao editar um registro ? Se sim os campos DESCRICAO2 é igual ao campo DESCRICAO ? Seguindo a mesma estrutura ? como tamanhos e tipos ? *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:59 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Continua mesmo erro mesmo dropando.. Em 15 de agosto de 2014 13:50, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Drop a trigger e crie novamente. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:46 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Obrigado por responder, mas parece que compila sem erros mas dá erro abaixo ao editar a descricao e tentar salvar : 13:42:10 ORA-04098: trigger 'LOCAL.PRODUTO_IGUALACAMPO' is invalid and failed re-validation 2014-08-15 13:36 GMT-03:00 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br: Olá boa tarde.. :new. DESCRICAO2 := :new. DESCRICAO; No lugar do update. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:33 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* [oracle_br] TRIGGER SIMPRES Boa tarde. O que está errado nessa trigger simples para igualar dois campos : CREATE OR REPLACE TRIGGER PRODUTO_IGUALACAMPO after insert or update ON PRODUTO FOR EACH ROW BEGIN UPDATE PRODUTO set DESCRICAO2 = DESCRICAO; END; -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br
RE: [oracle_br] TRIGGER SIMPRES
Eduardo, a trigger que esta gerando o erro é a PCPRODUT_IGUALA_CAMPO e a que vc esta alterando é a PCPRODUT_IGUALACAMPO. From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Sent: sexta-feira, 15 de agosto de 2014 14:35 To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] TRIGGER SIMPRES CREATE OR REPLACE TRIGGER PCPRODUT_IGUALACAMPO before insert or update ON pcPRODUT FOR EACH ROW BEGIN :new.descricao7 := 'teste'; END; simples assim dá o erro 14:29:36 ORA-04098: trigger 'LOCAL.PCPRODUT_IGUALA_CAMPO' is invalid and failed re-validation Em 15 de agosto de 2014 14:23, 'Alisson Luz' alisson...@yahoo.com.brmailto:alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br escreveu: Isso não teria problema.. Me passe o código da trigger ... De: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br] Enviada em: sexta-feira, 15 de agosto de 2014 14:08 Para: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER SIMPRES O descricao é varchar 40 e o descricao2 é varchar 45... :-( Em 15 de agosto de 2014 14:01, 'Alisson Luz' alisson...@yahoo.com.brmailto:alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br escreveu: Eduardo, O erro é ao editar um registro ? Se sim os campos DESCRICAO2 é igual ao campo DESCRICAO ? Seguindo a mesma estrutura ? como tamanhos e tipos ? De: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br] Enviada em: sexta-feira, 15 de agosto de 2014 13:59 Para: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER SIMPRES Continua mesmo erro mesmo dropando.. Em 15 de agosto de 2014 13:50, 'Alisson Luz' alisson...@yahoo.com.brmailto:alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br escreveu: Drop a trigger e crie novamente. De: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br] Enviada em: sexta-feira, 15 de agosto de 2014 13:46 Para: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER SIMPRES Obrigado por responder, mas parece que compila sem erros mas dá erro abaixo ao editar a descricao e tentar salvar : 13:42:10 ORA-04098: trigger 'LOCAL.PRODUTO_IGUALACAMPO' is invalid and failed re-validation 2014-08-15 13:36 GMT-03:00 'Alisson Luz' alisson...@yahoo.com.brmailto:alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br: Olá boa tarde.. :new. DESCRICAO2 := :new. DESCRICAO; No lugar do update. De: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br] Enviada em: sexta-feira, 15 de agosto de 2014 13:33 Para: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br Assunto: [oracle_br] TRIGGER SIMPRES Boa tarde. O que está errado nessa trigger simples para igualar dois campos : CREATE OR REPLACE TRIGGER PRODUTO_IGUALACAMPO after insert or update ON PRODUTO FOR EACH ROW BEGIN UPDATE PRODUTO set DESCRICAO2 = DESCRICAO; END; -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br
Re: [oracle_br] TRIGGER SIMPRES
O Sérgio matou a charada e o exemplo do Allison estava certo. Obrigado à todos... Em 15 de agosto de 2014 14:42, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: create table ADL ( descricao VARCHAR2(40), descricao2 VARCHAR2(45) ); CREATE OR REPLACE TRIGGER PRODUTO_IGUALACAMPO before insert or update ON adl FOR EACH ROW BEGIN :new.DESCRICAO2 := :new.DESCRICAO; END; insert into adl values ('teste','adl'); commit; select * from adl Fiz um exemplo no base de teste e o processo *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 14:35 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES CREATE OR REPLACE TRIGGER PCPRODUT_IGUALACAMPO before insert or update ON pcPRODUT FOR EACH ROW BEGIN :new.descricao7 := 'teste'; END; simples assim dá o erro 14:29:36 ORA-04098: trigger 'LOCAL.PCPRODUT_IGUALA_CAMPO' is invalid and failed re-validation Em 15 de agosto de 2014 14:23, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Isso não teria problema.. Me passe o código da trigger ... *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 14:08 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES O descricao é varchar 40 e o descricao2 é varchar 45... :-( Em 15 de agosto de 2014 14:01, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Eduardo, O erro é ao editar um registro ? Se sim os campos DESCRICAO2 é igual ao campo DESCRICAO ? Seguindo a mesma estrutura ? como tamanhos e tipos ? *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:59 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Continua mesmo erro mesmo dropando.. Em 15 de agosto de 2014 13:50, 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Drop a trigger e crie novamente. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:46 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] TRIGGER SIMPRES Obrigado por responder, mas parece que compila sem erros mas dá erro abaixo ao editar a descricao e tentar salvar : 13:42:10 ORA-04098: trigger 'LOCAL.PRODUTO_IGUALACAMPO' is invalid and failed re-validation 2014-08-15 13:36 GMT-03:00 'Alisson Luz' alisson...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br: Olá boa tarde.. :new. DESCRICAO2 := :new. DESCRICAO; No lugar do update. *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] *Enviada em:* sexta-feira, 15 de agosto de 2014 13:33 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* [oracle_br] TRIGGER SIMPRES Boa tarde. O que está errado nessa trigger simples para igualar dois campos : CREATE OR REPLACE TRIGGER PRODUTO_IGUALACAMPO after insert or update ON PRODUTO FOR EACH ROW BEGIN UPDATE PRODUTO set DESCRICAO2 = DESCRICAO; END; -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br
RE: [oracle_br] Trigger para prevenir (e logar!) tentativas de DDL
Bom dia create or replace trigger before_ddl before ddl on schema begin raise_application_error( -20001, 'Mensagem de erro' ); end; Étore From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] On Behalf Of Vitor Jr. Sent: segunda-feira, 13 de maio de 2013 09:28 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Trigger para prevenir (e logar!) tentativas de DDL Bom dia pessoal. Comecei a desenvolver, mas vai que alguém já tem pronto pra compartilhar... :) Devido a uma necessidade do cliente, preciso desenvolver uma trigger que bloqueie qualquer comando DDL dentro de um schema. Ex.: - Usuário conecta como SCOTT; - Ao tentar executar um DDL em um objeto, essa trigger irá disparar, impedindo a conclusão do comando e logando a tentativa em uma tabela; - A maneira de se executar um DDL seria como sys/system ou então desabilitando a trigger. Alguém com algo pronto ou parecido? Abraços! :) Att,/Regards, Vitor Jr. Infraestrutura / Infrastructure Team Oracle 11g DBA Certified Professional - OCP Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid Infrastructure Administrator - OCE Oracle Database 11g Performance Tuning Certified Expert - OCE Oracle Exadata 11g Certified Implementation Specialist Oracle Certified Associate, MySQL 5 mail, gtalk e msn: mailto:vitorj...@gmail.com mailto:vitorjr81%40gmail.com vitorj...@gmail.com mailto:vitorjr81%40gmail.com http://certificacaobd.com.br/ http://certificacaobd.com.br/ skype: vjunior1981 [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger com problemas
Fala Rafael. Não tem alguma outra trigger nesta mesma tabela que esteja limpando estes campos não? Tivemos um problema semelhante, em que o processo fazia o insert na tabela, que disparava a trigger, e depois fazia um update no registro inserido, para sinalizar que tinha concluído a operação, neste momento uma trigger de update limpava os campos. Então, parecia ser um único momento, mas na verdade eram 2 triggers uma anulando a outra. Dá uma conferida nisso Abraços! Gerson S. de Vasconcelos Júnior DBA - Oracle Certified Fone: (16) 8176-0468 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 30 de abril de 2013 14:40, Rafael HM Pereira rafael.henri...@gmail.comescreveu: ** Pessoal boa tarde! Estou com um problema incomum aqui na empresa. A trigger abaixo deveria realizar um insert simples na tabela FLP_HISTORICO. O problema é que a trigger esta inserindo apenas parte dos valores passados no insert. Os demais dados não são inseridos mesmo contendo valores nos campos. O mais curioso, é que se eu executar os inserts manualmente com os mesmos dados, o insert é realizado com sucesso. Alguem tem idéia do que pode ser? Dados inseridos corretamente: *:NEW.COD_FUNCIONARIO, :NEW.DAT_LANC, 204* Dados não inseridos: *:NEW.VLR_DOCUMENTO, 'MANAGER', :NEW.DAT_LANC, 'FC'* Trigger: *create or replace* *TRIGGER GLOBUS.TR_FLP_FICHACONDUTA_ARR_BH* *AFTER INSERT ON T_ARR_LANC_FUNC * *FOR EACH ROW WHEN (NEW.cod_empresa in (1,2,3))* * * *BEGIN* * INSERT INTO FLP_HISTORICO (codintfunc, dthist, codocorr, nrdoctohist, usuincluiu, dtincluiu, origem) * * VALUES (:NEW.COD_FUNCIONARIO, :NEW.DAT_LANC, 204, :NEW.VLR_DOCUMENTO, 'MANAGER', :NEW.DAT_LANC, 'FC');* END; -- Att, Rafael HM Pereira Linux User Id: 360166 Skype: rafaelhmpereira MSN: rafael.henri...@gmail.com Blog: http://rafaelhmpereira.blogspot.com LinkedIn: http://br.linkedin.com/in/rafaelhmpereira (27) 9233-0734 / (27) 3328-4320 [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger utilizando exception
Boa tarde! Suas perguntas já estão todas respondidas por você mesmo... rs Está tudo correto o que vc falou. Faça um SELECT INTO para pegar o valor do salário do gerente do sujeito e armazenar numa variável. Depois compare o valor do salário do sujeito com a variável... Se for maior, vc dispara a exceção. 2012/9/18 Antony Ferreira tonyferrei...@gmail.com ** Boa tarde pessoal, Estou começando a estudar um pouco de PL/SQL e me surgiu umas duvidas. Tenho a seguinte trigger: CREATE OR REPLACE TRIGGER imp_novos_emp BEFORE INSERT OR UPDATE ON employees FOR EACH ROW BEGIN IF NOT (:NEW.job_id IN ('AD_PRES', 'AD_VP')) THEN IF :NEW.salary 15000 THEN RAISE_APPLICATION_ERROR (-20202,'Este empregado não pode receber este valor'); END IF; END IF; END imp_novos_emp; / Qual seria a melhor maneira para eu poder impedir que seja inserido um novo empregado que tenha o salario maior que o gerente. Eu teria que fazer uma consulta na coluna manager_id da tabela employees e verificar se o salario do empregado que eu estou add é maior que o do gerente? Outra duvida, posso colocar uma excessão para mostrar que o salario é invalido quando o salario do empregado que eu estou add é maior que o do gerente? [As partes desta mensagem que não continham texto foram removidas] -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger utilizando exception
A select eu teria que fazer dentro do primeiro IF ou antes do IF, como estou começando a pegar os esquemas do PLSQL agora, tem coisas que eu fico na duvida um pouco. Em 18 de setembro de 2012 17:52, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: Boa tarde! Suas perguntas já estão todas respondidas por você mesmo... rs Está tudo correto o que vc falou. Faça um SELECT INTO para pegar o valor do salário do gerente do sujeito e armazenar numa variável. Depois compare o valor do salário do sujeito com a variável... Se for maior, vc dispara a exceção. 2012/9/18 Antony Ferreira tonyferrei...@gmail.com ** Boa tarde pessoal, Estou começando a estudar um pouco de PL/SQL e me surgiu umas duvidas. Tenho a seguinte trigger: CREATE OR REPLACE TRIGGER imp_novos_emp BEFORE INSERT OR UPDATE ON employees FOR EACH ROW BEGIN IF NOT (:NEW.job_id IN ('AD_PRES', 'AD_VP')) THEN IF :NEW.salary 15000 THEN RAISE_APPLICATION_ERROR (-20202,'Este empregado não pode receber este valor'); END IF; END IF; END imp_novos_emp; / Qual seria a melhor maneira para eu poder impedir que seja inserido um novo empregado que tenha o salario maior que o gerente. Eu teria que fazer uma consulta na coluna manager_id da tabela employees e verificar se o salario do empregado que eu estou add é maior que o do gerente? Outra duvida, posso colocar uma excessão para mostrar que o salario é invalido quando o salario do empregado que eu estou add é maior que o do gerente? [As partes desta mensagem que não continham texto foram removidas] -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger utilizando exception
Bom, lógica de programação é algo muito simples! Vc tem que saber o que exatamente vc quer que o teu código faça... Vc criou ali um IF (não sei se foi vc que fez ou se vc copiou o código) pra testar se o cara é presidente ou vp, pois se for, daí vc não testa o salário do cara... então não faz sentido vc fazer o select FORA do primeiro if, senão vc poderá estar executando um select a toa. Então é melhor vc executar dentro do primeiro IF. 2012/9/18 Antony Ferreira tonyferrei...@gmail.com ** A select eu teria que fazer dentro do primeiro IF ou antes do IF, como estou começando a pegar os esquemas do PLSQL agora, tem coisas que eu fico na duvida um pouco. Em 18 de setembro de 2012 17:52, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: Boa tarde! Suas perguntas já estão todas respondidas por você mesmo... rs Está tudo correto o que vc falou. Faça um SELECT INTO para pegar o valor do salário do gerente do sujeito e armazenar numa variável. Depois compare o valor do salário do sujeito com a variável... Se for maior, vc dispara a exceção. 2012/9/18 Antony Ferreira tonyferrei...@gmail.com ** Boa tarde pessoal, Estou começando a estudar um pouco de PL/SQL e me surgiu umas duvidas. Tenho a seguinte trigger: CREATE OR REPLACE TRIGGER imp_novos_emp BEFORE INSERT OR UPDATE ON employees FOR EACH ROW BEGIN IF NOT (:NEW.job_id IN ('AD_PRES', 'AD_VP')) THEN IF :NEW.salary 15000 THEN RAISE_APPLICATION_ERROR (-20202,'Este empregado não pode receber este valor'); END IF; END IF; END imp_novos_emp; / Qual seria a melhor maneira para eu poder impedir que seja inserido um novo empregado que tenha o salario maior que o gerente. Eu teria que fazer uma consulta na coluna manager_id da tabela employees e verificar se o salario do empregado que eu estou add é maior que o do gerente? Outra duvida, posso colocar uma excessão para mostrar que o salario é invalido quando o salario do empregado que eu estou add é maior que o do gerente? [As partes desta mensagem que não continham texto foram removidas] -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger utilizando exception
Blz, vou fazer as alterações e testar aqui pra ver como que vai funcionar. Vlw mto obrigado pelas dicas. Em 18 de setembro de 2012 18:07, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: Bom, lógica de programação é algo muito simples! Vc tem que saber o que exatamente vc quer que o teu código faça... Vc criou ali um IF (não sei se foi vc que fez ou se vc copiou o código) pra testar se o cara é presidente ou vp, pois se for, daí vc não testa o salário do cara... então não faz sentido vc fazer o select FORA do primeiro if, senão vc poderá estar executando um select a toa. Então é melhor vc executar dentro do primeiro IF. 2012/9/18 Antony Ferreira tonyferrei...@gmail.com ** A select eu teria que fazer dentro do primeiro IF ou antes do IF, como estou começando a pegar os esquemas do PLSQL agora, tem coisas que eu fico na duvida um pouco. Em 18 de setembro de 2012 17:52, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: Boa tarde! Suas perguntas já estão todas respondidas por você mesmo... rs Está tudo correto o que vc falou. Faça um SELECT INTO para pegar o valor do salário do gerente do sujeito e armazenar numa variável. Depois compare o valor do salário do sujeito com a variável... Se for maior, vc dispara a exceção. 2012/9/18 Antony Ferreira tonyferrei...@gmail.com ** Boa tarde pessoal, Estou começando a estudar um pouco de PL/SQL e me surgiu umas duvidas. Tenho a seguinte trigger: CREATE OR REPLACE TRIGGER imp_novos_emp BEFORE INSERT OR UPDATE ON employees FOR EACH ROW BEGIN IF NOT (:NEW.job_id IN ('AD_PRES', 'AD_VP')) THEN IF :NEW.salary 15000 THEN RAISE_APPLICATION_ERROR (-20202,'Este empregado não pode receber este valor'); END IF; END IF; END imp_novos_emp; / Qual seria a melhor maneira para eu poder impedir que seja inserido um novo empregado que tenha o salario maior que o gerente. Eu teria que fazer uma consulta na coluna manager_id da tabela employees e verificar se o salario do empregado que eu estou add é maior que o do gerente? Outra duvida, posso colocar uma excessão para mostrar que o salario é invalido quando o salario do empregado que eu estou add é maior que o do gerente? [As partes desta mensagem que não continham texto foram removidas] -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger verificar update de única colunas
Milton, Acho que minha explicação não ficou muito clara, mesmo. Na verdade, o que eu gostaria é o inverso: se estiver atualizando *somente* a coluna observação (as demais não foram modificadas), então não precisa disparar a trigger. Mas, se estiver atualizando qualquer outra coluna, aí sim tem que disparar a trigger. On Aug 31, 2012, at 12:00 PM, Milton Bastos Henriquis Jr. miltonbas...@gmail.com wrote: Seria isso? CREATE TRIGGER Nome_da_sua_triggerAFTER (ou BEFORE) UPDATE OF campo_1, campo_2 ON nome_da_sua_tabela FOR EACH ROW BEGIN 2012/8/31 JLSilva jljlsi...@yahoo.com.br ** Pessoal, bom dia. Oracle10gR2 10.2.0.5.0 Enterprise Edition em Linux RHEL 5.6. Gostaria de verificar se alguém conhece algum método para verificar em uma trigger se somente uma coluna está sendo modificada. Ou seja, a tabela tem N colunas. Atualmente, eu estou verificando todas as colunas para saber se alguma foi modificada. O problema é que se uma nova coluna for adicionada na tabela, a trigger precisará ser modificada para verificar essa coluna também. Somente 1 coluna pode ser modificada, que é uma coluna de observações. Obrigado. JLSilva. -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
Re: [oracle_br] Trigger verificar update de única colunas
Me perdoe JL, eu é que não li com a devida atenção! Depois que li o e-mail do Chiappa, daí reli o seu e-mail e percebi que vc queria o contrário! rs... Eu realmente não saberia resolver o seu problema de forma completa! Pois eu colocaria campo por campo lá na trigger... e a cada campo adicionado eu teria que modificar a trigger. Portanto realmente não tenho a solução ideal pra vc! 2012/8/31 JLSilva jljlsi...@yahoo.com.br ** Milton, Acho que minha explicação não ficou muito clara, mesmo. Na verdade, o que eu gostaria é o inverso: se estiver atualizando *somente* a coluna observação (as demais não foram modificadas), então não precisa disparar a trigger. Mas, se estiver atualizando qualquer outra coluna, aí sim tem que disparar a trigger. On Aug 31, 2012, at 12:00 PM, Milton Bastos Henriquis Jr. miltonbas...@gmail.com wrote: Seria isso? CREATE TRIGGER Nome_da_sua_triggerAFTER (ou BEFORE) UPDATE OF campo_1, campo_2 ON nome_da_sua_tabela FOR EACH ROW BEGIN 2012/8/31 JLSilva jljlsi...@yahoo.com.br ** Pessoal, bom dia. Oracle10gR2 10.2.0.5.0 Enterprise Edition em Linux RHEL 5.6. Gostaria de verificar se alguém conhece algum método para verificar em uma trigger se somente uma coluna está sendo modificada. Ou seja, a tabela tem N colunas. Atualmente, eu estou verificando todas as colunas para saber se alguma foi modificada. O problema é que se uma nova coluna for adicionada na tabela, a trigger precisará ser modificada para verificar essa coluna também. Somente 1 coluna pode ser modificada, que é uma coluna de observações. Obrigado. JLSilva. -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger verificar update de única colunas
Poizé, Milton, acredito que a solução ideal seja essa mesma: testar cada coluna e ajustar a trigger sempre que adicionar uma coluna nova. Enviei para o grupo para verificar se alguém conheceria alguma funcionalidade de se escrever isso de forma diferente, que fosse mais automática. Obrigado. JLSilva On Aug 31, 2012, at 3:49 PM, Milton Bastos Henriquis Jr. miltonbas...@gmail.com wrote: Me perdoe JL, eu é que não li com a devida atenção! Depois que li o e-mail do Chiappa, daí reli o seu e-mail e percebi que vc queria o contrário! rs... Eu realmente não saberia resolver o seu problema de forma completa! Pois eu colocaria campo por campo lá na trigger... e a cada campo adicionado eu teria que modificar a trigger. Portanto realmente não tenho a solução ideal pra vc! 2012/8/31 JLSilva jljlsi...@yahoo.com.br ** Milton, Acho que minha explicação não ficou muito clara, mesmo. Na verdade, o que eu gostaria é o inverso: se estiver atualizando *somente* a coluna observação (as demais não foram modificadas), então não precisa disparar a trigger. Mas, se estiver atualizando qualquer outra coluna, aí sim tem que disparar a trigger. On Aug 31, 2012, at 12:00 PM, Milton Bastos Henriquis Jr. miltonbas...@gmail.com wrote: Seria isso? CREATE TRIGGER Nome_da_sua_triggerAFTER (ou BEFORE) UPDATE OF campo_1, campo_2 ON nome_da_sua_tabela FOR EACH ROW BEGIN 2012/8/31 JLSilva jljlsi...@yahoo.com.br ** Pessoal, bom dia. Oracle10gR2 10.2.0.5.0 Enterprise Edition em Linux RHEL 5.6. Gostaria de verificar se alguém conhece algum método para verificar em uma trigger se somente uma coluna está sendo modificada. Ou seja, a tabela tem N colunas. Atualmente, eu estou verificando todas as colunas para saber se alguma foi modificada. O problema é que se uma nova coluna for adicionada na tabela, a trigger precisará ser modificada para verificar essa coluna também. Somente 1 coluna pode ser modificada, que é uma coluna de observações. Obrigado. JLSilva. -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
RE: [oracle_br] Trigger verificar update de única colunas
Aí fica simples, basta testar se a observação não foi alterada. Se não tiver sido, alguma outra coluna foi. E podem se acrescidas colunas a vontade na tabela a posteriori. create trigger trigger before update on tabela for each row begin if :new.observacao = :old.observacao then raise end if; end; CREATE TRIGGER Nome_da_sua_triggerAFTER (ou BEFORE) UPDATEON nome_da_sua_tabela FOR EACH ROW BEGIN From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] On Behalf Of JLSilva Sent: Friday, August 31, 2012 3:42 PM To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Trigger verificar update de única colunas Milton, Acho que minha explicação não ficou muito clara, mesmo. Na verdade, o que eu gostaria é o inverso: se estiver atualizando *somente* a coluna observação (as demais não foram modificadas), então não precisa disparar a trigger. Mas, se estiver atualizando qualquer outra coluna, aí sim tem que disparar a trigger. On Aug 31, 2012, at 12:00 PM, Milton Bastos Henriquis Jr. miltonbas...@gmail.com mailto:miltonbastos%40gmail.com wrote: Seria isso? CREATE TRIGGER Nome_da_sua_triggerAFTER (ou BEFORE) UPDATE OF campo_1, campo_2 ON nome_da_sua_tabela FOR EACH ROW BEGIN 2012/8/31 JLSilva jljlsi...@yahoo.com.br mailto:jljlsilva%40yahoo.com.br ** Pessoal, bom dia. Oracle10gR2 10.2.0.5.0 Enterprise Edition em Linux RHEL 5.6. Gostaria de verificar se alguém conhece algum método para verificar em uma trigger se somente uma coluna está sendo modificada. Ou seja, a tabela tem N colunas. Atualmente, eu estou verificando todas as colunas para saber se alguma foi modificada. O problema é que se uma nova coluna for adicionada na tabela, a trigger precisará ser modificada para verificar essa coluna também. Somente 1 coluna pode ser modificada, que é uma coluna de observações. Obrigado. JLSilva. -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger verificar update de única colunas
Olá, JLChiappa. O banco é um Oracle10gR2 10.2.0.5.0 Enterprise Edition. Ótima explicação sobre a funcionalidade de permissão por coluna. Realmente, algo que dificilmente nos lembramos que existe e acabamos por não usar. (e eventualmente fazemos algo *Asnino*, mesmo) Mas, novamente (como eu disse para o Milton), acredito que por eu ter dado poucos detalhes sobre a situação, esta não é a solução para o caso aqui. Existe uma lógica para permitir ou não um update nas demais colunas. Inclusive, com queries em tabelas relacionadas, flags, datas etc. etc. É algo relativamente complexo, que diz respeito às regras do negócio da empresa. Daí a necessidade de se escrever uma trigger. Obrigado. JoseLino Silva. On Aug 31, 2012, at 12:59 PM, J. Laurindo Chiappa jlchia...@yahoo.com.br wrote: Boa tarde, xará JL (sou JL também, de José Laurindo)... Antes de responder um comentário : a não ser que a sua versão de banco seja velhíssima e/ou limitada e não tenha o recurso, OU que haja alguma regra de negócio que impeça, (vc não confirma nem nega isso) imho é ** Asnino **, ignorância da grossa, tudo de Ruim mesmo se usar trigger (E portanto sofrer com performance, sofrer com as atualizações de código como vc mesmo disse, sofrer com os efeitos colaterais do trigger, etc) para simular algo que JÁ EXISTE dar privilégio de colunas : isso já existe há Muuuiiito tempo - não lembro se isso veio no 9i ou no 10g, mas o ponto é que já existe, veja o exemplo abaixo no final do e-mail num 10gR2 EE Caso Realmente por qquer motivo sério e intransponível vc não possa usar o recurso, aí a resposta é : afaik não, não há num trigger PL/SQL como saber se apenas uma dada coluna foi updateada, ou de se obter a lista de colunas updateadas, nem nada do tipo, é mesmo fazer o que vc já deve estar fazendo, imagino, que é : IFupdating('C1') or updating('C2') or updating('C3') ... THEN raise_application_error(-codigodoerro, 'Só pode updatear coluna OBS!!'); END IF; ... = O que vc Pode fazer é Automatizar a alteração do código da trigger quando alguém fazer ALTER TABLE xxx ADD COLUMN ; uma opção pra isso (se possível no seu caso) é vc Remover o direito de ALTER TABLE da pessoa, escrever uma Procedure que faz a alteração E já altera o trigger , e dar pra pessoa apenas o direito de Executar a procedure. Outra opção pode ser vc CAPTURAR os comandos de DDL com trigger de DDL, e se o texto do comando é ALTER TABLE nnn ADD COLUMN aí a trigger de DDL dispara um job que altera a trigger , coisa assim... = Mas toda essa resposta está girando em cima de quebra-galhos e POGs, o Correto e Profissional é usar o recurso do database nativo ... Segue o exemplo : SYSTEM@O10GR2::SQLcreate table TAB_ALTER_OBS (c1 number, c2 varchar2(40), obs varchar2(2000)); Tabela criada. = priv de select, normal ... SYSTEM@O10GR2::SQLgrant select on TAB_ALTER_OBS to scott; Concess?o bem-sucedida. = o pulo do gato, priv apenas na Coluna ... SYSTEM@O10GR2::SQLgrant update (OBS) on TAB_ALTER_OBS to scott; Concess?o bem-sucedida. = uma massinha de dados : SYSTEM@O10GR2::SQLinsert into TAB_ALTER_OBS (c1,c2) values(1, 'Linha 1'); 1 linha criada. SYSTEM@O10GR2::SQLinsert into TAB_ALTER_OBS (c1,c2) values(2, 'Linha 2'); 1 linha criada. SYSTEM@O10GR2::SQLcommit; Commit concluido. SYSTEM@O10GR2::SQLgrant create synonym to scott; Concess?o bem-sucedida. SYSTEM@O10GR2::SQLconn scott/tiger Conectado. SCOTT@O10GR2::SQLcreate synonym TAB_ALTER_OBS for SYSTEM.TAB_ALTER_OBS; Sinonimo criado. = o SELECT vai ok ... SCOTT@O10GR2::SQLselect * from TAB_ALTER_OBS; C1 C2 -- OBS -- -- -- -- -- --- 1 Linha 1 2 Linha 2 = UPDATE só na coluna permitida, OK... SCOTT@O10GR2::SQLupdate TAB_ALTER_OBS set OBS='Li a linha 1' where c1=1; 1 linha atualizada. SCOTT@O10GR2::SQLcommit; Commit concluido. = UPDATE numa coluna
Re: [oracle_br] Trigger verificar update de única colunas
Etore, Essa foi uma ótima solução! Simples e eficaz! Existe uma ótima lógica: se foi recebido um update, logo algo foi alterado. Apesar de que não obrigatoriamente, pois poderia ter alterado para o mesmo valor.. Mas, não teria sentido alterar algo para o mesmo valor. E se foi alterado para o mesmo valor, seria algo desnecessário. Vou validar com a equipe se isso pode ser implementado. Não sei se a aplicação faz algo desse tipo (atualizar a coluna para o mesmo valor). Digo isto porque já vi aplicações que, devido à linguagem de programação utilizada, framework etc., o update sempre é feito sobre todas as colunas da tabela, mesmo para aquelas que não foram modificadas. On Aug 31, 2012, at 5:21 PM, Schiavini et...@schiavini.inf.br wrote: Aí fica simples, basta testar se a observação não foi alterada. Se não tiver sido, alguma outra coluna foi. E podem se acrescidas colunas a vontade na tabela a posteriori. create trigger trigger before update on tabela for each row begin if :new.observacao = :old.observacao then raise … end if; end; CREATE TRIGGER Nome_da_sua_triggerAFTER (ou BEFORE) UPDATEON nome_da_sua_tabela FOR EACH ROW BEGIN From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] On Behalf Of JLSilva Sent: Friday, August 31, 2012 3:42 PM To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Trigger verificar update de única colunas Milton, Acho que minha explicação não ficou muito clara, mesmo. Na verdade, o que eu gostaria é o inverso: se estiver atualizando *somente* a coluna observação (as demais não foram modificadas), então não precisa disparar a trigger. Mas, se estiver atualizando qualquer outra coluna, aí sim tem que disparar a trigger. On Aug 31, 2012, at 12:00 PM, Milton Bastos Henriquis Jr. miltonbas...@gmail.com mailto:miltonbastos%40gmail.com wrote: Seria isso? CREATE TRIGGER Nome_da_sua_triggerAFTER (ou BEFORE) UPDATE OF campo_1, campo_2 ON nome_da_sua_tabela FOR EACH ROW BEGIN 2012/8/31 JLSilva jljlsi...@yahoo.com.br mailto:jljlsilva%40yahoo.com.br ** Pessoal, bom dia. Oracle10gR2 10.2.0.5.0 Enterprise Edition em Linux RHEL 5.6. Gostaria de verificar se alguém conhece algum método para verificar em uma trigger se somente uma coluna está sendo modificada. Ou seja, a tabela tem N colunas. Atualmente, eu estou verificando todas as colunas para saber se alguma foi modificada. O problema é que se uma nova coluna for adicionada na tabela, a trigger precisará ser modificada para verificar essa coluna também. Somente 1 coluna pode ser modificada, que é uma coluna de observações. Obrigado. JLSilva. -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br
Re: [oracle_br] Trigger para registrar tentativa de login
Capin, obrigado pela resposta, mas a ideia é outra. Imagine que: 1. um usuário tente conectar muitas vezes com senha incorreta: quero registrar isto (osuser, username, máquina etc.). 2. um usuário inexistente tenta conectar no banco: quero registrar isto (osuser, username - mesmo sendo inexistente, máquina etc.). A trigger desse link nào serve para o meu objetivo. Para entender melhor: preciso fazer algo semelhante à auditoria do enterprise edition (audit session whenever not successful), mas no Oracle Standard Edition. Valeu. On Nov 29, 2011, at 14:20 , Fernando Franquini 'capin' wrote: Aqui tem um exemplo de alterar sessao com a trigger de logon. http://franquini.wordpress.com/2011/07/19/trigger-de-logon/ Somente modificar para anteder a sua necessidade. Att, capin 2011/11/29 JLSilva jljlsi...@yahoo.com.br Pessoal, alguém teria uma trigger que consiga registrar o nome do usuário quando ocorre falha no login? As funções ora_login_user e sys_context('USERENV','SESSION_USER') não registram nenhum valor quando ocorre erro de login (trigger AFTER SERVERERROR ON DATABASE). Consegui registrar todas as demais informações (osuser, machine, ipaddress), exceto o nome do usuário. Obrigado. Oracle11gR2 11.2.0.2.0 Standard Edition. -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Fernando Franquini - Capin Bacharel em Ciencias da Computacao - UFSC Analista de Sistemas e de Banco de Dados / DBA Contatos: fernando.franqu...@gmail.com / 48.9902.4047 Florianópolis - SC - Brasil http://franquini.wordpress.com/ http://franquini.wordpress.com/ http://br.linkedin.com/in/capin [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
Re: [oracle_br] Trigger para registrar tentativa de login
Boa tarde JLSilva, Experimenta SYS_CONTEXT ('USERENV', 'CURRENT_USER'). []s Marcos Em 29 de novembro de 2011 13:47, JLSilva jljlsi...@yahoo.com.br escreveu: ** Pessoal, alguém teria uma trigger que consiga registrar o nome do usuário quando ocorre falha no login? As funções ora_login_user e sys_context('USERENV','SESSION_USER') não registram nenhum valor quando ocorre erro de login (trigger AFTER SERVERERROR ON DATABASE). Consegui registrar todas as demais informações (osuser, machine, ipaddress), exceto o nome do usuário. Obrigado. Oracle11gR2 11.2.0.2.0 Standard Edition. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger para registrar tentativa de login
Engraçado cara, eu fiz exatamente isso e trouxe o usuário da conexão... Talvez seja porquê a minha trigger está no usuário SYS. Experimenta criá-la para o usuário SYS. Em 29 de novembro de 2011 15:40, JLSilva jljlsi...@yahoo.com.br escreveu: ** Marcos, é por aí, mas o sys_context('USERENV','CURRENT_USER') retornou o usuário proprietário da trigger. Precisaria de uma função que retornasse o usuário informado no login. Valeu! On Nov 29, 2011, at 15:33 , Marcos de Moura Gonçalves wrote: Boa tarde JLSilva, Experimenta SYS_CONTEXT ('USERENV', 'CURRENT_USER'). []s Marcos Em 29 de novembro de 2011 13:47, JLSilva jljlsi...@yahoo.com.br escreveu: ** Pessoal, alguém teria uma trigger que consiga registrar o nome do usuário quando ocorre falha no login? As funções ora_login_user e sys_context('USERENV','SESSION_USER') não registram nenhum valor quando ocorre erro de login (trigger AFTER SERVERERROR ON DATABASE). Consegui registrar todas as demais informações (osuser, machine, ipaddress), exceto o nome do usuário. Obrigado. Oracle11gR2 11.2.0.2.0 Standard Edition. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger para registrar tentativa de login
Ah, entendi. Você deve estar fazendo uma trigger de login, comum. Veja meu processo e veja se é isto que você está fazendo: connect / as sysdba drop table log_falha_logon_tt purge; create table log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER')SESSION_USER, --sys_context('USERENV','SESSION_USER')SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, ORA_DATABASE_NAMEDATABASE_NAME, ORA_INSTANCE_NUM INSTANCE_NUM, ORA_SERVER_ERROR(1) SERVER_ERROR, sysdate HORA_OCORR, sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, sys_context('USERENV','HOST')HOST, sys_context('USERENV','TERMINAL')TERMINAL, sys_context('USERENV','OS_USER') OS_USER, sys_context('USERENV','NETWORK_PROTOCOL')NETWORK_PROTOCOL from dual where 1=2; create or replace trigger tr_falha_logon_tt AFTER SERVERERROR ON DATABASE declare BEGIN IF IS_SERVERERROR(1017) THEN insert into log_falha_logon_tt ( SESSION_USER, AUTHENTICATION_TYPE, DATABASE_NAME, INSTANCE_NUM, SERVER_ERROR, HORA_OCORR, IP_ADDRESS, HOST, TERMINAL, OS_USER, NETWORK_PROTOCOL ) values ( --ORA_LOGIN_USER, sys_context('USERENV','CURRENT_USER'), --sys_context('USERENV','SESSION_USER'), --sys_context('USERENV','SESSION_USERID'), sys_context('USERENV','AUTHENTICATION_TYPE'), ORA_DATABASE_NAME, ORA_INSTANCE_NUM, ORA_SERVER_ERROR(1), sysdate, sys_context('USERENV','IP_ADDRESS'), sys_context('USERENV','HOST'), sys_context('USERENV','TERMINAL'), sys_context('USERENV','OS_USER'), sys_context('USERENV','NETWORK_PROTOCOL') ); END IF; END; / connect abc123/abc123 connect / as sysdba set linesize 999 pagesize 1000 column SESSION_USER format a15 column SESSION_USERID format a15 column AUTHENTICATION_TYPE format a15 column DATABASE_NAME format a15 column INSTANCE_NUM format 999 column SERVER_ERROR format 99 column IP_ADDRESS format a15 column HOST format a35 column TERMINAL format a15 column OS_USER format a15 column NETWORK_PROTOCOL format a15 select * from log_falha_logon_tt order by hora_ocorr; On Nov 29, 2011, at 15:43 , Marcos de Moura Gonçalves wrote: Engraçado cara, eu fiz exatamente isso e trouxe o usuário da conexão... Talvez seja porquê a minha trigger está no usuário SYS. Experimenta criá-la para o usuário SYS. Em 29 de novembro de 2011 15:40, JLSilva jljlsi...@yahoo.com.br escreveu: ** Marcos, é por aí, mas o sys_context('USERENV','CURRENT_USER') retornou o usuário proprietário da trigger. Precisaria de uma função que retornasse o usuário informado no login. Valeu! On Nov 29, 2011, at 15:33 , Marcos de Moura Gonçalves wrote: Boa tarde JLSilva, Experimenta SYS_CONTEXT ('USERENV', 'CURRENT_USER'). []s Marcos Em 29 de novembro de 2011 13:47, JLSilva jljlsi...@yahoo.com.br escreveu: ** Pessoal, alguém teria uma trigger que consiga registrar o nome do usuário quando ocorre falha no login? As funções ora_login_user e sys_context('USERENV','SESSION_USER') não registram nenhum valor quando ocorre erro de login (trigger AFTER SERVERERROR ON DATABASE). Consegui registrar todas as demais informações (osuser, machine, ipaddress), exceto o nome do usuário. Obrigado. Oracle11gR2 11.2.0.2.0 Standard Edition. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
Re: [oracle_br] Trigger para registrar tentativa de login
Cara, a minha trigger é muito parecida com a sua, o mesmo conceito. Fiz essa trigger a um tempo já, e lembro que li alguma coisa sobre a diferença entre essa trigger estar ou não no usuário SYS. O motivo, honestamente, não lembro, mas lembro que minha tabela de log ficava dentro do meu schema, mas a trigger eu criei dentro do schema sys. Experimenta dropar a sua trigger e recompilá-la, igualzinha, apenas especificando: create or replace trigger SYS.tr_falha_logon_tt Em 29 de novembro de 2011 15:49, JLSilva jljlsi...@yahoo.com.br escreveu: ** Ah, entendi. Você deve estar fazendo uma trigger de login, comum. Veja meu processo e veja se é isto que você está fazendo: connect / as sysdba drop table log_falha_logon_tt purge; create table log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER') SESSION_USER, --sys_context('USERENV','SESSION_USER') SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, ORA_DATABASE_NAME DATABASE_NAME, ORA_INSTANCE_NUM INSTANCE_NUM, ORA_SERVER_ERROR(1) SERVER_ERROR, sysdate HORA_OCORR, sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, sys_context('USERENV','HOST') HOST, sys_context('USERENV','TERMINAL') TERMINAL, sys_context('USERENV','OS_USER') OS_USER, sys_context('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL from dual where 1=2; create or replace trigger tr_falha_logon_tt AFTER SERVERERROR ON DATABASE declare BEGIN IF IS_SERVERERROR(1017) THEN insert into log_falha_logon_tt ( SESSION_USER, AUTHENTICATION_TYPE, DATABASE_NAME, INSTANCE_NUM, SERVER_ERROR, HORA_OCORR, IP_ADDRESS, HOST, TERMINAL, OS_USER, NETWORK_PROTOCOL ) values ( --ORA_LOGIN_USER, sys_context('USERENV','CURRENT_USER'), --sys_context('USERENV','SESSION_USER'), --sys_context('USERENV','SESSION_USERID'), sys_context('USERENV','AUTHENTICATION_TYPE'), ORA_DATABASE_NAME, ORA_INSTANCE_NUM, ORA_SERVER_ERROR(1), sysdate, sys_context('USERENV','IP_ADDRESS'), sys_context('USERENV','HOST'), sys_context('USERENV','TERMINAL'), sys_context('USERENV','OS_USER'), sys_context('USERENV','NETWORK_PROTOCOL') ); END IF; END; / connect abc123/abc123 connect / as sysdba set linesize 999 pagesize 1000 column SESSION_USER format a15 column SESSION_USERID format a15 column AUTHENTICATION_TYPE format a15 column DATABASE_NAME format a15 column INSTANCE_NUM format 999 column SERVER_ERROR format 99 column IP_ADDRESS format a15 column HOST format a35 column TERMINAL format a15 column OS_USER format a15 column NETWORK_PROTOCOL format a15 select * from log_falha_logon_tt order by hora_ocorr; On Nov 29, 2011, at 15:43 , Marcos de Moura Gonçalves wrote: Engraçado cara, eu fiz exatamente isso e trouxe o usuário da conexão... Talvez seja porquê a minha trigger está no usuário SYS. Experimenta criá-la para o usuário SYS. Em 29 de novembro de 2011 15:40, JLSilva jljlsi...@yahoo.com.br escreveu: ** Marcos, é por aí, mas o sys_context('USERENV','CURRENT_USER') retornou o usuário proprietário da trigger. Precisaria de uma função que retornasse o usuário informado no login. Valeu! On Nov 29, 2011, at 15:33 , Marcos de Moura Gonçalves wrote: Boa tarde JLSilva, Experimenta SYS_CONTEXT ('USERENV', 'CURRENT_USER'). []s Marcos Em 29 de novembro de 2011 13:47, JLSilva jljlsi...@yahoo.com.br escreveu: ** Pessoal, alguém teria uma trigger que consiga registrar o nome do usuário quando ocorre falha no login? As funções ora_login_user e sys_context('USERENV','SESSION_USER') não registram nenhum valor quando ocorre erro de login (trigger AFTER SERVERERROR ON DATABASE). Consegui registrar todas as demais informações (osuser, machine, ipaddress), exceto o nome do usuário. Obrigado. Oracle11gR2 11.2.0.2.0 Standard Edition. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse:
Re: [oracle_br] Trigger para registrar tentativa de login
Olha, não entendo qual seria a diferença. A trigger e a tabela já está no schema SYS. De qualquer forma, executei este procedimento, mas o resultado foi exatamente o mesmo, ou seja, o CURRENT_USER retorna o SYS e o SESSION_USER retorna nulo, independente de existir ou não no banco o usuário informado no login. Se tiver mais alguma dica, agradeço! connect / as sysdba create user jlsilva identified by jlsilva quota unlimited on users; grant create session, create table to jlsilva; drop table jlsilva.log_falha_logon_tt purge; create table jlsilva.log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER')SESSION_USER, --sys_context('USERENV','SESSION_USER')SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, ORA_DATABASE_NAMEDATABASE_NAME, ORA_INSTANCE_NUM INSTANCE_NUM, ORA_SERVER_ERROR(1) SERVER_ERROR, sysdate HORA_OCORR, sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, sys_context('USERENV','HOST')HOST, sys_context('USERENV','TERMINAL')TERMINAL, sys_context('USERENV','OS_USER') OS_USER, sys_context('USERENV','NETWORK_PROTOCOL')NETWORK_PROTOCOL from dual where 1=2; create or replace trigger sys.tr_falha_logon_tt AFTER SERVERERROR ON DATABASE declare BEGIN IF IS_SERVERERROR(1017) THEN insert into jlsilva.log_falha_logon_tt ( SESSION_USER, AUTHENTICATION_TYPE, DATABASE_NAME, INSTANCE_NUM, SERVER_ERROR, HORA_OCORR, IP_ADDRESS, HOST, TERMINAL, OS_USER, NETWORK_PROTOCOL ) values ( --ORA_LOGIN_USER, sys_context('USERENV','CURRENT_USER'), --sys_context('USERENV','SESSION_USER'), --sys_context('USERENV','SESSION_USERID'), sys_context('USERENV','AUTHENTICATION_TYPE'), ORA_DATABASE_NAME, ORA_INSTANCE_NUM, ORA_SERVER_ERROR(1), sysdate, sys_context('USERENV','IP_ADDRESS'), sys_context('USERENV','HOST'), sys_context('USERENV','TERMINAL'), sys_context('USERENV','OS_USER'), sys_context('USERENV','NETWORK_PROTOCOL') ); END IF; END; / connect abc123/abc123 connect / as sysdba set linesize 999 pagesize 1000 column SESSION_USERformat a15 column SESSION_USERID format a15 column AUTHENTICATION_TYPE format a15 column DATABASE_NAME format a15 column INSTANCE_NUMformat 999 column SERVER_ERRORformat 99 column IP_ADDRESS format a15 column HOSTformat a35 column TERMINALformat a15 column OS_USER format a15 column NETWORK_PROTOCOLformat a15 select * from jlsilva.log_falha_logon_tt order by hora_ocorr; On Nov 29, 2011, at 15:55 , Marcos de Moura Gonçalves wrote: Cara, a minha trigger é muito parecida com a sua, o mesmo conceito. Fiz essa trigger a um tempo já, e lembro que li alguma coisa sobre a diferença entre essa trigger estar ou não no usuário SYS. O motivo, honestamente, não lembro, mas lembro que minha tabela de log ficava dentro do meu schema, mas a trigger eu criei dentro do schema sys. Experimenta dropar a sua trigger e recompilá-la, igualzinha, apenas especificando: create or replace trigger SYS.tr_falha_logon_tt Em 29 de novembro de 2011 15:49, JLSilva jljlsi...@yahoo.com.br escreveu: ** Ah, entendi. Você deve estar fazendo uma trigger de login, comum. Veja meu processo e veja se é isto que você está fazendo: connect / as sysdba drop table log_falha_logon_tt purge; create table log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER') SESSION_USER, --sys_context('USERENV','SESSION_USER') SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, ORA_DATABASE_NAME DATABASE_NAME, ORA_INSTANCE_NUM INSTANCE_NUM, ORA_SERVER_ERROR(1) SERVER_ERROR, sysdate HORA_OCORR, sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, sys_context('USERENV','HOST') HOST, sys_context('USERENV','TERMINAL') TERMINAL, sys_context('USERENV','OS_USER') OS_USER, sys_context('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL from dual where 1=2; create or replace trigger tr_falha_logon_tt AFTER SERVERERROR ON DATABASE declare BEGIN IF IS_SERVERERROR(1017) THEN insert into log_falha_logon_tt ( SESSION_USER, AUTHENTICATION_TYPE, DATABASE_NAME, INSTANCE_NUM, SERVER_ERROR, HORA_OCORR, IP_ADDRESS, HOST, TERMINAL, OS_USER, NETWORK_PROTOCOL ) values ( --ORA_LOGIN_USER, sys_context('USERENV','CURRENT_USER'), --sys_context('USERENV','SESSION_USER'), --sys_context('USERENV','SESSION_USERID'), sys_context('USERENV','AUTHENTICATION_TYPE'), ORA_DATABASE_NAME, ORA_INSTANCE_NUM, ORA_SERVER_ERROR(1), sysdate,
Re: [oracle_br] Trigger para registrar tentativa de login
Realmente, não percebi que no seu script vc se conecta como /. Eu vi o create trigger sem especificar o owner e achei que ficava em um outro owner. Não sei se ajuda, mas segue o código do trigger e tabela q eu fiz na época: CREATE TABLE marcos.erro_logon (dt_erro DATE DEFAULT SYSDATE ,txt_oracle_user VARCHAR2(30) ,txt_ip VARCHAR2(15) ,txt_maquina VARCHAR2(50) ,txt_os_user VARCHAR2(50) ,txt_software VARCHAR2(50) ,txt_tipo_autenticacao VARCHAR2(50) ,txt_erro VARCHAR2(100)) / CREATE OR REPLACE TRIGGER SYS.trg_as_erro_logon AFTER SERVERERROR ON DATABASE BEGIN IF ( is_servererror (1004) OR is_servererror (1005) OR is_servererror (1017) OR is_servererror (1035) OR is_servererror (1045) ) THEN INSERT INTO marcos.erro_logon (txt_oracle_user, txt_ip, txt_maquina, txt_os_user, txt_software, txt_tipo_autenticacao, txt_erro ) VALUES (SYS_CONTEXT ('USERENV', 'CURRENT_USER'), SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), SYS_CONTEXT ('USERENV', 'HOST'), SYS_CONTEXT ('USERENV', 'OS_USER'), SYS_CONTEXT ('USERENV', 'MODULE'), SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE'), DBMS_UTILITY.format_error_stack ); COMMIT; END IF; END trg_as_erro_logon; / Erros logados: 1004: ORA-01004: default username feature not supported; logon denied 1005: ORA-01005: null password given; logon denied 1017: ORA-01017: invalid username/password; logon denied 1035: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege 1045: ORA-01045: user ... lacks CREATE SESSION privilege; logon denied []s Marcos Em 29 de novembro de 2011 16:08, JLSilva jljlsi...@yahoo.com.br escreveu: ** Olha, não entendo qual seria a diferença. A trigger e a tabela já está no schema SYS. De qualquer forma, executei este procedimento, mas o resultado foi exatamente o mesmo, ou seja, o CURRENT_USER retorna o SYS e o SESSION_USER retorna nulo, independente de existir ou não no banco o usuário informado no login. Se tiver mais alguma dica, agradeço! connect / as sysdba create user jlsilva identified by jlsilva quota unlimited on users; grant create session, create table to jlsilva; drop table jlsilva.log_falha_logon_tt purge; create table jlsilva.log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER') SESSION_USER, --sys_context('USERENV','SESSION_USER') SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, ORA_DATABASE_NAME DATABASE_NAME, ORA_INSTANCE_NUM INSTANCE_NUM, ORA_SERVER_ERROR(1) SERVER_ERROR, sysdate HORA_OCORR, sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, sys_context('USERENV','HOST') HOST, sys_context('USERENV','TERMINAL') TERMINAL, sys_context('USERENV','OS_USER') OS_USER, sys_context('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL from dual where 1=2; create or replace trigger sys.tr_falha_logon_tt AFTER SERVERERROR ON DATABASE declare BEGIN IF IS_SERVERERROR(1017) THEN insert into jlsilva.log_falha_logon_tt ( SESSION_USER, AUTHENTICATION_TYPE, DATABASE_NAME, INSTANCE_NUM, SERVER_ERROR, HORA_OCORR, IP_ADDRESS, HOST, TERMINAL, OS_USER, NETWORK_PROTOCOL ) values ( --ORA_LOGIN_USER, sys_context('USERENV','CURRENT_USER'), --sys_context('USERENV','SESSION_USER'), --sys_context('USERENV','SESSION_USERID'), sys_context('USERENV','AUTHENTICATION_TYPE'), ORA_DATABASE_NAME, ORA_INSTANCE_NUM, ORA_SERVER_ERROR(1), sysdate, sys_context('USERENV','IP_ADDRESS'), sys_context('USERENV','HOST'), sys_context('USERENV','TERMINAL'), sys_context('USERENV','OS_USER'), sys_context('USERENV','NETWORK_PROTOCOL') ); END IF; END; / connect abc123/abc123 connect / as sysdba set linesize 999 pagesize 1000 column SESSION_USER format a15 column SESSION_USERID format a15 column AUTHENTICATION_TYPE format a15 column DATABASE_NAME format a15 column INSTANCE_NUM format 999 column SERVER_ERROR format 99 column IP_ADDRESS format a15 column HOST format a35 column TERMINAL format a15 column OS_USER format a15 column NETWORK_PROTOCOL format a15 select * from jlsilva.log_falha_logon_tt order by hora_ocorr; On Nov 29, 2011, at 15:55 , Marcos de Moura Gonçalves wrote: Cara, a minha trigger é muito parecida com a sua, o mesmo conceito. Fiz essa trigger a um tempo já, e lembro que li alguma coisa sobre a diferença entre essa trigger estar ou não no usuário SYS. O motivo, honestamente, não lembro, mas lembro que minha tabela de log ficava dentro do meu schema, mas a trigger eu criei dentro do schema sys. Experimenta dropar a sua trigger e recompilá-la, igualzinha, apenas especificando: create or
Re: [oracle_br] Trigger para registrar tentativa de login
Um outro detalhe: eu reparei no seu script que vc ainda está conectado como SYS quando tenta fazer connect abc123/abc123. Pode ser esse o motivo de estar gravando SYS na tabela de log. Experimenta abrir outro putty e fazer sqlplus abc123/abc123 pra ver o q grava. Em 29 de novembro de 2011 16:12, Marcos de Moura Gonçalves mgmar...@gmail.com escreveu: Realmente, não percebi que no seu script vc se conecta como /. Eu vi o create trigger sem especificar o owner e achei que ficava em um outro owner. Não sei se ajuda, mas segue o código do trigger e tabela q eu fiz na época: CREATE TABLE marcos.erro_logon (dt_erro DATE DEFAULT SYSDATE ,txt_oracle_user VARCHAR2(30) ,txt_ip VARCHAR2(15) ,txt_maquina VARCHAR2(50) ,txt_os_user VARCHAR2(50) ,txt_software VARCHAR2(50) ,txt_tipo_autenticacao VARCHAR2(50) ,txt_erro VARCHAR2(100)) / CREATE OR REPLACE TRIGGER SYS.trg_as_erro_logon AFTER SERVERERROR ON DATABASE BEGIN IF ( is_servererror (1004) OR is_servererror (1005) OR is_servererror (1017) OR is_servererror (1035) OR is_servererror (1045) ) THEN INSERT INTO marcos.erro_logon (txt_oracle_user, txt_ip, txt_maquina, txt_os_user, txt_software, txt_tipo_autenticacao, txt_erro ) VALUES (SYS_CONTEXT ('USERENV', 'CURRENT_USER'), SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), SYS_CONTEXT ('USERENV', 'HOST'), SYS_CONTEXT ('USERENV', 'OS_USER'), SYS_CONTEXT ('USERENV', 'MODULE'), SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE'), DBMS_UTILITY.format_error_stack ); COMMIT; END IF; END trg_as_erro_logon; / Erros logados: 1004: ORA-01004: default username feature not supported; logon denied 1005: ORA-01005: null password given; logon denied 1017: ORA-01017: invalid username/password; logon denied 1035: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege 1045: ORA-01045: user ... lacks CREATE SESSION privilege; logon denied []s Marcos Em 29 de novembro de 2011 16:08, JLSilva jljlsi...@yahoo.com.brescreveu: ** Olha, não entendo qual seria a diferença. A trigger e a tabela já está no schema SYS. De qualquer forma, executei este procedimento, mas o resultado foi exatamente o mesmo, ou seja, o CURRENT_USER retorna o SYS e o SESSION_USER retorna nulo, independente de existir ou não no banco o usuário informado no login. Se tiver mais alguma dica, agradeço! connect / as sysdba create user jlsilva identified by jlsilva quota unlimited on users; grant create session, create table to jlsilva; drop table jlsilva.log_falha_logon_tt purge; create table jlsilva.log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER') SESSION_USER, --sys_context('USERENV','SESSION_USER') SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, ORA_DATABASE_NAME DATABASE_NAME, ORA_INSTANCE_NUM INSTANCE_NUM, ORA_SERVER_ERROR(1) SERVER_ERROR, sysdate HORA_OCORR, sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, sys_context('USERENV','HOST') HOST, sys_context('USERENV','TERMINAL') TERMINAL, sys_context('USERENV','OS_USER') OS_USER, sys_context('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL from dual where 1=2; create or replace trigger sys.tr_falha_logon_tt AFTER SERVERERROR ON DATABASE declare BEGIN IF IS_SERVERERROR(1017) THEN insert into jlsilva.log_falha_logon_tt ( SESSION_USER, AUTHENTICATION_TYPE, DATABASE_NAME, INSTANCE_NUM, SERVER_ERROR, HORA_OCORR, IP_ADDRESS, HOST, TERMINAL, OS_USER, NETWORK_PROTOCOL ) values ( --ORA_LOGIN_USER, sys_context('USERENV','CURRENT_USER'), --sys_context('USERENV','SESSION_USER'), --sys_context('USERENV','SESSION_USERID'), sys_context('USERENV','AUTHENTICATION_TYPE'), ORA_DATABASE_NAME, ORA_INSTANCE_NUM, ORA_SERVER_ERROR(1), sysdate, sys_context('USERENV','IP_ADDRESS'), sys_context('USERENV','HOST'), sys_context('USERENV','TERMINAL'), sys_context('USERENV','OS_USER'), sys_context('USERENV','NETWORK_PROTOCOL') ); END IF; END; / connect abc123/abc123 connect / as sysdba set linesize 999 pagesize 1000 column SESSION_USER format a15 column SESSION_USERID format a15 column AUTHENTICATION_TYPE format a15 column DATABASE_NAME format a15 column INSTANCE_NUM format 999 column SERVER_ERROR format 99 column IP_ADDRESS format a15 column HOST format a35 column TERMINAL format a15 column OS_USER format a15 column NETWORK_PROTOCOL format a15 select * from jlsilva.log_falha_logon_tt order by hora_ocorr; On Nov 29, 2011, at 15:55 , Marcos de Moura Gonçalves wrote: Cara, a minha trigger é muito parecida
Re: [oracle_br] Trigger para registrar tentativa de login
Mais uma pergunta: o usuário abc123 existe? A situação que eu logava era pq queria saber quem estava bloqueando o usuário da aplicação o tempo todo por excesso de tentativas de login com senha errada. No meu caso, o usuário sempre existia, só a senha era errada. Não sei o que acontece qdo tenta logar com usuário que não existe no banco... Em 29 de novembro de 2011 16:29, Marcos de Moura Gonçalves mgmar...@gmail.com escreveu: Um outro detalhe: eu reparei no seu script que vc ainda está conectado como SYS quando tenta fazer connect abc123/abc123. Pode ser esse o motivo de estar gravando SYS na tabela de log. Experimenta abrir outro putty e fazer sqlplus abc123/abc123 pra ver o q grava. Em 29 de novembro de 2011 16:12, Marcos de Moura Gonçalves mgmar...@gmail.com escreveu: Realmente, não percebi que no seu script vc se conecta como /. Eu vi o create trigger sem especificar o owner e achei que ficava em um outro owner. Não sei se ajuda, mas segue o código do trigger e tabela q eu fiz na época: CREATE TABLE marcos.erro_logon (dt_erro DATE DEFAULT SYSDATE ,txt_oracle_user VARCHAR2(30) ,txt_ip VARCHAR2(15) ,txt_maquina VARCHAR2(50) ,txt_os_user VARCHAR2(50) ,txt_software VARCHAR2(50) ,txt_tipo_autenticacao VARCHAR2(50) ,txt_erro VARCHAR2(100)) / CREATE OR REPLACE TRIGGER SYS.trg_as_erro_logon AFTER SERVERERROR ON DATABASE BEGIN IF ( is_servererror (1004) OR is_servererror (1005) OR is_servererror (1017) OR is_servererror (1035) OR is_servererror (1045) ) THEN INSERT INTO marcos.erro_logon (txt_oracle_user, txt_ip, txt_maquina, txt_os_user, txt_software, txt_tipo_autenticacao, txt_erro ) VALUES (SYS_CONTEXT ('USERENV', 'CURRENT_USER'), SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), SYS_CONTEXT ('USERENV', 'HOST'), SYS_CONTEXT ('USERENV', 'OS_USER'), SYS_CONTEXT ('USERENV', 'MODULE'), SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE'), DBMS_UTILITY.format_error_stack ); COMMIT; END IF; END trg_as_erro_logon; / Erros logados: 1004: ORA-01004: default username feature not supported; logon denied 1005: ORA-01005: null password given; logon denied 1017: ORA-01017: invalid username/password; logon denied 1035: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege 1045: ORA-01045: user ... lacks CREATE SESSION privilege; logon denied []s Marcos Em 29 de novembro de 2011 16:08, JLSilva jljlsi...@yahoo.com.brescreveu: ** Olha, não entendo qual seria a diferença. A trigger e a tabela já está no schema SYS. De qualquer forma, executei este procedimento, mas o resultado foi exatamente o mesmo, ou seja, o CURRENT_USER retorna o SYS e o SESSION_USER retorna nulo, independente de existir ou não no banco o usuário informado no login. Se tiver mais alguma dica, agradeço! connect / as sysdba create user jlsilva identified by jlsilva quota unlimited on users; grant create session, create table to jlsilva; drop table jlsilva.log_falha_logon_tt purge; create table jlsilva.log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER') SESSION_USER, --sys_context('USERENV','SESSION_USER') SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, ORA_DATABASE_NAME DATABASE_NAME, ORA_INSTANCE_NUM INSTANCE_NUM, ORA_SERVER_ERROR(1) SERVER_ERROR, sysdate HORA_OCORR, sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, sys_context('USERENV','HOST') HOST, sys_context('USERENV','TERMINAL') TERMINAL, sys_context('USERENV','OS_USER') OS_USER, sys_context('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL from dual where 1=2; create or replace trigger sys.tr_falha_logon_tt AFTER SERVERERROR ON DATABASE declare BEGIN IF IS_SERVERERROR(1017) THEN insert into jlsilva.log_falha_logon_tt ( SESSION_USER, AUTHENTICATION_TYPE, DATABASE_NAME, INSTANCE_NUM, SERVER_ERROR, HORA_OCORR, IP_ADDRESS, HOST, TERMINAL, OS_USER, NETWORK_PROTOCOL ) values ( --ORA_LOGIN_USER, sys_context('USERENV','CURRENT_USER'), --sys_context('USERENV','SESSION_USER'), --sys_context('USERENV','SESSION_USERID'), sys_context('USERENV','AUTHENTICATION_TYPE'), ORA_DATABASE_NAME, ORA_INSTANCE_NUM, ORA_SERVER_ERROR(1), sysdate, sys_context('USERENV','IP_ADDRESS'), sys_context('USERENV','HOST'), sys_context('USERENV','TERMINAL'), sys_context('USERENV','OS_USER'), sys_context('USERENV','NETWORK_PROTOCOL') ); END IF; END; / connect abc123/abc123 connect / as sysdba set linesize 999 pagesize 1000 column SESSION_USER format a15 column SESSION_USERID format a15 column
Re: [oracle_br] Trigger para registrar tentativa de login
Pois é, muito parecida. Eu guardei esse código, mas não trabalho mais no ambiente onde ela era usada. Onde eu tô agora nem tenho Oracle pra testar... Mas o resultado que eu obtia, com certeza, era o usuário da tentativa errada de login, e não SYS... Em 29 de novembro de 2011 16:31, JLSilva jljlsi...@yahoo.com.br escreveu: ** Marcos, realmente muito semelhante sua trigger. provavelmente me baseei nos mesmos exemplos.. rsrs.. mas, seguinte.. o TXT_ORACLE_USER sempre retorna SYS, porque a trigger executa no contexto do owner dela. pelo menos é o que está ocorrendo aqui no banco onde estou testando. será q você conseguiu um resultado diferente nessa coluna? On Nov 29, 2011, at 16:12 , Marcos de Moura Gonçalves wrote: Realmente, não percebi que no seu script vc se conecta como /. Eu vi o create trigger sem especificar o owner e achei que ficava em um outro owner. Não sei se ajuda, mas segue o código do trigger e tabela q eu fiz na época: CREATE TABLE marcos.erro_logon (dt_erro DATE DEFAULT SYSDATE ,txt_oracle_user VARCHAR2(30) ,txt_ip VARCHAR2(15) ,txt_maquina VARCHAR2(50) ,txt_os_user VARCHAR2(50) ,txt_software VARCHAR2(50) ,txt_tipo_autenticacao VARCHAR2(50) ,txt_erro VARCHAR2(100)) / CREATE OR REPLACE TRIGGER SYS.trg_as_erro_logon AFTER SERVERERROR ON DATABASE BEGIN IF ( is_servererror (1004) OR is_servererror (1005) OR is_servererror (1017) OR is_servererror (1035) OR is_servererror (1045) ) THEN INSERT INTO marcos.erro_logon (txt_oracle_user, txt_ip, txt_maquina, txt_os_user, txt_software, txt_tipo_autenticacao, txt_erro ) VALUES (SYS_CONTEXT ('USERENV', 'CURRENT_USER'), SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), SYS_CONTEXT ('USERENV', 'HOST'), SYS_CONTEXT ('USERENV', 'OS_USER'), SYS_CONTEXT ('USERENV', 'MODULE'), SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE'), DBMS_UTILITY.format_error_stack ); COMMIT; END IF; END trg_as_erro_logon; / Erros logados: 1004: ORA-01004: default username feature not supported; logon denied 1005: ORA-01005: null password given; logon denied 1017: ORA-01017: invalid username/password; logon denied 1035: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege 1045: ORA-01045: user ... lacks CREATE SESSION privilege; logon denied []s Marcos Em 29 de novembro de 2011 16:08, JLSilva jljlsi...@yahoo.com.br escreveu: ** Olha, não entendo qual seria a diferença. A trigger e a tabela já está no schema SYS. De qualquer forma, executei este procedimento, mas o resultado foi exatamente o mesmo, ou seja, o CURRENT_USER retorna o SYS e o SESSION_USER retorna nulo, independente de existir ou não no banco o usuário informado no login. Se tiver mais alguma dica, agradeço! connect / as sysdba create user jlsilva identified by jlsilva quota unlimited on users; grant create session, create table to jlsilva; drop table jlsilva.log_falha_logon_tt purge; create table jlsilva.log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER') SESSION_USER, --sys_context('USERENV','SESSION_USER') SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, ORA_DATABASE_NAME DATABASE_NAME, ORA_INSTANCE_NUM INSTANCE_NUM, ORA_SERVER_ERROR(1) SERVER_ERROR, sysdate HORA_OCORR, sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, sys_context('USERENV','HOST') HOST, sys_context('USERENV','TERMINAL') TERMINAL, sys_context('USERENV','OS_USER') OS_USER, sys_context('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL from dual where 1=2; create or replace trigger sys.tr_falha_logon_tt AFTER SERVERERROR ON DATABASE declare BEGIN IF IS_SERVERERROR(1017) THEN insert into jlsilva.log_falha_logon_tt ( SESSION_USER, AUTHENTICATION_TYPE, DATABASE_NAME, INSTANCE_NUM, SERVER_ERROR, HORA_OCORR, IP_ADDRESS, HOST, TERMINAL, OS_USER, NETWORK_PROTOCOL ) values ( --ORA_LOGIN_USER, sys_context('USERENV','CURRENT_USER'), --sys_context('USERENV','SESSION_USER'), --sys_context('USERENV','SESSION_USERID'), sys_context('USERENV','AUTHENTICATION_TYPE'), ORA_DATABASE_NAME, ORA_INSTANCE_NUM, ORA_SERVER_ERROR(1), sysdate, sys_context('USERENV','IP_ADDRESS'), sys_context('USERENV','HOST'), sys_context('USERENV','TERMINAL'), sys_context('USERENV','OS_USER'), sys_context('USERENV','NETWORK_PROTOCOL') ); END IF; END; / connect abc123/abc123 connect / as sysdba set linesize 999 pagesize 1000 column SESSION_USER format a15 column SESSION_USERID format a15 column AUTHENTICATION_TYPE format a15 column DATABASE_NAME format a15 column INSTANCE_NUM format 999 column SERVER_ERROR format 99 column IP_ADDRESS format a15 column HOST format a35 column TERMINAL format a15 column OS_USER format a15 column
Re: [oracle_br] Trigger para registrar tentativa de login
O ORA_LOGIN_USER retorna o login do usuário para outros erros, que não erros de login... Acontece que no erro de login, na prática, o cliente não fez login, por isso o ORA_LOGIN_USER não retorna nada... Só por curiosidade, se vc tentar logar com um usuário que existe e tem grant de create session, mas coloca a senha errada, o CURRENT_USER não traz o nome do usuário? Em 29 de novembro de 2011 16:49, JLSilva jljlsi...@yahoo.com.br escreveu: ** Marcos, fiz os testes desconectando e tentando conectar diretamente com um usuário que não existe ou que não tenha permissão de create session. Sua trigger funciona da mesma forma que a minha: o SYS_CONTEXT ('USERENV', 'CURRENT_USER') retorna o usuário SYS e as demais funções para pegar o nome do usuário do login retornam nulo. O que mais me incomoda é que a documentação diz que o ORA_LOGIN_USER deveria conter valor no evento SERVERERROR. E até tem valor, exceto quando é um erro de conexão ao banco de dados. Sua trigger tem uma evolução: ela registra a mensagem completa de erro através da função DBMS_UTILITY.format_error_stack. Desta forma, se o erro for, por exemplo, ORA-01045, aparece o nome do usuário aqui: ORA-01045: user JLSILVA lacks CREATE SESSION privilege; logon denied Mas, no caso do usuário inexistente, não é mostrado o nome do usuário que tentou a conexão. A mensagem fica assim: ORA-01017: invalid username/password; logon denied E era justamente esta a informaçào que mais me interessaria! rsrs.. Tamo quase chegando lá.. On Nov 29, 2011, at 16:32 , Marcos de Moura Gonçalves wrote: Mais uma pergunta: o usuário abc123 existe? A situação que eu logava era pq queria saber quem estava bloqueando o usuário da aplicação o tempo todo por excesso de tentativas de login com senha errada. No meu caso, o usuário sempre existia, só a senha era errada. Não sei o que acontece qdo tenta logar com usuário que não existe no banco... Em 29 de novembro de 2011 16:29, Marcos de Moura Gonçalves mgmar...@gmail.com escreveu: Um outro detalhe: eu reparei no seu script que vc ainda está conectado como SYS quando tenta fazer connect abc123/abc123. Pode ser esse o motivo de estar gravando SYS na tabela de log. Experimenta abrir outro putty e fazer sqlplus abc123/abc123 pra ver o q grava. Em 29 de novembro de 2011 16:12, Marcos de Moura Gonçalves mgmar...@gmail.com escreveu: Realmente, não percebi que no seu script vc se conecta como /. Eu vi o create trigger sem especificar o owner e achei que ficava em um outro owner. Não sei se ajuda, mas segue o código do trigger e tabela q eu fiz na época: CREATE TABLE marcos.erro_logon (dt_erro DATE DEFAULT SYSDATE ,txt_oracle_user VARCHAR2(30) ,txt_ip VARCHAR2(15) ,txt_maquina VARCHAR2(50) ,txt_os_user VARCHAR2(50) ,txt_software VARCHAR2(50) ,txt_tipo_autenticacao VARCHAR2(50) ,txt_erro VARCHAR2(100)) / CREATE OR REPLACE TRIGGER SYS.trg_as_erro_logon AFTER SERVERERROR ON DATABASE BEGIN IF ( is_servererror (1004) OR is_servererror (1005) OR is_servererror (1017) OR is_servererror (1035) OR is_servererror (1045) ) THEN INSERT INTO marcos.erro_logon (txt_oracle_user, txt_ip, txt_maquina, txt_os_user, txt_software, txt_tipo_autenticacao, txt_erro ) VALUES (SYS_CONTEXT ('USERENV', 'CURRENT_USER'), SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), SYS_CONTEXT ('USERENV', 'HOST'), SYS_CONTEXT ('USERENV', 'OS_USER'), SYS_CONTEXT ('USERENV', 'MODULE'), SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE'), DBMS_UTILITY.format_error_stack ); COMMIT; END IF; END trg_as_erro_logon; / Erros logados: 1004: ORA-01004: default username feature not supported; logon denied 1005: ORA-01005: null password given; logon denied 1017: ORA-01017: invalid username/password; logon denied 1035: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege 1045: ORA-01045: user ... lacks CREATE SESSION privilege; logon denied []s Marcos Em 29 de novembro de 2011 16:08, JLSilva jljlsi...@yahoo.com.br escreveu: ** Olha, não entendo qual seria a diferença. A trigger e a tabela já está no schema SYS. De qualquer forma, executei este procedimento, mas o resultado foi exatamente o mesmo, ou seja, o CURRENT_USER retorna o SYS e o SESSION_USER retorna nulo, independente de existir ou não no banco o usuário informado no login. Se tiver mais alguma dica, agradeço! connect / as sysdba create user jlsilva identified by jlsilva quota unlimited on users; grant create session, create table to jlsilva; drop table jlsilva.log_falha_logon_tt purge; create table jlsilva.log_falha_logon_tt as select --ORA_LOGIN_USER SESSION_USER, sys_context('USERENV','CURRENT_USER') SESSION_USER, --sys_context('USERENV','SESSION_USER') SESSION_USER, --sys_context('USERENV','SESSION_USERID') SESSION_USERID, sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE,
Re: [oracle_br] Trigger ou audit ?
Só atente ao fato de Auditoria onerar consideravelmente a tua base de dados...tomar cuidado. At. Rodrigo Em 31 de agosto de 2011 13:07, Marcos Braga braga.mar...@gmail.comescreveu: Olá José Carlos, Acredito que o AUDIT seria mais prático e mais rápido de implementar. Pelo fato de não ser uma necessidade permanente, o desenvolvimento de triggers poderia ser em oneroso. []s Braga 2011/8/31 José Carlos Guerrieri guerrieri...@gmail.com ** Bom dia. Estou com o seguinte problema: Atendendo à necessidade de um cliente cujo legado é a existência de inúmeros dblinks públicos criados com usuário e senha, preciso saber qual usuário da base faz uso destes dblinks para chegar à(s) outra(s) instância(s). A possível solução seria uma trigger ou ligar o audit ? Agradeço a quem possa ajudar. José Carlos [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] TRIGGER
Nem um nem outro. Simplesmente chama a procedure. create os replace trigger begin sua_procedure; end; / Só isso. Abraço!! Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:30, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Ola a todos, Posso executar uma PROCEDURE dentro de um TRIGGER? Como faço isso? Com o CALL ou EXECUTE? Obrigado Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] TRIGGER
Mas da-me erro ao compilar CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') END; Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Gerson Junior Enviada: quinta-feira, 11 de Agosto de 2011 18:40 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Nem um nem outro. Simplesmente chama a procedure. create os replace trigger begin sua_procedure; end; / Só isso. Abraço!! Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:30, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Ola a todos, Posso executar uma PROCEDURE dentro de um TRIGGER? Como faço isso? Com o CALL ou EXECUTE? Obrigado Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
Re: [oracle_br] TRIGGER
Tá colocando o ; depois da procedure? BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') - ? END; Em 11 de agosto de 2011 14:41, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Mas da-me erro ao compilar CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') END; Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Gerson Junior Enviada: quinta-feira, 11 de Agosto de 2011 18:40 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Nem um nem outro. Simplesmente chama a procedure. create os replace trigger begin sua_procedure; end; / Só isso. Abraço!! Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:30, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Ola a todos, Posso executar uma PROCEDURE dentro de um TRIGGER? Como faço isso? Com o CALL ou EXECUTE? Obrigado Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] TRIGGER
Qual o erro? que ocorre pra você. Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:41, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Mas da-me erro ao compilar CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') END; Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Gerson Junior Enviada: quinta-feira, 11 de Agosto de 2011 18:40 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Nem um nem outro. Simplesmente chama a procedure. create os replace trigger begin sua_procedure; end; / Só isso. Abraço!! Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:30, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Ola a todos, Posso executar uma PROCEDURE dentro de um TRIGGER? Como faço isso? Com o CALL ou EXECUTE? Obrigado Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] TRIGGER
Nao tinha colocado o ; Mas continua a dar-me este erro - PLS-00201: identifier 'CARLOS.PRO_X' must be declared CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/'); END; Com os melhores cumprimentos, Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Álisson Zimermann Enviada: quinta-feira, 11 de Agosto de 2011 18:45 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Tá colocando o ; depois da procedure? BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') - ? END; Em 11 de agosto de 2011 14:41, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Mas da-me erro ao compilar CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') END; Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Gerson Junior Enviada: quinta-feira, 11 de Agosto de 2011 18:40 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Nem um nem outro. Simplesmente chama a procedure. create os replace trigger begin sua_procedure; end; / Só isso. Abraço!! Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:30, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Ola a todos, Posso executar uma PROCEDURE dentro de um TRIGGER? Como faço isso? Com o CALL ou EXECUTE? Obrigado Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
Re: [oracle_br] TRIGGER
Ele não está encontrando a sua procedure. Algumas perguntas: 1 - A procedure PRO_X, realmente existe no schema CARLOS, ou CARLOS é uma package? 2 - Se a trigger não está no mesmo schema, foi concedido privilégio de execute para o schema dono da trigger? Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:45, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Nao tinha colocado o ; Mas continua a dar-me este erro - PLS-00201: identifier 'CARLOS.PRO_X' must be declared CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/'); END; Com os melhores cumprimentos, Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Álisson Zimermann Enviada: quinta-feira, 11 de Agosto de 2011 18:45 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Tá colocando o ; depois da procedure? BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') - ? END; Em 11 de agosto de 2011 14:41, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Mas da-me erro ao compilar CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') END; Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Gerson Junior Enviada: quinta-feira, 11 de Agosto de 2011 18:40 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Nem um nem outro. Simplesmente chama a procedure. create os replace trigger begin sua_procedure; end; / Só isso. Abraço!! Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:30, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Ola a todos, Posso executar uma PROCEDURE dentro de um TRIGGER? Como faço isso? Com o CALL ou EXECUTE? Obrigado Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br
RE: [oracle_br] TRIGGER
Era Isso...PERMISSOES. Agora estou com erro na TRIGGER quando faço o Insert ORA-01003: no statement parsed ORA-06512: at CARLOS.PRO_X, line 69 ORA-06512: at CARLOS.TRG_H_SII, line 3 ORA-04088: error during execution of trigger 'CARLOS.TRG_H_SII' Com os melhores cumprimentos, Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Gerson Junior Enviada: quinta-feira, 11 de Agosto de 2011 19:08 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Ele não está encontrando a sua procedure. Algumas perguntas: 1 - A procedure PRO_X, realmente existe no schema CARLOS, ou CARLOS é uma package? 2 - Se a trigger não está no mesmo schema, foi concedido privilégio de execute para o schema dono da trigger? Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:45, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Nao tinha colocado o ; Mas continua a dar-me este erro - PLS-00201: identifier 'CARLOS.PRO_X' must be declared CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/'); END; Com os melhores cumprimentos, Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Álisson Zimermann Enviada: quinta-feira, 11 de Agosto de 2011 18:45 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Tá colocando o ; depois da procedure? BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') - ? END; Em 11 de agosto de 2011 14:41, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Mas da-me erro ao compilar CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') END; Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Gerson Junior Enviada: quinta-feira, 11 de Agosto de 2011 18:40 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Nem um nem outro. Simplesmente chama a procedure. create os replace trigger begin sua_procedure; end; / Só isso. Abraço!! Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:30, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Ola a todos, Posso executar uma PROCEDURE dentro de um TRIGGER? Como faço isso? Com o CALL ou EXECUTE? Obrigado Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo
Re: [oracle_br] TRIGGER
Opa Carlos você deve estar declarando valores demais como parâmetro?Posta a sua procedure também. Como o Gerson falou era só declarar a sua procedure dentro do bloco, mas se ela tem parâmetros a coisa muda. Att Emerson Martins DBA Jr 82 9123-5504 82 9668-1283 Em 11 de agosto de 2011 14:45, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Nao tinha colocado o ; Mas continua a dar-me este erro - PLS-00201: identifier 'CARLOS.PRO_X' must be declared CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/'); END; Com os melhores cumprimentos, Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Álisson Zimermann Enviada: quinta-feira, 11 de Agosto de 2011 18:45 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Tá colocando o ; depois da procedure? BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') - ? END; Em 11 de agosto de 2011 14:41, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Mas da-me erro ao compilar CREATE TRIGGER TRG_H_SII AFTER INSERT ON H_SII REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN CARLOS.PRO_X('10.0.0.1', '21', 'teste', 'teste', 'S', '/SII/') END; Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Gerson Junior Enviada: quinta-feira, 11 de Agosto de 2011 18:40 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] TRIGGER Nem um nem outro. Simplesmente chama a procedure. create os replace trigger begin sua_procedure; end; / Só isso. Abraço!! Gerson S. de Vasconcelos Júnior OCA DBA - Oracle Certified Associate Fone: (81) 9816-0236 Msn: gerson.vasconce...@gmail.com Skype: gersonvjunior http://www.diaadiaoracle.com.br/ Em 11 de agosto de 2011 14:30, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: ** Ola a todos, Posso executar uma PROCEDURE dentro de um TRIGGER? Como faço isso? Com o CALL ou EXECUTE? Obrigado Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie
Re: [oracle_br] Trigger mutanting
Olha, veja se consegue fazer isso via procedure !!! Estou dando uma opinião no escuro (não sei do que se trata) mas, dependendo da situação, via aplicação pode chamar uma procedure em alguns casos. Abraço, Aristides 2009/11/25 Débora Acácio debby_ora...@yahoo.com.br Olá Estou tendo um problema numa trigger que estou alterando está dando erro de trigger mutanting... alguém poderia me ajudar ? Grata Debby :) __ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas] -- -- Eduardo [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
Re: [oracle_br] Trigger mutanting
Faz só um select e por isso estava dando erro. Fiz uma packege e alimentei duas variáveis pela trigger before... e na After eu valido com a package... Já está tudo ok Obrigada... Debby :) --- Em qua, 25/11/09, Eduardo eduardo.pa...@gmail.com escreveu: De: Eduardo eduardo.pa...@gmail.com Assunto: Re: [oracle_br] Trigger mutanting Para: oracle_br@yahoogrupos.com.br Data: Quarta-feira, 25 de Novembro de 2009, 11:53 ela está alterando a tabela que a dispara? 2009/11/25 Débora Acácio debby_ora...@yahoo.com.br Olá Estou tendo um problema numa trigger que estou alterando está dando erro de trigger mutanting... alguém poderia me ajudar ? Grata Debby :) __ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas] -- -- Eduardo [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger mutanting - Aristides
Obrigada Aristides e todos que me responderam.. Fiz uma package e criei uma outra trigger AFTER e resolvi o problema... Sds Debby --- Em qua, 25/11/09, Arystydes arysty...@bol.com.br escreveu: De: Arystydes arysty...@bol.com.br Assunto: Re: [oracle_br] Trigger mutanting Para: oracle_br@yahoogrupos.com.br Data: Quarta-feira, 25 de Novembro de 2009, 16:30 Olha, veja se consegue fazer isso via procedure !!! Estou dando uma opinião no escuro (não sei do que se trata) mas, dependendo da situação, via aplicação pode chamar uma procedure em alguns casos. Abraço, Aristides 2009/11/25 Débora Acácio debby_ora...@yahoo.com.br Olá Estou tendo um problema numa trigger que estou alterando está dando erro de trigger mutanting... alguém poderia me ajudar ? Grata Debby :) __ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas] -- -- Eduardo [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] TRIGGER chamando PROCEDURE
Vc tem certeza que as colunas SAFRA, EMPRESA, FILIAL,OCMESTRE estão sendo preenchidos na hora do insert e update? Pois voce pode estar passando valores nulos pra procedure. 2009/9/14 Cesar Otoganizo da Horta cesarho...@triline.com.br Senhores, Boa Tarde Estou necessitando chamar uma Procedure através de uma trigger conforme exemplo abaixo: CREATE OR REPLACE TRIGGER NOME_TRIGGER AFTER INSERT OR UPDATE ON NOME_TABELA REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW BEGIN NOME_PROCEDURE(:NEW.SAFRA, :NEW.EMPRESA, :NEW.FILIAL, :NEW.OCMESTRE); END; Situação: A trigger NÃO apresenta nenhum erro, e a procedure não é executada. Alguém pode ajudar? Oracle Database 10g Release 10.2.0.4.0 - 64bit Production Linux Fedora 64btis Cesar O Horta -- José Eduardo Batista Juliano Cel (16)9189-2486 Híade Informática Consultoria Oracle e desenvolvimento de sistemas. Ribeirão Preto - SP [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger para bloqueio de Acesso com PL/SQL ou SQL PLUS
E ai brow . não sei se essa é a mesma trigger que voce ta falando , mais acho que pode resolver o seu problema da uma olhada. begin- create or replace trigger on_logon after logon on database declare v_sid number; v_isdba varchar2(10); v_program varchar2(30); begin execute immediate 'select distinct sid from sys.v_$mystat' into v_sid; execute immediate 'select program from sys.v_$session where sid = :b1' into v_program using v_sid; select sys_context('userenv', 'ISDBA') into v_isdba from dual; if upper(v_program) = 'PLSQLDEV.EXE' and v_isdba = 'FALSE' then -- o nome do programa tem que ser em maiusculo. raise_application_error(-20001,'A Ferramenta PL/SQL Developer é limitada apenas aos DBA'||chr(39)||'s',true); end if; end; / end- 2009/5/19 candiurudba candiuru...@yahoo.com.br Bom dia coelgas, tudo bom ? Vi ha algum tempo atras em um forum, uma trigger que bloqueava acessos de usuário que estivessem se conectando com SQL PLUS ou PLSQL DEVELOPR por exemplo mas não me recordo com a mesma tinha sido desenvolvida... A ideia era bloquear acessos a determinados esquemas com a utilização de aplicação de desenvolvimento (SQL PLUS, PL/SQL DEVELOPER. ORACLE SQL SEVELOPER, TOAD E ETC). Minha ideia seria uma trigger que seria aplicada em um determinado usuário e, após o logon do mesmo, estes aplicativos fossem bloqueados. Alguem teria alguma luz sobre este assunto ? è justamente para evitar acessos indesejados na base de dados... abraços [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] TRIGGER - ALTERNATIVA PARA ERRO TABLE TABLE_NAME IS MUTATING
Leonardo. Manda a trigger do jeito q esta construida hj fazendo favor. Abraço Alvaro Em 24/09/08, Leonardo Souza [EMAIL PROTECTED] escreveu: Bom dia srs, Estou construindo uma trigger na qual antes de atualizar/deletar um registro, tenho que dar um select na própria tabela que está sendo modificada, devido a executar joins em outras tabelas. Minha dúvida é: Como não posso executar uma instrução que necessito na tabela que está sendo alterada (ver erro abaixo), onde posso armazenar o registro em questão numa estrutura na qual possa dar joins em outras tabelas existentes??? Se eu colocar em um tipo de collection, posso fazer isto: ??? select t1.a, t1.b, t1.c, type_collection.a, type_collection.b from t1 inner join type_collection ERRO: -- UPDATE WEB.CLIENTES SET DAT_COMPRA = TO_DATE('21/02/08', 'DD/MM/RR') WHERE ROWID = 'AAAKVQAAQAABpu9AAN' One error saving changes to table WEB.CLIENTES: Row 1: ORA-04091: table WEB.CLIENTES is mutating, trigger/function may not see it ORA-06512: at WEB.TRG_CLIENTES, line 58 ORA-06512: at WEB.TRG_CLIENTES, line 204 ORA-04088: error during execution of trigger 'WEB.TRG_CLIENTES' -- Att, [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger com update.
Bom dia, Alvaro. Muito Obrigado pela ajuda, acabei de fazer as alterações na trigger, conforme você me passou e funcionou perfeitamente. Valeu mesmo. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil From: Alvaro Luiz Mansor Neto Sent: Monday, September 22, 2008 5:03 PM To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Trigger com update. Jean. Tudo bem? O código fica o seguinte: SQL CREATE TABLE NPS_PROGR_PROXIMA ( FIMPROGR NUMBER, INIPROGR NUMBER, lotenum NUMBER ); Table created SQL SQL CREATE OR REPLACE TRIGGER TGI_NPS_PROGR_PROXIMA_ATU_DATA 2 before UPDATE OF FIMPROGR, INIPROGR ON NPS_PROGR_PROXIMA 3 FOR EACH ROW 4 begin 5 if :old.lotenum = :new.lotenum and ((:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr)) then 6 :new.fimprogr := :new.fimprogr; 7 :new.iniprogr := :new.iniprogr; 8 end if; 9 end; 10 / Trigger created SQL SQL insert into NPS_PROGR_PROXIMA values ( 1,2,5 ); 1 row inserted SQL commit; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGR LOTENUM -- -- -- 1 2 5 SQL SQL update NPS_PROGR_PROXIMA set fimprogr = 9, INIPROGR = 8 where lotenum = 5; 1 row updated SQL COMMIT; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGR LOTENUM -- -- -- 9 8 5 SQL SQL update NPS_PROGR_PROXIMA set fimprogr = 7, INIPROGR = 7 where lotenum = 7; 0 rows updated SQL COMMIT; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGR LOTENUM -- -- -- 9 8 5 Abraço Alvaro Em 22/09/08, Jean Carlo [EMAIL PROTECTED] escreveu: Ai está.. está é a ultima que tentei rodar.. agora está dando erro de conflito de recurso por causa do pragma autonomous_transaction, mais pra dar tabela mutante só tirar o pragma. CREATE OR REPLACE TRIGGER CECRISA_MATRIZ.TGI_NPS_PROGR_PROXIMA_ATU_DATA AFTER UPDATE OF FIMPROGR, INIPROGR ON NPS_PROGR_PROXIMA FOR EACH ROW declare PRAGMA AUTONOMOUS_TRANSACTION; begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update nps_progr_proxima set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:new.lotenum; end if; end; valeu Alvaro. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil From: Alvaro Luiz Mansor Neto Sent: Monday, September 22, 2008 3:37 PM To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Trigger com update. Jean. Manda a sintaxe do create or replace da trigger tb para eu poder te dar um help. Abraço ALvaro Em 22/09/08, Jean Carlo [EMAIL PROTECTED]jcthebrother%40hotmail.com escreveu: Tenho uma Trigger com o seguinte sql: begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update tabela set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:old.lotenum; end if; end; Essa trigger é acionada quando é atualizada um desses dois campos iniprogr ou fimprogr e presciso atualizar todos os registros que tem o mesmo lotenum do registro que estou atualizando. Porem qdo aciono o mesmo dá erro de tabela mutante pois atualiza o mesmo registro que estou alterando correto? Teria como fazer esse sql tirando o registro corrente Ou como posso resolver esse problema da tabela mutante?? OBS.: tentei utilizar o pragma autonomous_transaction mais não funcionou. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger com update.
Isso aí ... A trigger do jeito q estava estava errada pois o update é feito de outra maneira dentro de uma trigger como vc pôde observar. E dentro de uma trigger para não dar tabela mutante é só não referenciar no comando DML feito a tabela q a trigger esta referenciando ok ? Essa referencia já é implicita, ou seja, ela é feita automaticamente. Más precisando estamos aí. [ ]s Alvaro Em 24/09/08, Jean Carlo [EMAIL PROTECTED] escreveu: Bom dia, Alvaro. Muito Obrigado pela ajuda, acabei de fazer as alterações na trigger, conforme você me passou e funcionou perfeitamente. Valeu mesmo. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil From: Alvaro Luiz Mansor Neto Sent: Monday, September 22, 2008 5:03 PM To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Trigger com update. Jean. Tudo bem? O código fica o seguinte: SQL CREATE TABLE NPS_PROGR_PROXIMA ( FIMPROGR NUMBER, INIPROGR NUMBER, lotenum NUMBER ); Table created SQL SQL CREATE OR REPLACE TRIGGER TGI_NPS_PROGR_PROXIMA_ATU_DATA 2 before UPDATE OF FIMPROGR, INIPROGR ON NPS_PROGR_PROXIMA 3 FOR EACH ROW 4 begin 5 if :old.lotenum = :new.lotenum and ((:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr)) then 6 :new.fimprogr := :new.fimprogr; 7 :new.iniprogr := :new.iniprogr; 8 end if; 9 end; 10 / Trigger created SQL SQL insert into NPS_PROGR_PROXIMA values ( 1,2,5 ); 1 row inserted SQL commit; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGR LOTENUM -- -- -- 1 2 5 SQL SQL update NPS_PROGR_PROXIMA set fimprogr = 9, INIPROGR = 8 where lotenum = 5; 1 row updated SQL COMMIT; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGR LOTENUM -- -- -- 9 8 5 SQL SQL update NPS_PROGR_PROXIMA set fimprogr = 7, INIPROGR = 7 where lotenum = 7; 0 rows updated SQL COMMIT; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGR LOTENUM -- -- -- 9 8 5 Abraço Alvaro Em 22/09/08, Jean Carlo [EMAIL PROTECTED]jcthebrother%40hotmail.com escreveu: Ai está.. está é a ultima que tentei rodar.. agora está dando erro de conflito de recurso por causa do pragma autonomous_transaction, mais pra dar tabela mutante só tirar o pragma. CREATE OR REPLACE TRIGGER CECRISA_MATRIZ.TGI_NPS_PROGR_PROXIMA_ATU_DATA AFTER UPDATE OF FIMPROGR, INIPROGR ON NPS_PROGR_PROXIMA FOR EACH ROW declare PRAGMA AUTONOMOUS_TRANSACTION; begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update nps_progr_proxima set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:new.lotenum; end if; end; valeu Alvaro. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil From: Alvaro Luiz Mansor Neto Sent: Monday, September 22, 2008 3:37 PM To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br Subject: Re: [oracle_br] Trigger com update. Jean. Manda a sintaxe do create or replace da trigger tb para eu poder te dar um help. Abraço ALvaro Em 22/09/08, Jean Carlo [EMAIL PROTECTED]jcthebrother%40hotmail.com jcthebrother%40hotmail.com escreveu: Tenho uma Trigger com o seguinte sql: begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update tabela set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:old.lotenum; end if; end; Essa trigger é acionada quando é atualizada um desses dois campos iniprogr ou fimprogr e presciso atualizar todos os registros que tem o mesmo lotenum do registro que estou atualizando. Porem qdo aciono o mesmo dá erro de tabela mutante pois atualiza o mesmo registro que estou alterando correto? Teria como fazer esse sql tirando o registro corrente Ou como posso resolver esse problema da tabela mutante?? OBS.: tentei utilizar o pragma autonomous_transaction mais não funcionou. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta
Re: [oracle_br] Trigger com update.
Jean. Manda a sintaxe do create or replace da trigger tb para eu poder te dar um help. Abraço ALvaro Em 22/09/08, Jean Carlo [EMAIL PROTECTED] escreveu: Tenho uma Trigger com o seguinte sql: begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update tabela set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:old.lotenum; end if; end; Essa trigger é acionada quando é atualizada um desses dois campos iniprogr ou fimprogr e presciso atualizar todos os registros que tem o mesmo lotenum do registro que estou atualizando. Porem qdo aciono o mesmo dá erro de tabela mutante pois atualiza o mesmo registro que estou alterando correto? Teria como fazer esse sql tirando o registro corrente Ou como posso resolver esse problema da tabela mutante?? OBS.: tentei utilizar o pragma autonomous_transaction mais não funcionou. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger com update.
Ai está.. está é a ultima que tentei rodar.. agora está dando erro de conflito de recurso por causa do pragma autonomous_transaction, mais pra dar tabela mutante só tirar o pragma. CREATE OR REPLACE TRIGGER CECRISA_MATRIZ.TGI_NPS_PROGR_PROXIMA_ATU_DATA AFTER UPDATE OF FIMPROGR, INIPROGR ON NPS_PROGR_PROXIMA FOR EACH ROW declare PRAGMA AUTONOMOUS_TRANSACTION; begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update nps_progr_proxima set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:new.lotenum; end if; end; valeu Alvaro. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil From: Alvaro Luiz Mansor Neto Sent: Monday, September 22, 2008 3:37 PM To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Trigger com update. Jean. Manda a sintaxe do create or replace da trigger tb para eu poder te dar um help. Abraço ALvaro Em 22/09/08, Jean Carlo [EMAIL PROTECTED] escreveu: Tenho uma Trigger com o seguinte sql: begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update tabela set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:old.lotenum; end if; end; Essa trigger é acionada quando é atualizada um desses dois campos iniprogr ou fimprogr e presciso atualizar todos os registros que tem o mesmo lotenum do registro que estou atualizando. Porem qdo aciono o mesmo dá erro de tabela mutante pois atualiza o mesmo registro que estou alterando correto? Teria como fazer esse sql tirando o registro corrente Ou como posso resolver esse problema da tabela mutante?? OBS.: tentei utilizar o pragma autonomous_transaction mais não funcionou. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger com update.
Jean. Tudo bem? O código fica o seguinte: SQL CREATE TABLE NPS_PROGR_PROXIMA ( FIMPROGR NUMBER, INIPROGR NUMBER, lotenum NUMBER ); Table created SQL SQL CREATE OR REPLACE TRIGGER TGI_NPS_PROGR_PROXIMA_ATU_DATA 2 before UPDATE OF FIMPROGR, INIPROGR ON NPS_PROGR_PROXIMA 3 FOR EACH ROW 4 begin 5 if :old.lotenum = :new.lotenum and ((:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr)) then 6:new.fimprogr := :new.fimprogr; 7:new.iniprogr := :new.iniprogr; 8 end if; 9 end; 10 / Trigger created SQL SQL insert into NPS_PROGR_PROXIMA values ( 1,2,5 ); 1 row inserted SQL commit; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGRLOTENUM -- -- -- 1 2 5 SQL SQL update NPS_PROGR_PROXIMA set fimprogr = 9, INIPROGR = 8 where lotenum = 5; 1 row updated SQL COMMIT; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGRLOTENUM -- -- -- 9 8 5 SQL SQL update NPS_PROGR_PROXIMA set fimprogr = 7, INIPROGR = 7 where lotenum = 7; 0 rows updated SQL COMMIT; Commit complete SQL select * from NPS_PROGR_PROXIMA; FIMPROGR INIPROGRLOTENUM -- -- -- 9 8 5 Abraço Alvaro Em 22/09/08, Jean Carlo [EMAIL PROTECTED] escreveu: Ai está.. está é a ultima que tentei rodar.. agora está dando erro de conflito de recurso por causa do pragma autonomous_transaction, mais pra dar tabela mutante só tirar o pragma. CREATE OR REPLACE TRIGGER CECRISA_MATRIZ.TGI_NPS_PROGR_PROXIMA_ATU_DATA AFTER UPDATE OF FIMPROGR, INIPROGR ON NPS_PROGR_PROXIMA FOR EACH ROW declare PRAGMA AUTONOMOUS_TRANSACTION; begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update nps_progr_proxima set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:new.lotenum; end if; end; valeu Alvaro. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil From: Alvaro Luiz Mansor Neto Sent: Monday, September 22, 2008 3:37 PM To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Trigger com update. Jean. Manda a sintaxe do create or replace da trigger tb para eu poder te dar um help. Abraço ALvaro Em 22/09/08, Jean Carlo [EMAIL PROTECTED]jcthebrother%40hotmail.com escreveu: Tenho uma Trigger com o seguinte sql: begin if (:new.fimprogr :old.fimprogr) or (:new.iniprogr :old.iniprogr) then update tabela set fimprogr=:new.fimprogr, iniprogr=:new.iniprogr where lotenum=:old.lotenum; end if; end; Essa trigger é acionada quando é atualizada um desses dois campos iniprogr ou fimprogr e presciso atualizar todos os registros que tem o mesmo lotenum do registro que estou atualizando. Porem qdo aciono o mesmo dá erro de tabela mutante pois atualiza o mesmo registro que estou alterando correto? Teria como fazer esse sql tirando o registro corrente Ou como posso resolver esse problema da tabela mutante?? OBS.: tentei utilizar o pragma autonomous_transaction mais não funcionou. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL e Forms/Reports 6i Oracle. DBA Oracle Jr. em busca do OCA. Consultor Oracle Cecrisa/Portinari www.cecrisa.com.br +55 (48) 9604-6138 Criciúma, Santa Catarina - Brasil [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger after logon
Boa tarde Bruno, SELECT Upper(Module) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); Na boa, program pode ser mudado por um simples rename no EXE, um usuário mais malandrinho faz bypass nisso mole. create or replace trigger SYS.TRG_TESTE after logon on database declare Programa varchar2(100); begin SELECT Upper(Program) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); if Programa = 'TESTE.EXE' then raise_application_error(-20001, 'Não pode entrar'); end if; end; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 14:49:13 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: [oracle_br] Trigger after logon Galera. Estou tentanto usar uma trigger aftor logon para limitar acessos ao banco. Mas não esta dando certo. O que estou fazendo de errado? create or replace trigger TRG_TESTE after logon on database declare Programa varchar2(100); begin SELECT Upper(Program) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); if Programa = 'TESTE.EXE' then raise_application_error(-20001, 'Não pode entrar'); end if; end; [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos Na Oi Internet você ganha ou ganha. Além de acesso grátis com qualidade, você pode ter contas ilimitadas de email com 1 giga cada uma, suporte grátis e muito mais. Baixe grátis o Discador Oi em http://www.oi.com.br/discador e comece a ganhar. Agora, se o seu negócio é voar alto na internet, assine Oi Internet Banda Larga e ganhe o modem grátis. Clique em http://www.oi.com.br/bandalarga e aproveite essa moleza!
Re: [oracle_br] Trigger after logon
Rodrigo. Obrigado pela atenção, mas no meu caso, não preciso se preocupar com esse mudança no nome do exe. E mesmo criando a triggre para o SYS não deu certo. Eu criei um log na triggre, ele entra nela, faz o select certo, retorna o valor correto e entra no if, mas por algum motivo ele não dar o erro e nem corta a conexão. Valeu. Bruno Fantin. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:00 PM Subject: Re: [oracle_br] Trigger after logon Boa tarde Bruno, SELECT Upper(Module) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); Na boa, program pode ser mudado por um simples rename no EXE, um usuário mais malandrinho faz bypass nisso mole. create or replace trigger SYS.TRG_TESTE after logon on database declare Programa varchar2(100); begin SELECT Upper(Program) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); if Programa = 'TESTE.EXE' then raise_application_error(-20001, 'Não pode entrar'); end if; end; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 14:49:13 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: [oracle_br] Trigger after logon Galera. Estou tentanto usar uma trigger aftor logon para limitar acessos ao banco. Mas não esta dando certo. O que estou fazendo de errado? create or replace trigger TRG_TESTE after logon on database declare Programa varchar2(100); begin SELECT Upper(Program) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); if Programa = 'TESTE.EXE' then raise_application_error(-20001, 'Não pode entrar'); end if; end; [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos -- Na Oi Internet você ganha ou ganha. Além de acesso grátis com qualidade, você pode ter contas ilimitadas de email com 1 giga cada uma, suporte grátis e muito mais. Baixe grátis o Discador Oi em http://www.oi.com.br/discador e comece a ganhar. Agora, se o seu negócio é voar alto na internet, assine Oi Internet Banda Larga e ganhe o modem grátis. Clique em http://www.oi.com.br/bandalarga e aproveite essa moleza! [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger after logon
Bruno, Aqui tem uma pronta, acho que na sua só falta um exception, essa manda e-mail para vc caso alguém esteja tentando acesso. CREATE OR REPLACE TRIGGER SYS.user_login_trig AFTER LOGON ON DATABASE DECLARE v_username SYS.gv_$session.username%TYPE; v_machineSYS.gv_$session.machine%TYPE; v_commandSYS.gv_$session.command%TYPE; v_programSYS.gv_$session.program%TYPE; v_osuser SYS.gv_$session.osuser%TYPE; v_module SYS.gv_$session.module%TYPE; v_hora NUMBER; v_sidSYS.gv_$session.SID%TYPE; v_serial#SYS.gv_$session.serial#%TYPE; v_string varchar2(1000); v_connutl_smtp.connection; v_crlfvarchar2 (2) := chr (13) || chr (10); v_mesgvarchar2 (1000); v_instanceSYS.v_$instance.INSTANCE_NAME%TYPE; BEGIN SELECT instance_name into v_instance from SYS.v_$instance; SELECT username, machine, NVL (command, '0'), NVL (program, 'OAS10G'), TO_NUMBER (TO_CHAR (SYSDATE, 'HH24')), NVL (osuser, 'OAS10G'), MODULE, SID, serial# INTO v_username, v_machine, v_command, v_program, v_hora, v_osuser, v_module, v_sid, v_serial# FROM SYS.gv_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 AND ROWNUM = 1; IF ( v_username = 'USUARIO_SUA_APPS' AND UPPER(v_module) = 'TESTE.EXE') THEN -- Bloqueia conexão e envia email v_conn := utl_smtp.open_connection ('ip_seu_servidor_correio', 25); utl_smtp.helo (v_conn, 'ip_seu_servidor_correio'); utl_smtp.mail (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); v_mesg := 'Date: ' || to_char (sysdate, 'dd Mon yy hh24:mi:ss') || v_crlf || 'From: Mufalani [EMAIL PROTECTED] ' || v_crlf || 'Subject: Tentativa de acesso a base de dados' || v_crlf || '' || v_crlf || '***' || '' || v_crlf || ' O usuário ' || v_osuser|| '/'|| v_username|| ' tentou acesso a base de dados da máquina '|| v_machine || '' || v_crlf || ' com o programa '|| v_program || '' || v_crlf || ' na instancia '|| v_instance || '' || v_crlf || ' Como ele nao deveria ter acesso foi negado!!! ' || v_crlf || '' || v_crlf || 'Atenciosamente,' || v_crlf || 'Mufalani' || v_crlf || '***'; utl_smtp.data (v_conn, v_mesg); utl_smtp.quit (v_conn); raise_application_error (-2, 'Não é permitido o acesso usando este aplicativo!' ); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 15:06:18 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: Re: [oracle_br] Trigger after logon Rodrigo. Obrigado pela atenção, mas no meu caso, não preciso se preocupar com esse mudança no nome do exe. E mesmo criando a triggre para o SYS não deu certo. Eu criei um log na triggre, ele entra nela, faz o select certo, retorna o valor correto e entra no if, mas por algum motivo ele não dar o erro e nem corta a conexão. Valeu. Bruno Fantin. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:00 PM Subject: Re: [oracle_br] Trigger after logon Boa tarde Bruno, SELECT Upper(Module) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); Na boa, program pode ser mudado por um simples rename no EXE, um usuário mais malandrinho faz bypass nisso mole. create or replace trigger SYS.TRG_TESTE after logon on database declare Programa varchar2(100); begin SELECT Upper(Program) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); if Programa = 'TESTE.EXE' then raise_application_error(-20001, 'Não pode entrar'); end if; end; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 14:49:13 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: [oracle_br] Trigger after logon Galera. Estou tentanto usar uma trigger aftor logon para limitar acessos ao banco. Mas não esta dando certo. O que estou fazendo de errado? create or replace trigger TRG_TESTE after logon on database declare Programa varchar2(100
Re: [oracle_br] Trigger after logon
Rodrigo Com você essa triggre funciona? Eu implantei ele dessa mesma forma, recebi o email mais ele não bloqueou o programa e nem retornou nenhuma mensagem por programa. Só para constar. O banco é o 10g 10.2.0.4.0 standard e a aplicação que estou testando foi criada por mim mesmo, ele somente abre a conexão com o banco e faz um select simples. Falou. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:18 PM Subject: Re: [oracle_br] Trigger after logon Bruno, Aqui tem uma pronta, acho que na sua só falta um exception, essa manda e-mail para vc caso alguém esteja tentando acesso. CREATE OR REPLACE TRIGGER SYS.user_login_trig AFTER LOGON ON DATABASE DECLARE v_username SYS.gv_$session.username%TYPE; v_machine SYS.gv_$session.machine%TYPE; v_command SYS.gv_$session.command%TYPE; v_program SYS.gv_$session.program%TYPE; v_osuser SYS.gv_$session.osuser%TYPE; v_module SYS.gv_$session.module%TYPE; v_hora NUMBER; v_sid SYS.gv_$session.SID%TYPE; v_serial# SYS.gv_$session.serial#%TYPE; v_string varchar2(1000); v_conn utl_smtp.connection; v_crlf varchar2 (2) := chr (13) || chr (10); v_mesg varchar2 (1000); v_instance SYS.v_$instance.INSTANCE_NAME%TYPE; BEGIN SELECT instance_name into v_instance from SYS.v_$instance; SELECT username, machine, NVL (command, '0'), NVL (program, 'OAS10G'), TO_NUMBER (TO_CHAR (SYSDATE, 'HH24')), NVL (osuser, 'OAS10G'), MODULE, SID, serial# INTO v_username, v_machine, v_command, v_program, v_hora, v_osuser, v_module, v_sid, v_serial# FROM SYS.gv_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 AND ROWNUM = 1; IF ( v_username = 'USUARIO_SUA_APPS' AND UPPER(v_module) = 'TESTE.EXE') THEN -- Bloqueia conexão e envia email v_conn := utl_smtp.open_connection ('ip_seu_servidor_correio', 25); utl_smtp.helo (v_conn, 'ip_seu_servidor_correio'); utl_smtp.mail (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); v_mesg := 'Date: ' || to_char (sysdate, 'dd Mon yy hh24:mi:ss') || v_crlf || 'From: Mufalani [EMAIL PROTECTED] ' || v_crlf || 'Subject: Tentativa de acesso a base de dados' || v_crlf || '' || v_crlf || '***' || '' || v_crlf || ' O usuário ' || v_osuser|| '/'|| v_username|| ' tentou acesso a base de dados da máquina '|| v_machine || '' || v_crlf || ' com o programa '|| v_program || '' || v_crlf || ' na instancia '|| v_instance || '' || v_crlf || ' Como ele nao deveria ter acesso foi negado!!! ' || v_crlf || '' || v_crlf || 'Atenciosamente,' || v_crlf || 'Mufalani' || v_crlf || '***'; utl_smtp.data (v_conn, v_mesg); utl_smtp.quit (v_conn); raise_application_error (-2, 'Não é permitido o acesso usando este aplicativo!' ); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 15:06:18 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: Re: [oracle_br] Trigger after logon Rodrigo. Obrigado pela atenção, mas no meu caso, não preciso se preocupar com esse mudança no nome do exe. E mesmo criando a triggre para o SYS não deu certo. Eu criei um log na triggre, ele entra nela, faz o select certo, retorna o valor correto e entra no if, mas por algum motivo ele não dar o erro e nem corta a conexão. Valeu. Bruno Fantin. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:00 PM Subject: Re: [oracle_br] Trigger after logon Boa tarde Bruno, SELECT Upper(Module) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); Na boa, program pode ser mudado por um simples rename no EXE, um usuário mais malandrinho faz bypass nisso mole. create or replace trigger SYS.TRG_TESTE after logon on database declare Programa varchar2(100); begin SELECT Upper(Program) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); if Programa = 'TESTE.EXE' then raise_application_error(-20001, 'Não pode entrar'); end if; end; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 14:49:13 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: [oracle_br] Trigger after logon Galera. Estou tentanto usar uma trigger aftor logon para limitar acessos ao banco. Mas não esta dando certo. O que estou fazendo de errado? create or replace
Re: [oracle_br] Trigger after logon
Descobrir porque não funciona. Se o usuario for da rule DBA ela não funciona. http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:1844531724208 - Original Message - From: Bruno Fantin To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:48 PM Subject: Re: [oracle_br] Trigger after logon Rodrigo Com você essa triggre funciona? Eu implantei ele dessa mesma forma, recebi o email mais ele não bloqueou o programa e nem retornou nenhuma mensagem por programa. Só para constar. O banco é o 10g 10.2.0.4.0 standard e a aplicação que estou testando foi criada por mim mesmo, ele somente abre a conexão com o banco e faz um select simples. Falou. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:18 PM Subject: Re: [oracle_br] Trigger after logon Bruno, Aqui tem uma pronta, acho que na sua só falta um exception, essa manda e-mail para vc caso alguém esteja tentando acesso. CREATE OR REPLACE TRIGGER SYS.user_login_trig AFTER LOGON ON DATABASE DECLARE v_username SYS.gv_$session.username%TYPE; v_machine SYS.gv_$session.machine%TYPE; v_command SYS.gv_$session.command%TYPE; v_program SYS.gv_$session.program%TYPE; v_osuser SYS.gv_$session.osuser%TYPE; v_module SYS.gv_$session.module%TYPE; v_hora NUMBER; v_sid SYS.gv_$session.SID%TYPE; v_serial# SYS.gv_$session.serial#%TYPE; v_string varchar2(1000); v_conn utl_smtp.connection; v_crlf varchar2 (2) := chr (13) || chr (10); v_mesg varchar2 (1000); v_instance SYS.v_$instance.INSTANCE_NAME%TYPE; BEGIN SELECT instance_name into v_instance from SYS.v_$instance; SELECT username, machine, NVL (command, '0'), NVL (program, 'OAS10G'), TO_NUMBER (TO_CHAR (SYSDATE, 'HH24')), NVL (osuser, 'OAS10G'), MODULE, SID, serial# INTO v_username, v_machine, v_command, v_program, v_hora, v_osuser, v_module, v_sid, v_serial# FROM SYS.gv_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 AND ROWNUM = 1; IF ( v_username = 'USUARIO_SUA_APPS' AND UPPER(v_module) = 'TESTE.EXE') THEN -- Bloqueia conexão e envia email v_conn := utl_smtp.open_connection ('ip_seu_servidor_correio', 25); utl_smtp.helo (v_conn, 'ip_seu_servidor_correio'); utl_smtp.mail (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); v_mesg := 'Date: ' || to_char (sysdate, 'dd Mon yy hh24:mi:ss') || v_crlf || 'From: Mufalani [EMAIL PROTECTED] ' || v_crlf || 'Subject: Tentativa de acesso a base de dados' || v_crlf || '' || v_crlf || '***' || '' || v_crlf || ' O usuário ' || v_osuser|| '/'|| v_username|| ' tentou acesso a base de dados da máquina '|| v_machine || '' || v_crlf || ' com o programa '|| v_program || '' || v_crlf || ' na instancia '|| v_instance || '' || v_crlf || ' Como ele nao deveria ter acesso foi negado!!! ' || v_crlf || '' || v_crlf || 'Atenciosamente,' || v_crlf || 'Mufalani' || v_crlf || '***'; utl_smtp.data (v_conn, v_mesg); utl_smtp.quit (v_conn); raise_application_error (-2, 'Não é permitido o acesso usando este aplicativo!' ); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 15:06:18 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: Re: [oracle_br] Trigger after logon Rodrigo. Obrigado pela atenção, mas no meu caso, não preciso se preocupar com esse mudança no nome do exe. E mesmo criando a triggre para o SYS não deu certo. Eu criei um log na triggre, ele entra nela, faz o select certo, retorna o valor correto e entra no if, mas por algum motivo ele não dar o erro e nem corta a conexão. Valeu. Bruno Fantin. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:00 PM Subject: Re: [oracle_br] Trigger after logon Boa tarde Bruno, SELECT Upper(Module) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); Na boa, program pode ser mudado por um simples rename no EXE, um usuário mais malandrinho faz bypass nisso mole. create or replace trigger SYS.TRG_TESTE after logon on database declare Programa varchar2(100); begin SELECT Upper(Program) INTO Programa FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); if Programa = 'TESTE.EXE' then raise_application_error(-20001, 'Não pode entrar'); end if; end; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED
Re: [oracle_br] Trigger after logon
Meu caro... Aí é de acordo com o teste IF (v_username = 'USUARIO_SUA_APPS' AND UPPER(v_module) = 'TESTE.EXE') THEN -- Bloqueia conexão e envia email No meu caso eu faço teste no usuário e no módulo como eu havia lhe falado quando você se conecta via sqlplus e faz o select da trigger o que aparece como o EXE logado aparece o que? Se não tivesse funcionando, com certeza não iria mandar para o fórum. Eu só alterei os dados para não divulgar dados da empresa, mas essa trigger está em produção e funciona sem problemas para o que eu quero. Acabei de realizar um teste... e recebí isso pelo sqlplus por exemplo. ORA-00604: error ocurred at recursive SQL level 1 ORA-2: Não é permitido o acesso usando este aplicativo! ORA-06512: at line 80 Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 15:48:53 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: Re: [oracle_br] Trigger after logon Rodrigo Com você essa triggre funciona? Eu implantei ele dessa mesma forma, recebi o email mais ele não bloqueou o programa e nem retornou nenhuma mensagem por programa. Só para constar. O banco é o 10g 10.2.0.4.0 standard e a aplicação que estou testando foi criada por mim mesmo, ele somente abre a conexão com o banco e faz um select simples. Falou. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:18 PM Subject: Re: [oracle_br] Trigger after logon Bruno, Aqui tem uma pronta, acho que na sua só falta um exception, essa manda e-mail para vc caso alguém esteja tentando acesso. CREATE OR REPLACE TRIGGER SYS.user_login_trig AFTER LOGON ON DATABASE DECLARE v_username SYS.gv_$session.username%TYPE; v_machine SYS.gv_$session.machine%TYPE; v_command SYS.gv_$session.command%TYPE; v_program SYS.gv_$session.program%TYPE; v_osuser SYS.gv_$session.osuser%TYPE; v_module SYS.gv_$session.module%TYPE; v_hora NUMBER; v_sid SYS.gv_$session.SID%TYPE; v_serial# SYS.gv_$session.serial#%TYPE; v_string varchar2(1000); v_conn utl_smtp.connection; v_crlf varchar2 (2) := chr (13) || chr (10); v_mesg varchar2 (1000); v_instance SYS.v_$instance.INSTANCE_NAME%TYPE; BEGIN SELECT instance_name into v_instance from SYS.v_$instance; SELECT username, machine, NVL (command, '0'), NVL (program, 'OAS10G'), TO_NUMBER (TO_CHAR (SYSDATE, 'HH24')), NVL (osuser, 'OAS10G'), MODULE, SID, serial# INTO v_username, v_machine, v_command, v_program, v_hora, v_osuser, v_module, v_sid, v_serial# FROM SYS.gv_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 AND ROWNUM = 1; IF ( v_username = 'USUARIO_SUA_APPS' AND UPPER(v_module) = 'TESTE.EXE') THEN -- Bloqueia conexão e envia email v_conn := utl_smtp.open_connection ('ip_seu_servidor_correio', 25); utl_smtp.helo (v_conn, 'ip_seu_servidor_correio'); utl_smtp.mail (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); v_mesg := 'Date: ' || to_char (sysdate, 'dd Mon yy hh24:mi:ss') || v_crlf || 'From: Mufalani [EMAIL PROTECTED] ' || v_crlf || 'Subject: Tentativa de acesso a base de dados' || v_crlf || '' || v_crlf || '***' || '' || v_crlf || ' O usuário ' || v_osuser|| '/'|| v_username|| ' tentou acesso a base de dados da máquina '|| v_machine || '' || v_crlf || ' com o programa '|| v_program || '' || v_crlf || ' na instancia '|| v_instance || '' || v_crlf || ' Como ele nao deveria ter acesso foi negado!!! ' || v_crlf || '' || v_crlf || 'Atenciosamente,' || v_crlf || 'Mufalani' || v_crlf || '***'; utl_smtp.data (v_conn, v_mesg); utl_smtp.quit (v_conn); raise_application_error (-2, 'Não é permitido o acesso usando este aplicativo!' ); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 15:06:18 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: Re: [oracle_br] Trigger after logon Rodrigo. Obrigado pela atenção, mas no meu caso, não preciso se preocupar com esse mudança no nome do exe. E mesmo criando a triggre para o SYS não deu certo. Eu criei um log na triggre, ele entra nela, faz o select certo, retorna o valor correto e entra no if, mas por algum motivo ele não dar o erro e nem corta a conexão. Valeu. Bruno Fantin. - Original Message - From: Rodrigo
Re: [oracle_br] Trigger after logon
Rodrigo. Muito obrigado pela ajuda, mais como mandei no email anterior, o problema é com o usuário que é DBA. Sem mais. Bruno Fantin. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 5:35 PM Subject: Re: [oracle_br] Trigger after logon Meu caro... Aí é de acordo com o teste IF (v_username = 'USUARIO_SUA_APPS' AND UPPER(v_module) = 'TESTE.EXE') THEN -- Bloqueia conexão e envia email No meu caso eu faço teste no usuário e no módulo como eu havia lhe falado quando você se conecta via sqlplus e faz o select da trigger o que aparece como o EXE logado aparece o que? Se não tivesse funcionando, com certeza não iria mandar para o fórum. Eu só alterei os dados para não divulgar dados da empresa, mas essa trigger está em produção e funciona sem problemas para o que eu quero. Acabei de realizar um teste... e recebí isso pelo sqlplus por exemplo. ORA-00604: error ocurred at recursive SQL level 1 ORA-2: Não é permitido o acesso usando este aplicativo! ORA-06512: at line 80 Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 15:48:53 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: Re: [oracle_br] Trigger after logon Rodrigo Com você essa triggre funciona? Eu implantei ele dessa mesma forma, recebi o email mais ele não bloqueou o programa e nem retornou nenhuma mensagem por programa. Só para constar. O banco é o 10g 10.2.0.4.0 standard e a aplicação que estou testando foi criada por mim mesmo, ele somente abre a conexão com o banco e faz um select simples. Falou. - Original Message - From: Rodrigo Mufalani To: oracle_br@yahoogrupos.com.br Sent: Tuesday, September 16, 2008 3:18 PM Subject: Re: [oracle_br] Trigger after logon Bruno, Aqui tem uma pronta, acho que na sua só falta um exception, essa manda e-mail para vc caso alguém esteja tentando acesso. CREATE OR REPLACE TRIGGER SYS.user_login_trig AFTER LOGON ON DATABASE DECLARE v_username SYS.gv_$session.username%TYPE; v_machine SYS.gv_$session.machine%TYPE; v_command SYS.gv_$session.command%TYPE; v_program SYS.gv_$session.program%TYPE; v_osuser SYS.gv_$session.osuser%TYPE; v_module SYS.gv_$session.module%TYPE; v_hora NUMBER; v_sid SYS.gv_$session.SID%TYPE; v_serial# SYS.gv_$session.serial#%TYPE; v_string varchar2(1000); v_conn utl_smtp.connection; v_crlf varchar2 (2) := chr (13) || chr (10); v_mesg varchar2 (1000); v_instance SYS.v_$instance.INSTANCE_NAME%TYPE; BEGIN SELECT instance_name into v_instance from SYS.v_$instance; SELECT username, machine, NVL (command, '0'), NVL (program, 'OAS10G'), TO_NUMBER (TO_CHAR (SYSDATE, 'HH24')), NVL (osuser, 'OAS10G'), MODULE, SID, serial# INTO v_username, v_machine, v_command, v_program, v_hora, v_osuser, v_module, v_sid, v_serial# FROM SYS.gv_$session WHERE audsid = USERENV ('SESSIONID') AND audsid != 0 AND ROWNUM = 1; IF ( v_username = 'USUARIO_SUA_APPS' AND UPPER(v_module) = 'TESTE.EXE') THEN -- Bloqueia conexão e envia email v_conn := utl_smtp.open_connection ('ip_seu_servidor_correio', 25); utl_smtp.helo (v_conn, 'ip_seu_servidor_correio'); utl_smtp.mail (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]'); v_mesg := 'Date: ' || to_char (sysdate, 'dd Mon yy hh24:mi:ss') || v_crlf || 'From: Mufalani [EMAIL PROTECTED] ' || v_crlf || 'Subject: Tentativa de acesso a base de dados' || v_crlf || '' || v_crlf || '***' || '' || v_crlf || ' O usuário ' || v_osuser|| '/'|| v_username|| ' tentou acesso a base de dados da máquina '|| v_machine || '' || v_crlf || ' com o programa '|| v_program || '' || v_crlf || ' na instancia '|| v_instance || '' || v_crlf || ' Como ele nao deveria ter acesso foi negado!!! ' || v_crlf || '' || v_crlf || 'Atenciosamente,' || v_crlf || 'Mufalani' || v_crlf || '***'; utl_smtp.data (v_conn, v_mesg); utl_smtp.quit (v_conn); raise_application_error (-2, 'Não é permitido o acesso usando este aplicativo!' ); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / Atenciosamente, Rodrigo Mufalani OCP 10g 11g [EMAIL PROTECTED] http://mufalani.blogspot.com Mensagem Original: Data: 15:06:18 16/09/2008 De: Bruno Fantin [EMAIL PROTECTED] Assunto: Re: [oracle_br] Trigger after logon Rodrigo. Obrigado pela atenção, mas no meu caso, não preciso se preocupar
Re: [oracle_br] trigger em sql server
Você pode utilizar os recursos de FGA (fine-grained auditing), dá uma olhada em: http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/auditing.htm#DBSEG525 Lá já tem muita coisa de exemplo, e isso é bastante poderoso, se quiser pode até fazer auditoria em selects com cláusulas específicas. 2008/7/3 Eduardo [EMAIL PROTECTED]: Seria melhor você especificar a pergunta, senão não dá para entender o que você quer. - Original Message - From: fabiana_lopes123 To: oracle_br@yahoogrupos.com.br Sent: Wednesday, July 02, 2008 3:09 PM Subject: [oracle_br] trigger em sql server Boa tarde a todos, Eu estou tentando fazer um trigger para auditoria em uma tabela, porém não achei comando equivalente ao deleting e ao inserting. Se alguem puder me ajudar eu agradeço. Obrigada =] -- No virus found in this incoming message. Checked by AVG. Version: 7.5.526 / Virus Database: 270.4.3/1524 - Release Date: 28/6/2008 19:42 [As partes desta mensagem que não continham texto foram removidas] -- Rosivaldo Azevedo Ramalho mail/msn: [EMAIL PROTECTED] web: http://rosivaldo.goodiez.net +55 83 8893 8281
Re: [oracle_br] trigger em sql server
CREATE TRIGGER [TRIGGER NAME] ON [dbo].[TABELA] FOR INSERT, UPDATE, DELETE AS Deixe apenas as opções que quiser fabiana_lopes123 wrote: Boa tarde a todos, Eu estou tentando fazer um trigger para auditoria em uma tabela, porém não achei comando equivalente ao deleting e ao inserting. Se alguem puder me ajudar eu agradeço. Obrigada =]
Re: [oracle_br] trigger em sql server
Seria melhor você especificar a pergunta, senão não dá para entender o que você quer. - Original Message - From: fabiana_lopes123 To: oracle_br@yahoogrupos.com.br Sent: Wednesday, July 02, 2008 3:09 PM Subject: [oracle_br] trigger em sql server Boa tarde a todos, Eu estou tentando fazer um trigger para auditoria em uma tabela, porém não achei comando equivalente ao deleting e ao inserting. Se alguem puder me ajudar eu agradeço. Obrigada =] -- No virus found in this incoming message. Checked by AVG. Version: 7.5.526 / Virus Database: 270.4.3/1524 - Release Date: 28/6/2008 19:42 [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para matar usuarios
Voce nao precisa criar isso. Voce pode criar um PROFILE que tem o tempo maximo de conexão que voce quer que ele tenha. E depois definir esse profile como default dos usuarios que voce quer derrubar. Pode ainda configurar tempo máximo de idle, uso de CPU por usuario, sessao, uso de PGA por sessao, etc Abcos! Flavio Salvador/BA - Original Message - From: Eduardo To: oracle_br@yahoogrupos.com.br Sent: Tuesday, March 04, 2008 2:30 PM Subject: [oracle_br] Trigger para matar usuarios Senhores, gostaria de criar uma trigger para derrubar os usuarios depois um certo tempo logado no banco. Alguém poderia me passar o caminho das pedras? create or replace trigger you_may_not_login after logon on database begin Aqui eu usaria a V$SESSION ?? Algum while?? end if; end; Obrigado. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para matar usuarios
manda mastigado que ele pode errar... na boa.. Em 04/03/08, Flavio Cardoso [EMAIL PROTECTED] escreveu: Voce nao precisa criar isso. Voce pode criar um PROFILE que tem o tempo maximo de conexão que voce quer que ele tenha. E depois definir esse profile como default dos usuarios que voce quer derrubar. Pode ainda configurar tempo máximo de idle, uso de CPU por usuario, sessao, uso de PGA por sessao, etc Abcos! Flavio Salvador/BA - Original Message - From: Eduardo To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Tuesday, March 04, 2008 2:30 PM Subject: [oracle_br] Trigger para matar usuarios Senhores, gostaria de criar uma trigger para derrubar os usuarios depois um certo tempo logado no banco. Alguém poderia me passar o caminho das pedras? create or replace trigger you_may_not_login after logon on database begin Aqui eu usaria a V$SESSION ?? Algum while?? end if; end; Obrigado. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para matar usuarios
Tudo bem, Nesse site tá bem explicado: http://www.psoug.org/reference/profiles.html Lembre-se que voce deve colocar no seu init.ora o seguinte parametro antes de usar essas opções: RESOURCE_LIMIT=TRUE Mas lembre-se: Use essa feature com cuidado!! Abcos, Flavio - Original Message - From: Rogério Falconi To: oracle_br@yahoogrupos.com.br Sent: Tuesday, March 04, 2008 3:49 PM Subject: Re: [oracle_br] Trigger para matar usuarios manda mastigado que ele pode errar... na boa.. Em 04/03/08, Flavio Cardoso [EMAIL PROTECTED] escreveu: Voce nao precisa criar isso. Voce pode criar um PROFILE que tem o tempo maximo de conexão que voce quer que ele tenha. E depois definir esse profile como default dos usuarios que voce quer derrubar. Pode ainda configurar tempo máximo de idle, uso de CPU por usuario, sessao, uso de PGA por sessao, etc Abcos! Flavio Salvador/BA - Original Message - From: Eduardo To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Tuesday, March 04, 2008 2:30 PM Subject: [oracle_br] Trigger para matar usuarios Senhores, gostaria de criar uma trigger para derrubar os usuarios depois um certo tempo logado no banco. Alguém poderia me passar o caminho das pedras? create or replace trigger you_may_not_login after logon on database begin Aqui eu usaria a V$SESSION ?? Algum while?? end if; end; Obrigado. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] TRIGGER!!!!
Fala Manoel, Se você estiver utilizando DIRECT PATH (parâmetro direct=true), então a trigger não será executada. Em 28/01/08, Manoel [EMAIL PROTECTED] escreveu: Saudações, Tenho um Sistema que faz carga de arquivos via sqlloder o dia todo uma duvida se ativar uma trigger ater insert para para atualizar um campo dessa mesma tabela onde as cargas poderei ter conflitos na gravação dessa tabela? Desde já grato pela atenção de todos -- Atenciosamente, Gleyson Melo Oracle Database 10g Administrator Certified Professional [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger
Beleza Renato, Segui sua proposta de solução e funcionou. Realmente os scripts de criação das tabelas que enviei estavam incompletos (conforme também citaram Bruno e Rafael), mas no banco estavam criados os campos corretamente. Renato Deggau [EMAIL PROTECTED] escreveu: Valdair algumas considerações: - o script que voce mandou de criação de tabelas não referencia a coluna CD_UF que voce usa na trigger; - voce tem certeza que a sua trigger compilou? Voce recebeu a msg Gatilho criado.? ou recebeu Advertência: Gatilho criado com erros de compilação.? o Codigo que voce mandou nao compila com as tabelas mandadas - finalmente, a proposta de solução do teu problema: no teu comando insert da trigger, para os campos da tabela atual que devem ser inseridos, voce deve referencia-los como :new, pois referencia-se ao valores da tabela atual que está sofrendo a inserção obs: tireu a UF da trigger abaixo pois nao constava da tabela CREATE OR REPLACE TRIGGER TRG_ONINSCIDADE BEFORE INSERT ON CIDADE FOR EACH ROW BEGIN INSERT INTO CIDADE2(CD_CID,NM_CID) VALUES(:new.CD_CID, :new.NM_CId); END TRG_ONINSCIDADE; Renato Deggau On 5/11/07, valdair_matos [EMAIL PROTECTED] wrote: Olá, sou novato no grupo e também no oracle estou tentando aprender a criação e utilização de triggers nao consigo entender o que há de errado na trigger abaixo CREATE OR REPLACE TRIGGER UNISUL.TRG_ONINSCIDADE BEFORE INSERT ON UNISUL.CIDADE FOR EACH ROW BEGIN INSERT INTO UNISUL.CIDADE2(CD_CID,NM_CID,CD_UF) VALUES(UNISUL.CIDADE.CD_CID,UNISUL.CIDADE.NM_CID,UNISUL.CIDADE.CD_UF); END UNISUL.TRG_ONINSCIDADE; o código acima é um exemplo do que estou querendo fazer: quando inserir um registro em uma tabela automaticamente inserir o registro em uma segunda tabela. Consigo compilar, mas quando vou inserir um registro na tabela cidade ocorre o erro: ORA-04098: gatilho 'UNISUL.TRG_ONINSCIDADE' é inválido e a revalidação falhou codigo das tabelas Create table CIDADE ( CD_CID Number(5,0) NOT NULL , NM_CID Varchar2 (40) NOT NULL , Constraint CIDADE_PK primary key (CD_CID) ) Create table CIDADE2 ( CD_CID Number(5,0) NOT NULL , NM_CID Varchar2 (40) NOT NULL , Constraint CIDADE_PK primary key (CD_CID) ) [As partes desta mensagem que não continham texto foram removidas] - Valdair Matos Braço do Norte - SC - Brasil __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger
Bom, você criou a tabela cidade2 com os campos cd_cid e nm_cid , e no insert você tenta inserir cd_cid,nm_cid e cd_uf (?) . O campo cd_uf não existe na tabela cidade2 nem na tabela cidade. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: valdair_matos To: oracle_br@yahoogrupos.com.br Sent: Friday, May 11, 2007 1:02 AM Subject: [oracle_br] Trigger Olá, sou novato no grupo e também no oracle estou tentando aprender a criação e utilização de triggers nao consigo entender o que há de errado na trigger abaixo CREATE OR REPLACE TRIGGER UNISUL.TRG_ONINSCIDADE BEFORE INSERT ON UNISUL.CIDADE FOR EACH ROW BEGIN INSERT INTO UNISUL.CIDADE2(CD_CID,NM_CID,CD_UF) VALUES(UNISUL.CIDADE.CD_CID,UNISUL.CIDADE.NM_CID,UNISUL.CIDADE.CD_UF); END UNISUL.TRG_ONINSCIDADE; o código acima é um exemplo do que estou querendo fazer: quando inserir um registro em uma tabela automaticamente inserir o registro em uma segunda tabela. Consigo compilar, mas quando vou inserir um registro na tabela cidade ocorre o erro: ORA-04098: gatilho 'UNISUL.TRG_ONINSCIDADE' é inválido e a revalidação falhou codigo das tabelas Create table CIDADE ( CD_CID Number(5,0) NOT NULL , NM_CID Varchar2 (40) NOT NULL , Constraint CIDADE_PK primary key (CD_CID) ) Create table CIDADE2 ( CD_CID Number(5,0) NOT NULL , NM_CID Varchar2 (40) NOT NULL , Constraint CIDADE_PK primary key (CD_CID) ) -- Esta mensagem foi verificada pelo E-mail Protegido Terra. Scan engine: McAfee VirusScan / Atualizado em 10/05/2007 / Versão: 5.1.00/5028 Proteja o seu e-mail Terra: http://mail.terra.com.br/ [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger
Valdair algumas considerações: - o script que voce mandou de criação de tabelas não referencia a coluna CD_UF que voce usa na trigger; - voce tem certeza que a sua trigger compilou? Voce recebeu a msg Gatilho criado.? ou recebeu Advertência: Gatilho criado com erros de compilação.? o Codigo que voce mandou nao compila com as tabelas mandadas - finalmente, a proposta de solução do teu problema: no teu comando insert da trigger, para os campos da tabela atual que devem ser inseridos, voce deve referencia-los como :new, pois referencia-se ao valores da tabela atual que está sofrendo a inserção obs: tireu a UF da trigger abaixo pois nao constava da tabela CREATE OR REPLACE TRIGGER TRG_ONINSCIDADE BEFORE INSERT ON CIDADE FOR EACH ROW BEGIN INSERT INTO CIDADE2(CD_CID,NM_CID) VALUES(:new.CD_CID, :new.NM_CId); END TRG_ONINSCIDADE; Renato Deggau On 5/11/07, valdair_matos [EMAIL PROTECTED] wrote: Olá, sou novato no grupo e também no oracle estou tentando aprender a criação e utilização de triggers nao consigo entender o que há de errado na trigger abaixo CREATE OR REPLACE TRIGGER UNISUL.TRG_ONINSCIDADE BEFORE INSERT ON UNISUL.CIDADE FOR EACH ROW BEGIN INSERT INTO UNISUL.CIDADE2(CD_CID,NM_CID,CD_UF) VALUES(UNISUL.CIDADE.CD_CID,UNISUL.CIDADE.NM_CID,UNISUL.CIDADE.CD_UF); END UNISUL.TRG_ONINSCIDADE; o código acima é um exemplo do que estou querendo fazer: quando inserir um registro em uma tabela automaticamente inserir o registro em uma segunda tabela. Consigo compilar, mas quando vou inserir um registro na tabela cidade ocorre o erro: ORA-04098: gatilho 'UNISUL.TRG_ONINSCIDADE' é inválido e a revalidação falhou codigo das tabelas Create table CIDADE ( CD_CID Number(5,0) NOT NULL , NM_CID Varchar2 (40) NOT NULL , Constraint CIDADE_PK primary key (CD_CID) ) Create table CIDADE2 ( CD_CID Number(5,0) NOT NULL , NM_CID Varchar2 (40) NOT NULL , Constraint CIDADE_PK primary key (CD_CID) ) [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger ServerError ?
Exemplo em http://mportes.blogspot.com/2006/01/trigger-after-servererror.html On 5/2/07, Welvis Douglas Silva Moreto [EMAIL PROTECTED] wrote: Olá, eu estou fazendo um trigger de SERVERERROR, eu eu gostaria de pegar o Sql que estava sendo executando no momento do erro, alguem sabe como eu posso fazer isso? att, Welvis Douglas Msn : [EMAIL PROTECTED] welvis_douglas%40hotmail.com __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para capturar erros
O alert e o dump não são o suficiente? Reginaldo Ribeiro Administrador de Bancos de Dados Oracle Certified Associated 10g DBcom IT Experts skype: dbcom_it_experts mobile: 551192344290 551196718255 e-mail: [EMAIL PROTECTED] site: www.dbcom.com.br Fábio Gibon - Comex System wrote: Alguém tem material sobre trigger para coletar erros do banco? (algo bem objetivo com exemplos...) abraços Gibon
Re: [oracle_br] Trigger para capturar erros
Um começo. http://mportes.blogspot.com/2006/01/trigger-after-servererror.html On 4/20/07, Fábio Gibon - Comex System [EMAIL PROTECTED] wrote: Alguém tem material sobre trigger para coletar erros do banco? (algo bem objetivo com exemplos...) abraços Gibon [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para capturar erros
infelizmente nao...estes já percorri de ponta a ponta... mas valeu... - Original Message - From: rflribeiro To: oracle_br@yahoogrupos.com.br Sent: Friday, April 20, 2007 7:57 AM Subject: Re: [oracle_br] Trigger para capturar erros O alert e o dump não são o suficiente? Reginaldo Ribeiro Administrador de Bancos de Dados Oracle Certified Associated 10g DBcom IT Experts skype: dbcom_it_experts mobile: 551192344290 551196718255 e-mail: [EMAIL PROTECTED] site: www.dbcom.com.br Fábio Gibon - Comex System wrote: Alguém tem material sobre trigger para coletar erros do banco? (algo bem objetivo com exemplos...) abraços Gibon [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para capturar erros
show Marcio, era isto mesmo... blog adicionado aos favoritos... rs Ah, assim como você adicionou o usuario (USER) eu precisava ter também o nome do programa e do terminal... vi a function SYSINFO, mas não obtive sucesso... sabe como eu obtenho estas informacoes, se é possível? abração Gibon - Original Message - From: Marcio Portes To: oracle_br@yahoogrupos.com.br Sent: Friday, April 20, 2007 8:04 AM Subject: Re: [oracle_br] Trigger para capturar erros Um começo. http://mportes.blogspot.com/2006/01/trigger-after-servererror.html On 4/20/07, Fábio Gibon - Comex System [EMAIL PROTECTED] wrote: Alguém tem material sobre trigger para coletar erros do banco? (algo bem objetivo com exemplos...) abraços Gibon [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para capturar erros
v$session... ops$marcio:LX10G select username, osuser, terminal, program from v$session where username is not null; USERNAME OSUSER TERMINAL PROGRAM - -- OPS$MARCIOmarcio pts/4[EMAIL PROTECTED] (TNS V1-V3) SCH_PAY marcio pts/2[EMAIL PROTECTED] (TNS V1-V3) 2 rows selected. On 4/20/07, Fábio Gibon - Comex System [EMAIL PROTECTED] wrote: show Marcio, era isto mesmo... blog adicionado aos favoritos... rs Ah, assim como você adicionou o usuario (USER) eu precisava ter também o nome do programa e do terminal... vi a function SYSINFO, mas não obtive sucesso... sabe como eu obtenho estas informacoes, se é possível? abração Gibon - Original Message - From: Marcio Portes To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Friday, April 20, 2007 8:04 AM Subject: Re: [oracle_br] Trigger para capturar erros Um começo. http://mportes.blogspot.com/2006/01/trigger-after-servererror.html On 4/20/07, Fábio Gibon - Comex System [EMAIL PROTECTED]gibon%40comexsystem.com.br wrote: Alguém tem material sobre trigger para coletar erros do banco? (algo bem objetivo com exemplos...) abraços Gibon [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger com mais de 60 linhas
Luana Depois de tudo que o Chiappa explicou, creio que a maior razão disso ser indicado pela Oracle é que é uma boa prática de programação: modularizar (através de stored procedures) uma rotina que seria grande demais. [ ] André Em 01/02/07, luananadielle [EMAIL PROTECTED] escreveu: Caros, estava pesquisando sobre o desempenho de triggers e verifiquei que a Oracle indica que triggers não tenham mais que 60 linhas, que, nesse caso,a trigger deve chamar procedures para executar o objetivo dela. Pesquisei na documentação da Oracle e a única coisa que encontrei foi essa afirmação, não existia nenhuma explicação do porque dessa dica. Gostaria de saber o porque dessa limitação.. Se alguém souber me explicar ficaria agradecida.. Atenciosamente, Luana Nadielle [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] trigger acionada por erro
Um bom começo poderia ser http://mportes.blogspot.com/2006/01/trigger-after-servererror.html On 11/29/06, Pablo Quadros [EMAIL PROTECTED] wrote: ola! alguem tem aí 1 trigger acionada por algum erro q envie 1 email para alguem ?? []'s -- Pablo Quadros Consultor de TI (Rede / Banco de dados) msn:[EMAIL PROTECTED] pablo%40ingleza.com.br gtalk:[EMAIL PROTECTED] pquadros%40gmail.com -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] Trigger after insert
Porque você não faz em uma trigger só e chama um procedimento após o outro? Keep it Simple! :D [[]]'s -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Anderson Sent: Thursday, October 26, 2006 9:42 AM To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Trigger after insert Olá, sei que é possível ter dois triggers after insert, para serem disparados a partir de uma mesma tabela, para inserir dados em outras duas tabelas, por exemplo. No Sybase, uma das cláusulas do comando 'create trigger' é o 'order', onde é possível definir a ordem de execução dos triggers. Não encontrei uma cláusula semelhante no Oracle (10gR2). É possível definir a ordem de execução dos triggers no Oracle? Se sim, como? Se não, existe algum 'workaround'? PS.: Verifiquei que existe um object_id para cada trigger, mas a execução não segue esta ordem. Anderson. [As partes desta mensagem que não continham texto foram removidas] Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 Vagas Limitadas Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Trigger de auditoria
Roberta, verifique se não é a falta do Commit; Atte, Douglas Ortiz Core Competence Center - PostPaid * [EMAIL PROTECTED] *: +55 11 8523-6143 *: +55 11 2113-6391 _ From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Roberta Berrondo Sent: quarta-feira, 18 de outubro de 2006 12:40 To: Oracle - Grupos; Oracle-BR1; Oracle-BR2; OraOracle; Orcale-GPO Subject: [oracle_br] Trigger de auditoria Bom dia pessoal, Estou com um probleminha que talvez possam me ajudar: Tinha que criar uma trigger que auditasse todos que se logassem no banco de dados. para tal criei uma tabela de log com a seguinte estrutura: (logon_time timestamp, username varchar2(30), Osuser varchar2(30), Machine varchar2(12), Terminal varchar2(16), Program varchar2(64), Client_info varchar2(64), Client_identifier varchar2(64)) A segir criei a trigger log com o seguinte script: Create or replace trigger logon_trigger AFTER LOGON ON DATABASE BEGIN insert into LOG select logon_time, username, osuser, machine, terminal, program, client_info, client_identifier from sys.v_$session; End; / a tabela e a trigger foram criadas sem erros, porém quando tento consultar a tabela de log ela continua vazia, mesmo com vários usuários tendo se logado após a criação da trigger. O quê está acontecendo de errado? Grata pela atenção Roberta - Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 Vagas Limitadas Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: WWW.ORACLEBR.COM.BR Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Trigger de auditoria
... insert into LOG select logon_time, username, osuser, machine, terminal, program, client_info, client_identifier from sys.v_$session; End; ... Acho que faltou a where clause nessa trigger. Ele não está disparando nenhuma exceção? [[]]'s Bruno Lorenzini -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Roberta Berrondo Sent: Wednesday, October 18, 2006 11:40 AM To: Oracle - Grupos; Oracle-BR1; Oracle-BR2; OraOracle; Orcale-GPO Subject: [oracle_br] Trigger de auditoria Bom dia pessoal, Estou com um probleminha que talvez possam me ajudar: Tinha que criar uma trigger que auditasse todos que se logassem no banco de dados. para tal criei uma tabela de log com a seguinte estrutura: (logon_time timestamp, username varchar2(30), Osuser varchar2(30), Machine varchar2(12), Terminal varchar2(16), Program varchar2(64), Client_info varchar2(64), Client_identifier varchar2(64)) A segir criei a trigger log com o seguinte script: Create or replace trigger logon_trigger AFTER LOGON ON DATABASE BEGIN insert into LOG select logon_time, username, osuser, machine, terminal, program, client_info, client_identifier from sys.v_$session; End; / a tabela e a trigger foram criadas sem erros, porém quando tento consultar a tabela de log ela continua vazia, mesmo com vários usuários tendo se logado após a criação da trigger. O quê está acontecendo de errado? Grata pela atenção Roberta - Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 Vagas Limitadas Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: WWW.ORACLEBR.COM.BR Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger de Logon
Caro Berrondo, uso uma trigger AFTER LOGON ON DATABASE, não sei se funciona em todas as versões, no Oracle 10g funciona: CREATE OR REPLACE TRIGGER SYS.BLOCK_TOOLS_FROM_PROD AFTER LOGON ON DATABASE DECLARE v_prog sys.v_$session.program%TYPE; ownersys.v_$session.username%TYPE; v_osuser sys.v_$session.osuser%TYPE; BEGIN SELECT program, username, osuser INTO v_prog, owner, v_osuser FROM sys.v_$session WHERE audsid = USERENV('SESSIONID') AND audsid != 0 -- Don't Check SYS Connections AND rownum = 1; -- Parallel processes will have the same AUDSID's IF UPPER(owner) NOT IN ('usuarios_liberados'.) THEN IF UPPER(v_prog) LIKE '%TOAD%' OR UPPER(v_prog) LIKE '%T.O.A.D%' OR -- Toad UPPER(v_prog) LIKE '%SQLNAV%'OR -- SQL Navigator UPPER(v_prog) LIKE '%PLSQLDEV%' OR -- PLSQL Developer UPPER(v_prog) LIKE '%BUSOBJ%'OR -- Business Objects UPPER(v_prog) LIKE '%EXCEL%' OR -- MS-Excel plug-in UPPER(v_prog) LIKE '%SQLPLUS%' OR -- SQLPLUS UPPER(v_prog) LIKE '%DEVELOPER%' OR -- Oracle SQL Developer UPPER(v_prog) LIKE '%IFBLD%' OR -- Oracle Forms Developer Builder UPPER(v_prog) LIKE '%RWBUILDER%' OR -- Oracle Reports Builder UPPER(v_prog) LIKE '%RAPTOR%'-- Oracle Raptor THEN RAISE_APPLICATION_ERROR(-2, 'Development tools are not allowed on PRODUCTION DATABASE! ('||v_osuser||' - '||owner||' - '||v_prog||')'); END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; abraços, Cristian. rberrondo wrote: Preciso fazer uma trigger para evento a nível de banco/instancia. Toda vez que uma conexão é estabelecida, faria a checagem de usuário, aplicação e IP, se não estivesse de acordo com as regras , mataria a sessão. Alguem teria algum scprit para isto? Grata R Berrondo AD -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 Vagas Limitadas __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Trigger de atualização e i nserção.
A maneira como você está criando a trigger está errada. Veja: === SQL create table teste_trigger( COD_PRODUTO NUMBER(10,0) 2 , 3 DES_PRODUTO VARCHAR2(30) 4 , DT_ATUALIZACAODATE 5 ,DT_INSERCAO DATE 6 ) 7 ; Table created. SQL CREATE OR REPLACE TRIGGER trigger_upd 2 AFTER UPDATE 3 ON teste_trigger 4 REFERENCING NEW AS NEW OLD AS OLD 5 FOR EACH ROW 6 BEGIN 7 UPDATE teste_trigger 8SET dt_atualizacao = SYSDATE 9 WHERE cod_produto = :OLD.cod_produto; 10 END; 11 / Trigger created. SQL SQL insert into teste_trigger (COD_PRODUTO,DES_PRODUTO) values (1,'x'); 1 row created. SQL select * from teste_trigger; COD_PRODUTO DES_PRODUTODT_ATUALIZACAODT_INSERCAO --- -- - - 1 x 1 row selected. SQL update teste_trigger set DES_PRODUTO='y' where COD_PRODUTO=1; update teste_trigger set DES_PRODUTO='y' where COD_PRODUTO=1 * ERROR at line 1: ORA-04091: a tabela TESTE_TRIGGER é mutante; talvez o gatilho/função não possa localizá-la ORA-06512: em TRIGGER_UPD, line 2 ORA-04088: erro durante a execução do gatilho 'TRIGGER_UPD' SQL CREATE OR REPLACE TRIGGER trigger_upd 2 BEFORE UPDATE 3 ON teste_trigger 4 REFERENCING NEW AS NEW OLD AS OLD 5 FOR EACH ROW 6 BEGIN 7 :NEW.DT_ATUALIZACAO := sysdate; 8 END; 9 / Trigger created. SQL SQL update teste_trigger set DES_PRODUTO='y' where COD_PRODUTO=1; 1 row updated. SQL select * from teste_trigger; COD_PRODUTO DES_PRODUTODT_ATUALIZACAODT_INSERCAO --- -- - - 1 y 24-AGO-2006 09:53 1 row selected. === Veja que na trigger eu troquei o evento por BEFORE UPDATE, e ao invés de um UPDATE, simplesmente disse que o valor novo é SYSDATE. []s Eduardo Claro -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Léo Vieira Sent: Thursday, August 24, 2006 8:42 AM To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Trigger de atualização e inserção. Bom dia Grupo, tenho a seguinte tabela de teste: NAMENull? Type --- - - COD_PRODUTO NOT NULL NUMBER(10,0) DES_PRODUTO NOT NULL VARCHAR2(30) DT_ATUALIZACAODATE DT_INSERCAO DATE Quero criar duas triggers que façam o seguinte: 1 - Ao atualizar o registro é colocado sysdate na coluna DT_ATUALIZACAO 2 - Ao inserir um registro é colocado sysdate nas colunas DT_ATUALIZACAO e DT_INSERCAO. Criei a seguinte trigger para UPDATE: CREATE OR REPLACE TRIGGER trigger_upd AFTER UPDATE ON teste_trigger REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN UPDATE teste_trigger SET dt_atualizacao = SYSDATE WHERE cod_produto = :OLD.cod_produto; END; / Porém quando atualizo registro nada acontece, o que tem de errado? E para alterar a trigger para fazer a de inserção? Obrigado a todos Leonardo Baliano -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse:
Re: [oracle_br] Trigger de atualização e inserção.
Fala Léo, blz ? Bom, no insert vc nem precisa se preocupar com isso ! Basta colocar um valor Default para a coluna como sysdate que será colocada automaticamente a coluna de DT_INSERCAO. Fizemos isso aqui para auditoria. Também criamos a coluna de DT_ATUALIZACAO mas essa a gente atualiza na munheca nos pontos que temos update mas o melhor mesmo seria fazer como vc fez (via trigger) pois aí não precisaria mexer na aplicação. Mas como essa decisão aqui não foi minha o que se pode fazer né ? Além dessas a gente colocou também o usuário que inseriu e o usuário que alterou. Vamos lá... acho que essa trigger não tem tanto mistério. create or replace trigger trigger_teste after update on tabela_A for each row declare -- caso queira colocar variáveis é aqui que põe begin update tabela_A a set a.dt_atualizacao = sysdate where a.chave_primaria = :old.chave_primaria; end trigger_teste; Acho que é isso. Abraço, Marco. Bom dia Grupo, tenho a seguinte tabela de teste: NAMENull? Type --- - - COD_PRODUTO NOT NULL NUMBER(10,0) DES_PRODUTO NOT NULL VARCHAR2(30) DT_ATUALIZACAODATE DT_INSERCAO DATE Quero criar duas triggers que façam o seguinte: 1 - Ao atualizar o registro é colocado sysdate na coluna DT_ATUALIZACAO 2 - Ao inserir um registro é colocado sysdate nas colunas DT_ATUALIZACAO e DT_INSERCAO. Criei a seguinte trigger para UPDATE: CREATE OR REPLACE TRIGGER trigger_upd AFTER UPDATE ON teste_trigger REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN UPDATE teste_trigger SET dt_atualizacao = SYSDATE WHERE cod_produto = :OLD.cod_produto; END; / Porém quando atualizo registro nada acontece, o que tem de errado? E para alterar a trigger para fazer a de inserção? Obrigado a todos Leonardo Baliano [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Trigger: Erro
Ola Isso nao eh um erro em si, eh o comportamento normal do Oracle. Apos usar o raise_application_error num trigger, os erros 6512 e 4088 sao gerados em sequencia. Dessa forma vc pode saber em que trigger o erro ocorreu. Uma solucao seria extrair e exibir apenas o 1º erro do error stack. Que ferramenta de front-end vc esta usando? Como vc esta exibindo o erro retornado (ou ele eh exibido automaticamente)? Luis From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Alexandre Brum Sent: 01 August 2006 21:50 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Trigger: Erro Prezados Criei o trigger de teste abaixo e ocorre o seguinte erro: ERRO na linha 1: ORA-20500: É obrigatório informar o Coordenador' ORA-06512: em CMATBASE.TABTESTE_CHECA_AREANEG, line 12 ORA-04088: erro durante a execução do gatilho 'CMATBASE.TABTESTE_CHECA_AREANEG' Ele chega entrar na condição e apresenta a mensagem correta, mas depois ocorre os erros: ORA-06512 e ORA-04088 Veja o trigger: CREATE OR REPLACE TRIGGER tabteste_checa_areaneg BEFORE UPDATE OR INSERT ON CMATBASE.TABTESTE FOR EACH ROW DECLARE cCodNeg CHAR(02); BEGIN SELECT CodNeg INTO cCodNeg FROM CMATBASE.Segmento WHERE CodSeg = :NEW.codseg; IF cCodNeg '08' AND :NEW.Coordenador IS NULL THEN Raise_Application_Error ( -20500,'É obrigatório informar o Coordenador' ); END IF; END; Alguém tem alguma sugestão para a correção do erro ? Um grande abraço. Att. Alexandre Brum Um abraço. Att. Alexandre Brum - O Yahoo! está de cara nova. Venha conferir! [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Trigger: Erro
Valeu Luis Estava com esta suspeita. É uma aplicação internet utilizando JAVA. Vou alterar a classe para apresentar melhor este erro. Obrigado !!! Att. Alexandre Brum Luis Cabral [EMAIL PROTECTED] escreveu:Ola Isso nao eh um erro em si, eh o comportamento normal do Oracle. Apos usar o raise_application_error num trigger, os erros 6512 e 4088 sao gerados em sequencia. Dessa forma vc pode saber em que trigger o erro ocorreu. Uma solucao seria extrair e exibir apenas o 1º erro do error stack. Que ferramenta de front-end vc esta usando? Como vc esta exibindo o erro retornado (ou ele eh exibido automaticamente)? Luis From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Alexandre Brum Sent: 01 August 2006 21:50 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Trigger: Erro Prezados Criei o trigger de teste abaixo e ocorre o seguinte erro: ERRO na linha 1: ORA-20500: É obrigatório informar o Coordenador' ORA-06512: em CMATBASE.TABTESTE_CHECA_AREANEG, line 12 ORA-04088: erro durante a execução do gatilho 'CMATBASE.TABTESTE_CHECA_AREANEG' Ele chega entrar na condição e apresenta a mensagem correta, mas depois ocorre os erros: ORA-06512 e ORA-04088 Veja o trigger: CREATE OR REPLACE TRIGGER tabteste_checa_areaneg BEFORE UPDATE OR INSERT ON CMATBASE.TABTESTE FOR EACH ROW DECLARE cCodNeg CHAR(02); BEGIN SELECT CodNeg INTO cCodNeg FROM CMATBASE.Segmento WHERE CodSeg = :NEW.codseg; IF cCodNeg '08' AND :NEW.Coordenador IS NULL THEN Raise_Application_Error ( -20500,'É obrigatório informar o Coordenador' ); END IF; END; Alguém tem alguma sugestão para a correção do erro ? Um grande abraço. Att. Alexandre Brum Um abraço. Att. Alexandre Brum - O Yahoo! está de cara nova. Venha conferir! [As partes desta mensagem que não continham texto foram removidas] Um abraço. Att. Alexandre Brum - Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas! [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] trigger de auditoria com nome do forms quando tiver
Em vez de usar a dbms_application_info, vc poderia criar sua propria package com variaveis globais; mas isso nao seria necessariamente melhor, apenas mais independente do banco. De qualquer forma eu sugeriria, nos Forms, chamar uma procedure wrapper em vez de chamar diretamente a dbms_application_info.set_module. Mesmo que sua procedure wrapper nao faca nada mais que chamar a dbms_application_info. Isso porque se, no futuro, vc achar uma solucao melhor vc teria que mexer apenas num lugar em vez de em todos os forms que usam essa funcionalidade. From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of alex borgmann Sent: 10 July 2006 22:27 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] trigger de auditoria com nome do forms quando tiver Ola pessoal, Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production Forms [32 Bit] Version 9.0.4.0.19 (Production) Tenho umas triggers de auditorias de tabelas feitas estaticas. Uma trigger desenvolvida para cada tabela. Com nome do usuario que alterou, data, hora, etc, operacao (Insercao,exclusao, alteracao),. campos alterados, etc.. Sei que ate tem como fazer a criacao destas auditorias dinamicamente ate ja foi feito no forum mas como ja tinha pronto deixei assim mesmo. Agora me solicitaram que gostariam de saber qual foi a tela (forms) (.fmb) que efetuou esta operacao, Pois temos telas de manutencao e outras de importacao, e se for atualizado sql, plsql ,etc. nao precisa especificar. Pensei em fazer setando um modulo e acao com dbms_application dentro do forms. dbms_application_info.set_module('PROCESSO','MODULO_FORMS'); e depois lendo na trigger dbms_application_info.read_module Acho que isto vai funcionar mas minha pergunta e a seguinte existe alguma solucao melhor ou mais elegante. Desde ja agradeço a atencao - Do you Yahoo!? Everyone is raving about the all-new Yahoo! Mail Beta. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Trigger after create table
Ola Nao creio que seja possivel criar o trigger a que vc se refere, mas usando algumas funcoes acho que vc consegue determinar que objecto disparou o trigger e executar ou nao sua logica de acordo: ora_dict_obj_name VARCHAR(30) Name of the dictionary object on which the DDL operation occurred ora_dict_obj_owner VARCHAR(30) Owner of the dictionary object on which the DDL operation occurred ora_dict_obj_type VARCHAR(20) Type of the dictionary object on which the DDL operation occurred Veja mais detalhes no manual Application Developer's Guide - Fundamentals. Espero que ajude. /lc From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Anderson Sent: 03 July 2006 18:46 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Trigger after create table É possível criar uma trigger after create table (somente)? Eu gostaria de conceder as devidas permissões às roles, por meio de uma trigger, automaticamente após cada create table. Tentei criar uma trigger after create, mas ela é executada após qualquer create. Alguém tem alguma idéia? -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger de um owner atualizando objeto de outro owner
Precisa dar grant update on objeto to owner.. Ou seja escola o objeto que precisa ser copilado, de permissão para o outro owner fazer isso.. Boa sorte.. Luiz Claudio Tenho dois owner A e B e em um objeto do owner B quero compilar uma trigger deste owner para atualizar objetos do A. O banco não esta permitindo compilar a trigger avisando que não tem permissão, já coloquei a permissão GRANT CREATE ANY TRIGGER para os dois owner... -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/oracle_br/ Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.
Re: [oracle_br] TRIGGER update
Eu tenho uma situação semelhante, e fiz assim: Criei uma package SPEC e coloquei uma variável de controle lá... Então na procedure coloquei a variavel = 'X', por exemplo. Na trigger eu coloco um IF no comeco testando se a variavel é 'X'. Assim, os updates da procedure disparam a trigger mas nao fazem nada No fim da procedure, tem que colocar a variavel := null; Entendeu? Thiago. Gabriel Herdt escreveu: Bom dia pessoal! Eu criei um Stored procedure que da update e insert em uma tabela e update em outra esta funcionando muito bem. Só que agora eu estou precisando fazer uma trigger com a 1° tabela quando da After Update nela. Mas eu gostaria que os updates da Stored procedure não acionacem a trigger. Isso é possivel? Como? -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE *Links do Yahoo! Grupos* * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. -- -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/oracle_br/ Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.
Re: [oracle_br] Trigger on dba_users
Márcio, muito obrigado pela resposta desconhecia estes parâmetros de auditoria, com certeza uma mão na roda.No entanto além desta auditoria eu preciso processar uma sp que executa uma série de ações no momento exato da criação do user, conhece alguma forma pra isto ? Obrigado. Daniel A. D. Castro On 12/15/05, Marcio Portes [EMAIL PROTECTED] wrote: Por que não audit trail? [EMAIL PROTECTED] show parameter audit NAME TYPEVALUE --- -- audit_file_dest string /u01/app/oracle/admin/LNX10GR2 /adump audit_sys_operations boolean FALSE audit_syslog_level string audit_trail string TRUE [EMAIL PROTECTED] audit create user 2 / Audit succeeded. [EMAIL PROTECTED] grant create user to scott; Grant succeeded. [EMAIL PROTECTED] connect scott/tiger Connected. [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] create user a identified by a; User created. [EMAIL PROTECTED] connect / Connected. [EMAIL PROTECTED] create user b identified by b; User created. [EMAIL PROTECTED] [EMAIL PROTECTED] select os_username, username, timestamp, obj_name 2from dba_audit_trail 3 / OS_USERNAMEUSERNAME TIMESTAMP OBJ_NAME -- -- - -- marcio SCOTT 15-DEC-05 A marcio OPS$MARCIO 15-DEC-05 B 2 rows selected. Daniel Araújo de Castro wrote: Lista, preciso monitorar a criação de users em uma determinada instance, uma trigger seria o ideal na dba_users, mas o objeto é uma view. Alguém já precisou ou sabe me informar a melhor prática para monitorar a criação de users ? A solução pensada é um job com baixa temporalilidade que me informar de forma comparativa os schemas criados. Desde já agradeço à atenção de todos. -- Atenciosamente Daniel A. D. Castro +55-31-9776-8453 -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos -- Marcio Portes http://mportes.blogspot.com -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos -- AtenciosamenteDaniel A. D. Castro+55-31-9776-8453 -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger on dba_users
Luis/Daniel, Sim é possível capturar o evento de create e testar se o tipo de objeto é user e executar a procedure. Eu demonstrei o uso do audit porque não gosto de escrever código extra quando a funcionalidade já existe disponível. Mesmo assim, fiz um exemplo. Image que log_user é a procedure que voce precisa executar logo após a criação do user. [EMAIL PROTECTED] create table 2 audit_usr ( 3 quem_criou varchar2(30), 4 quem_foi_criado varchar2(30), 5 quando date default sysdate 6 ); Table created. [EMAIL PROTECTED] [EMAIL PROTECTED] create or replace 2 procedure log_user( 3 p_criou in varchar2, 4 p_foi_criadoin varchar2 5 ) 6 is 7 begin 8 insert into audit_usr ( quem_criou, quem_foi_criado ) 9values ( p_criou, p_foi_criado ); 10 end; 11 / Procedure created. [EMAIL PROTECTED] show error No errors. [EMAIL PROTECTED] [EMAIL PROTECTED] create or replace 2 trigger trg_ac_audituser 3 after create on database 4 begin 5 if ( ora_dict_obj_type = 'USER' ) 6 then 7log_user( ora_login_user, ora_dict_obj_name ); 8 end if; 9 end; 10 / Trigger created. [EMAIL PROTECTED] show error No errors. [EMAIL PROTECTED] create user a identified by a; User created. [EMAIL PROTECTED] [EMAIL PROTECTED] select * from audit_usr; QUEM_CRIOU QUEM_FOI_CRIADOQUANDO -- -- --- OPS$MARCIO A 16/12/2005 15:04:44 1 row selected. Luis Cabral wrote: Daniel Nas versoes mais recentes do banco existem os commandos: CREATE TRIGGER create_trigger AFTER CREATE ON DATABASE CREATE TRIGGER ddl_trigger AFTER DDL ON DATABASE ...mas nao tenho certeza se funcionam para create user. Voce pode usar as funcoes abaixo dentro do trigger para tentar saber o que foi criado: ora_sysevent ora_login_user ora_instance_num ora_database_name ora_dict_obj_type ora_dict_obj_name ora_dict_obj_owner ora_is_creating_nested_table Talvez funcione (mas nao tenho certeza) se vc fizer algo assim dentro do trigger: IF (ora_dict_obj_type = 'USER') THEN ... Se funcionar, nao esqueca de nos contar! -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Daniel Araújo de Castro Sent: 16 December 2005 15:35 To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Trigger on dba_users Márcio, muito obrigado pela resposta desconhecia estes parâmetros de auditoria, com certeza uma mão na roda.No entanto além desta auditoria eu preciso processar uma sp que executa uma série de ações no momento exato da criação do user, conhece alguma forma pra isto ? Obrigado. Daniel A. D. Castro -- Marcio Portes http://mportes.blogspot.com -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger on dba_users
Por que não audit trail? [EMAIL PROTECTED] show parameter audit NAME TYPEVALUE --- -- audit_file_dest string /u01/app/oracle/admin/LNX10GR2 /adump audit_sys_operations boolean FALSE audit_syslog_level string audit_trail string TRUE [EMAIL PROTECTED] audit create user 2 / Audit succeeded. [EMAIL PROTECTED] grant create user to scott; Grant succeeded. [EMAIL PROTECTED] connect scott/tiger Connected. [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] create user a identified by a; User created. [EMAIL PROTECTED] connect / Connected. [EMAIL PROTECTED] create user b identified by b; User created. [EMAIL PROTECTED] [EMAIL PROTECTED] select os_username, username, timestamp, obj_name 2from dba_audit_trail 3 / OS_USERNAMEUSERNAME TIMESTAMP OBJ_NAME -- -- - -- marcio SCOTT 15-DEC-05 A marcio OPS$MARCIO 15-DEC-05 B 2 rows selected. Daniel Araújo de Castro wrote: Lista, preciso monitorar a criação de users em uma determinada instance, uma trigger seria o ideal na dba_users, mas o objeto é uma view. Alguém já precisou ou sabe me informar a melhor prática para monitorar a criação de users ? A solução pensada é um job com baixa temporalilidade que me informar de forma comparativa os schemas criados. Desde já agradeço à atenção de todos. -- Atenciosamente Daniel A. D. Castro +55-31-9776-8453 -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos -- Marcio Portes http://mportes.blogspot.com -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger x Commit ! Help !!!
Amigos, Fiz alguns testes quando insert e updates via SQL´plus e a trigger funcionou, mas pela aplicação não. o problema é que a aplicação é de terceiros e eu não tenho o código fonte. Tentei tb mudar a trigger para BEFORE não adiantou. Será que tem outra solucão??? Edu - Original Message - From: Salvio Padlipskas To: 'oracle_br@yahoogrupos.com.br' Sent: Monday, November 07, 2005 9:22 AM Subject: RES: [oracle_br] Trigger x Commit ! Help !!! Eduardo, Uma trigger não aceita commit dentro de seu código. Como sugestão, veja como os seus inserts e updates estão sendo executados em sua aplicação (verifique como é realizado o fim da transação (commit e rollback) e realize alguns testes no SQL*Plus (Insert e Update), que é a ferramenta universal da Oracle, servindo como orientação inicial. Outra sugestão é mudar o tempo de execução da trigger, passando para BEFORE. Faça os testes e poste as infs aqui posteriormente para que possamos contribuir em sua necessidade. [ ]'s Salvio Padlipskas -Mensagem original- De: Eduardo [mailto:[EMAIL PROTECTED] Enviada em: segunda-feira, 7 de novembro de 2005 10:39 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Trigger x Commit ! Help !!! Olá galera, Tenho a trigger abaixo,vou tentar explicar o problema, as alterações só commtam quando mais de uma linha sofre alterações, ou seja, a ultima linha sempre fica esperando um commit ou um novo disparo da trigger, tentei colocar um commit no final da trigger, mas nao aceita. Como resolvo isso??? CREATE OR REPLACE TRIGGER GER_RESERVA4 AFTER INSERT OR UPDATE OF IES_NFE_EMIT ON NFE_SUP_COMPL FOR EACH ROW BEGIN UPDATE FAT_NUMERO_SER SET NUM_NFF = (select NUM_NFF from fat_numero WHERE COD_EMPRESA = :NEW.COD_EMPRESA) END; / Eduardo Souza Pinho Depto - T.I / Sistemas DDR: 55 11 2146-9449 Fone: 55 11 2146-9444 Fax: 55 11 3871-3730 [EMAIL PROTECTED] www.sonsun.com.br [As partes desta mensagem que não continham texto foram removidas] ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle realizado no dia 05/11/2005 no auditório da FIAP em São Paulo foi melhor que a primeira. Confira no GPO (do nosso amigo Willian) http://www.profissionaloracle.com.br _ Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle realizado no dia 05/11/2005 no auditório da FIAP em São Paulo foi melhor que a primeira. Confira no GPO (do nosso amigo Willian) http://www.profissionaloracle.com.br _ Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE -- Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle realizado no dia 05/11/2005 no auditório da FIAP em São Paulo foi melhor que a primeira. Confira no GPO (do nosso amigo Willian) http://www.profissionaloracle.com.br _ Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger mutante
Manda, bala. CD Rodolfo Nunez escreveu: Opa Eu criei uma JProcedure para resolver o meu problema se quiser te passso em private. Abs, Rodolfo On 9/21/05, clediomar [EMAIL PROTECTED] wrote: Alguém utiliza chave gerada com MD5 no Oracle. existe algum package, função etc. tipo MySQL select MD5(BLABALALA) ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _ Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _ Links do Yahoo! Grupos ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Trigger - Sobreposição de Vigência (data)
Não sei se alguém vai ter algo do tipo pronto. Mas isso é facil de desenvolver. Se quiser me escreve em PVT que eu te dou uma força. Ronaldo. Em 23/09/05, Tathyanna Pelegrinni[EMAIL PROTECTED] escreveu: Boa noite! alguém tem bons exemplos destes tipos de triggers? Exemplos de definiçoes: INCLUSAO Data de inicio de vigencia tem de ser maior que data corrente. Ao incluir uma nova vigencia, a vigencia anterior tem de ser finalizada, sendo que a data fim anterior sera um dia a menos que a nova data inicio de vigencia. (data fim vigencia anterior = nova data inicio - 1) (Implentacao via trigger). A data final de vigencia tem de ser obrigatoriamente maior que a data inicio de vigencia ALTERACAO Somente podera ser alterado a data final de vigencia, desde que a data fim seja maior que data corrente. EXCLUSAO N?o permitir exclus?o, se a vigencia estiver fechada, ou se a data final da vigencia estiver nula. ETC... ETC... Outras validaçoes, não mencionadas, são bem vindas tb, é claro! :)) Obrigada. [As partes desta mensagem que não continham texto foram removidas] ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _ Links do Yahoo! Grupos -- Ronaldo Sales Oracle Developer Mestrando em Geoprocessamento ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html