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
Category Archives: Administration
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