Çoğu zaman veritabanını sildiğimizde, mevcut silme işleminin yaklaşık ilerlemesini nasıl bilmek isteriz? Sonuçta, silme işleminde herhangi bir gönderim yoktur ve sadece tablo sayısına göre karar veremezsiniz.
Test ortamı, 100 milyon veri tablosundaki 70 milyon kaydın silinmesini simüle eder. Komut aşağıdaki gibidir:
tabloyu değiştir xx nologging; sil / * + paralel (t 8) * / xxxT t burada insert_time < = tarih_tarihi ('2018063000:00:00', 'yyyyaagg hh24: mi: ss'); taahhüt; tablo xxx günlüğünü değiştir;Burada UNDO tablo alanı kullanımını gözlemlemeye dikkat etmelisiniz (hangi örneğin bağlı olduğunu gözlemleyin ve ardından ilgili UNDO alanını görün, UDNOTBS1'in daha fazla alan kullandığını varsayarak, UNDO alanını tam olarak kullanmak için RFDB2 örneğine bağlanmanız gerekir), arşiv alanını ( Günlük kaydı olmamasına rağmen, arşiv günlüğü hala değiştirilir ve bu da ilgilenilmesi gerekir) ve veritabanı sunucusu yükü ve alarm günlüğü.
2. UNDO'nun kullanımını kontrol edin
Silme işlemi sırasında UNDO'nun% 72 kullandığını gözlemleyin
V $ işlemini gözlemleyerek silme işleminin durumunu alabiliriz.
v $ işleminden start_time, start_scnb, used_ublk, used_urec, log_io, phy_io'yu seçin;Açıklama:
Çalışan işlemi sorgulamak için aşağıdaki SQL'i kullanın. Used_urec alanı artmaya devam ederse, işlemin devam ettiği anlamına gelir.Alan düşmeye devam ederse, işlemin geri alındığı anlamına gelir.
V $ oturum a, v $ işlem b'den a.sid, a.username, b.xidusn, b.used_urec, b.used_ublk SEÇİN a.saddr = b.ses_addr;v $ işlem alanı açıklaması:
Daha fazla devop ve DBA içeriği daha sonra paylaşılacak, ilgilenen arkadaşlar buna dikkat edebilir!