Xará

Achei que "TP_REGISTRO" significasse "tipo de registro" e faria uma chave
composta com "SQ_REGISTRO".

Sobre a freqüência de atualização e o problema com "lock", é difícil
responder... o ideal seria fazer testes de carga/stress em uma base de
testes.
De qualquer forma, penso que seria interessante ter um tratamento de erro no
trigger, tentando contornar/prevenir um erro de PK...
Uma maneira seria captar o erro e tentar a inclusão novamente
(preferencialmente aguardando um tempo aleatório).
Mas tudo tem um preço: esse tratamento, da forma como imaginei, também pode
gerar um "overhead"...

Conclusão: para ter uma solução segura, não tem como escapar de uma boa fase
de testes!  ;^)   Verificando essas possibilidades técnicas.

[ ]

André


Em 04/08/08, André Alves <[EMAIL PROTECTED]> escreveu:
>
>   Valeu André.
>
> O TP_REGISTRO é a única coluna da chave primária da tabela.
>
> No entanto, em determinados horários do dia a freqüência de atualização
> desta tabela é bastante alta... será que essa sua sugestão resolveria o
> problema do dead lock?
>
> _____
>
> De: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br> [mailto:
> oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>] Em
> nome de Andre Santos
> Enviada em: segunda-feira, 4 de agosto de 2008 09:36
> Para: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>
> Assunto: Re: [oracle_br] Lock Table...
>
> Xará
>
> Se não houver uma concorrência muito alta para inclusão nessa tabela, teste
> fazer um trigger assim:
>
> CREATE OR REPLACE tg_inc_sua_tabela
> BEFORE INSERT ON sua_tabela
> FOR EACH ROW
> BEGIN
> SELECT MAX( sq_registro ) + 1
> INTO :NEW.sq_registro
> FROM sua_tabela
> WHERE tp_registro = :NEW.tp_registro;
> END;
> /
>
> Imagino que o índice da chave primária tenha a coluna "TP_REGISTRO" em
> primeiro lugar (para melhor desempenho).
>
> [ ]
>
> André
>
> Em 02/08/08, André Alves <andre_tato11@ <mailto:
> andre_tato11%40yahoo.com.br <andre_tato11%2540yahoo.com.br>>
> yahoo.com.br> escreveu:
> >
> > Tenho uma situação semelhante a do Márcio e não posso utilizar SEQUENCE,
> > pois a chave é composta. A minha tabela de chaves tem duas colunas
> >
> > TP_REGISTRO VARCHAR2(5) NOT NULL (PK)
> >
> > SQ_REGISTRO NUMBER(10) NOT NULL
> >
> > Temos várias rotinas que executam BATCH e que obtém a chave por esta
> > tabela.
> > Nós estamos utilizando SELECT FOR UPDATE para locar o registro, porém
> > aparentemente está dando DEAD LOCK, a sessão fica presa e cai com
> SNAPSHOT
> > TOO OLD.
> >
> > Nossa versão de Oracle é o 9.0.2 em HPUX. Se alguém tiver alguma idéia...
> >
> > _____
> >
> > De: [EMAIL PROTECTED] 
> > <mailto:oracle_br%40yahoogrupos.com.br<oracle_br%2540yahoogrupos.com.br>>
> os.com.br
> <oracle_br%40yahoogrupos.com.br> [mailto:
> > [EMAIL PROTECTED] 
> > <mailto:oracle_br%40yahoogrupos.com.br<oracle_br%2540yahoogrupos.com.br>>
> os.com.br
> <oracle_br%40yahoogrupos.com.br>] Em
> > nome de Diego Leite
> > Enviada em: sábado, 2 de agosto de 2008 11:55
> > Para: [EMAIL PROTECTED] 
> > <mailto:oracle_br%40yahoogrupos.com.br<oracle_br%2540yahoogrupos.com.br>
> >
> os.com.br <oracle_br%40yahoogrupos.com.br>
> > Assunto: Re: [oracle_br] Lock Table...
> >
> > Lock Table nao e aconselhavel pela ORACLE. Pq nao criar uma
> > sequence?Imagine 2 sistemas(com N usuarios tentando acessar essa
> > tabela locada!!
> >
> > 2008/8/1 Márcio Ricardo Alves da Silva <[EMAIL PROTECTED]
> > <mailto:marcio_cbj%40yahoo.com.br <marcio_cbj%2540yahoo.com.br><marcio_cbj%
> 2540yahoo.com.br>> com.br>:
> > > Untitled DocumentBoas.
> > >
> > > a utlização do comando Lock Table é aconselhável a sua utilização?
> Estou
> > com uma situação que o ID de uma tabela é gerado "manualmente" sem
> sequence
> > e hoje dois sistemas utilizam esse ID, e aonteceu de os sistemas pegarem
> o
> > mesmo ID. Pensei em pegar o ID só na hora da gravação do registro, acho
> > mais
> > garantido mais não 100%.
> > >
> > >
> > > ---------------------------------------------
> > > Márcio Ricardo Alves da Silva
> > > Programador .Net
> > > OCA 9i
> > > marcio.silva@
> <mailto:marcio.silva%40config.com.br <marcio.silva%2540config.com.br>
> <marcio.silva%2540config.com.br>>
> > config.com.br
> > >
> > > Config Informática Ltda
> > > Av. Eng. Luis Carlos Berrine, 801 - 7o. andar
> > > 04571-010 - Brooklin Novo - São Paulo - SP
> > > Fone (11) 5501-8300
> > > Fax (11) 5501-8302
> > > www.config.com.br
> > >
> > >
> > > [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-
> > <http://www.mail-
> <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/>
> archive.com/oracle_br@yahoogrupos.com.br<archive.com%2Foracle_br%40yahoogrupos.com.br>
> />
> > archive.com/ 
> > <mailto:archive.com%2Foracle_br%40yahoogrupos.com.br<archive.com%252Foracle_br%2540yahoogrupos.com.br>
> >
> oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br><archive.com
> %2Foracle_br%40yahoogrupos.com.br>
> > /
> > > ----------------------------------------------------------
> > >>Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU
> > PROPRIO ESPAÇO! VISITE: http://www.oraclebr <http://www.oraclebr
> <http://www.oraclebr.com.br/> .com.br/>
> > .com.br/
> > > ---------------------------------------------------------- Links do
> > Yahoo!
> > Grupos
> > >
> > >
> > >
> >
> > --
> > Att,
> >
> > Diego Leite - DBA Jr.
> >
> > Internal Virus Database is out of date.
> > Checked by AVG - http://www.avg. <http://www.avg.com> com
> > Version: 8.0.138 / Virus Database: 270.5.6/1575 - Release Date: 7/26/2008
> > 4:18 PM
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> No virus found in this incoming message.
> Checked by AVG - http://www.avg.com
> Version: 8.0.138 / Virus Database: 270.5.10/1587 - Release Date: 8/2/2008
> 5:30 PM
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>


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

Responder a