Mohon maaf sebelumnya, kalau kalimat saya membingungkan.

Lihat contoh berikut:

DECLARE
 CURSOR c1 IS SELECT ROWID, col1,col2 FROM table_name;
 counter PLS_INTEGER;
BEGIN
 counter := 0;
 FOR i IN c1 LOOP
   UPDATE table_name SET col3 = calculate(i.col1,i.col2) WHERE rowid = i.ROWID;
   counter := counter + 1;
   IF MOD(counter,100) = 0 THEN 
     COMMIT;
   END IF;
 END LOOP;
 COMMIT;
END;
/

===> commit dijalankan setaip 100x LOOP, bukan setiap kali LOOP.
===> ( MODE(counter,100) = 0  )

--- In [email protected], defri afrian <def_ria...@...> wrote:
>
> Dear Yulius,
> 
> Ada yang Saya ingin tanyakan mengenai meminimalkan waktu locking seprti tips 
> Bapak sebelumnya. 
> 
> 
> "usahakan gunakan perintah COMMIT setiap "n" kali LOOP.
> 
> Jangan setelah LOOP selesai.
> 
> Tetapi juga jangan menggunakan perintah COMMIT setiap kali LOOP"
> 
> Pada pernyataan "usahakan gunakan perintah COMMIT setiap "n" kali LOOP"
> secara teknis ini implementasinya seperti apa ?
> Karena Saya melihat dari pernyataan 
> "Tetapi juga jangan menggunakan perintah COMMIT setiap kali LOOP"
> 
> Regards,
> Defry
> 
> --- On Tue, 4/14/09, Yulius Wibowo <yulius_wib...@...> wrote:
> From: Yulius Wibowo <yulius_wib...@...>
> Subject: [indo-oracle] Re: Cara ngatasin Locking
> To: [email protected]
> Date: Tuesday, April 14, 2009, 5:54 PM
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>     
>             
>             
> 
> 
>       
>       Mas Freddie,
> 
> 
> 
> Menurut saya, masalah locking adalah masalah biasa 
> 
> pada database yg table2-nya diakses(update, delete)
> 
> secara bersamaan.
> 
> 
> 
> Ada beberapa hal yg bisa dilakukan,a. l:
> 
> 1. Meminimalkan waktu locking.
> 
> Contoh :
> 
> a. Di dalam sebuah procedure (PL/SQL) misalnya,
> 
> dilakukan update record dalam jumlah banyak 
> 
> dengan menggunakan iterasi (LOOP).
> 
> Untuk meminimalkan waktu locking, 
> 
> usahakan gunakan perintah COMMIT setiap "n" kali LOOP.
> 
> Jangan setelah LOOP selesai.
> 
> Tetapi juga jangan menggunakan perintah COMMIT setiap kali LOOP,
> 
> karena akan mengganggu performance database.
> 
> 
> 
> b. Jika dimungkinkan, gunakan "rowid" pada where clause ketika update atau 
> delete.
> 
> 
> 
> 2. Hindari locking yg tidak diperlukan.
> 
> Contoh:
> 
> Jika tidak diperlukan jangan menjalankan perintah:
> 
> SELECT ... FROM ... FOR UPDATE;
> 
> LOCK TABLE ...;
> 
> CREATE INDEX ...;--pada jam sibuk
> 
> ALTER INDEX ...;--pada jam sibuk
> 
> DROP INDEX ...;--pada jam sibuk
> 
> ...
> 
> 
> 
> 3. Lock table/row dengan menggunakan "timeout"
> 
> sebelum menjalankan UPDATE didalam procedure 
> 
> untuk menghindari "penungguan" yg tidak diinginkan
> 
> ketika menjalankan procedure tsb.
> 
> Contoh:
> 
> Untuk cursor for loop gunakan SELECT ... FOR UPDATE WAIT n <detik>;
> 
> 
> 
> 4. Apalagi ya??? (kok malah nanya...he.. he..he..)
> 
> 
> 
> CMIIW,
> 
> bw
> 
> 
> 
> --- In indo-oracle@ yahoogroups. com, Freddie Tanuwijaya <synar_0287@ ...> 
> wrote:
> 
> >
> 
> > 
> 
> > loh koq malah saya balik ditanya hahahaha, saya pengen tau aja gmna si 
> > atasin locking
> 
> > --- On Tue, 4/14/09, Ujang Jaenudin <ujang.jaenudin@ ...> wrote:
> 
> > From: Ujang Jaenudin <ujang.jaenudin@ ...>
> 
> > Subject: Re: [indo-oracle] Cara ngatasin Locking
> 
> > To: indo-oracle@ yahoogroups. com
> 
> > Date: Tuesday, April 14, 2009, 2:45 AM
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> >     
> 
> >             
> 
> >             
> 
> > 
> 
> > 
> 
> >       
> 
> >       coba aja ini, kalau bisa nerjemahin outputnya sendiri....saya acungkan
> 
> > 
> 
> > jempol 12 :-)
> 
> > 
> 
> > 
> 
> > 
> 
> > create table t ( x int );
> 
> > 
> 
> > insert into t values(1);
> 
> > 
> 
> > select sid, type, id1, id2 ,lmode,request from v$lock where sid =
> 
> > 
> 
> > (select sid from v$mystat  where rownum = 1);
> 
> > 
> 
> > set serveroutput on
> 
> > 
> 
> > exec dbms_output. put_line( dbms_transaction. local_transactio n_id(true) );
> 
> > 
> 
> > select sid, type, id1, id2,lmode,request from v$lock where sid =
> 
> > 
> 
> > (select sid from v$mystat  where rownum = 1);
> 
> > 
> 
> > update t set x = 0 where x=1;
> 
> > 
> 
> > select sid, type, id1, id2,lmode,request from v$lock where sid =
> 
> > 
> 
> > (select sid from v$mystat  where rownum = 1);
> 
> > 
> 
> > rollback;
> 
> > 
> 
> > select x from t where x=1 for update;
> 
> > 
> 
> > select sid, type, id1, id2,lmode,request from v$lock where sid =
> 
> > 
> 
> > (select sid from v$mystat  where rownum = 1);
> 
> > 
> 
> > 
> 
> > 
> 
> > 2009/4/13 Freddie Tanuwijaya <synar_0287@ yahoo. com>:
> 
> > 
> 
> > >
> 
> > 
> 
> > > saya blom cek ke v$lock tapi yg pasti query pl/sqlnya tidak ada select 
> > > for update yg ada update dmna where nya menggunakan subquery.
> 
> > 
> 
> > > Mohon bantuannya menerangkan kedua macam lock ini, saya masi awam di 
> > > admin. Thx
> 
> > 
> 
> > > --- On Mon, 4/13/09, Ujang Jaenudin <ujang.jaenudin@ gmail.com> wrote:
> 
> > 
> 
> > > From: Ujang Jaenudin <ujang.jaenudin@ gmail.com>
> 
> > 
> 
> > > Subject: Re: [indo-oracle] Cara ngatasin Locking
> 
> > 
> 
> > > To: indo-oracle@ yahoogroups. com
> 
> > 
> 
> > > Date: Monday, April 13, 2009, 9:17 AM
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >      dari v$lock typenya apa kah?
> 
> > 
> 
> > >
> 
> > 
> 
> > > TM or TX?
> 
> > 
> 
> > >
> 
> > 
> 
> > > kalau TM....apakah ada select for update?
> 
> > 
> 
> > >
> 
> > 
> 
> > > kalau TX apakah menggunakan connection pooling?
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > > On Sun, Apr 12, 2009 at 8:41 PM, Freddie Tanuwijaya
> 
> > 
> 
> > >
> 
> > 
> 
> > > <synar_0287@ yahoo. com> wrote:
> 
> > 
> 
> > >
> 
> > 
> 
> > >> Saudara-saudara saya mempunyai masalah, saya mempunya 1 transaksi n 
> > >> biasanya itu membutuhkan waktu 1 menit untuk proses sehingga terjadi 
> > >> locking ketika ada transaksi yg lain, saya sudah bersusaha untuk 
> > >> mengurangi waktu prosesnya tapi hasilnya 1 menit sudah maksimal, apa ada 
> > >> cara lain untuk mengatasi kasus locking ini?? Thx
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >> [Non-text portions of this message have been removed]
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >> ------------ --------- --------- ------
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >> --
> 
> > 
> 
> > >
> 
> > 
> 
> > >> -----------I. N.D.O - O.R.A.C.L.E- --------- -----
> 
> > 
> 
> > >
> 
> > 
> 
> > >> Keluar: indo-oracle- unsubscribe@ yahoogroups. com
> 
> > 
> 
> > >
> 
> > 
> 
> > >> Website: http://indooracle. wordpress. com
> 
> > 
> 
> > >
> 
> > 
> 
> > >> http://www.facebook .com/group. php?gid=51973053 515
> 
> > 
> 
> > >
> 
> > 
> 
> > >> ------------ --------- --------- --------- --------
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >> Bergabung dengan Indonesia Thin Client User Groups,
> 
> > 
> 
> > >
> 
> > 
> 
> > >> Terminal Server, Citrix, New Moon Caneveral, di:
> 
> > 
> 
> > >
> 
> > 
> 
> > >> http://indo- thin.blogspot. comYahoo! Groups Links
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >>
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > > --
> 
> > 
> 
> > >
> 
> > 
> 
> > > thanks and regards
> 
> > 
> 
> > >
> 
> > 
> 
> > > ujang | oracle dba | mysql dba
> 
> > 
> 
> > >
> 
> > 
> 
> > > http://ora62. wordpress. com
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > > [Non-text portions of this message have been removed]
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > > ------------ --------- --------- ------
> 
> > 
> 
> > >
> 
> > 
> 
> > > --
> 
> > 
> 
> > > -----------I. N.D.O - O.R.A.C.L.E- --------- -----
> 
> > 
> 
> > > Keluar: indo-oracle- unsubscribe@ yahoogroups. com
> 
> > 
> 
> > > Website: http://indooracle. wordpress. com
> 
> > 
> 
> > > http://www.facebook .com/group. php?gid=51973053 515
> 
> > 
> 
> > > ------------ --------- --------- --------- --------
> 
> > 
> 
> > >
> 
> > 
> 
> > > Bergabung dengan Indonesia Thin Client User Groups,
> 
> > 
> 
> > > Terminal Server, Citrix, New Moon Caneveral, di:
> 
> > 
> 
> > > http://indo- thin.blogspot. comYahoo! Groups Links
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > >
> 
> > 
> 
> > 
> 
> > 
> 
> > -- 
> 
> > 
> 
> > thanks and regards
> 
> > 
> 
> > ujang | oracle dba | mysql dba
> 
> > 
> 
> > http://ora62. wordpress. com
> 
> > 
> 
> > 
> 
> >  
> 
> > 
> 
> >       
> 
> > 
> 
> >     
> 
> >     
> 
> >     
> 
> >      
> 
> >     
> 
> >     
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> >     
> 
> > 
> 
> > 
> 
> >     
> 
> >     
> 
> > 
> 
> > 
> 
> >       
> 
> > 
> 
> > [Non-text portions of this message have been removed]
> 
> >
> 
> 
> 
> 
>  
> 
>       
> 
>     
>     
>       
>        
>       
>       
> 
> 
> 
> 
> 
> 
> 
> 
>       
> 
> 
>       
>       
> 
> 
>       
> 
> [Non-text portions of this message have been removed]
>


Kirim email ke