büyük veri hareketi


11

Milyarlarca satırı schema1.table1'den new schema2.table2'ye taşımak istiyorum; burada table2, table1'den yeniden düzenlenmiş olanıdır. Dolayısıyla masa yapıları farklıdır. hem table1 hem de table2 bölümlere ayrılmıştır, ancak table2 boştur. Bu şemaların ikisi de aynı kehanet DB'sindedir. Bu veri taşıma işlemini gerçekleştirmenin performans açısından verimli yolu nedir? Taahhüt işlemini yalnızca en sonunda gerçekleştirmek mi yoksa artımlı taahhüdü mi tercih etmek istersiniz? yani, birkaç saat süren işin% 99'unu tamamladıktan sonra veri taşıma işleminin başarısız olduğunu varsayalım. Şimdi geri dönüyor musun? Artımlı taahhüdü yaparsanız, başarısızlığı nasıl ele alırsınız?

Yanıtlar:


8

Buna paralel olarak INSERT APPEND, NOLOGGINGbunu yapmanın yolu olurdu, o zaman tüm NOLOGGING operasyonlarında olduğu gibi, tamamlandığında hemen bir yedek alın. Önce dizinleri kullanılamaz olarak işaretleyin, kısıtlamaları devre dışı bırakın, tabloyu değiştirin, işlemi gerçekleştirin, ardından kısıtlamaları yeniden etkinleştirin.

Ek, Oracle'ın her zaman mevcut yüksek su işaretinin üzerinde boş alan kaplamasına neden olur, bu nedenle segmentteki alanı yeniden kullanmakta etkili değildir, ancak freelist ve UNDO yükü ile uğraşmaktan kaçınır. Herhangi bir nedenle tekrar başlamak zorunda kalırsanız TRUNCATE, yapma DELETE.

Artan işlemle ilgili olarak, verilerinizin nasıl bölümlere ayrıldığına bağlı olacaktır, bir kerede bir aylık değeri kolayca taşıyabilir diyebilirsiniz (örneğin, bölümleme şeması kaynak ve hedefte aynı mıdır)? Çünkü unutmayın ki bazı yüklemleri yerine getirmeniz gerekiyorsa, bu durum sizi yavaşlatacaktır. İşlemin mantıksal olarak başarısız olmayacağından emin olmak için test edin (örn. Kaynak ve hedefte uyumsuz veri türleri), sonra yeterli kaynakları ayırın ve sadece bir işlemde devam edin. İyi şanslar!


Online redef kullanarak yavaş olacağını biliyorum ama dbms_redef yukarıdaki senaryo bile desteklemiyor olabilir?
John

3

bölümleme şeması aynı ise (tablo 1'deki bölüm a'nın verileri tablo 2'deki bölüm a'ya gider) o zaman birden fazla oturum için gidip her oturumun verilerini kendi 'kendi bölümüne eklemesini isterim. Bu, çok fazla kilitlemeyi önler ve en iyi hıza sahiptir. Donanıma bağlı olarak HBA kartlarını boynuna kadar doldurabilirsiniz. Her bölüm için bir taahhüt - her bölüm için birkaç satırdan fazla varsayarak - bir sorun olmayacak ve kesinlikle bunu yapacağım. Geçiş sırasında uygulamanın kapalı olduğu varsayılarak, geri dönüş basittir: en azından ikinci bir çalışma gerçekleşmeden önce uygulamanın verileri değiştirdiği bölümler için uygulamayı denemeden ve tablo2 bölümlerini kesmeyin.

Umarım bu yardımcı olur

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.