AFAIK, proses insert tidak menyebabkan locking di level record yg menyebabkan 
user lainnya menunggu. Alasannya adalah karena data yg di-insert adalah data 
baru dgn ROWID yg baru, bukan data lama spt halnya proses update/delete.

Alasan kenapa terjadi penungguan(wait) pada proses insert antara lain:
- Alokasi extent. Ini terjadi ketika extent yg ada sudah penuh, dan ini 
mengharuskan dialokasikannya extent baru. Extent yg dialokasinya bisa saja 
extent buat table ybs atau juga extent utk indexes.
- Alokasi extent baru yg mengakibatkan terjadinya perbesaran datafile. Ini 
terjadi spt kasus diatas, akan tetapi sudah tidak ada free space di dalam 
tablespace/datafile dimana table tsb berada.
- Tidak ada free block di buffer cache. Sehingga harus menunggu sampai ada yg 
free. DBWR bekerja utk membuat free block di db buffer cache.
- Terjadi penungguan di log buffer (terlalu kecil) dan atau logfile (proses 
LGWR - I/O) dan atau archivelog file(kalau mode-nya ARCHIVELOG).
- Insert menggunakan sequence, dan ada proses insert di session lainnya. Ini 
biasanya terjadi jika sequence-nya tidak set cache size-nya.
- Insert yg menggunakan select, dimana terjadinya penungguan ada pada proses 
select-nya (bukan karena lock, tapi karena misalnya data yg besar atau perlu 
adanya sorting yg besar)
- bisa juga karena index yg dipakai corrupt (soalnya dulu pernah ngalami, 
solusinya index di drop & di create ulang)
- mungkin juga "bug"... ha ha ha ....
- hhhmmm,... apalagi ya ... mungkin ada yg bisa menambahkan...


cmiiw,
bw

--- In [email protected], Andes Febrian <pejanta...@...> wrote:
>
> pak febry bilang "table yang mau u insert data nya lagi ada yang akses juga"
> maksud nya di table A data nya ada yg akses, atau di table B ?
> 
> klo di table B berarti ketika saya mau select ada yang akses berupa proses
> update dan ini masuk akal klo proses select yang saya lakukan kena locking,
> tapi klo ternyata data yg di select di table B tidak sedang di akses(berarti
> gak ada locking, select lancar), mungkin gak bermasalah di table A yang mana
> data2nya sedang di akses oleh user lain dan hal inilah yang menyebabkan
> proses insert jadi lama ke table A ?
> 
> Many Thanks
> 
> 2009/6/25 Febry Kurniawan <febr...@...>
> 
> >
> >
> > kena transaction lock kali. mungkin table yang mau u insert data nya lagi
> > ada yang akses juga. jadi kena locking. apa hal itu cuma sekali2 ato terus2
> > an. kalo sekali2 aja mungkin kebetulan kena lock. kalo terus2 an itu baru
> > curiga.
> >
> > regards,
> >
> > Febry Kurniawan
> >
> > ________________________________
> > From: Andes Febrian <pejanta...@... <pejantan4u%40gmail.com>>
> > To: [email protected] <indo-oracle%40yahoogroups.com>
> > Sent: Thursday, June 25, 2009 4:45:14 PM
> > Subject: [indo-oracle] insert 10 record lama
> >
> >
> > Dear gurus,
> >
> > Ketika satu waktu saya insert di table A, insert dgn 20 - 50 record, insert
> > into table A from select * from table B where id IN (..,..,..,.. ) butuh
> > waktu kira2 kurang dari 2 detik, tapi satu waktu ketika saya hanya insert
> > dgn 10 record dengan table dan query yg sama, membutuhkan waktu 30 menit
> > sampe 1 jam. pertanyaanya adalah :
> > 1. apa yang menyebabkan hal ini terjadi ??
> > 2. mungkinkah session lain yang sedang insert ke table tersebut memblock
> > table yang mau saya insert ?
> > 3. apa bila session lain sedang update salah satu record di table A, maka
> > proses insert yang saya lakukan akan terblock atau menyebabkan proses
> > insert
> > yang saya lakukan jadi lama ?
> > 4. saya liat di top dari server tersebut, ada wait mencapai 25%
> >
> > mohon saran dari rekans, Thanks.
> >
> > [Non-text portions of this message have been removed]
> >
> > [Non-text portions of this message have been removed]
> >
> >  
> >
> 
> 
> 
> -- 
> Cheers,
> ^_^ Andes ^_^
> 
> 
> [Non-text portions of this message have been removed]
>


Kirim email ke