Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 11117|Yanıt: 0

[Kaynak] ORACLE 11g Yeni Özellikler - DDL kilitlerinin DML kilitlerini beklemesine izin verir

[Bağlantıyı kopyala]
Yayınlandı 26.11.2014 15:54:15 | | |
Daha önce de yazmıştımORACLE11g yeni özellikler makalesi, şimdiORACLE11g artık ana akım haline geldiORACLEveritabanı sürümü, anlamak ve öğrenmekORACLE11G'nin yeni özellikleri çok önemli, ben de öyleORACLE11G'nin yeni özelliklerine yeni başlayanlar için, öğrenme sürecimi ve deneyimimi burada paylaşmak istiyorum.
Bu makale esas olarak şunları kaydeder:ORACLE11g'nin yeni bir özelliği, DDL kilitlerinin DML kilitlerini beklemesini sağlıyor; bu tema, 30 Haziran'daki ACOUG etkinliğinde Bay Zhang Leyi (kamus) tarafından da paylaşıldı.
11g'den önceki sürümlerde, varsayılan olarak, DDL kilitleri DML kilitlerini beklemez ve DML kilitli bir masada DDL işlemleri yaparsanız, hemen bir hata döner (aynı SESSION hariç), basit bir deney yapalım, verileri tabloya STREAM SESSION1'da ekleyelim, göndermeyelim, bu anda tablo STREAM'in bir DML kilidi olur ve TRUNCATE tablo STREAM işlemini SESSION2'da çalıştırırsanız, hemen bir hata döndürür:
SESSION1 >dbdream'den akış seçimi * içine ekle; 10 sıra oluşturuldu. SESSION2 >kesik tablo akışı; tablo akışını kısaltma * 1. satırda HATA hatası : ORA-00054: kaynak meşgul ve NOWAIT belirtilmiş veya zaman aşımına dolduğu ile alın 11g sürümünde,ORACLEDDL_LOCK_TIMEOUT parametre tanıtıldı; DDL kilitlerinin DML kilitlerini beklemesini sağlar; bu kilitler DDL kilitlerinin DML kilitlerini bekleme süresini kontrol eder, saniyeler içinde varsayılan değer 0'dır; yani DDL kilitleri DML kilitlerini beklemez, maksimum değer 1 milyon, yani 11,5 gündür, bu parametre küresel olarak veya SESSION seviyesinde ayarlanabilir.
SESSION2 >parametreyi göster ddl_lock_timeout ISIM TIPI DEĞERI ----------------------- ----------- ------ ddl_lock_timeout tamsayı 0 SESSION2 >oturum setini ddl_lock_timeout=2000000; HATA: ORA-00068: parametre ddl_lock_timeout için geçersiz değer 2000000, 0 ile 10000000 arasında olmalı. Aşağıda, aşağıdaki DDL_LOCK_TIMEOUT parametresinin etkisi gösterilir ve yukarıdaki STREAM tablosunu örnek olarak alır; mevcut STREAM tablosunda hâlâ bir DML kilidi vardır, SESSION2 DDL_LOCK_ TIMEOUT 60 saniyeye ayarlanır ve ardından TRUNCATE işlemi yürütülür; hata hemen geri dönmez, 60 saniye bekler; STREAM tablosunun DL kilidi 60 saniye içinde açılmazsa hata döner.
SESSION2 >oturum seti ddl_lock_timeout=60; Oturum değişti. SESSION2 >zamanlamayı SESSION2 > kesik tablo akışında ayarla; --Bu noktada, SESSION2 askıya alınır, SESSION1 DML kilidini 60 saniye içinde açmasını bekler, 60 saniye sonra geri dönüşler başarısız olur Tablo akışını kıstır * SATIR 1'de HATA: ORA-00054: kaynak meşgul ve NOWAIT belirtilmiş veya zaman aşımı dolduğu ile alın Geçti: 00:01:00.01 DDL_LOCK_TIMEOUT parametrelerin ortaya çıkması DBA'ların işleyişini büyük ölçüde basitleştiriyor, örneğin, bir tabloya bir alan eklemek istiyoruz ama bu tabloda birçok DML işlemi var ve bu işlemleri sonlandırmak için ALTER SYSTEM KILL SESSION yöntemini kullanamıyoruz, bu yüzden bu tabloya alan eklemek istiyorsak, alan ekleme işlemini sayısız kez yapmamız ya da bu işi yapmak için script yazmamız gerekiyor ve şimdi DDL_ LOCK_TIMEOUT parametre olarak, bu parametrin değerini biraz daha büyük ayarlamamız yeterli ve SQL çalıştırmakla uğraşmamıza gerek yok, aşağıda bu süreci gösterelim.
SESSION2 alan eklemek için şunları ekleyin:
SESSION2 >alter table stream add jpg_path varchar2(255) default '/home/kahin/'; 此时挂起,等待STREAM表的DML锁释放,SESSION1提交释放DML锁后,SESSION2操作便成功了。
SESSION1 > bağlı; Tamamlandı. SESSION2 >alter table stream add jpg_path varchar2(255) default '/home/kahin/'; Table altered. SESSION2 >select * from stream; ID IDENTIFIER PIC_NO JPG_PATH ---------- --------------- ------ --------------- 1 18-0220-003 1 /home/kahin/ 2 18-0221-003 1 /home/kahin/ 3 18-0221-003 2 /home/kahin/ 4 18-0221-003 3 /home/kahin/ 5 18-0223-005 1 /home/kahin/ 6 18-0223-005 2 /home/kahin/ 7 18-0223-005 3 /home/kahin/ 8 18-0223-005 4 /home/kahin/ 9 18-0223-005 5 /home/kahin/ 10 18-0223-005 6 /home/kahin/ 10 rows selected.




Önceki:Pratik SQL ifadesi: tarih tahmini
Önümüzdeki:Oracle ORA-12541: TNS:dinleyici hatası yok çözüm
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com