[oracle_br] Trigger de monitoramento de transação

2017-02-22 Por tôpico Wanderson Barrence wbarre...@gmail.com [oracle_br]
Caros,

Alguém tem algum script de trigger que monitora transações no banco de
dados, por exemplo, eu quero saber quem fez insert, update ou delete nas
tabelas, preciso saber também informações como nome do usuário, nome da
tabela, o tipo de operação (insert, update, ou delete), date e hora,
máquina, IP etc..

Obrigado.

Att,

Wanderson


Re: [oracle_br] Trigger de logon...

2015-05-28 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
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...

2015-05-28 Por tôpico Andre Santos andre.psantos...@gmail.com [oracle_br]
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...

2015-05-28 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_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 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

Re: [oracle_br] Trigger de logon...

2015-05-28 Por tôpico jlchia...@yahoo.com.br [oracle_br]
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

[oracle_br] Trigger de logon...

2015-05-28 Por tôpico Cristiano Vasconcelos Barbosa cvasconcel...@gmail.com [oracle_br]
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 ==
# -- 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

Re: [oracle_br] Trigger de logon...

2015-05-28 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
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...

2015-05-28 Por tôpico 'Schiavini' et...@schiavini.inf.br [oracle_br]
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

[oracle_br] Trigger de Logon.

2015-05-26 Por tôpico Cristiano Vasconcelos Barbosa cvasconcel...@gmail.com [oracle_br]
Boa tarde!

Meu oracle é:

banner   full_version
 version_bit ARQUIVAMENTO
 -
--  -
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 -  10.2.0.3.0
 10.2.0.3.0 - 64bi   STARTED

Caros amigos, estou precisando de uma trigger de logon que:

A) permita acesso ao banco apenas do sistema web desenvolvido;
B) permita acesso ao banco apenas dos form´s e report´s;
C) que boqueie programas de desenvolvimento tais como: '%TOAD%'-- Toad;
'%T.O.A.D%'-- Toad; '%SQLNAV%'-- SQL Navigator; '%PLSQLDEV%'-- PLSQL
Developer; '%BUSOBJ%'-- Business Objects; '%EXCEL%'-- MS-Excel plug-in;
'%SQLPLUS%'-- SQLPLUS; '%DEVELOPER%'-- Oracle SQL Developer; '%IFBLD%'--
Oracle Forms Developer Builder; '%RWBUILDER%'-- Oracle Reports Builder;
'%RAPTOR%'  entre outros;
D) que permita acesso aos programas acima relacionados na alínea 'C' apenas
para os usuários relacionados, ou ainda, máquinas relacionadas (IP´s).

Caso alguns dos amigos possuam uma trigger do tipo ou mais estruturada
ainda, caso possam ajudar-me, ficaria bastante grato. Tenho que implementar
esta rotina na minha plataforma, já pesquisei algumas trigger´s de logon
mas nenhuma que fosse completa ou que se adequasse ao meu cenário, assim,
gostaria da ajuda dos amigos os quais possuem uma maior experiência com a
administração do Oracle.

Obrigado...


Atenciosamente,

[image: Foto Cristiano Vasconcelos Barbosa]
*Cristiano Vasconcelos Barbosa.'.*
* Analista de Sistemas  Banco de Dados*
| Cel: +55 (85) 9691.8331
--
http://br.linkedin.com/in/cristianovasconcelos


*DEUS MEUMQUE JUS*.'.
*DÓMINI SUMUS*.'.
Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype]
 cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger]
cvasconcel...@yahoo.com.br
[image: My QR VCard]
http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D


[oracle_br] Trigger para Fechamento Diário

2014-09-24 Por tôpico samuel.calleg...@yahoo.com.br [oracle_br]
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 para Fechamento Diário

2014-09-24 Por tôpico Vitor Junior vitorj...@gmail.com [oracle_br]
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



  



[oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico Eduardo Perdomo panc...@gmail.com [oracle_br]
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


RES: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico 'Alisson Luz' alisson...@yahoo.com.br [oracle_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





Re: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico Eduardo Perdomo panc...@gmail.com [oracle_br]
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


RES: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico 'Alisson Luz' alisson...@yahoo.com.br [oracle_br]
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





Re: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico Eduardo Perdomo panc...@gmail.com [oracle_br]
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


RES: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico 'Alisson Luz' alisson...@yahoo.com.br [oracle_br]
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





Re: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico Eduardo Perdomo panc...@gmail.com [oracle_br]
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

2014-08-15 Por tôpico Eduardo Perdomo panc...@gmail.com [oracle_br]
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


RES: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico 'Alisson Luz' alisson...@yahoo.com.br [oracle_br]
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





Re: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico Eduardo Perdomo panc...@gmail.com [oracle_br]
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

2014-08-15 Por tôpico Sergio Lucchini ser...@mercanet.com.br [oracle_br]
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

RES: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico 'Alisson Luz' alisson...@yahoo.com.br [oracle_br]
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





Re: [oracle_br] TRIGGER SIMPRES

2014-08-15 Por tôpico Eduardo Perdomo panc...@gmail.com [oracle_br]
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


[oracle_br] Trigger para prevenir (e logar!) tentativas de DDL

2013-05-13 Por tôpico Vitor Jr.
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 vitorj...@gmail.com
 http://certificacaobd.com.br/ http://certificacaobd.com.br/
skype: vjunior1981

 



[As partes desta mensagem que não continham texto foram removidas]



RE: [oracle_br] Trigger para prevenir (e logar!) tentativas de DDL

2013-05-13 Por tôpico Schiavini
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]



[oracle_br] Trigger com problemas

2013-04-30 Por tôpico Rafael HM Pereira
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]



Re: [oracle_br] Trigger com problemas

2013-04-30 Por tôpico Gerson Junior
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

2012-09-18 Por tôpico Milton Bastos Henriquis Jr.
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

2012-09-18 Por tôpico Antony Ferreira
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

2012-09-18 Por tôpico Milton Bastos Henriquis Jr.
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

2012-09-18 Por tôpico Antony Ferreira
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

2012-08-31 Por tôpico JLSilva
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

2012-08-31 Por tôpico Milton Bastos Henriquis Jr.
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

2012-08-31 Por tôpico JLSilva
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

2012-08-31 Por tôpico Schiavini
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

