Canlı Bir Transportable Tablespace Operasyonu Örneği

Yazılarımdan da anlaşılacağı üzere bu aralar transportable tablespace’ le yakından ilgileniyorum. Bu konudaki yapmış olduğum tüm testleri ve production ortamlarımızda yapmış olduğumuz operasyonlarla ilgili detaylarıda sizinle buradan paylaşmaya çalışıyorum. Şimdiye kadar tranportable tablespace ile ilgili çalışma mantığından, kıstlarından bahsettik. Neden bu konu üzerine bu kadar yoğunlaştığımdan bahsedeyim, ileride sizlerde benzer bir durumla karşılaşırsanız diğer yöntemler ile karşılaştırmada yardımcı olacaktır. Production ortamda kullandığımız bazı database’ lerimizi yeni alınmış olan (yeni sunucu ibm p795 serisi) sunucular üzerine taşımaya çalışıyoruz. İlk taşınacak olan database yaklaşık 3 tb büyüklüğündeki bir database, bu database’ i migrate etme işini bitirdik. Bugün bu taşıma işlemini transportable tablespace yöntemi kullanarak nasıl yaptığımızdan step by step bahsedeceğim ; (Şunu belirtmemde fayda aşağıdaki stepler bizim taşımış olduğumuz database’ in özellikleri ile şekillenmiş adımlar yani bu database’ de materialized view yoktu, eğer olsaydı bir stepde bunun için olacaktı) Continue reading

Transportable Tablespace Yöntemi ile Taşınamayan Nesneler İle İlgili Bir Test

Bu aralar yaklaşık 19 tb büyüklüğündeki bir production database’ imizi farklı bir sunucu üzerine migration yapacağımız için kullanacağımız muhtemel yöntemleri ve bu yöntemlerin artılarını ve eksiklerini test etmekle uğraşıyorum. Transportable tablespace bu yöntemlerin en başında geliyor aslında, burdaki en büyük problemlerimizden biride database içerisindeki materialized views’ lerin durumu, zira transportable tablespace bu nesneleri taşımıyor. Bununla ilgili bugün yapmış olduğum bir testi sizlerle paylaşmak istedim. Continue reading

Global Temporary Table Oluşturmak

Oracle’ da tablo create ederken eğer  tablonun tipini belirtmez iseniz default olarak ilişkisel ve kalıcı olarak tablonuzu oluşturacaktır. Create table komutunuz içerisinde global temporary ifadesini kullanırsanız temporary segmentlerde tutacağınız geçici bir tablo create etmiş olursunuz.  Temporary tabloları normal tablolardan çok farklı olarak düşünmemek gerekir, bildiğimiz yöntem (create table ile ) ile create etmiş olduğunu tablolar üzerinde neler yapabiliyorsanız burada da yapabilirsiniz. Temporary olmasından kaynaklı olarak, temporary olarak create edilmiş bir tablo tüm sessionlar tarafından görülebilir ve sadece o session içerisinde varlığını idame ettirir, session sonlandığında temporary table’ da otomatik olarak drop olacaktır.

Temporary table’ ın sytanx’ ından biraz bahsedelim; Continue reading

ORA-12838: cannot read/modify an object after modifying it in parallel

Bir  migration  çalışması  sırasında kullanılacak  olan scriptleri  tun ederken, insertler i Append hinti vererek yapmaya karar verdim. Bir tablo için peşpeşe birkaç tane insert scripti olanlar da vardı. Append  hintinin çalışma mantığını düşünmeden insertler arasına hintleri vererek geçtim.  Sabahın 05’ inde migration çalışmasını başlattığımda (bir gözü açık bir gözü kapalı durumda J)  scriptler patlamaya başlayınca (tabi bu arada gözlerim açıldı J)  farkettimki Append  hinti ile bir tabloya peşpeşe insert yapıyorsan iki insert arasında mutlaka transactionı sonlandırmalısın yani commit veya rollback yapmalısın.  Appent hinti redo üretimi minumum düzeyde tuttuğundan dolayı bir sonraki insert ile ilgili  yeteri kadar data bilgisi sistemde yer almamış oluyor.  Dolayısıyla  (ORA-12838: bir nesne değiştirildikten sonra paralel olarak okunamaz / değiştirilemez)  verdiği bu hatada bir o kadar anlamlı oluyor.
Continue reading

LOBINDEX ve LOBSEGMENT’ lerin create, move, rebuild edilmesi

Tablo ve indexler üzerinde DDL işlemlerinin nasıl yapılacapı konsunda zaman zaman yazılar yazıyoruz. Örneğin tablo ve indexlerin farklı bir tablespace taşınması ile ilgili

(http://www.kamilturkyilmaz.com/2011/02/25/lobindex-ve-lobsegment%E2%80%99-lerin-create-move-rebuild-edilmesi/) bir yazı yazmıştım. Burada ise logsegment ve logindexleri anlatmaya çalışacağım.
Continue reading