Oracle'daki kilide ve kilidin nasıl açılacağına bağlı olarak 6 mod

Genel Bakış

Genellikle çeşitli kilitler nedeniyle sürecin serbest bırakılmadığı sistemle karşılaşırız.Genel yöntem kilidi açmak için oturumu kapatmaktır.Bu bölüme bakmak için bir dakikanızı ayırın. Kaç kilit modu var? Bugün esas olarak bu bölümü tanıtacağım.

ORACLE'da birkaç kilit modu vardır:

0: yok

1: boş boş

2: Satır-S satır paylaşımı (RS): paylaşılan tablo kilidi

3: Satır-X satır ayrılmış (RX): satır değişikliği için kullanılır

4: Paylaşılan kilidi (S) paylaş: diğer DML işlemlerini engelle

5: S / Row-X paylaşımlı satır ayrılmış (SRX): diğer işlem işlemlerini engelleyin

6: özel (X): bağımsız erişim

Sayı ne kadar büyükse, kilit seviyesi o kadar yüksek ve daha fazla etkilenen işlemler.

Seviye 1 kilitleri şunlardır: Bazen v $ locked_object'te görünen seçin.

Seviye 2 kilitleri şunlardır: Güncelleme için seçin, Güncelleme İçin Kilitle, Satır Paylaşımını Kilitle

güncelleme için seçin İletişim kutusu bir imleci açmak için for update alt dizesini kullandığında, döndürülen kümedeki tüm veri satırları yalnızca satır düzeyinde kilitlenir (Satır-X) Diğer nesneler yalnızca bu veri satırlarını sorgulayabilir ve güncelleyemez, silemez veya güncelleme işlemi için seçin.

Üç kilit seviyesi şunlardır: Ekle, Güncelle, Sil, Satır Hariç Kilitle

Kaydetmeden önce aynı kaydı eklemek yanıt vermeyecektir, çünkü sonraki 3 kilit her zaman önceki 3 kilidi bekleyecektir ve çalışmaya devam etmek için bir öncekini serbest bırakmalıyız.

Seviye 4 kilitler şunlardır: Dizin Oluştur, Paylaşımı Kilitle kilitli modu 2, 3, 4, DML (ekleme, silme, güncelleme, seçme) işlemlerini etkilemez, ancak DDL (değiştirme, bırakma vb.) İşlemleri veya bir-00054 hatası verir.

ORA-00054: kaynak meşgul ve NOWAIT ile edinme belirtildi

(ORA-00054: Kaynak meşgul, ancak kaynağı elde etmek için NOWAIT yöntemi belirtildi)

Seviye 5 kilitleri şunlardır: Özel Satır Paylaşımı Kilitle

Özellikle, birincil ve yabancı anahtar kısıtlamaları olduğunda, güncelle / sil ...; 4,5 kilit oluşturabilir.

Üst tablo değiştirildiğinde, alt tabloya karşılık gelen kayıt varsa, ORA-02292 oluşturulur

İstisna; aksi takdirde, üst tabloya yalnızca TX kilidi ve RX kilidi eklenir;

Alt tabloyu değiştirirken, alt tabloya TX kilidi ve RX kilidi eklemeye ek olarak; üst tablo için

Mantıksal olan SS kilidi de eklenir, çünkü üst tablonun şu anda bilgi tutarlılığını karşılaması gerekir;

Yani, şu anda üst tabloyu değiştirmekten kaçınmak için üst tabloya SS kilidi ekleyin.

Yukarıdaki kilitte bahsedilen değişiklikler, alt ve üst tablolarda bilgi tutarlılığına sahip alanlardaki tüm işlemlerdir.

6 kilit seviyesi şunlardır: Tabloyu değiştir, Tabloyu düşür, Düşürme Endeksi, Tabloyu Kes, Özel Kilitle

Yaygın kilit komutlarını görüntüleyin

1. Geçerli oturum kimliğini görüntüleyin:

a12 için col sahibi a30 için col object_name a32 için col makinesi a16 için col USERNAME a16 için col OSUSER rownum nerede v $ mystat dan sid seçin < = 1;

2. Mevcut oturum durumunu görüntüleyin:

v $ oturumundan makine, kullanıcı adı, sid, seri #, tür, osuser, durumu seçin;

3. Veritabanındaki mevcut kilit durumunu kontrol edin

Aşağıdaki SQL ifadesini kullanabilirsiniz:

s.username, o.object_name, s.machine, s.sid, s.serial #, k.type seçin v $ locked_object l'den, dba_objects o, v $ oturum s, v $ lock k burada l.object_id = o.object_id ve l.session_id = s.sid ve k.sid = s.sid;