2012-08-31 Por tôpico JLSilva
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

2012-08-31 Por tôpico JLSilva
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

2011-11-29 Por tôpico JLSilva
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

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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

2011-11-29 Por tôpico JLSilva
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

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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

2011-11-29 Por tôpico JLSilva
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

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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 ?

2011-08-31 Por tôpico rodrigobrar2...@gmail.com
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




[oracle_br] TRIGGER

2011-08-11 Por tôpico Carlos Pinto
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]



Re: [oracle_br] TRIGGER

2011-08-11 Por tôpico Gerson Junior
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

2011-08-11 Por tôpico Carlos Pinto
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

2011-08-11 Por tôpico Álisson Zimermann
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

2011-08-11 Por tôpico Gerson Junior
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

2011-08-11 Por tôpico Carlos Pinto
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

2011-08-11 Por tôpico Gerson Junior
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

2011-08-11 Por tôpico Carlos Pinto
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

2011-08-11 Por tôpico Emerson Martins
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

[oracle_br] trigger de logon

2010-05-14 Por tôpico Márcio Ricardo Alves da Silva
Bom dia!


Tenho uma trigger AFTER LOGON ON DATABASE, que funciona no meu ambiente de 
produção bloqueando acesso ao banco por ferramentas terceiras.

Peguei essa mesma trigger e passei para um desenvolvedor adaptá-la para ele. Só 
que essa trigger não está funcionando, coloquei raises na trigger e parece que 
não está sendo disparada a trigger.

O banco é o Oracle XE

CREATE OR REPLACE TRIGGER LOG
  AFTER LOGON ON DATABASE
DECLARE
  v_username SYS.gv_$session.username%TYPE;
  v_program SYS.gv_$session.program%TYPE;
BEGIN
   raise_application_error (-2, 'Entrou 1!' );
  BEGIN
 raise_application_error (-20001, 'Entrou 2!' );
   SELECT username, program
 INTO v_username, v_program
 FROM SYS.gv_$session
WHERE audsid = USERENV ('SESSIONID')
  AND audsid != 0
--  and USERNAME = 'CTE_COMP'
  AND ROWNUM = 1;  
   raise_application_error (-20002, 'Passou SQL!' );  
  if v_username = 'CTE_COMP' THEN
   INSERT INTO (USERNAME, HORA_LOGIN, PROGRAM)
 VALUES(v_username, SYSDATE, v_program);
   commit;
   raise_application_error (-20003, 'Inseriu!' );
  end if; 
  EXCEPTION
WHEN NO_DATA_FOUND THEN
  v_program := '';
  raise_application_error (-20004, 'Erro!' );
  END;
END;


Márcio.









[As partes desta mensagem que não continham texto foram removidas]



[oracle_br] trigger de logon

2010-04-14 Por tôpico Miguel Angelo Rodrigues
Senhores,

estou com uma trigger para controlar o acesso dos usuario no ambiente de
produção.
Ela está funcionando, porem apresenta o erro de sql recursivo.
A versão do oracle é 10.2.0.3.0.
Fico grato com a ajuda de vcs.
Segue a trigger e o erro:

create or replace trigger log_restriction
after logon on database
begin
for x in
(
select CLIENT_IDENTIFIER, program
from sys.v_$session
where audsid = userenv('sessionid')
)
loop
   if ltrim(rtrim(x.CLIENT_IDENTIFIER)) not in
('10.11.7.230','10.11.7.216','10.1.1.48','10.1.1.28'

,'10.1.1.15','127.0.0.1','10.1.1.31','200.198.213.112','200.198.202.105','10.1.1.36')
   or upper(ltrim(rtrim(x.program))) not in (
 'AETI.EXE'
,'SIRCX.EXE'
,'EQCASSERVICE.EXE'
,'SRVAQUISICAO.EXE'
,'SRVSOPHIABIB.EXE'
,'SRVBIB.EXE'
,'BIBLI.EXE'
,'MONC.EXE'
,'BIBCONF.EXE')
 then
 raise_application_error( -20999, 'USUÁRIO OU APLICAÇÃO NÃO AUTORIZADO
PARA USO NO AMBIENTE DE PRODUÇÃO!');
end if;
end loop;
end log_restriction;
/

ORA-00604: ocorreu um erro no nível 1 SQL recursivo
ORA-20999: USUÁRIO OU APLICAÇÃO NÃO AUTORIZADO PARA USO NO AMBIENTE DE
PRODUÇÃO!

-- 
 Miguel Angelo Rodrigues da Silva
Administrador de Banco de Dados Oracle


[As partes desta mensagem que não continham texto foram removidas]



Res: [oracle_br] Trigger mutanting

2009-11-26 Por tôpico Rejane Cristina Messias Correia
Oi Debora tenta colocar no declare o comando abaixo.


DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;

Rejane.




De: Eduardo Souza pjabran...@gmail.com
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quarta-feira, 25 de Novembro de 2009 14:09:06
Assunto: Re: [oracle_br] Trigger mutanting

Poderia enviar o código da solução adotada?

2009/11/25 Débora Acácio debby_ora...@yahoo.com.br




 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.comeduardo.paula%40gmail.com
 escreveu:

 De: Eduardo eduardo.pa...@gmail.com eduardo.paula%40gmail.com
 Assunto: Re: [oracle_br] Trigger mutanting
 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.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.brdebby_oracle%40yahoo.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]

  



[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]



[oracle_br] Trigger mutanting

2009-11-25 Por tôpico Débora Acácio
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]



RES: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Valtemir Araujo de Lima
vc pode criar uma package para resolver o problema:
 
na primeira trigger:
create or replace trigger NOMETRIGGER_1
   after  insert or update or delete
 on NOMETABELA
   for each row
declare
   ..
begin
   if :new.atributo = ...
  PACOTE_PKG.VARIAVEL :=  X  usar a variavel de uma package para
guardar seu conteudo para fazer select na mesma tabela da trigger
   .
end;
 
 
 
 
na package
create or replace package  PACOTE_PKG as 
   VARIAVELnumber(10);
end;
 
 
 
 
na segunda trigger  de sua tabela
create or replace trigger NOMETRIGGER_1
   after insert or update or delete on NOMETABELA
declare
   
