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.

CRS-2640: Required resource ‘STRING’ is missing

Genelde bir diskrgroup’ u drop edildiğinde her ne kadar resource group’ dan çıkartsanız bile srvctl komutu ile database’ i kapatıp açmaya çalıştığınız da ;

[oragrid@Redhat70 ~]$ /u01/oragrid/grid/11cR2/bin/srvctl start database -d ractest
PRCR-1079 : Failed to start resource ora.ractest.db
CRS-2640: Required resource ‘ora.DATA_0000.dg’ is missing.

Hatasını alabilirsiniz. Burda yapılacak şey aslında diskgorup ‘ u önce disable edip sonrasında remove etmeye çalışalım;

[oracle@Redhat70 ~]$ srvctl disable diskgroup -g ora.DATA_0000.dg
PRCR-1031 : Resource attribute NAME value ora.ORA.DATA_0000.DG.dg is not valid

[oracle@Redhat70 ~]$ srvctl remove diskgroup -g DATA_0000 -f
PRCA-1000 : ASM Disk Group DATA_0000 does not exist
PRCR-1001 : Resource ora.DATA_0000.dg does not exist
Continue reading