4. Kilidi açın

Uzun süre görünen bir sütun varsa, yayınlanmamış bir kilit olabilir. Uzun süredir serbest bırakılmayan anormal kilitleri öldürmek için aşağıdaki SQL ifadesini kullanabiliriz:

sistem öldürme oturum kimliğini değiştir, seri # ';

Bir kilit sorunu varsa, bir DML işlemi yanıt vermeden uzun süre bekleyebilir. Yukarıdaki komutla bir işlemi sonlandırdıktan sonra, işlem durumu "öldürüldü" olarak ayarlandıysa, ancak kilitli kaynak uzun süre serbest bırakılmadıysa, ilgili işlemi (iş parçacığı) işletim sistemi düzeyinde öldürebilirsiniz, önce aşağıdakileri yürütün İşlem (iş parçacığı) numarasını almak için ifade:

spid, osuser, s.programı seçin v $ oturum s, v $ işlem p burada s.paddr = p.addr ve s.sid = # sid (#sid yukarıda bulunan siddir)

5. İşletim sisteminde süreci (iş parçacığı) sonlandırın:

1) Unix'te, komutu root olarak yürütün:

#kill -9 #spid (yukarıda bulunan örümcek)

2) Pencerelerde iş parçacığı öldürmek için orakill kullanın, orakill oracle tarafından sağlanan çalıştırılabilir bir komuttur, sözdizimi şöyledir:

orakill sid iplik

onların arasında:

sid: sonlandırılacak işlemin ait olduğu vaka adını belirtir

thread: öldürülmesi gereken iplik numarasıdır, yani yukarıda bulunan örümcek.

Rs ve rx arasındaki fark nedir?

Satır Özel (RX): INSERT, UPDATE, DELETE

Satır Paylaşımı (RS): GÜNCELLEME İÇİN SEÇİN ...

Her ikisi de DML işlemleri tarafından tutulan TM masa kilidi modlarıdır. Hala birkaç fark var, biri farklı olmaları. İkinci olarak, rx kilitlendikten sonra, diğer işlemler değiştirilen sonuçları bile okuyamaz. Ve rs, diğer işlemleri okurken sorun değildir, bu nedenle buna rs denir.

Hepsi diğer işlemlerin tabloyu tablo düzeyinde manuel olarak kilitlemesini engeller kısmına atıfta bulunsa da, biri özel okuma veya yazma için, diğeri ise özel yazma erişimi içindir.

Kilitlerle ilgili 6 mod ve ortak komutlar burada tanıtıldı. İlgileniyorsanız, derinlemesine çalışabilirsiniz. Daha sonra daha fazla DBA içeriği paylaşacağız ve ilgilenen arkadaşlar buna dikkat edebilir ~

Wang Xuebing ve Tang Gaopeng ile sohbet ettim ve bir Çin western filmi yapmanın nasıl bir şey olduğunu öğrendim.
önceki
Shankou: "Umarım Wang Luobin ve Sanmao'nun aşk hikayesini söyleyebilirim" dedi.
Sonraki
Haval H6 hacklendi ve yüksek yakıt mı tüketiyor? Bu dört araba daha kötü saldırıya uğrayabilir
Dijital simülasyon akıllı fabrika: Geleceğin teknolojisi her 2 dakikada bir arabadan çıkıyor
Çinliler gurur duyuyor! Beidou uydu navigasyonu, insansız araçlar için daha doğru konum hizmetleri sağlar
Rsync ve FastDFS arasındaki farkı ve bağlantıyı açıklayın
Eski sürücünün araba becerileri, camı kaynar suyla haşlamamak için bu 4 şeyi her zaman kışın arabada tutun
Hupu Yaya Caddesi Yeşil Edebiyatı Araştırması
Tai'an 1 Nolu Hastanenin kiralık süpermarketi, şiddetli rekabet 350.000'den 1.4 milyonun üzerine çıktı!
Land Rover, netizenler tarafından ertelenen lüks otomobilin aslında oldukça uygun maliyetli olduğunu keşfetti
Minimum değer buna değmez, Volkswagen CC 330TSI Huayan versiyonu, fiyat garip, onu büyük bir hit yapıyor
Wu Bai'nin performansını izlemeye davet edildik ama "Ani Kendilik" şarkısını söylemedi.
TNGA mimarisi altında yeni nesil Toyota Ralink, netizenler: Corolla'nın ilgi odağını çalacak mı?
Genetik kıyamet ve şeytanın gerçek çağrısı
To Top