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