Begin
   if  PACOTE_PKG.VARIAVEL  is not null then
  select ... --pode fazer select na mesma tabela da primeira trigger
  from NOMETABELA
  where coluna = PACOTE_PKG.VARIAVEL  
  end if;
end;
 
 
 
 

-Mensagem original-
De: Débora Acácio [mailto:debby_ora...@yahoo.com.br]
Enviada em: 25 de novembro de 2009 08:41
Para: Grp Oracle
Assunto: [oracle_br] Trigger mutanting


  

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.maisbusca http://br.maisbuscados.yahoo.com dos.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]







RES: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Sergio Lucchini
Isso ocorre quando vc precisa acessa a tabela onde esta a trigger. Vc pode 
declarar a sua trigger como Pragma Autonomous_Transaction para eliminar esse 
erro.

Exemplo:

CREATE OR REPLACE TRIGGER nome_trigger AFTER UPDATE
ON nome_tabela REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

Pragma Autonomous_Transaction;

BEGIN



Sergio Lucchini


De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome 
de Débora Acácio
Enviada em: quarta-feira, 25 de novembro de 2009 09:41
Para: Grp Oracle
Assunto: [oracle_br] Trigger mutanting



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]


No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 8.5.423 / Virus Database: 270.14.81/2524 - Release Date: 11/24/09 
19:37:00


[As partes desta mensagem que não continham texto foram removidas]



RES: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Sérgio Luiz Rodrigues Chaves
Debby,

 

Vou listar o procedimento básico para resolver esse problema:

 

1)   Tenho a tabela funcionário com a seguinte estrutura:

CREATE TABLE FUNC

(

 CD_MATNUMBER(3) NOT NULL PRIMARY KEY,

 NR_GITNUMBER(2),

 VL_SALNUMBER(9,2)

2)   Tenho uma trigger para atualizar o salário do funcionário.

CREATE OR REPLACE TRIGGER checa_salario

BEFORE UPDATE OF vl_sal, nr_git ON FUNC

FOR EACH ROW WHEN (NEW.nr_git  56)

DECLARE

  salario_minimo   NUMBER(5) := 0;

  salario_maximo   NUMBER(5) := 0;

  faixaEXCEPTION;

  negativo EXCEPTION;

BEGIN

  SELECT MIN(vl_sal), Max(vl_sal)

   INTO salario_minimo, salario_maximo

  FROM FUNC

  WHERE nr_git = :new.nr_git;

  IF (:NEW.vl_sal  salario_minimo OR

  :NEW.vl_sal  salario_maximo) THEN

 RAISE faixa;

  ELSIF (:NEW.VL_SAL  :OLD.vl_sal) THEN

 RAISE negativo;

  END IF;

EXCEPTION

  WHEN faixa THEN

RAISE_APPLICATION_ERROR (-20225, 'Salário fora da faixa');

  WHEN negativo THEN

RAISE_APPLICATION_ERROR (-20230, 'Incremento negativo');

END;

 

Que quando executo dá erro de multante, pois estou realizando uma consulta na 
mesma tabela que estou atualizando.

 

3)   Resolvendo Criei uma tabela temporária com a mesma estrutura de 
FUNC de nome TFUNC_MUT.

 

DROP TABLE TFUNC_MUT;

CREATE TABLE TFUNC_MUT

(

 CD_MATNUMBER(3) NOT NULL PRIMARY KEY,

 NR_GITNUMBER(2),

 VL_SALNUMBER(9,2),

 NR_ORDEM  NUMBER,--- nova coluna

 STATUSVARCHAR2(10) --- nova coluna

)

DROP SEQUENCE ORDEM

/

CREATE SEQUENCE ORDEM

ORDER

START WITH 1

NOCYCLE

/

4)   Recrio a trigger gravando na tabela temporária

 

CREATE OR REPLACE TRIGGER checa_salario

BEFORE UPDATE OF vl_sal, nr_git ON FUNC

FOR EACH ROW WHEN (NEW.nr_git  56)

DECLARE

  salario_minimo   NUMBER(5) := 0;

  salario_maximo   NUMBER(5) := 0;

  qtd  NUMBER;

  negativo EXCEPTION;

BEGIN

  IF (:NEW.VL_SAL  :OLD.vl_sal) THEN

 RAISE negativo;

  ELSE

 SELECT COUNT(*) INTO qtd FROM tfunc_mut

   where cd_mat = :new.cd_mat;

 IF qtd = 0 THEN

INSERT INTO TFUNC_MUT (cd_mat, vl_sal, nr_git, nr_ordem, status)

  VALUES (:NEW.cd_mat,:NEW.vl_sal,:NEW.nr_git,

  ordem.nextval, 'VALID');

:NEW.vl_sal := :OLD.vl_sal;

 end if;

  END IF;

EXCEPTION

  WHEN negativo THEN

RAISE_APPLICATION_ERROR (-20230, 'Incremento negativo');

END; 

 

5)   Crio nova trigger  

 

CREATE OR REPLACE TRIGGER checa_salario_mut

AFTER UPDATE OF vl_sal, nr_git ON FUNC

DECLARE

  cursor wc is SELECT * FROM tfunc_mut

   WHERE status = 'VALID'

   ORDER BY NR_ORDEM

   FOR UPDATE;

  salario_minimo   NUMBER(5) := 0;

  salario_maximo   NUMBER(5) := 0;

  faixaEXCEPTION;

  TYPE TIPO_MUT IS TABLE OF TFUNC_MUT%ROWTYPE

   INDEX BY BINARY_INTEGER;

  TABMUT   TIPO_MUT;

  I   NUMBER := 0;

BEGIN

  FOR wr IN wc LOOP

SELECT MIN(vl_sal), MAX(vl_sal)

  INTO salario_minimo, salario_maximo

  FROM func

 WHERE nr_git = wr.nr_git;

 IF wr.vl_sal  salario_minimo OR

wr.vl_sal  salario_maximo THEN

RAISE faixa;

 ELSE

I := I + 1;

TABMUT(I) := WR;

UPDATE tfunc_mut SET status = 'INVALID';

 END IF;

  END LOOP;

  FOR J IN 1..I LOOP

  UPDATE func SET vl_sal = TABMUT(J).vl_sal,

  nr_git = TABMUT(J).nr_git

 WHERE cd_mat = TABMUT(J).cd_mat;

  END LOOP;

  IF I  0 THEN

 DELETE FROM tfunc_mut;

  END IF;

