Rastgele Yazılar : ORADEBUG Nedir?
Rastgele Yazılar : Oracle Database Enterprice Manager Portu Değişimi
Rastgele Yazılar : Tablespace Yönetimi - 3
Rastgele Yazılar : Veri Madenciliği Nedir
Rastgele Yazılar : RAC(Real Application Cluster) Architecture(Mimarisi)
Rastgele Yazılar : Oracle 11g RMAN ile gelen List Failure, Advise Failure ...
Rastgele Yazılar : LSNRCTL Utility kullanmak
Rastgele Yazılar : Standby Database Nasıl Gerçek bir Test Ortamına Dönüştü...
Rastgele Yazılar : Temporary Tablespace Alanı Hakkında
Rastgele Yazılar : Dinamik SQL - 1
Özellikle Rman ile bir database' in backupını başka bir ortama kurduğumuzda database' in dbid ve db_name değerleri asıl ortamda ne ise burda da aynı olur. Dolayısıyla bu şekilde yeni bir database create ettikden sonra elimizdeki bu yeni ortamın bu değerlerini değiştirmek isteyebiliriz. (özelliklede rman catalog database' i kullanarak database' lerimizin backupını alıyorsak, dbid bizim için son derece önemli olacaktır) Şimdi değişikliğe başlamadan önce dbid ve db_name' in şu anki değerlerine bakalım (bu değerleri sonradan işlem yapılırken de görebiliriz) ; SQL> select dbid, name from v$database; DBID NAME ---------- ---------- 4271840000 KTEST Öncelikle aşağıdaki dizinde init ve spfile dosyasının olduğundan emin olun. İlgili dizin ; Linux ortam üzerinde çalışıyorsanız ; cd $ORACLE_HOME/dbs Windows üzerinde çalışıyorsanız; cd $ORACLE_HOME/database Sonra database' imizi immediate ile kapatıyoruz. C:\Documents and Settings\oracle>sqlplus "/as sysdba" SQL*Plus: Release 11.2.0.1.0 Production on Wed Feb 2 22:39:01 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Oracle Database Vault options SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 627732480 bytes Fixed Size 1376408 bytes Variable Size 184553320 bytes Database Buffers 436207616 bytes Redo Buffers 5595136 bytes Database mounted. SQL> Mount ile database'i start ettikden sonra, komut satırından aşağıdaki komutu çalıştırıyoruz. Bu konuttaki "nid" bizim dbid ve db_name' i değiştirmemizi sağlayacak olan komutumuz, target kısmı database' in şu anki sys userı ve onun şifresi @ kısmı ise database' imizin db_name'ini, dbname = parametresi ise database' in yeni name' mini ifade etmektedir. nid C:\Documents and Settings\oracle>nid DBNAME=KAMIL DBNEWID: Release 11.2.0.1.0 - Production on Wed Feb 2 22:40:29 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to database KTEST (DBID=4271840000) Connected to server version 11.2.0 Control Files in database: C:\ORACLE11GR2\ORADATA\KTEST\CONTROL01.CTL C:\ORACLE11GR2\FLASH_RECOVERY_AREA\KTEST\CONTROL02.CTL Change database ID and database name KTEST to KAMIL? (Y/[N]) => Y Proceeding with operation Changing database ID from 4271840000 to 3000141920 Changing database name from KTEST to KAMIL Control File C:\ORACLE11GR2\ORADATA\KTEST\CONTROL01.CTL - modified Control File C:\ORACLE11GR2\FLASH_RECOVERY_AREA\KTEST\CONTROL02.CTL - modified Datafile C:\ORACLE11GR2\ORADATA\KTEST\SYSTEM01.DB - dbid changed, wrote newname Datafile C:\ORACLE11GR2\ORADATA\KTEST\SYSAUX01.DB - dbid changed, wrote newname Datafile C:\ORACLE11GR2\ORADATA\KTEST\UNDOTBS01.DB - dbid changed, wrote new name Datafile C:\ORACLE11GR2\ORADATA\KTEST\USERS01.DB - dbid changed, wrote new name Datafile C:\ORACLE11GR2\ORADATA\KTEST\TEMP01.DB - dbid changed, wrote new name Control File C:\ORACLE11GR2\ORADATA\KTEST\CONTROL01.CTL - dbid changed, wrote new me Control File C:\ORACLE11GR2\FLASH_RECOVERY_AREA\KTEST\CONTROL02.CTL - dbid changed, wrote new name Instance shut down Database name changed to KAMIL. Modify parameter file and generate a new password file before restarting. Database ID for database KAMIL changed to 3000141920. All previous backups and archived redo logs for this database are unusable. Database is not aware of previous backups and archived logs in Recovery Area. Database has been shutdown, open database with RESETLOGS option. Succesfully changed database name and ID. DBNEWID - Completed succesfully. Yukarıdaki mesajları başarıyla almış olmamız gerekiyor. Bundan sonraki kısımda ; Database' i nomunt modda açıyoruz. SQL> startup mount ORACLE instance started. Total System Global Area 627732480 bytes Fixed Size 1376408 bytes Variable Size 184553320 bytes Database Buffers 436207616 bytes Redo Buffers 5595136 bytes Yapılan bu değişikliği aşağıdaki Alter ile de system üzerinden spfile' e yazdırıyoruz. SQL> ALTER SYSTEM SET DB_NAME=KAMIL SCOPE=SPFILE; System altered. Şimdi immediate ile tekrar kapatıyoruz ; SQL> shutdown immediate ORA-01507: database not mounted ORACLE instance shut down. Aslında bundan sonraki kısım klasik database operayonları gibi düşünebiliriz. Database'in name' I değiştiğinden dolayı ona uygun bir password file create etmemiz gerekiyor. Ek olarak spfile dosyamızın adını da yeni SID' imizi içerek şekilde rename edeceğiz. orapwd file=C:\oracle11gR2\product\pwdKAMIL.ora password=oracle entries=5 Ben bu çalışmamı windows bir sunucu üzerinde yaptığımdan dolayı ..\database\ dizinindeki spfileKTEST.ora dosyasının adını spfileKAMIL.ora olacak şekilde rename ediyorum. Yine windowslar için unutulmaması gereken bir nokta database ilk create ederken windows servisleride create ettiğinden dolayı (oracle servisleri SID bazında create edilmekte) bu servisleri de değiştirmemiz gerekiyor. Yani eski SID' li servis tanımı silinip yerine yeni SID' li servis tanımını eklememiz gerekiyor. Eski tanımı silmek için ; C:\Documents and Settings\oracle>oradim -delete -sid KTEST Instance deleted. Yenisini eklemek içinse; C:\Documents and Settings\oracle>oradim -new -sid KAMIL -intpwd oracle -startmode a -pfile C:\oracle11gR2\product\spfileKAMIL.ora Instance created. Yapılan bu değişiklikden listener' ında etkilenmesi için stop / start yapıyoruz. C:\Documents and Settings\oracle>lsnrctl stop LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 02-FEB-2011 23:29:07 Copyright (c) 1991, 2010, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dataguart)(PORT=1521))) The command completed successfully C:\Documents and Settings\oracle>lsnrctl start LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 02-FEB-2011 23:29:12 Copyright (c) 1991, 2010, Oracle. All rights reserved. Starting tnslsnr: please wait... TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production System parameter file is c:\oracle11gR2\product\network\admin\listener.ora Log messages written to c:\oracle11gr2\diag\tnslsnr\dataguart\listener\alert\log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dataguart)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dataguart)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Produ ction Start Date 02-FEB-2011 23:29:16 Uptime 0 days 0 hr. 0 min. 5 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File c:\oracle11gR2\product\network\admin\listener.ora Listener Log File c:\oracle11gr2\diag\tnslsnr\dataguart\listener\alert\log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dataguart)(PORT=1521))) Services Summary... Service "CLRExtProc" has 1 instance(s). Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully C:\Documents and Settings\oracle> Buraya kadar herşey yolunda, artık yeni spfile' imiz ile database' imizi açabiliriz. Ancak database' i startup ile açmayacağız. Database' in dbid ve name' I değiştiğinden dolayı, bu database' den alınmış olan backuplar artık kullanılamaz duruma gelmiştir çünkü artık dbid ve name' ler farklı, dolayısıyla database' in hayata sıfırdan yeni bir başlangıç yapması için open RESETLOGS ile açmamız gerekiyor (başka türlü açılamaz) ; SQL> startup mount ORACLE instance started. Total System Global Area 627732480 bytes Fixed Size 1376408 bytes Variable Size 184553320 bytes Database Buffers 436207616 bytes Redo Buffers 5595136 bytes Database mounted. SQL> alter database open resetlogs ; Database altered. Şimdi yeni dbid ve name değerlerimizi kontrol edelim. SQL> select dbid, name from v$database; DBID NAME ---------- --------- 3000141920 KAMIL Database' in sadece DBID' sini veya DB_NAME' ini de değiştirebilirsiniz, şöyleki ; Sadece DBID değiştirmek isterseniz ; nid çalıştırmanız yeterli olacaktır. Bu komut sadece dbid' yi değiştirecektir ve name aynı kalacaktır. Burada db_name' dokunmadığımız için spfile veya pasword file üzerinde vir değişiklik yapmamıza gerek yok, sadece open RESETLOGS ile açmamız yeterli olacaktır. Sadece DB_NAME' i değiştirmek istersenizde nid SETNAME=YES komutunu çalıştırmamız yeterli olacaktır. BU komutta dbid' ye dokunmadan sadece name' I değiştirecektir. Diğer adımlar yukarıdakiler ile aynı. Bu işleme aslında çok sık olmasa da rman' le create ettiğimiz yeni database' imizi başka bir projede PROD olarak kullanmamız gerektiğinde veya kullanılan bir database farklı bir projede kullanılacaksa ona uygun bir name verilmek istendiğinde kullanılabilirsiniz.