shp03 adlı veritabanın bir kopyasının shp05 olarak oluşturulması aşağıda belirtilmiştir.
DB kapatılır.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
DB dosyalarının nerede bulunduğu öğrenilir. (Eğer dizin yapısı belli ise bakılmadan da yapılabilir. Örneğin dosyaları data02 altında shp03 SID’li olarak bulunan bir DB’yi, data05 altında shp05 oalarak bir benzerini oluşturmak istiyorsak data file’ların nerede olduğunu incelemeye gerek yoktur.)
SQL> select name from v$datafile;
NAME
------------------------------------------------------------------
/data02/shp03/system01.dbf
/data02/shp03/undotbs01.dbf
/data02/shp03/sysaux01.dbf
/data02/shp03/data01.dbf
/data02/shp03/data02.dbf
/data02/shp03/users01.dbf
6 rows selected
Yukarıda bulunan dosyalar DB için gerekli data file’larıdır. Bunlardan başka dosyalar da bulunur. Bütün dosyalar, kopyası alınacak DB’nin içinden bulunabilir.
oracle@zerg_shp01> cd /data02/shp03
oracle@zerg_shp01> ls
control01.ctl control03.ctl data02.dbf redo02.log
sysadm.log system01.dbf undotbs01.dbf
control02.ctl data01.dbf redo01.log redo03.log
sysaux01.dbf temp01.dbf users01.dbf
Yeni bir dizin oluşturulur.
oracle@zerg_shp01> cd /data05
oracle@zerg_shp01> mkdir shp05
oracle@zerg_shp01> ls
shp05
Dosyalar yeni dizine kopyalanır.
oracle@zerg_shp01> cp /data02/shp03/* /data05/shp05
oracle@zerg_shp01> ls
control01.ctl control03.ctl data02.dbf redo02.log
sysadm.log system01.dbf undotbs01.dbf
control02.ctl data01.dbf redo01.log redo03.log
sysaux01.dbf temp01.dbf users01.dbf
Kopyalanacak DB’nin dizin yapısında yeni bir dizin yapısı oluşturulur.
oracle@zerg_shp01> cd $ORACLE_HOME/admin/shp03
oracle@zerg_shp01> ls
bdump cdump create pfile scripts udump
oracle@zerg_shp01>
İstenirse eğer, udump, bdump ve cdump dizinlerini içeriği silinebilir.
oracle@zerg_shp01> cd $ORACLE_HOME/admin/shp03/bdump
oracle@zerg_shp01> rm *.*
pfile dizini içinden eski DB’ye ait init dosyasının ismi dğiştirilir.
oracle@zerg_shp01> cd $ORACLE_HOME/admin/shp03/pfile
oracle@zerg_shp01> cp initshp03.ora initshp05.ora
oracle@zerg_shp01> ls
init.ora.022006193440 initshp05.ora initshp03.ora
oracle@zerg_shp01> rm initshp03.ora
init dosyası değiştirilir.
oracle@zerg_shp01> vi initshp03.ora
Gerekli değiştirmeler yapılır.
control_files=("/data02/shp03/control01.ctl", "/data02/shp03/control02.ctl", "/data02/shp03/control03.ctl")
yerine
control_files=("/data05/shp05/control01.ctl", "/data05/shp05/control02.ctl", "/data05/shp05/control03.ctl")
yapılır. Bunun için vi ile
:%s/data03/data05/g ve :%s/shp03/shp05/g
Yapılabilir.
Linkleme yapılır.
oracle@zerg_shp01> cd $ORACLE_HOME/dbs
oracle@zerg_shp01> ln -s /data01/oracle/product/10.1.0/admin/shp05/pfile/initshp05.ora initshp05.ora
/etc/oratab dosyasına ekleme yapılır. shp03 için yapılan tanım burada tekrarlanır:
shp05:/data01/oracle/product/10.1.0:N
Aşağıdaki script oluşturulur. open.sql:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE SET DATABASE "SHP05" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 3635
LOGFILE
GROUP 1 '/data05/shp05/redo01.log' SIZE 10M,
GROUP 2 '/data05/shp05/redo02.log' SIZE 10M,
GROUP 3 '/data05/shp05/redo03.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/data05/shp05/system01.dbf',
'/data05/shp05/undotbs01.dbf',
'/data05/shp05/sysaux01.dbf',
'/data05/shp05/data01.dbf',
'/data05/shp05/data02.dbf',
'/data05/shp05/users01.dbf'
CHARACTER SET WE8ISO8859P1
;
RECOVER DATABASE
ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE '/data05/shp05/temp01.dbf'
SIZE 1470M REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
Open.sql dosyası /data05/shp05 altına kopyalanır.
ORACLE_SID değeri değiştirilir.
export ORACLE_SID=shp05
Sqlplus ile bağlanılıp bu dosya çalıştırılır.
oracle@zerg_shp01> sqlplus / as sysdba
SQL*Plus: Release 10.1.0.2.0 - Production on Mon Jul 31 19:31:09 2006
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> @open.sql
Bundan sonra DB gerekli düzenlemeleri yaparak açılır.
Listener.ora dosyası güncellenir. Shp03 için yapılan tanım burada da tekrarlanır:
(SID_DESC =
(GLOBAL_DBNAME = shp05)
(ORACLE_HOME = /data01/oracle/product/10.1.0)
(SID_NAME = shp05)
)
Listener yeniden çalıştırılır.
oracle@zerg_shp01> lsnrctl
LSNRCTL for Compaq Tru64 UNIX: Version 10.1.0.2.0 - Production on 31-JUL-2006 17:04:04
Copyright (c) 1991, 2004, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> stop
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zerg)(PORT=1521)))
The command completed successfully
LSNRCTL> start
Tnsnames.ora güncellenir. shp03 için yapılan tanım burada da tekrarlanır:
shp05 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = 172.23.248.130)(Port = 1521))
(CONNECT_DATA =
(SID = shp05)
)
)
Tnsping ile DB kontrol edilir:
oracle@zerg_shp01> tnsping shp05
TNS Ping Utility for Compaq Tru64 UNIX: Version 10.1.0.2.0 - Production on 31-JUL-2006 17:07:45
Copyright (c) 1997, 2003, Oracle. All rights reserved.
Used parameter files:
/data01/oracle/product/10.1.0/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(Host = 172.23.248.130)(Port = 1521)) (CONNECT_DATA = (SID = shp05)))
OK (230 msec)