EXCEPTION

  WHEN faixa THEN

DELETE FROM tfunc_mut;

RAISE_APPLICATION_ERROR (-20230, 'Salário fora da faixa');

END;

/

 

 

 

Verifique se os códigos acima lhe ajudam para resolver seu problema.

 

Boa sorte.

 

Atenciosamente, Sérgio Chaves. 





 



De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome 
de Sergio Lucchini
Enviada em: quarta-feira, 25 de novembro de 2009 10:58
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Trigger mutanting

 

  

Isso ocorre quando vc precisa acessa a tabela onde esta a trigger. Vc pode 
declarar a sua trigger como Pragma Autonomous_Transaction para eliminar esse 
erro.

Exemplo:

CREATE OR REPLACE TRIGGER nome_trigger AFTER UPDATE
ON nome_tabela REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

Pragma Autonomous_Transaction;

BEGIN


Sergio Lucchini


De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
[mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] 
Em nome de Débora Acácio
Enviada em: quarta-feira, 25 de novembro de 2009 09:41
Para: Grp Oracle
Assunto: [oracle_br] Trigger mutanting

Olá

Estou tendo um problema numa trigger que estou alterando está

Res: RES: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Caio Spadafora
Ainda recomendaria o a utilização de uma transação autonoma.

O problema de trigger mutante tambem é propagado em referências cíclicas, para 
o caso em questão não vejo grandes problemas de utilizar a transação autonoma.

Atenciosamente,
Caio Spadafora.





De: Sérgio Luiz Rodrigues Chaves sergio.cha...@elumini.com.br
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quarta-feira, 25 de Novembro de 2009 11:59:13
Assunto: RES: [oracle_br] Trigger mutanting

  
Debby,

Vou listar o procedimento básico para resolver esse problema:

1)   Tenho a tabela funcionário com a seguinte estrutura:

CREATE TABLE FUNC

(

CD_MATNUMBER(3) NOT NULL PRIMARY KEY,

NR_GITNUMBER(2),

VL_SALNUMBER(9,2)

2)   Tenho uma trigger para atualizar o salário do funcionário.

CREATE OR REPLACE TRIGGER checa_salario

BEFORE UPDATE OF vl_sal, nr_git ON FUNC

FOR EACH ROW WHEN (NEW.nr_git  56)

DECLARE

salario_minimo   NUMBER(5) := 0;

salario_maximo   NUMBER(5) := 0;

faixaEXCEPTION;

negativo EXCEPTION;

BEGIN

SELECT MIN(vl_sal), Max(vl_sal)

INTO salario_minimo, salario_maximo

FROM FUNC

WHERE nr_git = :new.nr_git;

IF (:NEW.vl_sal  salario_minimo OR

:NEW.vl_sal  salario_maximo) THEN

RAISE faixa;

ELSIF (:NEW.VL_SAL  :OLD.vl_sal) THEN

RAISE negativo;

END IF;

EXCEPTION

WHEN faixa THEN

RAISE_APPLICATION_ ERROR (-20225, 'Salário fora da faixa');

WHEN negativo THEN

RAISE_APPLICATION_ ERROR (-20230, 'Incremento negativo');

END;

Que quando executo dá erro de multante, pois estou realizando uma consulta na 
mesma tabela que estou atualizando.

3)   Resolvendo.. .. Criei uma tabela temporária com a mesma estrutura de 
FUNC de nome TFUNC_MUT.

DROP TABLE TFUNC_MUT;

CREATE TABLE TFUNC_MUT

(

CD_MATNUMBER(3) NOT NULL PRIMARY KEY,

NR_GITNUMBER(2),

VL_SALNUMBER(9,2),

NR_ORDEM  NUMBER,--- nova coluna

STATUSVARCHAR2(10) --- nova coluna

)

DROP SEQUENCE ORDEM

/

CREATE SEQUENCE ORDEM

ORDER

START WITH 1

NOCYCLE

/

4)   Recrio a trigger gravando na tabela temporária

CREATE OR REPLACE TRIGGER checa_salario

BEFORE UPDATE OF vl_sal, nr_git ON FUNC

FOR EACH ROW WHEN (NEW.nr_git  56)

DECLARE

salario_minimo   NUMBER(5) := 0;

salario_maximo   NUMBER(5) := 0;

qtd  NUMBER;

negativo EXCEPTION;

BEGIN

IF (:NEW.VL_SAL  :OLD.vl_sal) THEN

RAISE negativo;

ELSE

SELECT COUNT(*) INTO qtd FROM tfunc_mut

where cd_mat = :new.cd_mat;

IF qtd = 0 THEN

INSERT INTO TFUNC_MUT (cd_mat, vl_sal, nr_git, nr_ordem, status)

VALUES (:NEW.cd_mat, :NEW.vl_sal, :NEW.nr_git,

ordem.nextval, 'VALID');

:NEW.vl_sal := :OLD.vl_sal;

end if;

END IF;

EXCEPTION

WHEN negativo THEN

RAISE_APPLICATION_ ERROR (-20230, 'Incremento negativo');

END; 

5)   Crio nova trigger 

CREATE OR REPLACE TRIGGER checa_salario_ mut

AFTER UPDATE OF vl_sal, nr_git ON FUNC

DECLARE

cursor wc is SELECT * FROM tfunc_mut

WHERE status = 'VALID'

ORDER BY NR_ORDEM

FOR UPDATE;

salario_minimo   NUMBER(5) := 0;

salario_maximo   NUMBER(5) := 0;

faixaEXCEPTION;

TYPE TIPO_MUT IS TABLE OF TFUNC_MUT%ROWTYPE

INDEX BY BINARY_INTEGER;

TABMUT   TIPO_MUT;

I   NUMBER := 0;

BEGIN

FOR wr IN wc LOOP

SELECT MIN(vl_sal), MAX(vl_sal)

INTO salario_minimo, salario_maximo

FROM func

WHERE nr_git = wr.nr_git;

IF wr.vl_sal  salario_minimo OR

wr.vl_sal  salario_maximo THEN

RAISE faixa;

ELSE

I := I + 1;

TABMUT(I) := WR;

UPDATE tfunc_mut SET status = 'INVALID';

END IF;

END LOOP;

FOR J IN 1..I LOOP

