RE: [oracle_br] Set Transaction

2009-05-20 Por tôpico Eduardo Abrantes de Souza
Esta é a parte principal.  Agora eu te pergunto:  set transaction use rollback 
segment RBS_INAD, tem que ser via EXECUTE_IMMEDIATE, ou não importa?  Isto 
porque este comando parece não estar funcionando, pois o segmento de rollback 
alocado não é o RBS_INAD.  Ele pega um dos defaults.  Obrigado pela ajuda.  
Grande abraço.


PROCEDURE CARGA_ANALISE_INADIMPLENCIA (p_hora_limite in number)
 IS
PE_PROCESSO VARCHAR2(1000);
MENS_ERRO VARCHAR2(400);
v_mensagem varchar2(100);
ERRO EXCEPTION;

 BEGIN
   set transaction use rollback segment RBS_INAD;
   v_mensagem := null;
   p_excluir_pedidos_15_dias(v_mensagem);
   if v_mensagem is not null then
 mens_erro := 'Erro ao excluir pedidos com mais de 15 dias '||v_mensagem;
 raise erro;
   end if;
   CARGA_DADOS_FINANCEIRO (MENS_ERRO);
   IF MENS_ERRO IS NOT NULL THEN
   update SELEC_ANALISE_INADIMPLENCIA set CD_SIT_PEDIDO = 9
where CD_SIT_PEDIDO = 0;
   commit;
   set transaction use rollback segment RBS_INAD;
  RAISE ERRO;
   END IF;
   FOR C1 IN ( SELECT S.*,C.*
 FROM SELEC_ANALISE_INADIMPLENCIA S, 
CONFIG_ANALISE_INADIMPLENCIA C
WHERE CD_SIT_PEDIDO IN (0) order by s.nr_pedido)
   LOOP
 if to_number(to_char(sysdate,'hh24mi')) = p_hora_limite
 then
   insert into fcbatch values ('ANL_INAD','Ultrapassou Hora Limite 
'||to_char(p_hora_limite,'0999')||'  '||to_char(sysdate,'dd/mm/yy 
hh24:mi:ss'),NULL,to_char(sysdate,'dd/mm/yy 
hh24:mi:ss'),userenv('SESSIONID'),SYSDATE);
   commit;
   set transaction use rollback segment RBS_INAD;
   exit;
 end if;  
   insert into fcbatch values ('ANL_INAD','  Fim da execucao do pedido 
'||c1.nr_pedido||' - '||to_char(sysdate,'dd/mm/yy 
hh24:mi:ss'),to_char(sysdate,'dd/mm/yy 
hh24:mi:ss'),NULL,userenv('SESSIONID'),SYSDATE);
   commit;
   set transaction use rollback segment RBS_INAD;
   END LOOP;
   commit;
   set transaction use rollback segment RBS_INAD;

  EXCEPTION
WHEN OTHERS THEN
MENS_ERRO := 'Erro na procedure CARGA_ANALISE_INADIMPLENCIA - '||SQLERRM;
   commit;
   set transaction use rollback segment RBS_INAD;
  END;

-Original Message-
From: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] On 
Behalf Of Júlio César Corrêa
Sent: terça-feira, 19 de maio de 2009 22:54
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] Set Transaction

Passa o código ou trecho dele.

