Oracle, 8i'den başlayarak taşıma komutunu sağlamaya başladı. Genellikle bu komutu, bir tablo bölümünü bir tablo alanından başka bir tablo alanına taşımak için kullanın.
Hareket aslında fiziksel olarak verileri bloklar arasında kopyalar ve bu şekilde tablonun HWM'sini azaltabilir.
Aşağıdaki, taşıma işleminin verileri nasıl taşıdığını görmek için bir deneydir.
tablo TEST_HWM (id int, isim karakter (2000)) tablo alanı hwm oluştur;
- Aşağıdaki verileri TEST_HWM tablosuna ekleyin:
TEST_HWM değerlerine (1, 'aa') ekleyin; TEST_HWM değerlerine (2, 'bb') ekleyin; TEST_HWM değerlerine (2, 'cc') ekleyin; TEST_HWM değerlerine (3, 'gg') ekleyin; TEST_HWM değerlerine (4, 'ds') ekleyin; TEST_HWM değerlerine (5, 'dss') ekleyin; TEST_HWM değerlerine (6, 'dss') ekleyin; TEST_HWM değerlerine (7, 'ess') ekleyin; TEST_HWM değerlerine (8, 'es') ekleyin; TEST_HWM değerlerine (9, 'es') ekleyin; TEST_HWM değerlerine (10, 'es') ekleyin;TEST_HWM'den rowid, id, isim seçin;
dba_extents'tan EXTENT_ID, FILE_ID, RELATIVE_FNO, BLOCK_ID, BLOCKS seçin; burada segment_name = 'TEST_HWM';
Not: Satır kimliği, diskte 10 baytlık depolama alanına ihtiyaç duyar ve görüntülemek için 18 karakter kullanır, aşağıdaki bileşenleri içerir:
1) Veri nesnesi numarası: Tablo veya indeks gibi her veri nesnesi oluşturulduğunda tahsis edilir ve bu numara veri tabanında benzersizdir. 2) İlgili dosya numarası: Bu numara bir tablo alanındaki her dosya için benzersizdir. 3) Blok numarası: Bu satırı içeren bloğun dosyadaki konumunu gösterir. 4) Satır numarası: Satır dizininin blok başlığındaki konumunu belirtir.Dahili veri nesnesi numarası 32 bit, ilgili dosya numarası 10 bit, blok numarası 22 bit ve satır numarası 16 bit gerektirir. Toplam 80 bit veya 10 bayttır. Satır kimliği 64 tabanlı bir kodlama şeması kullanır Göstermek için.
Bu şema, veri nesnesi numaraları için 6 konum, ilgili dosya numaraları için 3 konum, blok numaraları için 6 konum ve satır numaraları için 3 konum kullanır. 64 tabanlı kodlama şeması 64 karakter A Z, a z, 0 9, + ve /
Aşağıdaki örnekte gösterildiği gibi karakterler:
AAAVqH AAJ AAAA5 / AAA
Burada, AAAVqH veri nesnesi numarasıdır, AAJ ilgili dosya numarasıdır, AAAA5 / blok numarasıdır ve AAA satır numarasıdır.
Daha sonra, verilerin satır kimliğine göre, 11 satırlık verinin 4 AAAA5 /, AAAA6A, AAAA6B ve AAAA6F bloğuna dağıtıldığı görülebilir.
TEST_HWM'den rowid, id, isim seçin;
dba_extents'tan EXTENT_ID, FILE_ID, RELATIVE_FNO, BLOCK_ID, BLOCKS seçin; burada segment_name = 'TEST_HWM';
görülebilir, Verinin satır kimliği değişmemiştir Verinin satır kimliğine göre bu 4 satır verinin halen AAAA5 /, AAAA6A, AAAA6B ve AAAA6F olmak üzere 4 bloğunda dağılmış olduğu görülmektedir.
TEST_HWM tablosu taşındıktan sonra tablonun bulunduğu blok kimliğinin değiştiği ve verinin satır kimliğinin doğal olarak değiştiği görülebilir. Yukarıdaki sonuçlardan da görülebileceği gibi, Şimdi TEST_HWM tablosunun verileri AAAA6J ve AAAA6K olmak üzere iki bloğa dağıtılır. Ancak bu 4 veri satırının satır kimliğinin sırasına bakıldığında, tablodaki bu 4 satır verinin saklama sırası değişmemiştir. Taşıma, bloklar arasındaki verilerin fiziksel bir kopyasıdır.
6.1. My_objects test tablosunu oluşturmak için sistem görünümü all_objects'i kullanın, verilerin ilk 9999 satırını silin:
all_objects'ten * seçim olarak my_objects tablepace HWM tablosu oluşturun; rownum nerede my_objects'ten sil < 10000; nesnelerimden sayımı (*) seçin; serveroutput'u aç exec show_space (p_segname = > 'BENİM_OBJECTS', p_owner = > 'NWPP', p_type = > 'TABLO');Burada HWM = 1240 -1 + 1 = 1240 ve sonra MY_OBJECTS tablosunu hareket ettirin
6.2, masayı hareket ettir
tabloyu değiştir MY_OBJECTS taşı; exec show_space (p_segname = > 'BENİM_OBJECTS', p_owner = > 'NWPP', p_type = > 'TABLO');Gördüğünüz gibi MY_OBJECTS masasının HW M'si 1240'tan 1109'a taşındı ve masanın HWM'si düşürüldü!
Bu deney, HWM'nin performans üzerindeki etkisini anlamak ve hareket yoluyla HWM boyutunu küçültmek için önemlidir. Ayrıca zamanınız olduğunda bunu kendiniz de test edebilirsiniz.
Devops ve DBA hakkında daha fazlasını daha sonra paylaşacağım, ilgilenen arkadaşlar buna dikkat edebilir! !