UPDATE func SET vl_sal = TABMUT(J).vl_ sal,

nr_git = TABMUT(J).nr_ git

WHERE cd_mat = TABMUT(J).cd_ mat;

END LOOP;

IF I  0 THEN

DELETE FROM tfunc_mut;

END IF;

EXCEPTION

WHEN faixa THEN

DELETE FROM tfunc_mut;

RAISE_APPLICATION_ ERROR (-20230, 'Salário fora da faixa');

END;

/

Verifique se os códigos acima lhe ajudam para resolver seu problema.

Boa sorte.

Atenciosamente, Sérgio Chaves. 

 _ _ __

De: oracle...@yahoogrup os.com.br [mailto:oracle...@yahoogrup os.com.br] Em 
nome de Sergio Lucchini
Enviada em: quarta-feira, 25 de novembro de 2009 10:58
Para: oracle...@yahoogrup os.com.br
Assunto: RES: [oracle_br] Trigger mutanting

Isso ocorre quando vc precisa acessa a tabela onde esta a trigger. Vc pode 
declarar a sua trigger como Pragma Autonomous_Transact ion para eliminar esse 
erro.

Exemplo:

CREATE OR REPLACE TRIGGER nome_trigger AFTER UPDATE
ON nome_tabela REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

Pragma Autonomous_Transact ion;

BEGIN


Sergio Lucchini

 _ _ __
De: oracle...@yahoogrup os.com.br mailto:oracle_ br%40yahoogrupos .com.br  
[mailto:oracle...@yahoogrup os.com.br mailto:oracle_ br%40yahoogrupos .com.br 
] Em nome de Débora Acácio
Enviada em: quarta-feira, 25 de novembro de 2009 09:41
Para: Grp Oracle
Assunto: [oracle_br

Re: [oracle_br] Trigger mutanting

2009-11-25 Por tôpico Arystydes
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

2009-11-25 Por tôpico Débora Acácio

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

2009-11-25 Por tôpico Débora Acácio
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]



[oracle_br] TRIGGER chamando PROCEDURE

2009-09-14 Por tôpico Cesar Otoganizo da Horta
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






Re: [oracle_br] TRIGGER chamando PROCEDURE

2009-09-14 Por tôpico José Eduardo Batista Juliano
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




RES: [oracle_br] TRIGGER chamando PROCEDURE

2009-09-14 Por tôpico Sergio Lucchini
Tente colocar BEFORE update ...



Se não funcionar coloca dentro da tua trigger um

DBMS_OUTPUT.PUT_LINE(' SAFRA = ' ||  NEW.SAFRA || ' EMPRESA = ' || :NEW.EMPRESA 
|| ' FILIAL = ' || :NEW.FILIAL || ' OCMESTRE = ' || :NEW.OCMESTRE );



Depois de um update manual em um registro da tabela. Com isso vc vai poder ter 
certeza se a trigger esta ou não passando os valores nulos para a procedure.





Obrigado,

Sergio Lucchini



-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome 
de José Eduardo Batista Juliano
Enviada em: segunda-feira, 14 de setembro de 2009 16:10
Para: oracle_br@yahoogrupos.com.br
Assunto: 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



http://br.groups.yahoo.com/group/oracle_br/



oracle_br-unsubscr...@yahoogrupos.com.br



http://br.yahoo.com/info/utos.html







Checked by AVG - www.avg.com

Version: 8.5.408 / Virus Database: 270.13.93/2365 - Release Date: 09/12/09 
06:37:00


[As partes desta mensagem que não continham texto foram removidas]



[oracle_br] Trigger de logon erro ao se conectar

2009-06-24 Por tôpico Ricardo Duarte
Boa tarde

  Foi criada uma trigger de logon a determinado schema com sucesso porém ao
me conectar com o owner está ocorrendo o seguinte erro:

ORA-00604: error occurred at recursive SQL level 1
ORA-00900: invalid SQL statement
ORA-06512: at line 4

Abaixo os dados da BD:

BANNER

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE10.2.0.4.0  Production
TNS for HPUX: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production


Segue abaixo o script da trigger que foi criada

CREATE OR REPLACE TRIGGER SYS.logon_CDCADMIN_SCHEMA AFTER LOGON ON
CDCADMIN.SCHEMA
DECLARE
  lcommand varchar(200);
  BEGIN
  Execute Immediate 'execute sys.DBMS_LOGMNR_D.BUILD( OPTIONS=
sys.DBMS_LOGMNR_D.STORE_IN_REDO_LOGS)';
  Execute Immediate 'execute sys.dbms_logmnr.add_logfile(
logfilename = '/oracle/OE2E_T1/log01/log01_1.rdo',options =
sys.dbms_logmnr.new)';
  Execute Immediate 'execute sys.dbms_logmnr.add_logfile(
logfilename = '/oracle/OE2E_T1/log01/log02_1.rdo',options =
sys.dbms_logmnr.addfile)';
  Execute Immediate 'execute sys.dbms_logmnr.add_logfile(
logfilename = '/oracle/OE2E_T1/log01/log03_1.rdo',options =
sys.dbms_logmnr.addfile)';
  Execute Immediate 'execute sys.dbms_logmnr.add_logfile(
logfilename = '/oracle/OE2E_T1/log01/log04_1.rdo',options =
sys.dbms_logmnr.addfile)';
  Execute Immediate 'execute sys.dbms_logmnr.start_logmnr()';
  END;
/
Agradeço desde já

Ricardo Hoffmann


[As partes desta mensagem que não continham texto foram removidas]



[oracle_br] Trigger para bloqueio de Acesso com PL/SQL ou SQL PLUS

2009-05-19 Por tôpico candiurudba
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



Re: [oracle_br] Trigger para bloqueio de Acesso com PL/SQL ou SQL PLUS

2009-05-19 Por tôpico Duilio Bruniera Junior
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]



[oracle_br] Trigger Before update

2009-05-14 Por tôpico Marcelo Lopes Garcez
Bom dia, Pessoal !
 
 
Estou implementando uma trigger, onde eu preciso também saber o usuário que
fez a alteração. Nesse caso somente pela v$session eu consigo fazer isso?
Oracle 10g.
 
 
CREATE OR REPLACE TRIGGER BRADAPVM.TG_LOG_ATIVA_PROP BEFORE UPDATE ON PROP
FOR EACH ROW
BEGIN

