2 Kasım 2011 Çarşamba

DDL_LOCK_TIMEOUT

Merhaba,

Bugün bana gelen bir soru üzerine bu makaleyi yazmaya karar verdim. Öncelikle soru ile başlıyorum;

"
Arka arkaya birkaç insert işleminden sonra ORA-00054: resource busy and acquire with NOWAIT specified hatası alıyorum ama bu hatayı almadan, belirli bir süre boyunca session'ın beklemesini istiyorum
"

ORA-00054 hatasını almamızın nedeni; A session'ı ilgili tablo üzerinde "exclusive lock" olarak bildiğimiz bir DML kilit alırsa, B session'ı da ALTER TABLE gibi bir DDL komutunu yine ilgili tablo için gönderirse, gelen DDL komutu bekler ya da bu hatayı basar. Ne zamanki DML kilidi bırakılır ve v$locked_object üzerinde gözükmez, o zaman gelen ALTER TABLE DDL komutu işleme alınır.

DDL_LOCK_TIMEOUT parametresi varsayılan olarak 0'dır (saniye) ve DML lock alınmış bir tabloya DDL gönderdiğimiz zaman hemen ORA-00054 hatası basılır. DDL_LOCK_TIMEOUT parametresi 10 saniye olsaydı DDL operasyonunu yapmak isteyen session'a 10 saniye süre verilecekti ve bu sürede diğer session'dan (DML kilidi almış olan) bir commit ya da rollback gelmediğinde ORA-00054 10 saniye sonra ekrana basılacaktı.

DDL_LOCK_TIMEOUT'un azami parametresi 1.000.000 saniye olabiliyor. Uygulamanızın çalışma mekanizmasına göre bu parametre ile oynamanız faydalı da olabilir zararlıda.

İyi çalışmalar.

Ogan

1 yorum:

Adsız dedi ki...

slm..
benim bi sorum olacak. blogunuzu bi oracle seminerinde oracle Teknoloji satış yöneticisi olan emrah çetinden aldım. sizin bana yardımcı olabileceğiniz hakkında bilgi verdi..
sorum su : oracle windows 7 ultimate 64 bit işletim sisteminde oracle 'ın hangi client'ını kurduysam yönetimsel araçlarda Veri Kaynakları (ODBC)
içine orale ODBS DRİVER gelmiyor..

windows 7 home surumlerinde gelmiyordu windows 7 32 bit ultimate yukleyince geldi ama 64 bit yukleyince getiremedim..

db makinesinde eskiden oracle 9 vardı client ise oracle 8.1.7 ve oracle 9 clint kurulu idi. sonra

db yi oracle 10g ye yükselttik client lara ise oracle 9 ve oracle 10g hem 32 bitini kurdum ayrı ayrı hemde 64 bitini kurdum ama bi türlü client olarak windows 7 64 bit ultimate versiyonunda oracle odbc driverı getiremedim. mysql geliyor ama oracle gelmiyor....


teşekkürler..
kolaygelsin

Takip et: @oganozdogan