2009/5/19 Eduardo Abrantes de Souza eduardo.abran...@fgv.br



 Cara, o que seria 'Transação autonoma'? Este comando está em uma procedure
 que faz parte de uma package e é o primeiro comando a ser executado.


 -Original Message-
 From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto:
 oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf
 Of Júlio César Corrêa
 Sent: terça-feira, 19 de maio de 2009 13:05
 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br
 Subject: Re: [oracle_br] Set Transaction

 Tem transação autonoma?

 2009/5/19 Eduardo Abrantes de Souza 
 eduardo.abran...@fgv.brEduardo.Abrantes%40fgv.br
 

 
 
  Caros amigos do grupo,
 
  Estou com um problema em minha instalação e/ou procedure:
 
  Na procedure tenho o seguinte comando: set transaction use rollback
 segment
  RBS_INAD.
 
  Não é sempre, mas às vezes acontece o seguinte erro: ORA-01453: SET
  TRANSACTION must be first statement of transaction.
 
  E já houve casos que deu o seguinte erro: ORA-01555: snapshot too old:
  rollback segment number 6 with name R05 too small.
 
  Sendo assim, gostaria de saber se existe alguma maneira dentro da
 procedure
  de confirmar se o segmento de rollback foi realmente setado, pois a
  aplicação está usando, em algumas execuções, o segmento de rollback
 default.
 
 
  Qual seria a melhor maneira de se realizar esta operação com segurança?
 
  Grande abraço a todos.
 
  [As partes desta mensagem que não continham texto foram removidas]
 
 
 

 --
 Júlio César Corrêa
 IS Technologist - Oracle DBA
 www.dbajccorrea.com

 To stay competitive in the tech industry, never stop
 learning. Always be on the lookout for better ways of
 doing things and new technologies. Our industry does
 not reward people who let themselves stagnate
 -John Hall, Senior Vice President, Oracle University

 [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

  




-- 
Júlio 

Re: [oracle_br] Set Transaction

2009-05-20 Por tôpico Andre Santos
Eduardo

Qual a versão do Oracle?

[ ]

André

2009/5/20 Eduardo Abrantes de Souza eduardo.abran...@fgv.br



 Esta é a parte principal. Agora eu te pergunto: set transaction use
 rollback segment RBS_INAD, tem que ser via EXECUTE_IMMEDIATE, ou não
 importa? Isto porque este comando parece não estar funcionando, pois o
 segmento de rollback alocado não é o RBS_INAD. Ele pega um dos defaults.
 Obrigado pela ajuda. Grande abraço.

 PROCEDURE CARGA_ANALISE_INADIMPLENCIA (p_hora_limite in number)
 IS
 PE_PROCESSO VARCHAR2(1000);
 MENS_ERRO VARCHAR2(400);
 v_mensagem varchar2(100);
 ERRO EXCEPTION;

 BEGIN
 set transaction use rollback segment RBS_INAD;
 v_mensagem := null;
 p_excluir_pedidos_15_dias(v_mensagem);
 if v_mensagem is not null then
 mens_erro := 'Erro ao excluir pedidos com mais de 15 dias '||v_mensagem;
 raise erro;
 end if;
 CARGA_DADOS_FINANCEIRO (MENS_ERRO);
 IF MENS_ERRO IS NOT NULL THEN
 update SELEC_ANALISE_INADIMPLENCIA set CD_SIT_PEDIDO = 9
 where CD_SIT_PEDIDO = 0;
 commit;
 set transaction use rollback segment RBS_INAD;
 RAISE ERRO;
 END IF;
 FOR C1 IN ( SELECT S.*,C.*
 FROM SELEC_ANALISE_INADIMPLENCIA S, CONFIG_ANALISE_INADIMPLENCIA C
 WHERE CD_SIT_PEDIDO IN (0) order by s.nr_pedido)
 LOOP
 if to_number(to_char(sysdate,'hh24mi')) = p_hora_limite
 then
 insert into fcbatch values ('ANL_INAD','Ultrapassou Hora Limite
 '||to_char(p_hora_limite,'0999')||' '||to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),NULL,to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),userenv('SESSIONID'),SYSDATE);
 commit;
 set transaction use rollback segment RBS_INAD;
 exit;
 end if;
 insert into fcbatch values ('ANL_INAD',' Fim da execucao do pedido
 '||c1.nr_pedido||' - '||to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),NULL,userenv('SESSIONID'),SYSDATE);
 commit;
 set transaction use rollback segment RBS_INAD;
 END LOOP;
 commit;
 set transaction use rollback segment RBS_INAD;

 EXCEPTION
 WHEN OTHERS THEN
 MENS_ERRO := 'Erro na procedure CARGA_ANALISE_INADIMPLENCIA - '||SQLERRM;
 commit;
 set transaction use rollback segment RBS_INAD;
 END;

 -Original Message-
 From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto:
 oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf
 Of Júlio César Corrêa
 Sent: terça-feira, 19 de maio de 2009 22:54
 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br
  Subject: Re: [oracle_br] Set Transaction

 Passa o código ou trecho dele.

 2009/5/19 Eduardo Abrantes de Souza 
 eduardo.abran...@fgv.brEduardo.Abrantes%40fgv.br
 

 
 
  Cara, o que seria 'Transação autonoma'? Este comando está em uma
 procedure
  que faz parte de uma package e é o primeiro comando a ser executado.
 
 
  -Original Message-
  From: oracle_br@yahoogrupos.com.br 
  oracle_br%40yahoogrupos.com.broracle_br%
 40yahoogrupos.com.br[mailto:
  oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%
 40yahoogrupos.com.br] On Behalf
  Of Júlio César Corrêa
  Sent: terça-feira, 19 de maio de 2009 13:05
  To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%
 40yahoogrupos.com.br
  Subject: Re: [oracle_br] Set Transaction
 
  Tem transação autonoma?
 
  2009/5/19 Eduardo Abrantes de Souza 
  eduardo.abran...@fgv.brEduardo.Abrantes%40fgv.br
 Eduardo.Abrantes%40fgv.br
  
 
  
  
   Caros amigos do grupo,
  
   Estou com um problema em minha instalação e/ou procedure:
  
   Na procedure tenho o seguinte comando: set transaction use rollback
  segment
   RBS_INAD.
  
   Não é sempre, mas às vezes acontece o seguinte erro: ORA-01453: SET
   TRANSACTION must be first statement of transaction.
  
   E já houve casos que deu o seguinte erro: ORA-01555: snapshot too old:
   rollback segment number 6 with name R05 too small.
  
   Sendo assim, gostaria de saber se existe alguma maneira dentro da
  procedure
   de confirmar se o segmento de rollback foi realmente setado, pois a
   aplicação está usando, em algumas execuções, o segmento de rollback
  default.
  
  
   Qual seria a melhor maneira de se realizar esta operação com segurança?
  
   Grande abraço a todos.
  
   [As partes desta mensagem que não continham texto foram removidas]
  
  
  
 
  --
  Júlio César Corrêa
  IS Technologist - Oracle DBA
  www.dbajccorrea.com
 
  To stay competitive in the tech industry, never stop
  learning. Always be on the lookout for better ways of
  doing things and new technologies. Our industry does
  not reward people who let themselves stagnate
  -John Hall, Senior Vice President, Oracle University
 
  [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 » 

RE: [oracle_br] Set Transaction

2009-05-20 Por tôpico Eduardo Abrantes de Souza
8.1.7.4.0

 

From: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] On 
Behalf Of Andre Santos
Sent: quarta-feira, 20 de maio de 2009 10:14
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] Set Transaction

 






Eduardo

Qual a versão do Oracle?

[ ]

André

2009/5/20 Eduardo Abrantes de Souza eduardo.abran...@fgv.br 
mailto:Eduardo.Abrantes%40fgv.br 



 Esta é a parte principal. Agora eu te pergunto: set transaction use
 rollback segment RBS_INAD, tem que ser via EXECUTE_IMMEDIATE, ou não
 importa? Isto porque este comando parece não estar funcionando, pois o
 segmento de rollback alocado não é o RBS_INAD. Ele pega um dos defaults.
 Obrigado pela ajuda. Grande abraço.

 PROCEDURE CARGA_ANALISE_INADIMPLENCIA (p_hora_limite in number)
 IS
 PE_PROCESSO VARCHAR2(1000);
 MENS_ERRO VARCHAR2(400);
 v_mensagem varchar2(100);
 ERRO EXCEPTION;

 BEGIN
 set transaction use rollback segment RBS_INAD;
 v_mensagem := null;
 p_excluir_pedidos_15_dias(v_mensagem);
 if v_mensagem is not null then
 mens_erro := 'Erro ao excluir pedidos com mais de 15 dias '||v_mensagem;
 raise erro;
 end if;
 CARGA_DADOS_FINANCEIRO (MENS_ERRO);
 IF MENS_ERRO IS NOT NULL THEN
 update SELEC_ANALISE_INADIMPLENCIA set CD_SIT_PEDIDO = 9
 where CD_SIT_PEDIDO = 0;
 commit;
 set transaction use rollback segment RBS_INAD;
 RAISE ERRO;
 END IF;
 FOR C1 IN ( SELECT S.*,C.*
 FROM SELEC_ANALISE_INADIMPLENCIA S, CONFIG_ANALISE_INADIMPLENCIA C
 WHERE CD_SIT_PEDIDO IN (0) order by s.nr_pedido)
 LOOP
 if to_number(to_char(sysdate,'hh24mi')) = p_hora_limite
 then
 insert into fcbatch values ('ANL_INAD','Ultrapassou Hora Limite
 '||to_char(p_hora_limite,'0999')||' '||to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),NULL,to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),userenv('SESSIONID'),SYSDATE);
 commit;
 set transaction use rollback segment RBS_INAD;
 exit;
 end if;
 insert into fcbatch values ('ANL_INAD',' Fim da execucao do pedido
 '||c1.nr_pedido||' - '||to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),NULL,userenv('SESSIONID'),SYSDATE);
 commit;
 set transaction use rollback segment RBS_INAD;
 END LOOP;
 commit;
 set transaction use rollback segment RBS_INAD;

 EXCEPTION
 WHEN OTHERS THEN
 MENS_ERRO := 'Erro na procedure CARGA_ANALISE_INADIMPLENCIA - '||SQLERRM;
 commit;
 set transaction use rollback segment RBS_INAD;
 END;

 -Original Message-
 From: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
 oracle_br%40yahoogrupos.com.br[mailto:
 oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
 oracle_br%40yahoogrupos.com.br] On Behalf
 Of Júlio César Corrêa
 Sent: terça-feira, 19 de maio de 2009 22:54
 To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
 oracle_br%40yahoogrupos.com.br
 Subject: Re: [oracle_br] Set Transaction

 Passa o código ou trecho dele.

 2009/5/19 Eduardo Abrantes de Souza eduardo.abran...@fgv.br 
 mailto:Eduardo.Abrantes%40fgv.br Eduardo.Abrantes%40fgv.br
 

 
 
  Cara, o que seria 'Transação autonoma'? Este comando está em uma
 procedure
  que faz parte de uma package e é o primeiro comando a ser executado.
 
 
  -Original Message-
  From: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
  oracle_br%40yahoogrupos.com.broracle_br%
 40yahoogrupos.com.br[mailto:
  oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
  oracle_br%40yahoogrupos.com.broracle_br%
 40yahoogrupos.com.br] On Behalf
  Of Júlio César Corrêa
  Sent: terça-feira, 19 de maio de 2009 13:05
  To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
  oracle_br%40yahoogrupos.com.broracle_br%
 40yahoogrupos.com.br
  Subject: Re: [oracle_br] Set Transaction
 
  Tem transação autonoma?
 
  2009/5/19 Eduardo Abrantes de Souza eduardo.abran...@fgv.br 
  mailto:Eduardo.Abrantes%40fgv.br Eduardo.Abrantes%40fgv.br
 Eduardo.Abrantes%40fgv.br
  
 
  
  
   Caros amigos do grupo,
  
   Estou com um problema em minha instalação e/ou procedure:
  
   Na procedure tenho o seguinte comando: set transaction use rollback
  segment
   RBS_INAD.
  
   Não é sempre, mas às vezes acontece o seguinte erro: ORA-01453: SET
   TRANSACTION must be first statement of transaction.
  
   E já houve casos que deu o seguinte erro: ORA-01555: snapshot too old:
   rollback segment number 6 with name R05 too small.
  
   Sendo assim, gostaria de saber se existe alguma maneira dentro da
  procedure
   de confirmar se o segmento de rollback foi realmente setado, pois a
   aplicação está usando, em algumas execuções, o segmento de rollback
  default.
  
  
   Qual seria a melhor maneira de se realizar esta operação com segurança?
  
   Grande abraço a todos.
  
   [As partes desta mensagem que não continham texto foram removidas]
  
  
  
 
  --
  Júlio César Corrêa
  IS Technologist - Oracle DBA
  www.dbajccorrea.com
 
  To stay competitive in the tech industry, never stop
  learning. Always be on the lookout for better ways of
  

[oracle_br] Re: Set Transaction

2009-05-20 Por tôpico jlchiappa
Colega, deixa eu me meter aí, vamos dar uns palpites : não, não tem NADA a ver 
usra o SET TRANSACTION num EXECUTE IMMEDIATE, ele é totalmente aceito em 
PL/SQL. Uma coisa que pode estar pegando é que essse comando TEM que ser o 
primeiro DA TRANSAÇÃO, e não o primeiro DA PROCEDURE. Quero dizer o seguinte : 
imagine que eu acabei de conectar no banco, faço uns SELECTs apenas, coisa e 
tal,  e executo a tua procedure CARGA_ANALISE_INADIMPLENCIA : como não tenho 
nada pendente, não tenho INSERT/UPDATE/DELETE pendente (ou seja, não TRANSAÇÂO 
aberta) o cara funciona.
OK, imagine agora que em outra sessão antes de executar a tua procedure eu fiz 
outras coisas, chamei outras rotinas que fazem DMLs - nesse instante eu executo 
a CARGA_ANALISE_INADIMPLENCIA, como JÁ TENHO outros INSERTs/UPDATE/DELETEs 
pendentes, eu JÁ TENHO transação aberta, o SET TRANSACION ** não ** está sendo 
executado como o primeiro comando da transação, ele NÂO VAI funcionar Será 
que pode ser isso o seu problema ?? Algo me diz que sim...

 E é claro : a maneira correta e recomendável de se trabalhar é : se vc sabe 
que precisará de x bytes de rollback, *** SEMPRE *** deveria se ter TODOS os 
segmentos de rollback com o MESMO tamanho, aí qualquer um é qualquer um, E 
preferencialmente se usar undo automático, SE a sua versão (que vc NÃO DIZ qual 
é, pra variar) suporta... Esse negócio de tentar ficar fazendo economia de 
feijõezinhos no tamanho da tablespace de rollback/undo quase NUNCA dá certo, e 
quase sempre dá é prejuízo, crie do tamanho que é preciso e be happy...

 []s

  Chiappa
--- Em oracle_br@yahoogrupos.com.br, Eduardo Abrantes de Souza 
eduardo.abran...@... escreveu

 Esta é a parte principal.  Agora eu te pergunto:  set transaction use 
 rollback segment RBS_INAD, tem que ser via EXECUTE_IMMEDIATE, ou não importa? 
  Isto porque este comando parece não estar funcionando, pois o segmento de 
 rollback alocado não é o RBS_INAD.  Ele pega um dos defaults.  Obrigado pela 
 ajuda.  Grande abraço.
 
 
 PROCEDURE CARGA_ANALISE_INADIMPLENCIA (p_hora_limite in number)
  IS
 PE_PROCESSO VARCHAR2(1000);
 MENS_ERRO VARCHAR2(400);
 v_mensagem varchar2(100);
 ERRO EXCEPTION;
 
  BEGIN
set transaction use rollback segment RBS_INAD;
v_mensagem := null;
p_excluir_pedidos_15_dias(v_mensagem);
if v_mensagem is not null then
  mens_erro := 'Erro ao excluir pedidos com mais de 15 dias '||v_mensagem;
  raise erro;
end if;
CARGA_DADOS_FINANCEIRO (MENS_ERRO);
IF MENS_ERRO IS NOT NULL THEN
update SELEC_ANALISE_INADIMPLENCIA set CD_SIT_PEDIDO = 9
 where CD_SIT_PEDIDO = 0;
commit;
set transaction use rollback segment RBS_INAD;
   RAISE ERRO;
END IF;
FOR C1 IN ( SELECT S.*,C.*
  FROM SELEC_ANALISE_INADIMPLENCIA S, 
 CONFIG_ANALISE_INADIMPLENCIA C
 WHERE CD_SIT_PEDIDO IN (0) order by s.nr_pedido)
LOOP
  if to_number(to_char(sysdate,'hh24mi')) = p_hora_limite
  then
insert into fcbatch values ('ANL_INAD','Ultrapassou Hora Limite 
 '||to_char(p_hora_limite,'0999')||'  '||to_char(sysdate,'dd/mm/yy 
 hh24:mi:ss'),NULL,to_char(sysdate,'dd/mm/yy 
 hh24:mi:ss'),userenv('SESSIONID'),SYSDATE);
commit;
set transaction use rollback segment RBS_INAD;
exit;
  end if;  
insert into fcbatch values ('ANL_INAD','  Fim da execucao do pedido 
 '||c1.nr_pedido||' - '||to_char(sysdate,'dd/mm/yy 
 hh24:mi:ss'),to_char(sysdate,'dd/mm/yy 
 hh24:mi:ss'),NULL,userenv('SESSIONID'),SYSDATE);
commit;
set transaction use rollback segment RBS_INAD;
END LOOP;
commit;
set transaction use rollback segment RBS_INAD;
 
   EXCEPTION
 WHEN OTHERS THEN
 MENS_ERRO := 'Erro na procedure CARGA_ANALISE_INADIMPLENCIA - '||SQLERRM;
commit;
set transaction use rollback segment RBS_INAD;
   END;
 
 -Original Message-
 From: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] On 
 Behalf Of Júlio César Corrêa
 Sent: terça-feira, 19 de maio de 2009 22:54
 To: oracle_br@yahoogrupos.com.br
 Subject: Re: [oracle_br] Set Transaction
 
 Passa o código ou trecho dele.
 
 2009/5/19 Eduardo Abrantes de Souza eduardo.abran...@...
 
 
 
  Cara, o que seria 'Transação autonoma'? Este comando está em uma procedure
  que faz parte de uma package e é o primeiro comando a ser executado.
 
 
  -Original Message-
  From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto:
  oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf
  Of Júlio César Corrêa
  Sent: terça-feira, 19 de maio de 2009 13:05
  To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br
  Subject: Re: [oracle_br] Set Transaction
 
  Tem transação autonoma?
 
  2009/5/19 Eduardo Abrantes de Souza 
  eduardo.abran...@...Eduardo.Abrantes%40fgv.br
  
 
  
  
   Caros amigos do grupo,
  
   Estou com um problema em minha instalação e/ou procedure:
  
   Na procedure tenho 

Re: [oracle_br] Re: Set Transaction

2009-05-20 Por tôpico Júlio César Corrêa
Concordo com o Chiappa.
Detalhe o SET TRANSACTION tem que ser o primeiro comando da transação.

Outros:

- O Oracle abre uma transação com um DML e termina a transação com Commit ou
Rollback.
- A transação é independente de bloco.
- Multiplas transações podem estar em um unico bloco.(No seu caso acontece
isso,você faz DML e logo após faz commit,faz dml,faz commit).

Você não tem transação autonoma que poderia ser o problema,tipo você
especifica um rollback segment e abre uma transação autonoma,esta nova
transação é independente portanto não usaria mesmo o Rollback segment.


Sobre o erro ORA-01555 é como o Chiappa falou comfigure um tamanho ideal
para você e be happy.

Fique de olho se você não chama outra procedure e esta  abre outras
transações sem o uso do rollback segment que você quer.

Abs,


2009/5/20 jlchiappa jlchia...@yahoo.com.br



 Colega, deixa eu me meter aí, vamos dar uns palpites : não, não tem NADA a
 ver usra o SET TRANSACTION num EXECUTE IMMEDIATE, ele é totalmente aceito em
 PL/SQL. Uma coisa que pode estar pegando é que essse comando TEM que ser o
 primeiro DA TRANSAÇÃO, e não o primeiro DA PROCEDURE. Quero dizer o seguinte
 : imagine que eu acabei de conectar no banco, faço uns SELECTs apenas, coisa
 e tal, e executo a tua procedure CARGA_ANALISE_INADIMPLENCIA : como não
 tenho nada pendente, não tenho INSERT/UPDATE/DELETE pendente (ou seja, não
 TRANSAÇÂO aberta) o cara funciona.
 OK, imagine agora que em outra sessão antes de executar a tua procedure eu
 fiz outras coisas, chamei outras rotinas que fazem DMLs - nesse instante eu
 executo a CARGA_ANALISE_INADIMPLENCIA, como JÁ TENHO outros
 INSERTs/UPDATE/DELETEs pendentes, eu JÁ TENHO transação aberta, o SET
 TRANSACION ** não ** está sendo executado como o primeiro comando da
 transação, ele NÂO VAI funcionar Será que pode ser isso o seu problema
 ?? Algo me diz que sim...

 E é claro : a maneira correta e recomendável de se trabalhar é : se vc sabe
 que precisará de x bytes de rollback, *** SEMPRE *** deveria se ter TODOS os
 segmentos de rollback com o MESMO tamanho, aí qualquer um é qualquer um, E
 preferencialmente se usar undo automático, SE a sua versão (que vc NÃO DIZ
 qual é, pra variar) suporta... Esse negócio de tentar ficar fazendo economia
 de feijõezinhos no tamanho da tablespace de rollback/undo quase NUNCA dá
 certo, e quase sempre dá é prejuízo, crie do tamanho que é preciso e be
 happy...

 []s

 Chiappa
 --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br,
 Eduardo Abrantes de Souza eduardo.abran...@... escreveu

 
  Esta é a parte principal. Agora eu te pergunto: set transaction use
 rollback segment RBS_INAD, tem que ser via EXECUTE_IMMEDIATE, ou não
 importa? Isto porque este comando parece não estar funcionando, pois o
 segmento de rollback alocado não é o RBS_INAD. Ele pega um dos defaults.
 Obrigado pela ajuda. Grande abraço.
 
 
  PROCEDURE CARGA_ANALISE_INADIMPLENCIA (p_hora_limite in number)
  IS
  PE_PROCESSO VARCHAR2(1000);
  MENS_ERRO VARCHAR2(400);
  v_mensagem varchar2(100);
  ERRO EXCEPTION;
 
  BEGIN
  set transaction use rollback segment RBS_INAD;
  v_mensagem := null;
  p_excluir_pedidos_15_dias(v_mensagem);
  if v_mensagem is not null then
  mens_erro := 'Erro ao excluir pedidos com mais de 15 dias '||v_mensagem;
  raise erro;
  end if;
  CARGA_DADOS_FINANCEIRO (MENS_ERRO);
  IF MENS_ERRO IS NOT NULL THEN
  update SELEC_ANALISE_INADIMPLENCIA set CD_SIT_PEDIDO = 9
  where CD_SIT_PEDIDO = 0;
  commit;
  set transaction use rollback segment RBS_INAD;
  RAISE ERRO;
  END IF;
  FOR C1 IN ( SELECT S.*,C.*
  FROM SELEC_ANALISE_INADIMPLENCIA S, CONFIG_ANALISE_INADIMPLENCIA C
  WHERE CD_SIT_PEDIDO IN (0) order by s.nr_pedido)
  LOOP
  if to_number(to_char(sysdate,'hh24mi')) = p_hora_limite
  then
  insert into fcbatch values ('ANL_INAD','Ultrapassou Hora Limite
 '||to_char(p_hora_limite,'0999')||' '||to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),NULL,to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),userenv('SESSIONID'),SYSDATE);
  commit;
  set transaction use rollback segment RBS_INAD;
  exit;
  end if;
  insert into fcbatch values ('ANL_INAD',' Fim da execucao do pedido
 '||c1.nr_pedido||' - '||to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),NULL,userenv('SESSIONID'),SYSDATE);
  commit;
  set transaction use rollback segment RBS_INAD;
  END LOOP;
  commit;
  set transaction use rollback segment RBS_INAD;
 
  EXCEPTION
  WHEN OTHERS THEN
  MENS_ERRO := 'Erro na procedure CARGA_ANALISE_INADIMPLENCIA -
 '||SQLERRM;
  commit;
  set transaction use rollback segment RBS_INAD;
  END;
 
  -Original Message-
  From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto:
 oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf
 Of Júlio César Corrêa
  Sent: terça-feira, 19 de maio de 2009 22:54
  To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br
  Subject: Re: [oracle_br] Set Transaction
 
  Passa o código ou trecho dele.
 
  

RE: [oracle_br] Re: Set Transaction

2009-05-20 Por tôpico Eduardo Abrantes de Souza
Valeu, amigos.  Com estes dados e mais uma bateria de testes acho que vou 
conseguir acertar.

Chiappa, realmente, com ou sem execute immediate o segmento de rollback é 
setado (Fiz uma procedure de teste).  

O que deve estar acontecendo é a chamada de outras procedures ou funções e ai o 
segmento deve se alterar ou perder/desfazer o ponteiro feito no set transaction.

Estamos juntos!!!

-Original Message-
From: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] On 
Behalf Of Júlio César Corrêa
Sent: quarta-feira, 20 de maio de 2009 11:23
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] Re: Set Transaction

Concordo com o Chiappa.
Detalhe o SET TRANSACTION tem que ser o primeiro comando da transação.

Outros:

- O Oracle abre uma transação com um DML e termina a transação com Commit ou
Rollback.
- A transação é independente de bloco.
- Multiplas transações podem estar em um unico bloco.(No seu caso acontece
isso,você faz DML e logo após faz commit,faz dml,faz commit).

Você não tem transação autonoma que poderia ser o problema,tipo você
especifica um rollback segment e abre uma transação autonoma,esta nova
transação é independente portanto não usaria mesmo o Rollback segment.


Sobre o erro ORA-01555 é como o Chiappa falou comfigure um tamanho ideal
para você e be happy.

Fique de olho se você não chama outra procedure e esta  abre outras
transações sem o uso do rollback segment que você quer.

Abs,


2009/5/20 jlchiappa jlchia...@yahoo.com.br



 Colega, deixa eu me meter aí, vamos dar uns palpites : não, não tem NADA a
 ver usra o SET TRANSACTION num EXECUTE IMMEDIATE, ele é totalmente aceito em
 PL/SQL. Uma coisa que pode estar pegando é que essse comando TEM que ser o
 primeiro DA TRANSAÇÃO, e não o primeiro DA PROCEDURE. Quero dizer o seguinte
 : imagine que eu acabei de conectar no banco, faço uns SELECTs apenas, coisa
 e tal, e executo a tua procedure CARGA_ANALISE_INADIMPLENCIA : como não
 tenho nada pendente, não tenho INSERT/UPDATE/DELETE pendente (ou seja, não
 TRANSAÇÂO aberta) o cara funciona.
 OK, imagine agora que em outra sessão antes de executar a tua procedure eu
 fiz outras coisas, chamei outras rotinas que fazem DMLs - nesse instante eu
 executo a CARGA_ANALISE_INADIMPLENCIA, como JÁ TENHO outros
 INSERTs/UPDATE/DELETEs pendentes, eu JÁ TENHO transação aberta, o SET
 TRANSACION ** não ** está sendo executado como o primeiro comando da
 transação, ele NÂO VAI funcionar Será que pode ser isso o seu problema
 ?? Algo me diz que sim...

 E é claro : a maneira correta e recomendável de se trabalhar é : se vc sabe
 que precisará de x bytes de rollback, *** SEMPRE *** deveria se ter TODOS os
 segmentos de rollback com o MESMO tamanho, aí qualquer um é qualquer um, E
 preferencialmente se usar undo automático, SE a sua versão (que vc NÃO DIZ
 qual é, pra variar) suporta... Esse negócio de tentar ficar fazendo economia
 de feijõezinhos no tamanho da tablespace de rollback/undo quase NUNCA dá
 certo, e quase sempre dá é prejuízo, crie do tamanho que é preciso e be
 happy...

 []s

 Chiappa
 --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br,
 Eduardo Abrantes de Souza eduardo.abran...@... escreveu

 
  Esta é a parte principal. Agora eu te pergunto: set transaction use
 rollback segment RBS_INAD, tem que ser via EXECUTE_IMMEDIATE, ou não
 importa? Isto porque este comando parece não estar funcionando, pois o
 segmento de rollback alocado não é o RBS_INAD. Ele pega um dos defaults.
 Obrigado pela ajuda. Grande abraço.
 
 
  PROCEDURE CARGA_ANALISE_INADIMPLENCIA (p_hora_limite in number)
  IS
  PE_PROCESSO VARCHAR2(1000);
  MENS_ERRO VARCHAR2(400);
  v_mensagem varchar2(100);
  ERRO EXCEPTION;
 
  BEGIN
  set transaction use rollback segment RBS_INAD;
  v_mensagem := null;
  p_excluir_pedidos_15_dias(v_mensagem);
  if v_mensagem is not null then
  mens_erro := 'Erro ao excluir pedidos com mais de 15 dias '||v_mensagem;
  raise erro;
  end if;
  CARGA_DADOS_FINANCEIRO (MENS_ERRO);
  IF MENS_ERRO IS NOT NULL THEN
  update SELEC_ANALISE_INADIMPLENCIA set CD_SIT_PEDIDO = 9
  where CD_SIT_PEDIDO = 0;
  commit;
  set transaction use rollback segment RBS_INAD;
  RAISE ERRO;
  END IF;
  FOR C1 IN ( SELECT S.*,C.*
  FROM SELEC_ANALISE_INADIMPLENCIA S, CONFIG_ANALISE_INADIMPLENCIA C
  WHERE CD_SIT_PEDIDO IN (0) order by s.nr_pedido)
  LOOP
  if to_number(to_char(sysdate,'hh24mi')) = p_hora_limite
  then
  insert into fcbatch values ('ANL_INAD','Ultrapassou Hora Limite
 '||to_char(p_hora_limite,'0999')||' '||to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),NULL,to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),userenv('SESSIONID'),SYSDATE);
  commit;
  set transaction use rollback segment RBS_INAD;
  exit;
  end if;
  insert into fcbatch values ('ANL_INAD',' Fim da execucao do pedido
 '||c1.nr_pedido||' - '||to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),to_char(sysdate,'dd/mm/yy
 hh24:mi:ss'),NULL,userenv('SESSIONID'),SYSDATE);
  commit;
  set transaction use rollback segment 

Re: [oracle_br] Como mover spfile no RAC

2009-05-20 Por tôpico Willian Fernando Frasson
Faça o seguinte como você já tem o pfile, criei o spfile no disco local certo?

Depois utilize a DBMS - DBMS_FILE_TRANSFER e jogue o mesmo dentro do ASM.

Segue link:
http://www.oracle-base.com/articles/10g/FileTransfer10g.php

  - Original Message - 
  From: Alexandre Anselmo 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Wednesday, May 20, 2009 2:20 PM
  Subject: [oracle_br] Como mover spfile no RAC






  Pessoal,

  mais uma bronquinha com essa maravilha que é o RAC. Precisei criar uma 
segunda instancia no meu RAC mas o dbca colocou o spfile em um datagroup 
diferente do que se econtra o spfile da primeira instancia.

  Estou precisando mover este spfile para o local correto mas estou tendo 
muitas dificuldades.

  1 - Criei o pfile a partir do spfile para o filesystem

  2- dei um srvctl stop database -d db;

  3- dei startup no banco em estado no mount usando o init criado

  4 - tento criar o spfile para o novo datagroup mas nao consigo

  * quando faco create spfile='+ASMADM' from 
pfile=/u01/app/oracle/admin/db/scripts/init_new.ora' o comando fica travado e 
nao cria o arquivo e nem da erro. Fica la um tempao e tenho que matar o 
processo na mao.

  ** quando faco create spfile='+ASMADM/db/spfiledb.ora' from 
pfile=/u01/app/oracle/admin/db/scripts/init_new.ora' recebo o erro:

  ERROR at line 1:
  ORA-01078: failure in processing system parameters
  ORA-17502: ksfdcre:4 Failed to create file +ASMADM/db
  ORA-15056: additional error message
  ORA-17502: ksfdcre:4 Failed to create file +ASMADM/db
  ORA-15005: name db is already used by an existing alias
  ORA-06512: at line 4

  Se eu conseguisse criar o spfile iria depois fazer srvctl modify database -d 
db -p '+ARCH/db/spfiledb.ora' -s open para atualizar o OCR.

  Alguem ja passou por isso? Estou fazendo aalguma coisa errada?

  Qualquer ajuda sera bem vinda.

  Desde ja agradeco.

  Ats,
  Alexandre Tenorio.



  


--



  O Banco de Dados de Vírus interno expirou.
  Verificado por AVG - http://www.avgbrasil.com.br 
  Versão: 8.0.233 / Banco de dados de vírus: 270.10.16/1926 - Data de 
Lançamento: 30/1/2009 17:31


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



[oracle_br] [MBA ORACLE] MBA Sistema de Gestão Empresarial Inte grada em Banco de Dados ORACLE

2009-05-20 Por tôpico Edson Almeida (Tecnico)
A Universidade Veiga de Almeida-RJ, vem através deste divulgar seu curso MBA
para formação de DBA Oracle.

*Objetivo
*Este curso se propõe a capacitar o profissional de TI a atuar no ciclo de
vida de um projeto de banco de dados Oracle e na sua administração. Seu
objetivo especifico é qualificar o profissional para atuar como
Administrador de Banco de Dados Oracle (DBA), atuando nas diversas fases,
tais como: fases de definição do modelo de dados, da especificação e da
implementação  do projeto físico e, por fim, da criação do banco de dados
Oracle.

Aprenda a apoiar a redução de custos e aumentar a produtividade nas
empresas. Venha ter um diferencial no mercado de trabalho.

*Público-alvo
*Profissional de nível superior que exerça ou que possa vir a exercer a
função técnica ou de Gestão na Administração de Banco de Dados Oracle.

*Programa
*Gerenciamento de Projetos PJ
Estudo de Processos de Negócio EPN
Modelagem Dados ORACLE BD
Banco de Dados Oracle 10g: Introdução à Linguagem SQL
Banco de Dados Oracle 10g: Programando com PL/SQL
Gestão de Projeto e Business Intelligence
Metodologia de Pesquisa e Didática do Ensino Superior
Banco de Dados Oracle 10g: Administration Workshop I
Banco de Dados 10g: Administration Workshop II
Oracle Forms Developer 10g: Build Internet Applications e Report
Administração, Performance e Otimização do Banco de Dados Oracle
Alta disponibilidade da base de dados Oracle 10g
Reorganização e definição da base de dados Oracle 10g
Programando com PL/SQL Gestão de Projeto e Business Intelligence

*Investimento*
18 parcelas de R$ 499,00

*Dia e Horário*
Campus Tijuca (Rua Ibituruna, 75)
Terças e Quintas, das 18h45min às 21h45min com sábados alternados, das 8h às
13h.

*Matriculas abertas
*Inicio: *16/06/2009 (Aula Inaugural)*

*Coordenação e Contatos
*Edson Almeida Junior (ed...@consulting.com.br)
Eduardo Pimentel (epimen...@gmail.com)
Sérgio Chaves (sergio.cha...@elumini.com.br)

*Mais informações *
Ligue Viega de Almeida (21) 2574 
www.uva.br


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



[oracle_br] Como mover spfile no RAC

2009-05-20 Por tôpico Alexandre Anselmo

Pessoal,

  mais uma bronquinha com essa maravilha que é o RAC. Precisei criar uma 
segunda instancia no meu RAC mas o dbca colocou o spfile em um datagroup 
diferente do que se econtra o spfile da primeira instancia.

Estou precisando mover este spfile para o local correto mas estou tendo muitas 
dificuldades.

1 - Criei o pfile a partir do spfile para o filesystem

2-  dei um srvctl stop database -d db;

3- dei startup no banco em estado no mount usando o init criado

4 - tento criar o spfile para o novo datagroup mas nao consigo

* quando faco create spfile='+ASMADM' from 
pfile=/u01/app/oracle/admin/db/scripts/init_new.ora' o comando fica travado e 
nao cria o arquivo e nem da erro. Fica la um tempao e tenho que matar o 
processo na mao.

** quando faco create spfile='+ASMADM/db/spfiledb.ora' from 
pfile=/u01/app/oracle/admin/db/scripts/init_new.ora' recebo o erro:

ERROR at line 1:
ORA-01078: failure in processing system parameters
ORA-17502: ksfdcre:4 Failed to create file +ASMADM/db
ORA-15056: additional error message
ORA-17502: ksfdcre:4 Failed to create file +ASMADM/db
ORA-15005: name db is already used by an existing alias
ORA-06512: at line 4

Se eu conseguisse criar o spfile iria depois fazer srvctl modify database -d db 
-p '+ARCH/db/spfiledb.ora' -s open para atualizar o OCR.

Alguem ja passou por isso? Estou fazendo aalguma coisa errada?

Qualquer ajuda sera bem vinda.

Desde ja agradeco.

Ats,
Alexandre Tenorio.