IF (:OLD.MARCA IN (4,7)) AND (:NEW.MARCA NOT IN (4,7)) THEN

INSERT INTO LOG
(NRPLAN, CD_STAT_OLD, CD_STAT_NEW, CD_OPER,
MARCA_OLD, MARCA_NEW, DTAGENDA, DTDIGI, DTGRAVA)
VALUES
(:NEW.NRPLAN, :OLD.CD_STAT, :NEW.CD_STAT, :NEW.CD_OPER,
:OLD.MARCA, :NEW.MARCA, :NEW.DTAGENDA, :NEW.DTDIGI, SYSDATE);

END IF;

END TG_LOG_ATIVA_PROP;

 
Obrigado.
 
Marcelo.







[As partes desta mensagem que não continham texto foram removidas]



Res: [oracle_br] Trigger Before update

2009-05-14 Por tôpico Elis Azevedo Nery
A variável User armazena o usuário logado no banco.





De: Marcelo Lopes Garcez mgar...@work.srv.br
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quinta-feira, 14 de Maio de 2009 15:24:07
Assunto: [oracle_br] Trigger Before update





Bom dia, Pessoal !


Estou implementando uma trigger, onde eu preciso também saber o usuário que
fez a alteração. Nesse caso somente pela v$session eu consigo fazer isso?
Oracle 10g.


CREATE OR REPLACE TRIGGER BRADAPVM.TG_ LOG_ATIVA_ PROP BEFORE UPDATE ON PROP
FOR EACH ROW
BEGIN

IF (:OLD.MARCA IN (4,7)) AND (:NEW.MARCA NOT IN (4,7)) THEN

INSERT INTO LOG
(NRPLAN, CD_STAT_OLD, CD_STAT_NEW, CD_OPER,
MARCA_OLD, MARCA_NEW, DTAGENDA, DTDIGI, DTGRAVA)
VALUES
(:NEW.NRPLAN, :OLD.CD_STAT, :NEW.CD_STAT, :NEW.CD_OPER,
:OLD.MARCA, :NEW.MARCA, :NEW.DTAGENDA, :NEW.DTDIGI, SYSDATE);

END IF;

END TG_LOG_ATIVA_ PROP;

Obrigado.

Marcelo.

[As partes desta mensagem que não continham texto foram removidas]


   


  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]



[oracle_br] Trigger no oracle 10G

2009-05-11 Por tôpico Leonardo Santos da Mata
oi pessoal  alguém poderia me dizer se é possivel fazer insert dentro de uma
trigger na parte do exeption?
 to usando triggers para auditoria.
Obrigado

-- 
__
Leonardo Santos da Mata
__
MSN: leonardodam...@hotmail.com
GTalk: leonardodamata
SKYPE: lsmata
TWITTER: leonardodamata
E-MAIL: leonardodam...@gmail.com
__


[As partes desta mensagem que não continham texto foram removidas]



[oracle_br] trigger

2009-04-16 Por tôpico ewerton_grillo
boa tarde !
Pessoal preciso de uma ajuda.
Tenho duas tabelas, autorizacao e servico_da_autorizacao.
na tabela autorizacao tenho o funcionario_competente na qual preciso alterar de 
acordo com as situações do serviços na tabela servico_da_autorizacao.
Exemplo: num protocolo posso ter diversos serviços com as seguintes 
situações:Aprovado, Reprovado, Cancelado, Substituido.

Toda vez que o funcionario_competente for igual a Notificar e 
todos os serviços estiverem com a situação Aprovado,
tenho que alterar o funcionario competente para Auto_Finaliz
porém se por algum motivo a situação do serviço for alterada
para outra situação que não seja Aprovado voltar para o 
funcionario_competente para Notificar.

segue abaixo como estou fazendo, mas não estou conseguindo 
alterar. Alguém poderia me ajudar.
Att.,Ewerton

create or replace trigger TR_BIU_AUTORIZACAO_AUTOFIN before
 UPDATE ON PRODUCAO.AUTORIZACAO
FOR EACH ROW
DECLARE
V_RESULTADO  NUMBER;
BEGIN

 IF :NEW.CDFUNCIONARIO_COMPETENTE = 'NOTIFICAR' THEN

  SELECT
   SUM(CASE WHEN SA.CDSITUACAO 'AP' THEN 1
WHEN SA.CDSITUACAO IS NULL THEN 1 ELSE 0 END
  ) AS OUTROS into V_resultado
   FROM  PRODUCAO.SERVICO_DA_AUTORIZACAO SA,
 PRODUCAO.AUTORIZACAOAU
   WHERE SA.NRAUTORIZACAO   = :NEW.NRAUTORIZACAO
   AND   AU.NRAUTORIZACAO   = SA.NRAUTORIZACAO;

  IF V_RESULTADO = 0
 THEN :NEW.CDFUNCIONARIO_COMPETENTE := 'AUTO_FINALIZ';
  END IF;


END IF;
END TR_BIU_AUTORIZACAO_AUTOFIN;






[oracle_br] Trigger em Nested Table

2008-11-11 Por tôpico Robert Anderson
Bom dia pessoal,

Esse é meu primeiro post e já agradeço antecipado pela ajuda.

Tenho a seguinte estrutura:

create or replace type compromisso as object (
   data date,
   inicio date,
   duracao number(4),
   descricao varchar(255)
);


create or replace type compromisso_lista as table of compromisso;

create or replace type usuario as object (
   codigo number(4),
   nome varchar(40),
   compromissos compromisso_lista
);

create table usuarios of usuario (
   codigo primary key
)
nested table compromissos store as compromissos_st;


Como faço para criar uma trigger que seja disparada ao inserir ou atualizar
a nested table com o intuito de evitar choque de horário entre os
compromissos cadastrados para um usuário?

Por exemplo:

insert into table(select u.compromissos from usuarios u where u.codigo = 1)
values (to_date(11/11/2008', 'DD/MM/'), to_date(11/11/2008 12:00',
'DD/MM/ HH24:MI', 120, 'tirar dúvidas');

Caso o compromisso abaixo fosse inserido um erro seria retornado devido ao
choque de horário:

insert into table(select u.compromissos from usuarios u where u.codigo = 1)
values (to_date(11/11/2008', 'DD/MM/'), to_date(11/11/2008 13:00',
'DD/MM/ HH24:MI', 120, 'tirar dúvidas');

Pois, o compromisso anterior começa 12:00 mas tem duração de 120 minutos, ou
seja, às 13:00 não seria possível se cadastrar outro compromisso.


Alguma sugestão?


Obrigado,

Robert


[As partes desta mensagem que não continham texto foram removidas]



[oracle_br] Trigger autenticação

2008-10-08 Por tôpico Fabiana Moreira
Será que alguem pode me ajudar nessa trigger?

A função dela é enviar um e-mail ao usuário que tiver uma tarefa atribuida
ao seu login, mas ela agora esta com um erro no smtp que antes era open
relay e agora não é mais, ou seja ele precisa de autenticação de usuário e
senha para concluir o envio.
Alguém poderia me dizer o comando eu posso colar nessa trigger para que ela
autentique usuário e senha antes do envio.

Muito, mas mto obrigada pessoal!

*

declare

*sSrcEmail *varchar2*(255);

sSrcName *varchar2*(255);

sMsg *varchar2*(255);

sEmail *varchar2*(255);

xmessag *varchar2*(255);
*

-- username varchar2(256) := 'crm';

-- passwd varchar2(256) := '12345';

**PROCEDURE *send_mail

(sender *IN VARCHAR2*,

recipient *IN VARCHAR2*,

subject *IN VARCHAR2*,

message *IN VARCHAR2*)

*IS

**--mailhost VARCHAR2(30) := 'Exchange1'; --  NOME OU IP DO SERVIDOR DE
SMTP

*mailhost *VARCHAR2*(30) := '15.15.1.1'; *--'172.17.10.131'; --  NOME OU IP
DO SERVIDOR DE SMTP

*mail_conn *utl_smtp*.connection;

crlf *VARCHAR2*( 2 ):= *CHR*( 13 ) || *CHR*( 10 );

mesg *VARCHAR2*( 1000 );

*BEGIN

*mail_conn := *utl_smtp*.open_connection(mailhost, 25);

mesg:= 'Date: ' || *TO_CHAR*( *SYSDATE*, 'dd Mon yy hh24:mi:ss' ) || crlf ||


'From: '||sender||'' || crlf ||

'Subject: '||subject || crlf ||

'To: '||recipient || crlf ||
*

-- 'To: '||'[EMAIL PROTECTED]' || crlf ||

*' '||crlf||

'A manifestac?o numero ' || :new.incident_number || ' foi encaminhada a
voce.'||crlf||

' '||crlf||'Para acessar o sistema, clique em:
http://anpprod.gpnetrj.com.br:8000/';

*utl_smtp*.helo(mail_conn, mailhost);

*utl_smtp*.mail(mail_conn, sender);

*utl_smtp*.rcpt(mail_conn, recipient);
*

-- utl_smtp.rcpt(mail_conn, '[EMAIL PROTECTED]');

-- utl_smtp.open_data(mail_conn);

**utl_smtp*.data(mail_conn, mesg);

*utl_smtp*.quit(mail_conn);

*Exception

WHEN **OTHERS **THEN

*raise_application_error(-20002,'unable to send the mail.'||*SQLERRM*);

*END*;
*

Begin

if *:new.incident_owner_id  :old.incident_owner_id

*then

*sMsg := 'Erro ao buscar email do novo responsavel. ';

*select distinct nvl*(fu.EMAIL_ADDRESS,'NO_EMAIL')

,fu.user_name

*into *sSrcEmail

,sSrcName

*from *jtf_rs_resource_extns jr

, fnd_user fu

*where *jr.user_id = fu.user_id

*and *jr.resource_id = :new.incident_owner_id;

*if *sSrcEmail  'NO_EMAIL'

*then
**

-- sMsg := 'Erro ao enviar email para novo responsavel. ';

*sMsg := '...';

sEmail := 'A manifestac?o numero ' || :new.incident_number || ' foi
encaminhada a voce.';

send_mail ('[EMAIL PROTECTED]',sSrcEmail ,sEmail,xmessag );

*--send_mail ('[EMAIL PROTECTED]','[EMAIL PROTECTED]' ,sEmail ||
sSrcEmail ,xmessag );

**end if*;

*end if*;
*

exception

when **no_data_found **then

**-- email nao obrigatorio

**null*;

*when **others **then

*sMsg := sMsg || *substr*(*sqlerrm*,1,700);

raise_application_error(-20300, sMsg);
*

End*;



-- 
Fabiana Moreira
Consultora Funcional Trainee - GPTI
Celular: (21) 9382-0945
E-mail: [EMAIL PROTECTED]
Msn: [EMAIL PROTECTED]

  --

declare 
  sSrcEmail varchar2(255);
  sSrcName  varchar2(255);

  sMsg   varchar2(255);
  sEmail varchar2(255);
  xmessag varchar2(255);
--  username varchar2(256) := 'crm';
--  passwd varchar2(256) := '12345';

  
  PROCEDURE send_mail 
   (sender IN VARCHAR2, 
recipient IN VARCHAR2, 
subject IN VARCHAR2, 
message IN VARCHAR2) 
IS 
  --mailhost VARCHAR2(30) := 'Exchange1'; --  NOME OU IP DO SERVIDOR DE 
SMTP 
  mailhost VARCHAR2(30) := '15.15.1.1'; --'172.17.10.131'; --  NOME OU IP 
DO SERVIDOR DE SMTP
  mail_conn utl_smtp.connection;  
  crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 ); 
  mesg VARCHAR2( 1000 ); 

BEGIN 

 mail_conn := utl_smtp.open_connection(mailhost, 25);

 mesg:= 'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf || 
'From: '||sender||'' || crlf ||
'Subject: '||subject || crlf ||
'To: '||recipient || crlf ||
--'To: '||'[EMAIL PROTECTED]' || crlf ||
' '||crlf||
'A manifestac?o numero ' || :new.incident_number || ' foi 
encaminhada a voce.'||crlf||
' '||crlf||'Para acessar o sistema, clique em: 
http://anpprod.gpnetrj.com.br:8000/'; 

 utl_smtp.helo(mail_conn, mailhost); 
 utl_smtp.mail(mail_conn, sender);
 utl_smtp.rcpt(mail_conn, recipient);
-- utl_smtp.rcpt(mail_conn, '[EMAIL PROTECTED]');
-- utl_smtp.open_data(mail_conn);
 utl_smtp.data(mail_conn, mesg); 
 utl_smtp.quit(mail_conn); 

   Exception 
 WHEN OTHERS THEN 
  raise_application_error(-20002,'unable to send the mail.'||SQLERRM);
END; 

Begin
  if :new.incident_owner_id  :old.incident_owner_id
  then 
sMsg := 'Erro ao buscar email do novo responsavel. ';
select distinct nvl(fu.EMAIL_ADDRESS,'NO_EMAIL')
  ,fu.user_name
  into sSrcEmail
  ,sSrcName
  from jtf_rs_resource_extns jr
   , fnd_user fu
 where jr.user_id = 

Re: [oracle_br] TRIGGER - ALTERNATIVA PARA ERRO TABLE TABLE_NAME IS MUTATING

2008-09-25 Por tôpico Alvaro Luiz Mansor Neto
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.

2008-09-24 Por tôpico Jean Carlo
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.

2008-09-24 Por tôpico Alvaro Luiz Mansor Neto
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

[oracle_br] TRIGGER - ALTERNATIVA PARA ERRO TABLE TABLE_NAME IS MUTATING

2008-09-24 Por tôpico Leonardo Souza
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]



