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

