Avatar billede dakinenexus Nybegynder
24. november 2000 - 15:06 Der er 4 kommentarer og
1 løsning

Låser fast ved UPDATE

Hej.

Jeg har problemer med en 8.0.4 Enterprise på HP-UX10.20, der låser fast. (SQL timeglas forsvinder aldrig). Man er nødt til at køre End Task\'.
Problemet opstår, når man forsøger at ændre data i en bestemt tabel. (Måske flere).
Jeg kan sagtens køre SELECT. Ingen problem, men så snart jeg prøver at ændre data ved at køre en UPDATE kommando låser det fast.
Jeg bruger SQL Worksheet, men fejlen sker også fra andre programmer. Jeg troede først, at det måske skyldtes en manglede COMMIT, da jeg har erfaring med, at det samme sker hvis man har data det ikke er commit\'et.
Dette er så vidt jeg kan se ikke årsagen.

Kan nogle hjælpe?
Henrik
Avatar billede pnielsen Nybegynder
24. november 2000 - 15:32 #1
Umiddelbart er det lidt svært at sige ud fra de oplysninger du giver!
Har du prøvet at trace på sessionen ?

Hvad siger din alert.log?
Har du en trigger på den tabel?
Er det en lokal tabel eller er det via et databaselink?
Avatar billede dakinenexus Nybegynder
27. november 2000 - 09:34 #2
Min alert.log siger ikke noget om dette.
Jeg har ikke nogen trigger på tabellen.
Trace har jeg ikke prøvet. (Kender den umiddelbart ikke. Vil lige undersøge hvad den gør)

Databasen ligger på en HP Unix maskine, der fungere som DatabaseServer. (client/server).
Det er altså via et database link.

Jeg forstiller mig, at det må være noget med, at der står nogle åbne data et sted.
Efter et stykke tid, kommer det op igen uden vi umiddelbart gør noget. Kunne det f.eks ikke være, når en bruger lukker en session ned, der ikke er kørt færdig?
Men på et eller andet tidspunkt kommer det igen.
Avatar billede pnielsen Nybegynder
27. november 2000 - 09:46 #3
Umiddelbart kunne det lyde som en row lock.
Prøv lige den har når den hænger:
select  l.sid,s.serial#,s.username,s.terminal,
        decode(l.type,\'RW\',\'RW - Row Wait Enqueue\',
                    \'TM\',\'TM - DML Enqueue\',
                    \'TX\',\'TX - Trans Enqueue\',
                    \'UL\',\'UL - User\',l.type||\'System\') res,
        substr(t.name,1,10) tab,u.name owner,
        l.id1,l.id2,
        decode(l.lmode,1,\'No Lock\',
                2,\'Row Share\',
                3,\'Row Exclusive\',
                4,\'Share\',
                5,\'Shr Row Excl\',
                6,\'Exclusive\',null) lmode,
        decode(l.request,1,\'No Lock\',
                2,\'Row Share\',
                3,\'Row Excl\',
                4,\'Share\',
                5,\'Shr Row Excl\',
                6,\'Exclusive\',null) request
from v$lock l, v$session s,
sys.user$ u,sys.obj$ t
where l.sid = s.sid
and s.type != \'BACKGROUND\'
and t.obj# = l.id1
and u.user# = t.owner#
/
Du skal have dba rettigheder for at køre scriptet. Start en ny session og prøv det!
Avatar billede dakinenexus Nybegynder
27. november 2000 - 10:31 #4
Hej igen.

Det lyder meget sandsynligt med noget row lock, uden jeg ved en hel masse om det.

Men angående dit forslag, så er jeg åben overfor at prøve det, men jeg ville måske gerne vide lidt mere om, hvad den gør. Godtnok er det kun en Select, men der er meget rart, at vide hvad den gør. Jeg arbejder på et produktionsmiljø med nogle brugere, der ikke altid er med på noget sjov, hvis du forstår.

Og du mener, at hvis det sker igen, at systemet hænger på min klient pga. update statment,så kan jeg køre din Select. Den skal ikke køres fra svrmgrl på selve serveren vel?
Avatar billede pnielsen Nybegynder
27. november 2000 - 10:49 #5
Selecten vil fortælle dig hvilke sessioner der låser for hinanden og hvilken række det drejer sig om!
Nej du behøver ikke at køre det fra serveren... bare en ny sql*plus session, hvor du er logget ind med DBA rettigheder (f.eks. system).

Jeg forstår godt din bekymring. Prøv selecten på en testbase, hvis du vil se hvad den gør. Men der skulle helst ikke ske noget :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester