28 Ekim 2010 Perşembe

Datafile ‘ in adını Rename Etme & Pathini Değiştirme


Oracle server ürürünü kurarken genelde kurulum esnasında oracle tarafından ORACLE_BASE altına
set edilen oradata dizinine direk kurulum yapanlarınız mutlaka olmuştur. Ancak burası aynı zamanda ORACLE_HOME dizinide olduğundan genelde bu diskin size’ i dbf’ lerin barındırabilecek ölçüde olmadığından dolayı bunları taşımamız gerekebilir. Veya herhangi bir sebebden bir ötürü herhangi bir datafile’ i farklı bir disk üzerinde tutmaya karar verebilirsiniz. Bunun için aslında 2 yöntem var. Şimdi bunları sırasıyla açıklamaya çalışalım;

1) Eğer veritabanımız noarchivelog modda veya taşımak istediğiniz
datafile SYS, SYSAUX veya UNDO tablespace'ine ait ise bu taşıma işlemini veritabanı açıkken yapılamazsınız. Mutlaka database’ in kapatılması gerekmektedir.

SQL> SHUTDOWN IMMEDIATE

Database’ I kapattıkdan sonra OS komutlarıyla datafilelerin yerlerindeki değişiklikleri yaparız. Sonra Mount modda database’ I açarız.

SQL> STARTUP MOUNT

Sonra datafile’lerin yeni yerleri sisteme tanıtılır ve database Open moda alınır.

SQL> ALTER DATABASE RENAME FILE '/old_lokasyon/deneme01.dbf' TO'/new_lokasyon/deneme01.dbf';

SQL> ALTER DATABASE OPEN;

2) Eğer archivelog modda çalışıyor isek ce taşıyacağımız datafile’ ler sistem tablespace’ lerine ait değilse o zaman database’ I kapatmadan bu taşıma işlemini yapabiliriz.  İlk adımımız taşınacak datafile hangi tablespace’ e ait ise o tablespace’ I offline moda alıyoruz.

SQL> ALTER TABLESPACE deneme OFFLINE;

Tablespace oofline’ a alınması demek artık database tarafından hiçbir şekilde o tablespace’ e erişim olmaması anlamına gelir. Datafile’ I artık yeni yerine OS komutları ile taşıyabiliriz. Sonrasında tekrar tablespace’ i Online moda almamız gerekecek.

SQL> ALTER DATABASE RENAME FILE '/old_lokasyon/deneme01.dbf' TO'/new_lokasyon/deneme01.dbf';

SQL> ALTER TABLESPACE example ONLINE;

Aslında şu suruyu sorabilirsiniz datafile üzerinde işlem yapıyoruz peki neden datafile’ I değilde tablespace’ I offline moda alıyoruz. Bu sorunun cevabı evet haklısınız bu işlem için tablespace’ I değilde sadece ilgili datafile’ I offline moda alabilirsiniz ancak datafile online moda almadan önce mutlaka recover etmeniz gerekeceğinden yedeğinizin olduğundan mutlaka emin olmanız gerekecektir.

SQL> ALTER DATABASE DATAFILE '/old_lokasyon/dosya.dbf' OFFLINE;

Kopyalama sonrası:

SQL> ALTER DATABASE RENAME FILE  '/old_lokasyon/deneme01.dbf' TO'/new_lokasyon/deneme01.dbf';

SQL> RECOVER DATAFILE '/new_lokasyon/deneme01.dbf';

SQL> ALTER DATABASE DATAFILE '/new_lokasyon/deneme01.dbf';
 ONLINE;

Datafile’ i Offline moda alıpda işlem yapacaksınız backup son derece önemli.

Kamil TÜRKYILMAZ 



Hiç yorum yok: