Oracle Veritabanı Adının Değiştirilmesi

@ 23 Mart 2011 tarihinde yazdı. Yazıya yorum yazın.

Çok nadir olsa da bazen veritabanımızın adını değiştirmemiz gerekebilir. Bu yazımda Oracle veritabanı adının nasıl değiştirileceğini adım adım numaralandırarak sizlere anlatacağım. Varolan veritabanımızın adı “MYDB” değiştirmek istediğimiz veritabanı adımız “TALIPDB” olsun.

1- İşletim sistemi üzerinde mevcut control file ların yedeği alınır.

$ mv talip_ctl_1.ora talip_ctl_1.ora.old

$ mv talip_ctl_2.ora talip_ctl_2.ora.old

$ mv talip_ctl_3.ora talip_ctl_3.ora.old

2- Sqlplus a “sys” kullanıcısıyla bağlanılır ve controlfile ın trace i alınır

SQL> Alter database backup controlfile to trace; 

3- “udump” altında oluşturulan trace script file olarak kaydedilir.

$ mv  mydb_ora_24273.trc  controlfile_script.sql

4- Oluşturulan script “vi” ile açılarak aşağıdaki gibi editlenir.

A- Aşağıdaki satıra kadar olan bütün satırlar silinir.

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE “MYDB” RESETLOGS NOARCHIVELOG

B- Yukarıdaki satırda REUSE ifadesi yerine aşağıdaki gibi SET ifadesi yazılır ve DB nin yeni adı yazılır.

CREATE CONTROLFILE SET DATABASE “TALIPDB” RESETLOGS NOARCHIVELOG

C- Scriptin en alt kısmında bulunan aşağıdaki ifade silinir ve kaydedilir.

RECOVER DATABASE USING BACKUP CONTROLFILE;

Scriptin son hali aşağıdaki script gibi olacaktır.

STARTUP NOMOUNT

CREATE CONTROLFILE SET DATABASE "TALIPDB" RESETLOGS  NOARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 '/oracle/ora11g/oradata/redo01.log'  SIZE 50M BLOCKSIZE 512,

  GROUP 2 '/oracle/ora11g/ oradata/redo02.log'  SIZE 50M BLOCKSIZE 512,

  GROUP 3 '/oracle/ora11g/ oradata/redo03.log'  SIZE 50M BLOCKSIZE 512,

DATAFILE

  '/oracle/ora11g/oradata/system01.dbf',

  '/oracle/ora11g/oradata/sysaux01.dbf',

  '/oracle/ora11g/oradata/undotbs01.dbf',

  '/oracle/ora11g/oradata/users01.dbf',

  '/oracle/ora11g/oradata/example01.dbf',

  '/oracle/ora11g/oradata/myts01.dbf'

CHARACTER SET WE8ISO8859P9

;

ALTER DATABASE OPEN RESETLOGS;

ALTER TABLESPACE TEMP ADD TEMPFILE '/oracle/ora11g/oradata/temp01.dbf'

     SIZE 441450496  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M; 

5- Veritabanı kapatılır.

SQL> shutdown immediate; 

6- $ORACLE_HOME/dbs dizini altında bulunan init<SID>.ora dosyası yedeklenir ve vi ile açılıp db_name, instance_name parametreleri yeni db adıyla değiştirilip kaydedilir.

7- Sqlplus da daha önce oluşturduğumuz ve düzenlediğimiz control file script çalıştırılır.

SQL> @/oracle/controlfile_script.sql 

8- Veritabanımız açıldığında yeni adıyla hizmet verecektir. Emin olmak için aşağıdaki select ile yeni adımızı öğrenebiliriz.

SQL> SELECT NAME FROM V$DATABASE;

Talip Hakan ÖZTÜRK