Bu makalemizde “Oracle Veritabanını Dosya Sisteminden ASM Dosya Sistemine Taşıma Yapılandırması” konusunu inceleyeceğiz. Veritabanımızın çalıştığı sunucuda bulunan veri dosyalarımızı işletim sistemi dosya sisteminden ASM dosya sistemine (File System to ASM) taşıyacağız. Senaryomuza göre önceden dosya sistemine kurulmuş bir veritabanı sunucumuza öncelikle atanmış olan iki diskimizi “DATA” ve “FRA” olarak “ASM Library” ile damgalayacağız ve sonrasında “Grid Infrastructure” yazılımını kuracağız.
1. İşlemlerimiz boyunca bir sorun olmaması için sunucumuzda çalışan veritabanı ve ilgili servislerimizi durduruyoruz. Ayrıca bu işlemlere başlamadan önce tüm veritabanımızın bir yedeğini almalıyız.
-- Aşağıdaki işlemleri "oracle" kullanıcımız ile yapıyoruz. # su - oracle -- Oracle Enterprise Manager konsolumuzu durduruyoruz. $ emctl stop dbconsole -- Veritabanı ve network servislerimizi durduruyoruz. $ dbshut $ORACLE_HOME
2. Sunucumuza veri depolama ünitemizden atanmış olan iki adet diskimizi belirleyip bunları “ASM Library” ile damgalıyoruz. Eğer disklerimiz için “Multipath” yapılandırması yapmamız gerekiyorsa “Linux İşletim Sistemlerinde Multipath Yapılandırması” yazımızı inceleyebilirsiniz.
-- Sunucumuzda bulunan disklerimizi listeliyoruz. # ll /dev/sd* brw-rw---- 1 root disk 8, 0 Jul 31 18:47 /dev/sda brw-rw---- 1 root disk 8, 1 Jul 31 18:47 /dev/sda1 brw-rw---- 1 root disk 8, 2 Jul 31 18:47 /dev/sda2 brw-rw---- 1 root disk 8, 16 Jul 31 18:47 /dev/sdb brw-rw---- 1 root disk 8, 32 Jul 31 18:47 /dev/sdc -- Sistem disklerimiz aşağıdaki gibi, brw-rw---- 1 root disk 8, 0 Jul 31 18:47 /dev/sda brw-rw---- 1 root disk 8, 1 Jul 31 18:47 /dev/sda1 brw-rw---- 1 root disk 8, 2 Jul 31 18:47 /dev/sda2 -- ASM için kullanacağımız disklerimizse aşağıdaki gibidir. brw-rw---- 1 root disk 8, 16 Jul 31 18:47 /dev/sdb brw-rw---- 1 root disk 8, 32 Jul 31 18:47 /dev/sdc
2. Sunucumuzda ASM için kullanacağımız disklerde partition table oluşturuyoruz.
# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1305, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): Using default value 1305 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. 1. soruda "n" seçeneğini veriyoruz. 2. soruda türünü soruyor “p” seçeneğini veriyoruz primary olarak oluşturuyoruz. 3. soruda enter diyerek default seçeneği veriyoruz. Dördüncü ve Beşinci soruları enter diyerek default seçeneğinde bırakıyoruz. -- Aynı işlemi diğer diskimiz içinde yapıyoruz. # fdisk /dev/sdc WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1305, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): Using default value 1305 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. -- Artık disklerimiz hazır. # ll /dev/sd* brw-rw---- 1 root disk 8, 16 Mar 10 23:00 /dev/sdb brw-rw---- 1 root disk 8, 17 Mar 10 23:00 /dev/sdb1 brw-rw---- 1 root disk 8, 32 Mar 10 23:03 /dev/sdc brw-rw---- 1 root disk 8, 33 Mar 10 23:03 /dev/sdc1 -- Komutunu çalıştırdığımızda sdb1 ve sdc1 olarak disklerimizin oluştuğunu görüyoruz.
3. Sunucumuzda “Oracle ASM Library” ile disklerimizi ASM Dosya Sistemi için damgalayabiliriz.
-- Öncelikle ASM Library için yetkilendirme ve yapılandırma ayarımızı yapıyoruz. # oracleasm configure -I Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: oracle Default group to own the driver interface []: dba Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y The next two configuration options take substrings to match device names. The substring "sd" (without the quotes), for example, matches "sda", "sdb", etc. You may enter more than one substring pattern, separated by spaces. The special string "none" (again, without the quotes) will clear the value. Device order to scan for ASM disks []: Devices to exclude from scanning []: Use device logical block size for ASM (y/n) [n]: y Writing Oracle ASM library driver configuration: done -- Şimdi Oracle ASM Kernel modülünü aktif edelim. # oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Configuring "oracleasm" to use device logical block size Mounting ASMlib driver filesystem: /dev/oracleasm Bu işlemlerden sonra artık ASM için disklerimizi oluşturup damgalayabiliriz. # oracleasm createdisk data1 /dev/sdb1 Writing disk header: done Instantiating disk: done # oracleasm createdisk fra1 /dev/sdc1 Writing disk header: done Instantiating disk: done -- Oluşturduğumuz disklerimizi listelemek için # ll /dev/oracleasm/disks/ total 0 brw-rw---- 1 oracle dba 8, 17 Mar 10 23:11 DATA1 brw-rw---- 1 oracle dba 8, 33 Mar 10 23:12 FRA1 veya # oracleasm listdisks DATA1 FRA1 -- Yukarıda görüldüğü gibi "DATA" ve "FRA" adında 2 diskimiz oluşmuş ve ASM için damgalanmış durumda.
4. Oracle Grid Infrastructure kurulumunu yapabilmek, kurulum ve patch dosyalarımızı koyabilmek için gerekli olan dizinleri yaratıp hakları atıyoruz.
# mkdir -p /u01/app/11.2.0.3/grid
# mkdir -p /u01/orainstall
# mkdir -p /u01/orainstall/opatch
# mkdir -p /u01/orainstall/patchset
# chown -R oracle:oinstall /u01/app/11.2.0.3/grid
# chmod -R 775 /u01/app/11.2.0.3/grid
/u01/app/11.2.0.3/grid
Grid Infrastructure kurulum dizini.
/u01/orainstall
Oracle kurulum dosyalarını atacağımız dizin.
5. Kuruluma geçebilmemiz için ftp yada başka bir yöntem ile kurulum dosyalarımızı oluşturduğumuz “/u01/orainstall/” dizini altına atıyoruz. Eğer sunucumuzda ftp server özelliği aktif edilmemişse “Linux İşletim Sistemlerinde HTTP ve FTP Server Yapılandırması” makalemizden faydalanarak gerekli ayarları yapabiliriz. Oracle kullanıcısı ile kopyalama işlemimiz bittiğinde kurulum dosyalarımızı kontrol ediyoruz.
# su - oracle $ ls p10404530_112030_Linux-x86-64_3of7.zip
6. Oracle Grid Infrastructure kurulumu için ilk 3. zip dosyasına ihtiyacımız var. Bu kurulum dosyalarımızı OTN veya MOS hesaplarımız ile indirebiliriz. Eğer son versiyon kurulumu yapabilmek istiyorsak (11.2.0.3.0 gibi) MOS dediğimiz Oracle Support üyeliğimizin olması gerekmektedir. Eğer buna sahip değilsek o zaman OTN hesabımız ile çıkmış olan ilk versiyonu (11.2.0.1.0 gibi) indirebiliriz. Burada dikkat edeceğimiz veritabanı versiyonumuz ile Grid versiyonumuzun uyumlu bir versiyonda olması. Bunun için kurulum sonrası gerekli kontrolleri yaparak gerekiyorsa patch geçme işlemini uygulamalıyız. Şimdi bu sıkıştırılmış dosyalarımızı oracle kullanıcısı ile açıyoruz.
-- Sıkıştırılmış dosyamızı açıyoruz. $ cd /u01/orainstall $ unzip p10404530_112030_Linux-x86-64_3of7.zip Ayıklama işlemi tamamlandığında yer kaplamaması için istersek .zip dosyalarını temizleyebiliriz. $ rm p10404530_112030_Linux-x86-64_*
7. Veritabanımızı “dbca” aracı ile sunucu üzerinde değilde uzaktan kendi bilgisayarımızda yapılacaksa ekranı export edebiliriz. Bunun için “Xmanager” vb. emülatör yazılımları kullanılabilir. Bu yazılımı bilgisayarımıza kurduğumuzda “Xmanager – Passive” programını çalıştırmalıyız. Görev çubuğunda yazılım çalışacak ve export ettiğimiz ekranı kendi bilgisayarımızdan yönetebileceğiz. Bununla beraber “VNC Server” aracılığı ile de sunucuya bağlanabilir ve kurulumu direk sunucu üzerinden yapabiliriz. Bunun için “Linux İşletim Sistemlerinde VNC Server Yapılandırması” makalemizden yararlanabilirsiniz. Önerilen kurulumu VNC Server veya sunucu üzerinden yapmanız çünkü kurulum aşamasında network vb. kesintide kurulumunuz yarım kalabilir.
-- Aşağıdaki işlemleri "oracle" kullanıcısı ile yapmalıyız. -- Öncelikle Xmanager vb. Emülatör programını bilgisayarımızda çalıştırmalıyız. Ardından aşağıdaki komut ile görüntüyü export etmeliyiz. $ DISPLAY=<machine-name>:0.0; export DISPLAY Örnek; $ DISPLAY=192.168.2.83:0.0; export DISPLAY Test için; $ xclock -- Yazdığımızda ekranımızda bir saat yazılımının çalıştığını görmeliyiz. Eğer açılmıyorsa ayarlarda bir sorun var demektir. Firewall vb. ayarlarımızı kontrol etmeliyiz.
8. Bu işlemlerin tamamı bittiğinde kuruluma geçebiliriz. “Oracle Grid Infrastructure” yazılımının kurulumuna başlıyoruz.
-- Oracle kullanıcısı ile sistemimize bağlıyken $ cd /u01/orainstall/grid/ kurulum dizininde bulunan $ ./runInstaller uygulamasını çalıştırıyoruz.
9. Açılan karşılama ekranında güncellemeler için bizden “Oracle Support MOS” hesabını istiyor bu adımı “Skip software updates” seçeneğini seçerek “Next” düğmesine tıklıyoruz.
10. Kurulumumuzu “Standalone” olarak yapacağımız için “Configure Oracle Grid Infrastructure for a Standalone Server” seçeneğini seçerek “Next” düğmesine tıklıyoruz.
11. Dil seçeneğimizi varsayılan olarak “English” olarak seçili bırakıyoruz ve “Next” düğmesine tıklıyoruz.
12. Daha önce oluşturduğumuz ASM Disklerimizi burada kullanıma sunuyoruz. “Disk Group Name” olarak DATA yazıyoruz ve “Redundancy” olarak “External” seçiyoruz ve “Next” düğmesine tıklıyoruz. Buradaki seçenekleri açıklayacak olursak.
External : Yedeği yoktur.Ancak en performanslı moddur. Genelde hardware mirror varsa kullanılır ve varsayılan seçenektir. Burada şöyle düşünebiliriz. Bir veri depolama (storage) ünitemiz var ve oradan sunucumuza disk atanıyor ve mirror orada veri depolama ünitesi katmanında yapıldığı için bizim ayrıca oracle asm tarafında bir mirror oluşturmamıza gerek kalmıyor.
Normal : ASM’nin 2 yönlü mirroring yaptığı konfigürasyondur. Bu durumda veri tutarlılığı artar ancak disk alanından taviz verilir.
High : ASM’nin 3 yönlü mirroring yaptığı konfigürasyondur. Bu durumda veri tutarlılığı artar ancak disk alanından taviz verilir. Daha fazla veri sağlamlığı tesis edilmektedir.
13. Asm Library altında oluşan disklerin yolunu sisteme tanıtıyoruz “Change Discovery Path” düğmesine tıklayarak açılan pencerede disklerin yolu olan “/dev/oracleasm/disks” yolunu yazıyoruz.
14. Sistemimizdeki Oracle ASM damgalı üye diskleri artık ”Candidate Disks” seçeneği seçiliyken görebiliyoruz. “DATA” disk grubunu yapılandırdığımız için aşağıdaki alandan “DATA1″ yazılı diskimizi seçiyoruz. ASM “Allocation Units” konusundan bahsedecek olursak eğer bunları veritabanı instance’ının blokları veya extent’leri olarak düşünebilirsiniz. Amaçları bu miktar kadar alanın tahsis edilerek ilerlenmesini göstermektir. Disk grupları yaratılırken tanımlanabilirler ve varsayılan olarak 1 MB olurlar. 11g ile birlikte bu miktar da değişebilmektedir ve 2, 4, 8, 16, 32 ve en fazla 64 MB olarak yeniden tanımlanabilmektedirler. Aynı db_block_size’da olduğu gibi düşük olursa daha hızlı cache’lenecek ve büyük olursa da arka arkaya okuma yapıldığı zaman daha efektif olacaktır. VLDB (Very Large Database) tipi veri ambarlarında yüksek AU kullanmak faydalı olacaktır. AU’nun miktarını disk grup yaratılırken gösterebiliyoruz ancak sonradan değiştiremiyoruz. ASM “Files” ise AU’lardan oluşan extent’lerdir. Dosya adları + ile başlarlar ve ASM instance’ı tarafından yönetilirler. Dosya isimleri genelde değişken sayılardan oluşmaktadır ancak bu dosya isimlerine (örneğin bir datafile) alias verme şansımız bulunmaktadır. Bu dosya isimleri benzersizdir ve hiçbir zaman başka bir datafile ismi ile çakışmaz. Bu da yine ASM’nin bize sağladığı faydalardan yalnızca bir tanesidir. ASM’nin yönettiği dosyalar disk’ler üzerinde SAME metodolojisi ile tutulmaktadır (Stripe-And-Mirror Everything). ASM dosyalarından kastımız nedir? Datafile, kontrol dosyası, redolog dosyası, RMAN yedekleri gibi. Burası önemli, 11g Release 2′ye kadar ASM, OCR dosyaları, cluster-voting disk, alert log dosyaları, trace dosyaları ve Oracle binary’leri gibi dosyaları desteklemiyordu ancak 11gR2 bu kısıtı ortadan kaldırarak, bu tipte dosyaların da ASM tarafından desteklenmesini sağladı. 11gR2′yi tercih etmek ve kullanmak için yine çok ufak ama büyük bir neden. Yazımın başında belirttiğim “Extent Map” ile ilgili de şunları ifade edebilirim. Extent map, ASM’nin yönettiği dosyaların disk üzerinde nerede olduğu bilgisine sahiptir. Tabii tabloların veya objelerin nerede olduğundan öte bu objelerin bulunduğu extent’lerin nerede durduğunun bilgisine sahiptir.
15. Oracle ASM kullanıcıları için bir parola belirliyoruz. Bu parolayı asla unutmamalıyız. Daha sonra veritabanı kurulum aşamasında bu parola ASM disk grubuna erişebilmek için gerekli olacaktır. Her iki kullanıcıya aynı parolayı atamak için “Use same passwords for these accounts” seçeneğini seçerek her iki kullanıcıya aynı parolayı atıyoruz.
16. Atamış olduğumuz parola eğer oracle önerilen parola politikasına uygun değilse aşağıdaki gibi uyarı veriyor. Burada “Yes” düğmesine tıklayarak devam ediyoruz.
17. Kurulumların hangi işletim sistemi grupları ile yapılacağını soruyor burada “oinstall” veya “dba” grupları seçilerek kurulum yapılabilir. Tek olması düşüncesiyle “dba” olarak seçiyoruz ve “Next” düğmesine tıklıyoruz.
18. Kurulum sihirbazı bu seçimlerinde standart dışı olduğunu söylüyor burada verdiği uyarıya ekranına ”Yes” düğmesini tıklayarak devam ediyoruz.
19. Oracle grid kurulumunun yapılacağı dizinleri seçiyoruz. Dizinleri aşağıdaki ekran görüntüsündeki gibi seçiyoruz ve daha önce yarattığımız dizinlere kurulumun yapılmasını sağlıyoruz.
20. Grid home dizinimizin Oracle Base dizini dışında olduğu konusunda bizi uyarıyor. Bu uyarı ekranına “Yes” düğmesini tıklayarak devam ediyoruz.
21. Oracle Inventory dizini nereye yaratacağı konusunda bilgi veriyor burada “Next” düğmesini tıklayarak devam ediyoruz.
22. Kurulumumuzda herhangi bir sorun yoksa öngereksinimlerin tamamı uygunsa kurulum için özet bilgi ekranı karşımıza gelecektir. Kuruluma başlamak için “Install” düğmesini tıklıyoruz.
23. Kurulum aşamalarını aşağıdaki ekrandan takip edebiliriz.
24. Kurulum sonuna doğru bizden “root” kullanıcısı ile 2 adet .sh scripti çalıştırmamızı istiyor. Bu scriptler Inventory ve hakların ayarlanması için gerekli eğer atlarsak kurulum başarısız olacaktır.
Script’i ”root” kullanıcısı ile açılmış bir terminal penceresinden çalıştırmalıyız. Script’i çalıştırdığımızda aşağıdaki gibi çıktılar oluşacaktır. Gerekli script’i çalıştırdıktan sonra “OK” düğmesine tıklayarak devam ediyoruz. Script’i çalıştırılması aşamasında hata verirse ve yeniden kurma işlemi yapacaksak hatalı kurulumun temizlenmesiyle ilgili “Oracle Grid Infrastructure Kurulumunun Başarısız Olması Durumunda Sistemin Temizlenmesi” makalemizi inceleyebilirsiniz.
# cd /u01/app/11.2.0.3/grid/ # ./root.sh Performing root user operation for Oracle 11g The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/11.2.0.3/grid Enter the full pathname of the local bin directory: [/usr/local/bin]: The contents of "dbhome" have not changed. No need to overwrite. The contents of "oraenv" have not changed. No need to overwrite. The contents of "coraenv" have not changed. No need to overwrite. Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root script. Now product-specific root actions will be performed. Creating trace directory LOCAL ADD MODE Creating OCR keys for user 'oracle', privgrp 'oinstall'.. Operation successful. LOCAL ONLY MODE Successfully accumulated necessary OCR keys. Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. CRS-4664: Node koraykey-db1 successfully pinned. Adding Clusterware entries to upstart
25. Script’imizi çalıştırdıktan sonra “Ok” düğmesine basarak kuruluma devam ediyoruz.
26. Kurulum başarılı bir şekilde tamamlandıktan sonra “Close” düğmesine basarak kurulumu bitiriyoruz.
27. Oracle Veritabanı ve Grid için değişkenlerimizi “.bash_profile” dosyamıza yazıyoruz.
-- Oracle kullanıcısına geçiş yapıyoruz. # su - oracle $ vim /home/oracle/.bash_profile -- Dosyasına aşağıdaki değişkenleri giriyoruz. # Oracle bash_profile Environment Settings TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_HOSTNAME=koraykey-db1.localdomain; export ORACLE_HOSTNAME ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE GRID_HOME=/u01/app/11.2.0.3/grid; export GRID_HOME DB_HOME=$ORACLE_BASE/product/11.2.0.3/db; export DB_HOME ORACLE_HOME=$DB_HOME; export ORACLE_HOME ORACLE_SID=orcl; export ORACLE_SID ORACLE_HOME_LISTNER=$ORACLE_HOME export ORACLE_HOME_LISTNER ORACLE_TERM=xterm; export ORACLE_TERM BASE_PATH=/usr/sbin:$PATH; export BASE_PATH PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi alias grid_env='. /home/oracle/.grid' alias db_env='. /home/oracle/.db' -- Daha sonra grid ve db değişkenleri arasında geçiş yapabilmek için ".grid" ve ".db" profil dosyalarımızı oluşturuyoruz. $ vim /home/oracle/.grid -- Dosyasına aşağıdaki değişkenleri giriyoruz. # Oracle "grid" Environment Settings ORACLE_SID=+ASM; export ORACLE_SID ORACLE_HOME=$GRID_HOME; export ORACLE_HOME PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH $ vim /home/oracle/.db -- Dosyasına aşağıdaki değişkenleri giriyoruz. # Oracle "db" Environment Settings ORACLE_SID=orcl; export ORACLE_SID ORACLE_HOME=$DB_HOME; export ORACLE_HOME PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
28. Kurulum sırasında “DATA” disk grubumuzu oluşturmuştuk. Şimdi “asmca” komutunu kullanarak “FRA” disk grubumuzu oluşturacağız.
-- Oracle kullanıcısı ile açılmış bir terminal ekranında daha önce oluşturmuş olduğumuz "grid" değişken dosyamızı çalıştırıyoruz. $ cd $ . .bash_profile $ . .grid -- Ardından aşağıdaki komutu çalıştırarak "ASM Configuration Assistant" açıyoruz. $ asmca
29. Açılan pencerede “Create” düğmesine tıklıyoruz ve aşağıdaki pencerede gösterildiği gibi ayarları yapıyoruz. Ardından “OK” düğmesine tıklayarak “FRA” diskimizi oluşturuyoruz.
30. Disk grubumuzu başarılı bir şekilde oluşturduğumuzda aşağıdaki gibi uyarı alıyoruz.
31. Aşağıdaki ekranda görüldüğü gibi artık “DATA” ve “FRA” disk gruplarımız hazır durumdadır. Artık veritabanı kurulumumuzda bu disklerimizi atayabileceğiz.
32. ASM yapılandırma ekranından çıkmak için “Exit” düğmesine basıyoruz ardından gelen ekrandaki uyarıya “Yes” düğmesini tıklayarak çıkıyoruz.
33. Veritabanımızı dosya sistemden (File System to ASM) ASM dosya sistemine taşıma işlemlerine başlamak için veritbanımızı başlatıyoruz ve gerekli kontrolleri yapıyoruz. Ayrıca işleme başlamadan önce eğer açıksa işlem sonunda tekrar açmak üzere “Archive Mod”u kapatıyoruz.
-- İşlemlerimize başlamak için veritabanımızı başlatıyoruz. $ . .db $ dbstart $ORACLE_HOME -- Veritabanı durumumuzu sorguluyoruz. SQL> select instance_name,version,database_status from v$instance; -- ASM disklerimizin durumunu sorguluyoruz. SQL> select NAME,STATE,TOTAL_MB,PATH from v$asm_disk; NAME STATE TOTAL_MB ------------------------------ -------- ---------- PATH -------------------------------------------------- FRA_0000 NORMAL 5114 /dev/oracleasm/disks/FRA1 DATA_0000 NORMAL 5114 /dev/oracleasm/disks/DATA1 -- Veritabanımızda "Archive Mod"u kapatmak için aşağıdaki işlemleri yapıyoruz. $ sqlplus / as sysdba SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 1043886080 bytes Fixed Size 2234960 bytes Variable Size 624952752 bytes Database Buffers 411041792 bytes Redo Buffers 5656576 bytes Database mounted. SQL> alter database noarchivelog; Database altered. SQL> exit
34. Sunucumuzda kullanıyorsak mevcut “spfile” dosyamızı ASM dosya sistemine taşıyoruz ve gerekli düzenlemeleri yapıyoruz.
-- Sunucumuzda "spfile" dosyamızın yedeğini "RMAN" aracı ile alıyoruz. $ rman target / connected to target database: ORCL (DBID=1350027477) RMAN> backup as backupset spfile; RMAN> exit -- Veritabanımızı kapatıp "mount" modda açıyoruz. $ sqlplus / as sysdba SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 1043886080 bytes Fixed Size 2234960 bytes Variable Size 624952752 bytes Database Buffers 411041792 bytes Redo Buffers 5656576 bytes Database mounted. SQL> exit -- Sunucumuzda "RMAN" aracı ile "spfile" yedeğimizi ASM dosya sistemimize dönüyoruz. $ rman target / connected to target database: ORCL (DBID=1350027477, not open) RMAN> restore spfile to '+DATA/spfileorcl.ora'; RMAN> exit -- ASM dosya sistemine taşıdığımız "spfile" dosyasını veritabanımıza tanıtmak için gerekli düzenlemeleri yapıyoruz. -- Veritabanımızın kullandığı "spfile" yolunu sorguluyoruz. $ sqlplus / as sysdba SQL> show parameter spfile; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /u01/app/oracle/product/11.2.0 .3/db/dbs/spfileorcl.ora -- ASM dosya sistemine taşıdığımız yeni "spfile" dosyamız için gerekli düzenlemeleri yapıyoruz. -- Veritabanımızı kapatıyoruz. SQL> shutdown immediate; ORA-01109: database not open Database dismounted. ORACLE instance shut down. SQL> exit -- Spfile dosyamızın bulunduğu dizine geçiyoruz ve eski "spfile" dosyamızı başka bir isimle adlandırıyoruz. $ cd $ORACLE_HOME/dbs $ mv spfileorcl.ora spfileorcl.ora.bak -- Sunucumuzda bulunan "init.ora" dosyamıza yeni "spfile" dosyamızın yolunu yazıyoruz. $ vim initorcl.ora *.spfile='+DATA/spfileorcl.ora' -- İşlemlerimizi tamamladıktan sonra veritabanımızı açıp "spfile" parametremizi kontrol ediyoruz. $ sqlplus / as sysdba SQL> startup; ORACLE instance started. Total System Global Area 1043886080 bytes Fixed Size 2234960 bytes Variable Size 624952752 bytes Database Buffers 411041792 bytes Redo Buffers 5656576 bytes Database mounted. Database opened. SQL> show parameter spfile; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +DATA/spfileorcl.ora SQL> exit -- Gördüğümüz gibi "spfile" dosya yolumuz ASM olarak değişmiş durumda.
35. Sunucumuzda mevcut “controlfile” dosyamızı ASM dosya sistemine taşıyoruz ve gerekli düzenlemeleri yapıyoruz.
-- Mevcut "Control File" durumumuzu sorguluyoruz. $ sqlplus / as sysdba SQL> show parameter control_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string /u01/app/oracle/oradata/ORCL/c ontrolfile/o1_mf_8zl9554m_.ctl -- Veritabanımızı kapatıp "mount" modda açıyoruz. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 1043886080 bytes Fixed Size 2234960 bytes Variable Size 624952752 bytes Database Buffers 411041792 bytes Redo Buffers 5656576 bytes SQL> exit -- RMAN aracımızın copy komutu ile geçerli "control file" dosyamızı ASM dosya sistemine kopyalıyoruz. $ rman target / connected to target database: ORCL (DBID=1350027477, not open) RMAN> copy current controlfile to '+DATA/control01.ctl'; RMAN> exit -- Veritabanımıza yeni "controlfile" yolumuzu tanıtıyoruz. SQL> alter system set control_files='+DATA/control01.ctl' scope=spfile; System altered. SQL> exit -- Veritabanımızı yeniden başlatıp "control file" parametremizin durumunu kontrol ediyoruz. $ sqlplus / as sysdba SQL> shu immediate; ORA-01109: database not open SQL> startup mount; SQL> alter database open resetlogs; Database altered. SQL> show parameter control_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------- control_files string +DATA/control01.ctl SQL> exit
36. Sunucumuzda mevcut “datafile” dosyalarımızı ASM dosya sistemine taşıyoruz ve gerekli düzenlemeleri yapıyoruz.
-- Sunucumuzda "datafile" dosyalarımızı taşımak için veritabanımızı kapatıp "mount" modda açıyoruz. $ sqlplus / as sysdba SQL> shutdown immediate; SQL> startup mount; ORACLE instance started. Total System Global Area 1043886080 bytes Fixed Size 2234960 bytes Variable Size 624952752 bytes Database Buffers 411041792 bytes Redo Buffers 5656576 bytes Database mounted. SQL> exit -- Veritabanımızın "data file" dosyalarını taşımak için RMAN aracımızı kullanıyoruz. $ rman target / connected to target database: ORCL (DBID=1350027477, not open) RMAN> backup as copy database format '+DATA'; Starting backup at 01-AUG-13 . . . Finished backup at 01-AUG-13 RMAN> switch database to copy; datafile 1 switched to datafile copy "+DATA/orcl/datafile/system.258.822268909" datafile 2 switched to datafile copy "+DATA/orcl/datafile/sysaux.259.822268945" datafile 3 switched to datafile copy "+DATA/orcl/datafile/undotbs1.260.822268969" datafile 4 switched to datafile copy "+DATA/orcl/datafile/users.262.822268999" -- Veritabanımızın "tempfile" dosyasını taşımak için RMAN aracımızı kullanıyoruz. RMAN> run { set newname for tempfile '/u01/data/testdb/temp01.dbf' to '+DATA'; switch tempfile all; } RMAN> exit -- Taşıma işlemleri sonrası veritabanımızı "open" modda açabiliriz. $ sqlplus / as sysdba SQL> alter database open; Database altered. -- Veritabanımızda taşıma işlemi sonrası "datafile" durumunu kontrol ediyoruz. $ sqlplus / as sysdba SQL> select FILE_NAME from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- +DATA/orcl/datafile/system.258.822268909 +DATA/orcl/datafile/sysaux.259.822268945 +DATA/orcl/datafile/undotbs1.260.822268969 +DATA/orcl/datafile/users.262.822268999 SQL> exit -- Gördüğümüz gibi "datafile" dosyalarımız ASM dosya sistemine taşınmış durumda.
37. Sunucumuzda mevcut “redolog” dosyalarımızı ASM dosya sistemine taşıyoruz ve gerekli düzenlemeleri yapıyoruz.
-- Sunucumuzda bulunan "redolog" dosyalarımızı sorgulayıp bunların yollarını silmek üzere not alıyoruz. $ sqlplus / as sysdba SQL> SELECT MEMBER FROM v$logfile; -- Bu işlem sırasında veritabanımız "open" modda olmalıdır. Öncelikle bunu kontrol ediyoruz. $ sqlplus / as sysdba SQL> select status from v$instance; STATUS ------------ OPEN -- Sunucumuzda "Redolog" dosyalarımızın yenilerini ASM dosya sisteminde yaratıyoruz. SQL> alter database add logfile member '+DATA' to group 1; SQL> alter database add logfile member '+DATA' to group 2; SQL> alter database add logfile member '+DATA' to group 3; SQL> alter database add logfile member '+DATA' to group 4; -- Sunucumuzda bulunan eski "redolog" dosyalarımızı siliyoruz ve yeni oluşturduklarımızla değiştiriyoruz. Silme işlemi için yukarıdaki sorgu sonucu not aldığımız "redolog" dosyalarımızın yollarını yazıyoruz. Ayrıca silmek istediğimizde kullanılan bir dosyaya denk geldiğimizde "switch" ederek silebiliriz. SQL> ALTER DATABASE DROP LOGFILE MEMBER 2 '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_8zl955go_.log'; SQL> ALTER SYSTEM SWITCH LOGFILE; SQL> ALTER DATABASE DROP LOGFILE MEMBER 2 '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_2_8zl95fm1_.log'; SQL> ALTER SYSTEM SWITCH LOGFILE; SQL> ALTER DATABASE DROP LOGFILE MEMBER 2 '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_3_8zl95plx_.log'; SQL> ALTER SYSTEM SWITCH LOGFILE; SQL> ALTER DATABASE DROP LOGFILE MEMBER 2 '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_4_8zl962r2_.log'; SQL> ALTER SYSTEM SWITCH LOGFILE; -- Sunucumuzda işlemlerimiz tamamlandığında "redolog" dosyalarımızın durumunu kontrol ediyoruz. SQL> SELECT MEMBER FROM v$logfile; MEMBER -------------------------------------------------------------------------------- +DATA/orcl/onlinelog/group_1.264.822270491 +DATA/orcl/onlinelog/group_2.265.822270497 +DATA/orcl/onlinelog/group_3.266.822270503 +DATA/orcl/onlinelog/group_4.267.822270509 SQL> exit -- Gördüğümüz gibi "redolog" dosyalarımız ASM dosya sistemimize taşınmış durumda.
38. Veritabanımızda “OMF” (Oracle Managed File) kullanıyorsak bu parametremizide ASM dosya sistemine göre ayarlamamız gerekmektedir. Ayrıca “FRA” (Fast Recovery Area) alanımızıda ASM dosya sistemine göre ayarlamalıyız. Bunun için aşağıdaki işlemleri uyguluyoruz.
-- Veritabanımızda "OMF" için parametremizi sorguluyoruz. $ sqlplus / as sysdba SQL> show parameter DB_CREATE_FILE_DEST; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_create_file_dest string /u01/app/oracle/oradata -- Gördüğümüz gibi "file system" ayarlanmış durumda. -- Veritabanımızda "OMF" parametremizi ASM dosya sistemine göre ayarlıyoruz. SQL> alter system set db_create_file_dest='+DATA'; System altered. -- Değişiklik sonrası "OMF" parametremizin durumunu sorguluyoruz. SQL> show parameter DB_CREATE_FILE_DEST; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_create_file_dest string +DATA SQL> exit -- Gördüğümüz gibi "OMF" parametremiz ASM dosya sistemine göre ayarlanmış durumda. -- Veritabanımızda "FRA" (Fast Recovery Area) alanımızı ASM dosya sistemine göre ayarlıyoruz. -- Veritabanımızda "FRA" alanımızı sorguluyoruz. $ sqlplus / as sysdba SQL> show parameter recovery_file_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u01/app/oracle/fast_recovery_ area db_recovery_file_dest_size big integer 4977M -- Gördüğümüz gibi "file system" olarak gözükmekte bu alanımızı ASM dosya sistemimizde oluşturduğumuz "FRA" alanı olarak ayarlıyoruz. SQL> show parameter recovery_file_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u01/app/oracle/fast_recovery_ area db_recovery_file_dest_size big integer 4977M SQL> alter system set db_recovery_file_dest='+FRA'; System altered. SQL> alter system set db_recovery_file_dest_size=4977M scope=both; System altered. -- Değişiklik sonrası "FRA" parametrelerimizi sorguluyoruz. SQL> show parameter recovery_file_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string +FRA db_recovery_file_dest_size big integer 4977M SQL> exit -- Gördüğümüz gibi "FRA" alanımız ASM dosya sistemimiz olarak ayarlanmış durumda.
39. Bu işlemler sonrasında sunucumuzu yeniden başlatıyoruz ve patch geçme işlemi öncesi tüm veritabanı ve servislerin ayakda olduğunu kontrol ediyoruz. (Enterprise Manager Servisi hariç)
# shutdown -r now
40. Veritabanı dosyalarımızı taşıma işlemimiz tamamlandı. Şimdi eğer “Grid” ve “Database” versiyonlarımız uyumlu değilse “patch” geçerek bunları uyumlu hale getirebiliriz. Bu durumu şu şekilde düşünebiliriz. Veritabanımızı ilk olarak “file system” seçerek kurulum yapmış ve kurulum sonrası veritabanımıza patch geçme işlemi yapmışsak ve veritabanı versiyonumuz grid versiyonumuzdan ileri bir duruma gelmişse patch işleminini uygulayarak “grid” ve “database” versiyonlarımızı aynı veya uyumlu versiyona çekmeliyiz. Şimdi bu patch geçme işlemini uygulayalım. Sistemimiz için “My Oracle Support” hesabımızla giriş yaparak veritabanımıza uygun indirmiş olduğumuz “GRID INFRASTRUCTURE PATCH SET UPDATE xxxx (INCLUDES DB PSU)” dosyasını ve yenilenmiş “OPatch” yazılımını ftp yada başka bir yöntem ile oluşturduğumuz “/u01/orainstall/opatch” ve “/u01/orainstall/patchset” dizini altına atıyoruz. Eğer sunucumuzda ftp server özelliği aktif edilmemişse “Linux İşletim Sistemlerinde FTP Server Yapılandırması” makalemizden faydalanarak gerekli ayarları yapabiliriz. Sunucularımızda “Opatch” ve “Patchset Update” dosyalarımızın bulunduğu dizine geçerek sıkıştırılmış dosyalarımızı açıyoruz.
Not: Eğer “grid” ve “veritabanı” versiyonumuz uygunsa veya “patchset” geçmeyeceksek bu adımı atlayabiliriz.
-- Patch dosyalarımızı kopyaladığımız dizinelere geçiyoruz ve sıkıştırılmış dosyalarımızı açıyoruz. -- OPatch yazılımını "unzip" komutu ile açıyoruz. $ cd /u01/orainstall/opatch $ unzip p6880880_112000_Linux-x86-64.zip -- Patchset Update yazılımını "unzip" komutu ile açıyoruz. $ cd /u01/orainstall/patchset $ unzip p16742216_112030_Linux-x86-64.zip
41. Sunucumuzda patch geçmek için kullandığımız “OPatch” yazılımını güncelliyoruz ve otomatik patch işlemi için yanıt dosyamızı (response file) oluşturuyoruz.
-- "root" kullanıcısına geçiyoruz. -- Aşağıdaki işlemleri her iki üyede uyguluyoruz. Sorun olmaması için işlemi bir üyede başlatıp bittince diğer üyede başlatabiliriz. Bu işlem sırasında cluster servisimiz ve veritabanımız açık durumda olmalıdır. Sadece sistemimizin boş bir zamanında yapmak kullanıcılarımızın etkilenmesini önleyecektir. Patch işlemi sonrası cluster servisimiz otomatik kapanıp açılacaktır. $ su - root -- Güncellemeyi uygulamak için "root" kullanıcısına geçiş yapıyoruz. Daha sonra OPatch yazılımının yeni versiyonunu Grid ve Database Home dizinlerinde yerlerine taşıyoruz. Sonrasında otomatik patch geçebilmek için Auto Response dosyamızı oluşturuyoruz. -- Grid dizini için OPatch yazılımını güncelliyoruz. # cd /u01/app/11.2.0.3/grid/ # mv OPatch OPatch_x # cd /u01/orainstall/opatch # mv OPatch/ /u01/app/11.2.0.3/grid # cd /u01/app/11.2.0.3/grid/OPatch/ocm/bin/ # ./emocmrsp OCM Installation Response Generator 10.3.4.0.0 - Production Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Provide your email address to be informed of security issues, install and initiate Oracle Configuration Manager. Easier for you if you use your My Oracle Support Email address/User Name. Visit http://www.oracle.com/support/policies.html for details. Email address/User Name: You have not provided an email address for notification of security issues. Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: y The OCM configuration response file (ocm.rsp) was successfully created. -- Grid dizini için OPatch yazılımını güncelleyip Auto Response dosyamızı oluşturduk. -- Eğer Database dizini içindeki "OPatch" yazılımını güncelleyceksek aynı işlemi onun içinde yapıyoruz. -- Dosyalarda yetki problemi yaşamamak için oracle kullanıcısına geçiyoruz. # su - oracle $ cd /u01/orainstall/opatch $ unzip p6880880_112000_Linux-x86-64.zip -- "root" kullanıcısına geçiyoruz. $ su - root # cd /u01/app/oracle/product/11.2.0.3/db # mv OPatch OPatch_x # cd /u01/orainstall/opatch # mv OPatch/ /u01/app/oracle/product/11.2.0.3/db # cd /u01/app/oracle/product/11.2.0.3/db/OPatch/ocm/bin # ./emocmrsp OCM Installation Response Generator 10.3.4.0.0 - Production Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Provide your email address to be informed of security issues, install and initiate Oracle Configuration Manager. Easier for you if you use your My Oracle Support Email address/User Name. Visit http://www.oracle.com/support/policies.html for details. Email address/User Name: You have not provided an email address for notification of security issues. Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: y The OCM configuration response file (ocm.rsp) was successfully created.
42. Sunucumuzda patch geçme işlemini başlatıyoruz.
-- Aşağıdaki işlemi "root" kullanıcısı ile yapmalıyız. # opatch auto <Zip'ten açılmış dizin yolu> -ocmrf <ocm yanıt dosyası> Örnek; # cd /u01/app/11.2.0.3/grid/OPatch # ./opatch auto /u01/orainstall/patchset -ocmrf /u01/app/11.2.0.3/grid/OPatch/ocm/bin/ocm.rsp -- Aşağıdaki işlemleri yapmak için "oracle" kullanıcısına geçiyoruz. işlemler sırasında veritabanlarımız açık durumda olmalıdır. # su - oracle $ . .db $ cd $ORACLE_HOME/rdbms/admin $ sqlplus /nolog SQL> CONNECT / AS SYSDBA -- Eğer veritabanımız kapalı ise açıyoruz. -- Değilse direk bir sonrası komutu kullanabiliriz. SQL> STARTUP -- "Patch Post-Installation" işlemini başlatıyoruz ve bittiğinde çıkıyoruz. SQL> @catbundle.sql psu apply SQL> QUIT
43. Sunucumuzda “patchset” işlemi sonrası durumu kontrol ediyoruz.
-- Oracle Patchset Update işlemi sonrası grid ve veritabanı versiyonlarımızı kontrol ediyoruz. # su - oracle -- Grid patch durumu için $ . .grid $ cd /u01/app/11.2.0.3/grid/OPatch $ ./opatch lsinventory -- Database patch durumu için $ . .db $ cd /u01/app/oracle/product/11.2.0.3/db/OPatch $ ./opatch lsinventory
44. Veritabanımızda bu işlemler sonrasında kapatmış olduğumuz “Archive Log” modunu açık duruma getiriyoruz.
$ sqlplus / as sysdba SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; SQL> alter database archivelog; Database altered. SQL> alter database open; Database altered. SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 8 Next log sequence to archive 11 Current log sequence 11 SQL> exit
45. Son olarak sistemimizi yeniden başlatıyoruz ve tüm servislerimizin sorunsuzca doğru bir şekilde başladığından emin oluyoruz.
# shutdown -r now
46. Bu işlemler sonrasında veritabanımızda herhangi bir sorun yoksa ve sağlıklı çalıştığından emin olduğumuzda dosya sisteminde tuttuğumuz eski “data file” vb. dosyalarımızı silebiliriz.
# cd /u01/app/oracle
# rm -rf fast_recovery_area/ oradata/
Bu makalemizde “Oracle Veritabanını Dosya Sisteminden ASM Dosya Sistemine Taşıma Yapılandırması (File System to ASM)” inceledik. Bu yapılandırma sayesinde dosya sisteminde çalışan veritabanlarımızı sorunsuzca yeniden kurmadan hızlı bir şekilde “ASM” dosya sistemine taşıyabiliriz. Bu makalemizde adımlar “Oracle Enterprise Linux” işletim sistemi üzerinde çalışan “Oracle 11g R2” veritabanında denenmiştir ve Red Hat türevi (CentOS vb.) işletim sistemlerinde geçerlidir.
Bir sonraki makalemizde görüşmek dileğiyle…