Home / MAKALELER / Veri Tabanı / Oracle Datafile Name ve Path değiştirme (ARCHIVELOG)

Oracle Datafile Name ve Path değiştirme (ARCHIVELOG)

Bir önceki yazımda anlattığım gibi Noarchivelog durumda olduğunda datafile ların ismini değiştirmeye yada lokasyonunu değiştirdiğimizde veritabanını kapatmak zorunda oludğumuzu söylemiştik.

 

Şimdi ARCHIVELOG modda veritabanını kapatmadan datafile lokasyonunu değiştirelim.

İlk önce veritabanınızın archivelog da olduğunu teyit edelim.

select log_mode from v$database;

LOG_MODE

ARCHIVELOG

Şunu da unutmayalım  eğer taşımak veya ismini değiştirmek istediğiniz datafilelar SYS,SYSTEM veya UNDO tablespace lere ait datafile lar ise veritabanınızı her şartta kapatmanız gerekecektir.

Eğer veritabanınız archive modda değilse archivelog moda almak için veritabanınızı kapatıyoruz.

SQL> shu immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

 

Total System Global Area  636100608 bytes

Fixed Size                  1346812 bytes

Variable Size             398459652 bytes

Database Buffers          230686720 bytes

Redo Buffers                5607424 bytes

Database mounted.

 

 

SQL> alter database archivelog;

Database altered.

 

SQL> alter database open;

Database altered.

 

B-           Veritabanınız ARCHIVELOG

 

1-            sqlplus / as sysdba ile SQL-PLUS bağlanıyoruz.

2-            Daha sonra taşımak istediğiniz datafile lokasyonunu öğrenelim.

 

select file#,name from v$datafile;

 

FILE#      NAME

1                             /oradata/testdb/TESTDB/system01.dbf

2                             /oradata/testdb/TESTDB/sysaux01.dbf

3                             /oradata/testdb/TESTDB/undotbs01.dbf

4                             /oradata/users01.dbf

 

3- Şimdi işlemimize başlayalım. İlk önce o datafile hangi tablespace de ise onu OFFLINE modda alıyoruz. OFFLINE modda  aldığımızdan dolayı veritabanı o tablespace ulaşamayacaktır.

 

SQL> ALTER TABLESPACE USERS OFFLINE;

 

4-  Şimdide İşletim Sistemi üzerinde datayı taşıyoruz.

 

[oracle@erdemoracledb oradata]$ cp users01.dbf /oradata/testdb/TESTDB/

 

5- İşletim sistemi üzerinde taşıdık şimdi bu yapılan işlemi veritabanına belirtmek kalıyor.

SQL>  ALTER DATABASE RENAME FILE ‘/oradata/users01.dbf’ TO ‘/oradata/testdb/TESTDB/users01.dbf’;

Database altered.

 

 

6-  Veritanına belittikden sonra TABLESPACE mizi ONLINE moda alıyoruz.

SQL> ALTER TABLESPACE USERS ONLINE;

Tablespace altered.

 

 

7-  Son olarakda kontrolüzü yapıyoruz.

select file#,name from v$datafile;

 

FILE#      NAME

1                             /oradata/testdb/TESTDB/system01.dbf

2                             /oradata/testdb/TESTDB/sysaux01.dbf

3                             /oradata/testdb/TESTDB/undotbs01.dbf

4                             /oradata/testdb/TESTDB/users01.dbf

 

Eğer canlı bir veritabanınız var ise o an o tablespace veri yazılması gerekiyor olabilir.

Bunun içinde bu lokasyon yani isim değişikliği işlemini datafile bazında yapabilirz.

1-      Şimdi ilk önce işlem yapılacak datafile OFFLINE moda alıyoruz.

SQL> ALTER DATABASE DATAFILE ’/oradata /users01.dbf’ OFFLINE;

 

2-    Şimdi gerekli taşımayı işletim sistemi bazında yapıyoruz.

 

[oracle@erdemoracledb oradata]$ cp users01.dbf /oradata/testdb/TESTDB/

 

3-    Bu taşımayı ver,tabanına haber ediyoruz.

SQL> ALTER DATABASE RENAME FILE ‘/oradata/users01.dbf’ TO ‘/oradata/testdb/TESTDB/users01.dbf’;

 

4-    Sonra datafile mızı recover ediyoruz.

 

SQL> RECOVER DATAFILE ‘/oradata/testdb/TESTDB/users01.dbf’;

 

5-    Son oalrakda datafile mızı online moda alıp işlemizi sonlandırıyoruz.

SQL> ALTER DATABASE DATAFILE ‘/oradata/testdb/TESTDB/users01.dbf’ ONLINE;

 

 

Tabi ki işlemleriniz bitince kontrol etmekde yarar vardı.

 

Ayrıca yaptığınızbütün veritabanı işlemlerinizi, veri kaybı problemleri yaşamamanız için yedek alarak yapmanızı tavsiye ederim.

About Erdem Dayioglu

1985 Yılında İstanbulda doğdum. Lise öğrenimimi Kartal Anadolu Lisesinde yaptım.(1999-2003) Lisans öğrenimimi Uluslararası Kıbrıs Üniversitesi Bilgisayar Mühendisliği bölümünde yaptım(2004-2009).Şuanda İstanbul Ticaret Üniversitesinde İşletme yüksek Lisansıma devam etmekteyim.(2011- ) Oracle la üniversitemde veritanaı dersiyle tanıştım. Mezun oldukdan sonrada 2010 yılında Oracle DBA eğitimi aldım. Oracle DBA lik eğitimimden sonra hayalimdeki meslek oldu. Şuan da bir bankada Oracle DBA olarak görev almaktayım. Bu işimden önce bazı iş deneyimlerim olsada, şuan ki işimle hayallerime başlangıç yapmış bulunmaktayım

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın