Dosya sistemindeki bir veritabanının ASM disk gruplarına taşınması

3 Şub by Ahmet Duruöz

Dosya sistemindeki bir veritabanının ASM disk gruplarına taşınması

Dosya sistemindeki bir veritabanının ASM disk gruplarına taşınması işlemini aşağıdaki adımları takip ederek yapabilirsiniz.

Öncelikle Grid Infrastructure kurulumunun yapılmış olması ve disk gruplarının oluşturulması gerekmektedir.  Aşağıdaki adımlarda data için +DATA , flash recovery area için +FRA disk grubu kullanılacaktır.

İlk önce eğer spfile’dan açılmış ise veritabanınız , mevcut spfile dan pfile oluşturup bazı parametreleri ayarlamak gerekiyor.

[oracle@orcldb ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Aug 31 14:24:52 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shu immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> create pfile='/tmp/initORCL.ora' from spfile;
File created.

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Oluşturulan pfile (/tmp/initORCL.ora) dosyasına aşağıdaki satırları ekleyip, $ORACLE_HOME/dbs altına initSID.ora (initORCL.ora) şeklinde kopyalayın ve spfile dosyasını farklı bir isimle kaydedin.

*.control_files=(+DATA, +FRA)
*.db_recovery_file_dest=+FRA
*.db_recovery_file_dest_size=5368709120
*.db_create_file_dest=+DATA
*.db_create_online_log_dest_1=+FRA
[oracle@orcldb db_1]$ cd $ORACLE_HOME/dbs
[oracle@orcldb dbs]$ cp /tmp/initORCL.ora .
[oracle@orcldb dbs]$ mv spfileORCL.ora spfileORCL.ora.31082015

$ORACLE_HOME/dbs altındaki yeni pfile dosyasından spfile oluşturun.

[oracle@orcldb dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Aug 31 14:29:11 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> create spfile from pfile;

File created.

SQL> exit
Disconnected

Dosya sistemindeki controlfile dosyasından ASM disk grubu içinde yeni controlfile oluşturun. Önce veritabanımızı nomount modda başlatıp, rman ile controlfile dosyasını restore edeceğiz.

[oracle@orcldb dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Aug 31 14:29:31 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size		    2260088 bytes
Variable Size		 2466251656 bytes
Database Buffers	 1795162112 bytes
Redo Buffers		   12107776 bytes

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@orcldb dbs]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Mon Aug 31 14:30:41 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (not mounted)

RMAN> restore controlfile from '/u01/app/oracle/oradata/ORCL/control01.ctl';

Starting restore at 31-AUG-15
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=398 device type=DISK

channel ORA_DISK_1: copied control file copy
output file name=+DATA/ORCL/controlfile/current.256.889194645
output file name=+FRA/ORCL/controlfile/current.256.889194645
Finished restore at 31-AUG-15

Restore sonrasında , yukarıda anlatıldığı gibi yeniden spfile dan pfile oluşturup, pfile içindeki control_files parametresindeki değerleri , restore edilen control dosyaları olacak şekilde değiştirip, kopyalama ve spfile oluşturma adımlarını tekrarlayın.

Yeni controlfile değerleri ile veritabını mount modda başlatın.

Mount modda iken rman ile veritabanımızın bir kopyasını +DATA disk grubunda oluşturalım.

oracle@orcldb dbs]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Mon Aug 31 14:30:41 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (mounted)

RMAN> configure device type disk parallelism 4;

new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored

RMAN> BACKUP AS COPY DATABASE FORMAT '+DATA';

Starting backup at 31-AUG-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=398 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=399 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=14 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=400 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=/u01/app/oracle/oradata/ORCL/hope_data01.dbf
channel ORA_DISK_2: starting datafile copy
input datafile file number=00007 name=/u01/app/oracle/oradata/ORCL/hope_index01.dbf
channel ORA_DISK_3: starting datafile copy
input datafile file number=00002 name=/u01/app/oracle/oradata/ORCL/sysaux01.dbf
channel ORA_DISK_4: starting datafile copy
input datafile file number=00001 name=/u01/app/oracle/oradata/ORCL/system01.dbf
output file name=+DATA/ORCL/datafile/system.260.889194691 tag=TAG20150831T143129 RECID=2 STAMP=889194743
channel ORA_DISK_4: datafile copy complete, elapsed time: 00:00:55
channel ORA_DISK_4: starting datafile copy
input datafile file number=00003 name=/u01/app/oracle/oradata/ORCL/undotbs01.dbf
output file name=+DATA/ORCL/datafile/sysaux.259.889194691 tag=TAG20150831T143129 RECID=3 STAMP=889194749
channel ORA_DISK_3: datafile copy complete, elapsed time: 00:01:02
channel ORA_DISK_3: starting datafile copy
input datafile file number=00005 name=/u01/app/oracle/oradata/ORCL/example01.dbf
output file name=+DATA/ORCL/datafile/example.262.889194753 tag=TAG20150831T143129 RECID=4 STAMP=889194770
channel ORA_DISK_3: datafile copy complete, elapsed time: 00:00:25
channel ORA_DISK_3: starting datafile copy
copying current control file
output file name=+DATA/ORCL/controlfile/backup.263.889194777 tag=TAG20150831T143129 RECID=5 STAMP=889194778
channel ORA_DISK_3: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_3: starting datafile copy
input datafile file number=00004 name=/u01/app/oracle/oradata/ORCL/users01.dbf
output file name=+DATA/ORCL/datafile/undotbs1.261.889194745 tag=TAG20150831T143129 RECID=6 STAMP=889194778
channel ORA_DISK_4: datafile copy complete, elapsed time: 00:00:35
channel ORA_DISK_4: starting full datafile backup set
channel ORA_DISK_4: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_4: starting piece 1 at 31-AUG-15
output file name=+DATA/ORCL/datafile/users.264.889194781 tag=TAG20150831T143129 RECID=7 STAMP=889194781
channel ORA_DISK_3: datafile copy complete, elapsed time: 00:00:02
channel ORA_DISK_4: finished piece 1 at 31-AUG-15
piece handle=+DATA/ORCL/backupset/2015_08_31/nnsnf0_tag20150831t143129_0.265.889194781 tag=TAG20150831T143129 comment=NONE
channel ORA_DISK_4: backup set complete, elapsed time: 00:00:01
output file name=+DATA/ORCL/datafile/hope_data.257.889194689 tag=TAG20150831T143129 RECID=8 STAMP=889194909
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:03:47
output file name=+DATA/ORCL/datafile/hope_index.258.889194689 tag=TAG20150831T143129 RECID=9 STAMP=889194932
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:04:07
Finished backup at 31-AUG-15

 

Veritabanımızı +DATA içerisindeki kopyaya yönlendirelim.

RMAN> SWITCH DATABASE TO COPY;

datafile 1 switched to datafile copy "+DATA/ORCL/datafile/system.260.889194691"
datafile 2 switched to datafile copy "+DATA/ORCL/datafile/sysaux.259.889194691"
datafile 3 switched to datafile copy "+DATA/ORCL/datafile/undotbs1.261.889194745"
datafile 4 switched to datafile copy "+DATA/ORCL/datafile/users.264.889194781"
datafile 5 switched to datafile copy "+DATA/ORCL/datafile/example.262.889194753"
datafile 6 switched to datafile copy "+DATA/ORCL/datafile/hope_data.257.889194689"
datafile 7 switched to datafile copy "+DATA/ORCL/datafile/hope_index.258.889194689"

Veritabanımızı açalım.

RMAN> alter database open;

database opened

RMAN> exit


Recovery Manager complete.

Artık veritabanımız, dosyaları +DATA disk grubunda olacak şekilde çalışacaktır. Sonraki adımlar redo log dosyalarının ve temp dosyalarının ASM içerisinde oluşturulmasıdır.

Temp tablo alanının oluşturulması :

Mevcut temp dosyalarımızı sorgulayalım.

[oracle@orcldb dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Aug 31 14:36:20 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> select name, bytes from v$tempfile;

NAME
--------------------------------------------------------------------------------
     BYTES
----------
/u01/app/oracle/oradata/ORCL/temp01.dbf
  66060288

ASM içinde TEMP1 isimli temp tablo alanı oluşturulup , varsayılan temp alanı TEMP1 olacak şekilde değiştirilecektir. Sonrasında aynı şekilde TEMP isimli disk grup içinde temp tablo alanı oluşturulup , varsayılan olarak ayarlanıp, TEMP1 tablo alanı drop edilecektir. İşlemler sonunda TEMP isimli , +DATA disk grubunda yeni temp tablo alanımız olacaktır. Temp tablo alanını drop edebilmek için kullanım olmadığından emin olunuz. Aksi takdirde drop edilemeyecektir. db_create_file_dest parametresi ayarlandığından dolayı herhangi bir dosya ismi belirtilmemiştir.

SQL> create temporary tablespace temp1 tempfile SIZE 100M extent management local uniform size 1M;

Tablespace created.

SQL> alter database default temporary tablespace temp1;

Database altered.

SQL> drop tablespace temp including contents;

Tablespace dropped.

SQL> create temporary tablespace temp tempfile SIZE 1G extent management local uniform size 10M;

Tablespace created.

SQL> alter database default temporary tablespace temp;

Database altered.

SQL> drop tablespace temp1 including contents;

Tablespace dropped.

Redolog dosyalarının oluşturulması :

Mevcut log dosyalarımızı sorgulayalım.

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/redo03.log
/u01/app/oracle/oradata/ORCL/redo02.log
/u01/app/oracle/oradata/ORCL/redo01.log

Yeni log grupları oluşturalım.

SQL> alter database add logfile thread 1 group 21 ('+DATA') size 100M;

Database altered.

SQL> alter database add logfile thread 1 group 22 ('+DATA') size 100M;

Database altered.

SQL> alter database add logfile thread 1 group 23 ('+DATA') size 100M;

Database altered.

Yeni oluşan redolog dosyalarının kullanılmasını sağlayıp , dosya sistemindeki log gruplarını silelim. +DATA içindeki log dosyaları current olana kadar switch logfile ve gerekirse checkpoint işlemi yapılmalıdır. Redolog drop işlemi sırasında ORA-01624 hatası alırsanız , birkaç kere switch logfile ve checkpoint işlemi yapıp tekrar deneyin.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> alter database drop logfile group 1;

Database altered.

SQL> alter database drop logfile group 2;
alter database drop logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recovery of instance ORCL (thread 1)
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/ORCL/redo02.log'


SQL> alter database drop logfile group 3;

Database altered.

SQL> alter system checkpoint;

System altered.

SQL> alter database drop logfile group 2;

Database altered.

Yeni oluşan redolog gruplar 21-22-23 şeklide olduğundan eskisi gibi 1-2-3 olacak şekilde yeniden yukarıdaki işlemleri tekrarlayalım. Grup numaralarının 21-22-23 olması sizi rahatsız etmez ise bu adımı atlayabilirsiniz.

SQL> alter database add logfile thread 1 group 1 ('+DATA') size 100M;

Database altered.

SQL> alter database add logfile thread 1 group 2 ('+DATA') size 100M;

Database altered.

SQL> alter database add logfile thread 1 group 3 ('+DATA') size 100M;

Database altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL>  alter system checkpoint;   

System altered.

SQL> alter database drop logfile group 21;

Database altered.

SQL> alter database drop logfile group 22;

Database altered.

SQL> alter database drop logfile group 23;

Database altered.

Redolog gruplarındaki dosyalarımız yedeklilik için en az iki kopya şeklinde tutulmalıdır. Bu yüzden +FRA içinde mevcut redolog dosyalarımızın birer kopyasını oluşturalım.

SQL> alter database add logfile member '+FRA' to group 1;

Database altered.

SQL> alter database add logfile member '+FRA' to group 2;

Database altered.

SQL> alter database add logfile member '+FRA' to group 3;

Database altered.

Artık tüm dosyalarımız ASM disk gruplarında olduğundan dosya sistemindeki veritabanı dosyalarını silebiliriz. Switch copy işleminden sonra ASM disk grubundakiler asıl , dosya sistemindekiler kopya haline gelmiştir. Aşağıdaki gibi rman ile veritabanımızın dosya sistemindeki kopyasını siliyoruz.

[oracle@orcldb dbs]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Mon Aug 31 15:00:27 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=2455775002)

RMAN> DELETE COPY OF DATABASE;

using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=22 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=410 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=418 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=18 device type=DISK
List of Datafile Copies
=======================

Key     File S Completion Time Ckp SCN    Ckp Time       
------- ---- - --------------- ---------- ---------------
10      1    A 31-AUG-15       121206512  31-AUG-15      
        Name: /u01/app/oracle/oradata/ORCL/system01.dbf

11      2    A 31-AUG-15       121206512  31-AUG-15      
        Name: /u01/app/oracle/oradata/ORCL/sysaux01.dbf

12      3    A 31-AUG-15       121206512  31-AUG-15      
        Name: /u01/app/oracle/oradata/ORCL/undotbs01.dbf

13      4    A 31-AUG-15       121206512  31-AUG-15      
        Name: /u01/app/oracle/oradata/ORCL/users01.dbf

14      5    A 31-AUG-15       121206512  31-AUG-15      
        Name: /u01/app/oracle/oradata/ORCL/example01.dbf

15      6    A 31-AUG-15       121206512  31-AUG-15      
        Name: /u01/app/oracle/oradata/ORCL/hope_data01.dbf

16      7    A 31-AUG-15       121206512  31-AUG-15      
        Name: /u01/app/oracle/oradata/ORCL/hope_index01.dbf


Do you really want to delete the above objects (enter YES or NO)? YES 
deleted datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCL/system01.dbf RECID=10 STAMP=889194941
deleted datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCL/sysaux01.dbf RECID=11 STAMP=889194941
deleted datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCL/undotbs01.dbf RECID=12 STAMP=889194941
deleted datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCL/users01.dbf RECID=13 STAMP=889194941
deleted datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCL/example01.dbf RECID=14 STAMP=889194941
deleted datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCL/hope_data01.dbf RECID=15 STAMP=889194941
deleted datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCL/hope_index01.dbf RECID=16 STAMP=889194941
Deleted 7 objects


RMAN> exit


Recovery Manager complete.

Zorunlu olmamakle birlikte dilerseniz spfile dosyasını da ASM içerisine taşıyabilirsiniz. Gerekli adımlar aşağıda belirtilmiştir.

Daha önce spfile dan açmıştık veritabanımızı. Spfile’dan pfile oluşturup , pfile’dan ASM içinde spfile oluşturup, $ORACLE_HOME/dbs altındaki pfile dosyamızda , spfile yerini ASM içindeki spfile olacak şekilde değiştirip, veritabanını yeniden başlatacağız.

SQL> create pfile='/tmp/pfile' from spfile;

File created.

SQL> create spfile='+DATA/ORCL/spfileORCL.ora' from pfile='/tmp/pfile';

File created.

$ORACLE_HOME/dbs altındaki pfile (initORCL.ora) dosyamızın içeriğini +DATA disk grubundaki spfile’ı gösterecek şekilde değiştiriyoruz. İçerik aşağıdaki gibi olmalıdır.

SPFILE='+DATA/ORCL/spfileORCL.ora'

Sonrasında veritabanımızı yeniden başlattığımızda , ASM içindeki spfile’dan açılacaktır. Açıldıktan sonra aşağıdaki gibi kontrol edebilirsiniz. Her iki parametrede ASM içindeki spfile dosyasını göstermelidir.

SQL> show parameter spfile;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 +DATA/ORCL/spfileORCL.or
						 a
SQL> show parameter pfile;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 +DATA/ORCL/spfileORCL.or
						 a

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir