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.