9 Ekim 2014 Perşembe

ASM yeni disk grup ekleme ve Datafile taşıma (ASM add new disk group - Move Datafile)

Oracle ASM yapısında yeni bir disk grup ekleyerek varolan datafile'larımızı bu ASM disk grubu üzerine nasıl taşıyacağımıza bakacağız. Daha Sonra ise bu yeni oluşturduğumuz disk gruba bir disk ekleyeceğiz.
Virtual box üzerinde kurulu olan database sunucuma 3 adet yeni virtual disk attach ederek işleme başlıyorum..
Sunucumuzu başlatıyoruz ve root kullanıcısı ile login olduktan sonra ilk yapmamız gereken şey fdisk komutu ile disklerimiz üzerinde partition oluşturup,yeni eklediğimiz diskleri ASM diski olarak işaretlemek olacak..

[root@test ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8,  0 Oct  9 08:51 /dev/sda
brw-rw----. 1 root disk 8,  1 Oct  9 08:52 /dev/sda1
brw-rw----. 1 root disk 8,  2 Oct  9 08:51 /dev/sda2
brw-rw----. 1 root disk 8, 16 Oct  9 08:53 /dev/sdb
brw-rw----. 1 root disk 8, 17 Oct  9 08:53 /dev/sdb1
brw-rw----. 1 root disk 8, 32 Oct  9 08:53 /dev/sdc
brw-rw----. 1 root disk 8, 33 Oct  9 08:53 /dev/sdc1
brw-rw----. 1 root disk 8, 48 Oct  9 08:53 /dev/sdd
brw-rw----. 1 root disk 8, 49 Oct  9 08:53 /dev/sdd1
brw-rw----. 1 root disk 8, 64 Oct  9 08:51 /dev/sde
brw-rw----. 1 root disk 8, 80 Oct  9 08:51 /dev/sdf
brw-rw----. 1 root disk 8, 96 Oct  9 08:51 /dev/sdg

Yukarıdaki komutla sunucu üzerinde tanımlı disklerimize baktığımız zaman yeni eklenen disklerimizin sde,sdf ve sdg olarak harflendirildiğini görüyoruz. Bu diskleri aşağıdaki gi yeni partitionlara ayırıyoruz.Her 3 disk için de ayrı ayrı bu işlemi yapıyoruz.

[root@test ~]# fdisk /dev/sde
bu komutunu girdikten sonra sırasıyla aşağıdaki parametreleri veriyoruz
n (new) 
p (partition)
1 (partition number)
[enter]
[enter]
w (write)

Sonraki adımda bu diskleri asm disk olarak işaretliyoruz.

[root@test ~]# /etc/init.d/oracleasm createdisk DATANEW1 /dev/sde1
Marking disk "DATANEW1" as an ASM disk:                    [  OK  ]
[root@test ~]# /etc/init.d/oracleasm createdisk DATANEW2 /dev/sdf1
Marking disk "DATANEW2" as an ASM disk:                    [  OK  ]
[root@test ~]# /etc/init.d/oracleasm createdisk DATANEW3 /dev/sdg1
Marking disk "DATANEW3" as an ASM disk:                    [  OK  ]
[root@test ~]# oracleasm listdisks
DATA1
DATA2
DATA3
DATANEW1
DATANEW2
DATANEW3
[root@test ~]#

Şimdi ASM ile yeni bir disk grubu nasıl oluşturacağımıza bakalım; Öncelikle aşağıdaki komutla ASM instance ve database instance'ımızın ayakta olup olmadığını kontrol edebiliriz.
[root@test ~]# ps -ef | grep pmon
oracle    3171     1  0 08:57 ?        00:00:02 asm_pmon_+ASM
oracle    3255     1  0 08:58 ?        00:00:01 ora_pmon_orcl
root      3688  3085  1 09:13 pts/0    00:00:00 grep pmon

Diskgrupların durumunu ve bilgilerini aşağıdaki sorguyla öğrenebiliriz.

SQL>  SELECT GROUP_NUMBER NAME,SECTOR_SIZE,BLOCK_SIZE,ALLOCATION_UNIT_SIZE,STATE                     ,TYPE TOTAL_MB,FREE_MB FROM V$ASM_DISKGROUP;

      NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE STATE       TOTAL_
---------- ----------- ---------- -------------------- ----------- ------
   FREE_MB
----------
         1         512       4096              2097152 CONNECTED   EXTERN
     38620

         2         512       4096              1048576 CONNECTED   EXTERN
     19540

Yeni disk grubu sql cümlesi ile ekleyebileceğimiz gibi ASMCA aracı ile de ekleyebiliriz. Böylesi daha kolay olacaktır. 
Komut satırından asmca komutuyla bu aracı çalıştırıyoruz.Aşağıdaki gibi iki diskimizi seçip external failure groups seçeneğiyle devam ediyoruz (Production ortamda disklerin nasıl yedeklendiğine raid yapısına göre failure groups seçeneği değerlendirilmelidir.) OK dediğimizde artık DATANEW adıyla yeni disk grubumuz da oluşturulmuş oldu.
Şimdi disk gruplarımızı tekrar kontrol edelim.

SQL> SELECT GROUP_NUMBER NAME,SECTOR_SIZE,BLOCK_SIZE,ALLOCATION_UNIT_SIZE,STATE,TYPE TOTAL_MB,FREE_MB FROM V$ASM_DISKGROUP;

      NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE STATE       TOTAL_
---------- ----------- ---------- -------------------- ----------- ------
   FREE_MB
----------
         1         512       4096              2097152 CONNECTED   EXTERN
     38610

         2         512       4096              1048576 CONNECTED   EXTERN
     19540

         3         512       4096              1048576 MOUNTED     EXTERN
     65476

şimdi Bikaçtane datafile'ımızı bu diskgrup üzerine taşımak için gerekli işlemlere bakalıp.

SQL>  select tablespace_name,file_name,bytes from dba_data_files;

TABLESPACE_NAME  FILE_NAME                                 BYTES
---------------- ------------------------------------ ----------
USERS            +DATA/orcl/datafile/users.259.857729    5242880
                 995

UNDOTBS1         +DATA/orcl/datafile/undotbs1.258.857   94371840
                 729995

SYSAUX           +DATA/orcl/datafile/sysaux.257.85772  702545920
                 9995

SYSTEM           +DATA/orcl/datafile/system.256.85772  796917760
                 9995

TABLESPACE_NAME  FILE_NAME                                 BYTES
---------------- ------------------------------------ ----------

EXAMPLE          +DATA/orcl/datafile/example.269.8577  363069440
                 30305

Bu bilgileri aldıktan sonra users tablespace'ine ait olan datafile'ı taşımak için gerekli olan işlemleri yapıyoruz.Önce datafile'ı offline 'a alıyoruz. Daha sonra rman ile yeni ASM diskgruba taşıyoruz. Alter database rename komutu ile eski ve yeni database'leri rename ederek controlfile'a bu bilginin yazılmasını sağlıyoruz. Daha sonra yine rmanle bağlanıp switch datafile yaparak eski datafile'ı siliyoruz ve datafile'ı online moda alıyoruz.


SQL> alter database datafile '+DATA/orcl/datafile/users.259.857729995' offline;

Database altered.

SQL> exit
Disconnected from 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
[oracle@test ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Thu Oct 9 09:44:18 2014

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

connected to target database: ORCL (DBID=1385510950)

RMAN> copy datafile '+DATA/orcl/datafile/users.259.857729995' to '+DATANEW';

Starting backup at 09-OCT-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=48 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=+DATA/orcl/datafile/users.259.857729995
output file name=+DATANEW/orcl/datafile/users.256.860492781 tag=TAG20141009T094609 RECID=2 STAMP=860492785
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:16
Finished backup at 09-OCT-14

RMAN> exit


Recovery Manager complete.
[oracle@test ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Oct 9 09:47:34 2014

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> alter database rename file
  2  '+DATA/orcl/datafile/users.259.857729995'
  3  to
  4  '+DATANEW/orcl/datafile/users.256.860492781';

Database altered.

SQL> exit
Disconnected from 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
[oracle@test ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Thu Oct 9 09:49:50 2014

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

connected to target database: ORCL (DBID=1385510950)

RMAN> switch datafile '+DATANEW/orcl/datafile/users.256.860492781' to copy;

using target database control file instead of recovery catalog
datafile 4 switched to datafile copy "+DATANEW/orcl/datafile/users.256.860492781"

RMAN> recover datafile '+DATANEW/orcl/datafile/users.256.860492781';

Starting recover at 09-OCT-14
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=46 device type=DISK

starting media recovery
media recovery complete, elapsed time: 00:00:04

Finished recover at 09-OCT-14


SQL> alter database datafile '+DATANEW/orcl/datafile/users.256.860492781' online;

Database altered.

Datafile'ımızı yeni disk gruba taşıdık, şimdi dba_data_files'dan kontrol edelim.

SQL> col tablespace_name format a16;
SQL> col file_name format a36;
SQL> select tablespace_name,file_name,bytes from dba_data_files;

TABLESPACE_NAME  FILE_NAME                                 BYTES
---------------- ------------------------------------ ----------
USERS            +DATANEW/orcl/datafile/users.256.860    5242880
                 492781

UNDOTBS1         +DATA/orcl/datafile/undotbs1.258.857   94371840
                 729995

SYSAUX           +DATA/orcl/datafile/sysaux.257.85772  702545920
                 9995

SYSTEM           +DATA/orcl/datafile/system.256.85772  796917760
                 9995

TABLESPACE_NAME  FILE_NAME                                 BYTES
---------------- ------------------------------------ ----------

EXAMPLE          +DATA/orcl/datafile/example.269.8577  363069440
                 30305

İşlem bu şekilde tamamlanmıştır.

İyi Çalışmalar.i


7 Ekim 2014 Salı

ORA-01078: failure in processing system parameters ORA-29701: unable to connect to Cluster Synchronization Service

ASM instance'ı başlatmaya çalışırken aşağıdaki gibi bir hata alıyorsak startup sırasında hangi servisin başlatılamadığını kontrol ederek o servise manuel olarak müdahale etmeliyiz..

-bash-3.2$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 30 11:22:15 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORA-01078: failure in processing system parameters 
ORA-29701: unable to connect to Cluster Synchronization Service


crs_stat -t komutuyla servislerin durumunu kontrol ediyoruz.
Daha sonra ora.cssd servisini manuel olarak ayağa kaldırmaya çalışıyoruz.

crsctl start resource ora.cssd

-bash-3.2$ crsctl start resource ora.cssd
CRS-2672: Attempting to start 'ora.cssd' on 'Test'
CRS-2679: Attempting to clean 'ora.diskmon' on 'Test'
CRS-2681: Clean of 'ora.diskmon' on 'Test' succeeded
CRS-2672: Attempting to start 'ora.diskmon' on 'Test'
CRS-2676: Start of 'ora.diskmon' on 'Test' succeeded
CRS-2676: Start of 'ora.cssd' on 'Test' succeeded

Daha sonra sql ile bağlanıp asm instance'ı tekrar ayağa kaldırmaya çalışıyoruz, instance başarılı bir şekilde ayağa kaldırılıyor..

İyi Çalışmalar