12c İle Birlikte Depcreated/Desupported Olan Parametreler, Componentler, Özellikler

Dba’ ler olarak, oracle’ ın her yeni sürümüyle birlikte yeni bir takım özelliklerle tanışırken, daha önceden bildiğimiz ve kullandığımız bir takım parametreler ve özelliklerde vedalaşmak durumunda kalıyoruz. Oracle 12c ile birlikte de, öncesinde bildiğimiz kimilerini sıkça kullandığımız bazı parametreler ve özelliklerde artık ortadan kalkmış oldu. Maalesef bizim de işimiz gereği sürekli olarak kendimizi update etmemiz, yenilikleri takip etmemiz gerekiyor ki sanıyorum bu işin de en zor ama bir o kadar da keyifli yanı bu diye düşünüyorum.

Şimdi vedalaşmak zorunda kaldıklarımız arasında önemli olduğunu düşündüğüm birkaçından bahsedelim ;

• Oracle 12c ile birlikte en büyük yapısal değişiklik oracle’ ın mimarisinde yaşandı. Multitenant dediğimiz container db yapısı artık kullanılmaya başlandı. Oracle 12.1 ile artık container db’ i ile birlikte non-container database’ i de destekliyorum desede, görünün o ki sonraki release’ lerde container db yapısını kullanmak zorunlu olacak gibi duruyor.

• Yine oracle 12c ile bilrlikte yeni bir utility ile tanışmış olduk. Eskiden upgrade’ ler sırasında catalog’ u upgrade etmek için kullandığımız catupgrd.sql artık depcreated oldu. Bunun yerine catctl.pl utility’ sini kullanmaya başladık.

• Oracle 10g ile tanıştığımız ve sıkça da kullandığımız Oracle Enterprise Manager database control oracle 12c ile birlikte yerini Oracle Enterprise Manager Express’ e bırakmış oldu. Aslında oracle bu adım ile biraz da bizleri Oracle Grid’ ı daha fazla kullanmaya zorluyor/yönlendiriyor diye düşünüyorum.

• Her bir versiyon geçişi sonrasında aşağıdaki sorgu ile hangi initial parametrelerinin artık kullanmayacağını sorgulayabilirsiniz;
Continue reading

ASM’ e Assign Edilmiş Bir Diskgroup Nasıl Rename Edilir

ASM’ e create edilmiş olan bir diskgroup’ un ismini nasıl değiştirebiliriz bunu testini yapıyor olacağız.
Aslında bu yazının başlığı içerik ile tam olar3ak örtüşmedi. Bu yazıda anlatılmak istenen temel amaç bir diskgroup nasıl rename edileceği olsa da, bu yazı ile birlikte ;

• Bir diskgroup nasıl rename edilir,
• ASM database’ inin spfile’ i nasıl farklı bir diskgroup altına taşınır,
• OCR/Voting diskler nasıl farklı bir diskgroup altına taşınır,
• Cluster servislerinde değişiklikler nasıl yapılır,
• RAC instance’ nın controlfile’ leri nasıl farklı bir diskgroup altına taşınır,
• RAC instance’ nın datafile ve redologları nasıl rename edilir,

gibi sorulara da bu yazıda cevap veriyor olacağız. Yazı içerisinde bu işlemi yaparken karşılaşılması muhtemel sorunlarıda anlattığımdan dolayı bolca hatalar ve bu hataların nasıl çözüleceği ile ilgili çözüm yöntemlerini göreceksiniz.

Bunun için oracle’ ın renamedg tool’ undan faydalanıyor olacağız. Komutun hangi parametreleri aldığını ve syntax’ ını aşağıda detaylı olarak görebilirsiniz.

Continue reading

ORA-14758: Last partition in the range section cannot be dropped

Yukarıdaki gibi bir hata almanız durumunda sorunu nasıl çözebileceğinizden bahsediyor olacağım. Bu hatanın nasıl oluştuğu ile ilgili olarak partition tabloyu create ederken oluşturmuş olduğunuz partitionları drop etmeye çalıştığınız da bu hatayı alırsınız. Interval opsiyonu kullanacaksanız tabloyu create ederken sadece ilk partitionı set etmeniz yeterli olacaktır.

Her zamanki yine bir örnek üzerinden gidelim.

Aşağıdaki gibi bir tablom var ve amacım içerisinde data olmayan partitionları drop etmek (tabi ilk partition olan part1 hariç)

Partitionlarda data olup olmadıklarına bakalım;

SYS_P66200 isimli partition benim istediğim kritere uygun bunu drop edebiliriz;

Bu sorunun üstesinden gelmek için öncelikle tabodaki interval opsiyonunu kaldırıyoruz. Sonra drop işlemini yapıp tekrar interval opsiyonunu set ediyoruz ;

Export File’ in Header Satırlarını Nasıl Okuyabiliriz

Bu örnekde oracle 11gR2 olan bir database’ imizden alınmış olan bir export file’ in (parallel olarak almıştım o yüzden sadece bir parçasına bakıyor olacağız) header’ ında hangi bilgilerin olduğunu nasıl görebilirize bakıyor olacağız.

Öncesinde yine dmp içerisinde yer alan DDL komutlarını görmek isterseniz exp ile alınmış bir backup için import komutunun içerisine “show=y” parametresini expdp ile alınmış bir backup içinde yine import komutu içerisine “SQLFILE=file_name.sql” parametresini ekleyebilirsiniz. Böylelikle dmp file içerisinden çalışacak olan DDL komutlarını görme şansını yakalamış olursunuz.

Gelelim bizim örneğimize;

Aşağıdaki gibi bir procedurumuz var. Kaynak kısmında belirtmiş olduğum linkden de indirebileceğiniz bu proceduru database’ imize create ediyoruz;

Continue reading

deferred_segment_creation Initial Parametresinin Kullanımı

Bu parameter oracle 11.2 versiyonu ile tanıştığımız bir parametre, tablonun ilk create edildiği anda (null olarak tabi) ona default olarak bir block atanıp atanmayacağının set edildiği parametredir. Parametre TRUE ve FALSE olmak üzere 2 farklı değer alabilir. Defaultta FALSE olarak geliyor.

Sırayla TRUE veya FALSE olması durumunda bizi nelerin beklediğine bir bakalım ;

Parametrenin şu anki değerini check ederek başlayalım ;

Boş bir test tablosu oluşturup stucture’ ını kontrol edelim ;

Dba_tables view’ inde görebiliyormuyuz kontrol edelim ;

Burada dikkat ederseniz segment_created NO yani tablonun create edilme aşamasında hiçbir segment assign edilmemiş durumda, blocks alanında da bu yüzden 0 olarak görüyoruz. Bu yüzdendirki aşağıdaki viewlerde henüz tablomuza ait bir iz yok.

Bu değerin TRUE olması demek aslında tablonun create scriptinin syntax’ ında SEGMENT CREATION DEFERRED parametresinin olması anlamına gelir. Bunun syntax’ i da aslında arka tarafda aşağıdaki gibidir ;

Yani bu parametreyi TRUE olarak tablo create etmek ile SEGMENT CREATION DEFERRED parametresini kullanarak create etmek arasında fark bulunmamaktadır.

Şimdi bu değerin FALSE olması durumunda neler olduğuna bakalım ;

Test tablomuzu yine aynı şekilde create edelim ;

Dba_tables view’ indeki duruma bakalım ;

Initial extend neden 65536 değeri 8k block size ‘ımız olduğu için bu şekilde geliyor (1024*8*8) . Tablo her ne kadar boş olsa da create edilme aşamasında bir block atandığından dolayı artık (8 k ‘ lık block kullandığımız dan dolayı) aşağıdaki view’ de de block kısmında 8 olarak görmemiz gerekiyor.

Tablomuzun bir block’ uğuda olduğundan dolayı artık dba_segments view’ indede görebiliyor olmamız gerekiyor. Bakalım ;

Bu değerin FALSE olması demekde aslında tablo creation scriptinin aşağıdaki gibi olması anlamına geliyor ;

Toparlarsak 11.2 ile birlikte tablo create etmek istersek segment create aşamasında kullanabileceğimiz iki farklı parametre bulunmaktadır. Bu parametrelerin kullanımı da bir initial parametre sayesinde db seviyesinde kullanımı basitleştirilmiştir diyebiliriz.