oracle

2012-02-24 27 views
7

içinde büyük bir silme sonra boşluk geri başvurumda Biz yanlış data.if veri yükledikten sonra veri silebilirsiniz o zaman biz veri silebilirsiniz.Yani, ne zaman veri silecek ne zaman veri silindi? performans üzerindeki etkisi Oracle'de büyük bir silme işleminden sonra alanı geri almak için zaten var mı?oracle

+0

Ayrıca bkz http://stackoverflow.com/questions/10934037/shrink-a-database-in-oracle-11g – Vadzim

cevap

13

Oracle'da, veri silme verileri otomatik olarak diski geri almaz alanı. Veritabanı, alan adına yönetimsel bir şey yapana kadar depolamayı koruyacaktır. Bu davranışın beklentisi, bir defada depoya ihtiyaç duymanız halinde, muhtemelen tekrar ihtiyacınız olacaktır ve bu nedenle, tahsiyi tutmak için daha verimli olacaktır.

Performans etkisine gelince, işlenecek daha az veri genellikle sorguları daha hızlı hale getirir. Boşluğu geri almak için birkaç seçeneğiniz vardır. This article from ORACLE-BASE, bu duruma oldukça kapsamlı bir bakış sunuyor.

Ayrıca, neden veri eklediniz, sonra silmek için "kötü" olduğunu belirlediniz mi? Verileri en baştan koymamaktan daha iyi olmaz mıydın?

+0

Bu yeni bir veritabanı oluşturmak için bize zorlar geliştirme ortamımızda bir sorundur her 6 -8 ay ve eski olanı bırak. Test/geliştirme amacıyla gece başına 10-15 yeni kullanıcı ekliyoruz ve eskileri bir haftadan sonra düşürüyoruz. Tablo alanı ıslahı ile ilgili problem, herhangi bir veri parçasının, dosyanın sonuna doğru tablo alanında yer alması durumunda, ortadaki boş alanın herhangi birini geri alamazsınız. Aslında oldukça sinir bozucu. – tsells

+1

Sürekli olarak kullanıcıları bırakıyor/oluşturuyorsanız ve çok fazla tuhaf kullanım düzenine sahipseniz, neden her kullanıcıya kendi tablo alanlarını vermiyorsunuz? –

+0

Bu bir seçenek - ve bu son yapıya baktıktan sonra "auto" kullanıcılarına kendi tablo alanlarını verdim - böylece onları silip tablo alanını bırakabilirim ve db'yi bırakmak zorunda kalmam. Kullanıcı başına tablo alanını yapmak istediğimden emin değilim - ancak bunun uygun bir seçenek olduğunu kabul ediyorum. Giriş için teşekkürler ..... !!! – tsells

0

Silme işleminden sonra alanı geri almanın bir yolu yoktur. ancak silme işleminden sonra kalan verilerin boyutu göreceli olarak küçükse, verilerle yeni bir tablo oluşturun, eski tabloyu bırakın ve yeni tabloyu eski adı olarak yeniden adlandırın

3

High Water Mark (HWM) ürününü araştırmanız gerekir.

Temel olarak, belirli bir tablo tarafından kullanılmakta olan en fazla blok sayısıdır; eğer büyük miktarda veri yüklerseniz HWM'yi artırabilirseniz, bu kayıtların silinmesi HWM'yi azaltmaz.

Here HWM'yi nasıl ayarlayacağınıza dair harika bir makaledir ve bunu anladıktan sonra, ortamınızı etkileyebileceğini düşünüyorsanız, HWM'nizi azaltmak için dahil edilen ipuçlarını kullanın.

Ben eski bir soru olduğunu biliyorum

+1

sysdba.wordpress.com bağlantısı artık mevcut değil. –

0

... Umarım yardımcı olur, ancak gelecek referanslar için:

  • tablo ama uzay zaten gelecek dolgular için "kilitli" bir boş SİL
  • TRUNCATE TABLE hile yapmak (çalışmak için tabloya başvuran tüm yabancı anahtarları devre dışı bırakmanız gerekir).