[oracle_br] Trigger com update.

2008-09-22 Por tôpico Jean Carlo
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]



Re: [oracle_br] Trigger com update.

2008-09-22 Por tôpico Alvaro Luiz Mansor Neto
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.

2008-09-22 Por tôpico Jean Carlo
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.

2008-09-22 Por tôpico Alvaro Luiz Mansor Neto
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]



[oracle_br] Trigger after logon

2008-09-16 Por tôpico Bruno Fantin
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]



Re: [oracle_br] Trigger after logon

2008-09-16 Por tôpico Rodrigo Mufalani

   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

2008-09-16 Por tôpico Bruno Fantin
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

2008-09-16 Por tôpico Rodrigo Mufalani
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

2008-09-16 Por tôpico Bruno Fantin
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

2008-09-16 Por tôpico Bruno Fantin
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

2008-09-16 Por tôpico Rodrigo Mufalani

   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

2008-09-16 Por tôpico Bruno Fantin
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

[oracle_br] Trigger não Inseri Registros

2008-08-15 Por tôpico rei_do_delphi
Pessoal, preciso de uma ajuda meio urgente, 
criei uma trigger assim:


create or replace trigger trg_wms_item_complemento_emp
   after insert on wms_item_complemento
   for each row
   begin
   if :new.empresa='01' then
  insert into wms_item_complemento values (
  '10',
  :new.ITEM,
  :new.DEPOSIT,
  :new.ITEM_DEPOSIT, 
  :new.CLASSIF_ABC,  
  :new.CLASSIF_PERMANENTE, 
  :new.COD_ONU,
  :new.CLASSE_RISCO,   
  :new.SCLASSE_RISCO,
  :new.PERMITE_PALETE_MISTO,
  :new.UTILIZA_EQPTO_PICKING_AUTOM,   

  :new.PERMITE_CONVERSAO_UNID_MEDIDA, 

  :new.CONTROLE_EXERCITO, 
  :new.CONTROLE_POLICIA_FEDERAL,  
  :new.UNID_MEDIDA_FRACION,
  :new.CAT_ITEM,   
  :new.QTD_DIA_PRAZO_VALID,   
  :new.QTD_DIA_PRAZO_MAXIMO_RECEBTO,  
 
  :new.QTD_DIA_PRAZO_ALARME_VALID,
  :new.SIT_BLOQUEIO_ITEM,  
  :new.MANTER_SKU_ORIGINAL_PICKING,   
  
  :new.IDENTIF_LOTE, 
  :new.IDENTIF_SERIE,
  :new.IDENTIF_PECA,
  :new.IDENTIF_DAT_VALID,
  :new.IDENTIF_DAT_PRODUCAO,   
  :new.PERMITE_SAI_FIS_NREGULARIZADA, 
  
  :new.CONTROLE_POLICIA_MILITAR);  
  insert into wms_item_complemento values (
  '20',
  :new.ITEM,
  :new.DEPOSIT,
  :new.ITEM_DEPOSIT, 
  :new.CLASSIF_ABC,  
  :new.CLASSIF_PERMANENTE, 
  :new.COD_ONU,
  :new.CLASSE_RISCO,   
  :new.SCLASSE_RISCO,
  :new.PERMITE_PALETE_MISTO,
  :new.UTILIZA_EQPTO_PICKING_AUTOM,   

  :new.PERMITE_CONVERSAO_UNID_MEDIDA, 

  :new.CONTROLE_EXERCITO, 
  :new.CONTROLE_POLICIA_FEDERAL,  
  :new.UNID_MEDIDA_FRACION,
  :new.CAT_ITEM,   
  :new.QTD_DIA_PRAZO_VALID,   
  :new.QTD_DIA_PRAZO_MAXIMO_RECEBTO,  
 
  :new.QTD_DIA_PRAZO_ALARME_VALID,
  :new.SIT_BLOQUEIO_ITEM,  
  :new.MANTER_SKU_ORIGINAL_PICKING,   
  
  :new.IDENTIF_LOTE, 
  :new.IDENTIF_SERIE,
  :new.IDENTIF_PECA,
  :new.IDENTIF_DAT_VALID,
  :new.IDENTIF_DAT_PRODUCAO,   
  :new.PERMITE_SAI_FIS_NREGULARIZADA, 
  
  :new.CONTROLE_POLICIA_MILITAR); 
  commit;   
  end if;
   dbms_output.put_line(:new.empresa);   
exception
when others then
 dbms_output.put_line('DEU ERRADO!');
   end;


porém, quando rodo:

insert into wms_item_complemento values 
('01','156','068446103000113','156','A','N','','','','N','N','
N','N','N','N','0','','','',0,'S','','','','','','N','N');

onde o primeiro campo é o campo da empresa, ele não inseri os dois 
registros que a trigger deveria inserir, alguém tem alguma dica?

é uma trigger que deve inserir linhas na própria tabela que a dispara.



Re: [oracle_br] trigger em sql server

2008-07-03 Por tôpico Rosivaldo
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


  1   2   >