2012 INSTALACJA KLASTRA ORACLE RAC 11GR2 Dokument opisuje przebieg instalacji dwuwęzłowego klastra Oracle RAC 11gR2 (11.2.0.1) w wersji Enterprise na środowisku OEL 5.8
Spis treści Wstęp... 2 UWAGA!... 3 Architektura fizyczna... 3 Różnice w stosunku do projektu technicznego... 3 Instalacja klastra... 4 Konfiguracja systemu operacyjnego... 4 Dodatkowe pakiety RPM... 4 Parametry jądra... 4 Konfiguracja dysków... 5 Użytkownicy i grupy... 7 Konfiguracja sieci i synchronizacji z serwerem NTP... 7 Instalacja oprogramowania Oracle GRID 11.2.0.1... 11 Stworzenie dodatkowych grup dyskowych... 16 Sprawdzenie działania wykreowanych usług... 17 Baza danych... 18 Rejestracja bazy w klastrze... 19 Plik parametrów... 19 Grupy REDO... 20 Serwisy ORACLE... 21 Plik TNSNAMES.ORA... 22 Backup bazy danych... 22 Skrypt do backup u... 22 Automatyzacja wykonywania skryptu... 24 Wstęp Środowisko Oracle Real Application Clusters (RAC) umożliwia bazie danych Oracle na uruchomienie dwóch lub więcej motorów bazy danych pracujących na wspólnym zestawie danych. Pozwala to na obsługiwanie żądań dowolnej aplikacji na wielu serwerach, bez wprowadzania w niej zmian. Zapewnia to najwyższy poziom dostępności i najbardziej elastyczną skalowalność. W przypadku awarii jednego z serwerów klastra, baza danych Oracle działa nadal na pozostałych maszynach. Oracle RAC pozwala na skalowanie aplikacji w zakresie przewyższającym możliwości pojedynczego serwera. W przypadku potrzeby rozbudowania sprzętowego nie jesteśmy już ograniczeni posiadanymi maszynami wystarczy dołożyć kolejny serwer do naszej bazy danych a zacznie on przejmować 2
w sposób przezroczysty dla użytkowników ruch kierowany na bazę danych. Dołożenie kolejnego serwera nie wymusza na nas zakładania okna serwisowego, dzięki czemu system może działać nieprzerwanie bez żadnych przeszkód. Również fizyczne uszkodzenie któregokolwiek z węzłów obsługującego naszą bazę danych nie skutkuje awarią systemu cały ruch zostanie automatycznie i natychmiast przejęty przez pozostałe węzły a użytkownik nie zauważy awarii. UWAGA! Instalowane środowisko wykorzystuje wersję oprogramowania 11.2.0.1 ze względu na dużą ilość bug ów związanych z wydajnością i stabilnością, należy rozważyć patchowanie do wersji 11.2.0.3 (lub nowszej), najszybciej jak tylko będzie to możliwe. Architektura fizyczna Poniższy rysunek obrazuje założenia architektury fizycznej dla tworzonego środowiska: Różnice w stosunku do projektu technicznego Ustalono, że konfiguracja Oracle Data Guard z użyciem maszyny CMCEN25 nastąpi w późniejszej fazie projektu Oracle SCAN uzyskał następujące adresy: 3
[root@cmcen03 ~]# nslookup cmcen43 Server: 10.72.0.100 Address: 10.72.0.100#53 Name: cmcen43 Address: 10.10.7.137 Name: cmcen43 Address: 10.10.7.136 Name: cmcen43 Address: 10.10.7.138 Instalacja klastra Konfiguracja systemu operacyjnego Do obsługi zasobów dyskowych, posłużyłem się alternatywą dla urządzeń RAW jest to sterownik napisany przez Oracle, dedykowany do obsługi ASM a ponieważ w wersji 11gR2 możemy składować pliki VOTE oraz CRS bezpośrednio na ASM ie nie będziemy potrzebować dodatkowych urządzeń surowych. W opisywanej instalacji stworzyłem trzy grupy dyskowe GRID (5471MB) do przechowywania OCR i VOTE, DATA (2091170MB) do przechowywania plików bazy danych oraz FRA (2097038MB) jako repozytorium plików ARCHIVELOG oraz backup ów, stworzonych z użyciem narzędzia RMAN. Dodatkowe pakiety RPM W celu prawidłowego funkcjonowania klastra ORACLE, zostały doinstalowane następujące pakiety RPM na obydwu węzłach klastra: [root@cmcen03 ~]# rpm -qa grep ora oraclelinux-release-5-8.0.2 oracle-validated-1.1.0-15.el5 oracleasmlib-2.0.4-1.el5 oracle-linux-5.0.0-9.el5 oracleasm-2.6.18-308.el5-2.0.5-1.el5 oracle-logos-4.9.17-10 oracleasm-support-2.1.7-1.el5 Parametry jądra Parametry jądra zostały automatycznie dostosowane poprzez użycie pakietu oracle- validated [root@cmcen03 ~]# /sbin/sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 2 net.ipv4.conf.default.accept_source_route = 0 kernel.core_uses_pid = 1 4
net.ipv4.tcp_syncookies = 1 fs.file-max = 6815744 kernel.msgmni = 2878 kernel.msgmax = 8192 kernel.msgmnb = 65536 kernel.sem = 250 32000 100 142 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 kernel.sysrq = 1 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 3145728 net.ipv4.ip_local_port_range = 9000 65500 vm.min_free_kbytes = 51200 net.ipv6.conf.all.disable_ipv6 = 1 Konfiguracja dysków W systemie operacyjnym, zostały zaprezentowane dwa urządzenia o wielkości 2TB /dev/sda oraz /dev/sdb. Urządzenie /dev/sda, zostało podzielone na dwie partycje, które zostały użyte odpowiednio dla grup dyskowych GRID (/dev/sda1) oraz DATA (/dev/sda2). Na urządzeniu /dev/sdb została stworzona jedna partycja podstawowa (/dev/sdb1), użyta jako grupa dyskowa FRA. [root@cmcen03 ~]# /sbin/multipath -l mpath1 (360a98000572d58594e5a6a626c564750) dm-3 NETAPP,LUN size=2.0t features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=-1 status=active `- 0:0:0:1 sdb 8:16 active undef running mpath0 (360a98000572d58594e5a6a626c514e34) dm-2 NETAPP,LUN size=2.0t features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=-1 status=active `- 0:0:0:0 sda 8:0 active undef running [root@cmcen03 ~]# /sbin/fdisk -l /dev/sda WARNING: The size of this disk is 2.2 TB (2199023255552 bytes). DOS partition table format can not be used on drives for volumes larger than 2.2 TB (2199023255040 bytes). Use parted(1) and GUID partition table format (GPT). Disk /dev/sda: 2199.0 GB, 2199023255552 bytes 255 heads, 63 sectors/track, 267349 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 748 6008278+ 83 Linux /dev/sda2 749 267349 2141472532+ 83 Linux [root@cmcen03 ~]# /sbin/fdisk -l /dev/sdb WARNING: The size of this disk is 2.2 TB (2199023255552 bytes). 5
DOS partition table format can not be used on drives for volumes larger than 2.2 TB (2199023255040 bytes). Use parted(1) and GUID partition table format (GPT). Disk /dev/sdb: 2199.0 GB, 2199023255552 bytes 255 heads, 63 sectors/track, 267349 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 267349 2147480811 83 Linux [root@cmcen03 ~]# ls -al /dev/oracleasm/disks/ razem 0 drwxr-xr-x 1 root root 0 kwi 26 16:06. drwxr-xr-x 4 root root 0 kwi 26 16:06.. brw-rw---- 1 oraowner odba 253, 6 kwi 26 16:06 DATA brw-rw---- 1 oraowner odba 253, 4 kwi 26 16:06 FRA brw-rw---- 1 oraowner odba 253, 5 kwi 26 16:06 GRID [root@cmcen03 ~]# ls -al /dev/mpath/mpath[0-9]p* lrwxrwxrwx 1 root root 7 kwi 26 16:06 /dev/mpath/mpath0p1 ->../dm-5 lrwxrwxrwx 1 root root 7 kwi 26 16:06 /dev/mpath/mpath0p2 ->../dm-6 lrwxrwxrwx 1 root root 7 kwi 26 16:06 /dev/mpath/mpath1p1 ->../dm-4 [root@cmcen03 ~]# ls -al /dev/dm-[4-6] brw-rw---- 1 root root 253, 4 kwi 26 16:06 /dev/dm-4 brw-rw---- 1 root root 253, 5 kwi 26 16:06 /dev/dm-5 brw-rw---- 1 root root 253, 6 kwi 26 16:06 /dev/dm-6 Liczby MAJOR i MINOR określają przypisania urządzeń ASMLib do zasobów dyskowych: /dev/oracleasm/disks/fra - > /dev/dm- 4 /dev/oracleasm/disks/grid - > /dev/dm- 5 /dev/oracleasm/disks/data - > /dev/dm- 6 W celu prawidłowego działania urządzeń ASMLib, zostały wprowadzone następujące ustawienia do pliku /etc/sysconfig/oracleasm: [root@cmcen03 ~]# cat /etc/sysconfig/oracleasm # # This is a configuration file for automatic loading of the Oracle # Automatic Storage Management library kernel driver. It is generated # By running /etc/init.d/oracleasm configure. Please use that method # to modify this file # # ORACLEASM_ENABELED: 'true' means to load the driver on boot. ORACLEASM_ENABLED=true # ORACLEASM_UID: Default user owning the /dev/oracleasm mount point. ORACLEASM_UID=oraowner # ORACLEASM_GID: Default group owning the /dev/oracleasm mount point. ORACLEASM_GID=odba 6
# ORACLEASM_SCANBOOT: 'true' means scan for ASM disks on boot. ORACLEASM_SCANBOOT=true # ORACLEASM_SCANORDER: Matching patterns to order disk scanning ORACLEASM_SCANORDER="dm" # ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan ORACLEASM_SCANEXCLUDE="sd" Użytkownicy i grupy Właścicielem ORACLE_HOME, jest użytkownik oraowner z wstępnym hasłem ora123! użytkownik należy do grup: oinstall właściciel repozytorium orainventory odba grupa autoryzacji systemowej SYSDBA oasm grupa autoryzacji systemowej SYSASM [root@cmcen03 ~]# id oraowner uid=500(oraowner) gid=502(oinstall) grupy=502(oinstall),500(odba),501(oasm) Konfiguracja sieci i synchronizacji z serwerem NTP Serwer DNS W celu działania klastra ORACLE, zostały stworzone odpowiednie wpisy w serwerze DNS zapewniające rozwiązywanie nazw do adresów IP i odwrotnie: [root@cmcen03 ~]# cat /etc/resolv.conf search racdomain nameserver 10.72.0.100 nameserver 10.72.7.100 [root@cmcen03 ~]# nslookup cmcen03 Server: 10.72.0.100 Address: 10.72.0.100#53 Name: cmcen03.racdomain Address: 10.10.7.131 [root@cmcen03 ~]# nslookup 10.10.7.131 Server: 10.72.0.100 Address: 10.72.0.100#53 131.7.10.10.in-addr.arpa name = cmcen03.racdomain. [root@cmcen03 ~]# nslookup cmcen04 Server: 10.72.0.100 Address: 10.72.0.100#53 Name: cmcen04.racdomain Address: 10.10.7.133 [root@cmcen03 ~]# nslookup 10.10.7.133 7
Server: 10.72.0.100 Address: 10.72.0.100#53 133.7.10.10.in-addr.arpa name = cmcen04.racdomain. [root@cmcen03 ~]# nslookup cmcen03-vip Server: 10.72.0.100 Address: 10.72.0.100#53 Name: cmcen03-vip.racdomain Address: 10.10.7.132 [root@cmcen03 ~]# nslookup 10.10.7.132 Server: 10.72.0.100 Address: 10.72.0.100#53 132.7.10.10.in-addr.arpa name = cmcen03-vip.racdomain. [root@cmcen03 ~]# nslookup cmcen04-vip Server: 10.72.0.100 Address: 10.72.0.100#53 Name: cmcen04-vip.racdomain Address: 10.10.7.134 [root@cmcen03 ~]# nslookup 10.10.7.134 Server: 10.72.0.100 Address: 10.72.0.100#53 134.7.10.10.in-addr.arpa name = cmcen04-vip.racdomain. [root@cmcen03 ~]# nslookup cmcen43 Server: 10.72.0.100 Address: 10.72.0.100#53 Name: cmcen43.racdomain Address: 10.10.7.138 Name: cmcen43.racdomain Address: 10.10.7.136 Name: cmcen43.racdomain Address: 10.10.7.137 [root@cmcen03 ~]# nslookup 10.10.7.136 Server: 10.72.0.100 Address: 10.72.0.100#53 136.7.10.10.in-addr.arpa name = cmcen43.racdomain. [root@cmcen03 ~]# nslookup 10.10.7.137 Server: 10.72.0.100 Address: 10.72.0.100#53 137.7.10.10.in-addr.arpa name = cmcen43.racdomain. [root@cmcen03 ~]# nslookup 10.10.7.138 Server: 10.72.0.100 Address: 10.72.0.100#53 138.7.10.10.in-addr.arpa name = cmcen43.racdomain. 8
Serwer czasu W celu utrzymania znaczników czasowych między węzłami klastra, został skonfigurowany dostęp do serwera czasu: [root@cmcen03 ~]# cat /etc/ntp.conf # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict default kod nomodify notrap nopeer noquery # Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. restrict 127.0.0.1 # Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). # server 0.rhel.pool.ntp.org # server 1.rhel.pool.ntp.org # server 2.rhel.pool.ntp.org #broadcast 192.168.1.255 key 42 # broadcast server #broadcastclient # broadcast client #broadcast 224.0.1.1 key 42 # multicast server #multicastclient 224.0.1.1 # multicast client #manycastserver 239.255.254.254 # manycast server #manycastclient 239.255.254.254 key 42 # manycast client # Undisciplined Local Clock. This is a fake driver intended for backup # and when no outside source of synchronized time is available. fudge 127.127.1.0 stratum 10 # Drift file. Put this in a directory which the daemon can write to. # No symbolic links allowed, either, since the daemon updates the file # by creating a temporary in the same directory and then rename()'ing # it to the file. driftfile /var/lib/ntp/drift # Key file containing the keys and key identifiers used when operating # with symmetric key cryptography. keys /etc/ntp/keys # Specify the key identifiers which are trusted. #trustedkey 4 8 42 # Specify the key identifier to use with the ntpdc utility. #requestkey 8 # Specify the key identifier to use with the ntpq utility. #controlkey 8 server ncen00t01.racdomain restrict ncen00t01.racdomain mask 255.255.255.255 nomodify notrap noquery [root@cmcen03 ~]# cat /etc/sysconfig/ntpd 9
# Drop root to id 'ntp:ntp' by default. OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -x" # Set to 'yes' to sync hw clock after successful ntpdate SYNC_HWCLOCK=no # Additional options for ntpdate NTPDATE_OPTIONS="" Konfiguracja SSH Pomiędzy użytkownikami będącymi właścicielami oprogramowania Oracle musi istnieć konieczność wymiany danych po SSH bez użycia haseł. CMCEN03 [oraowner@cmcen03 ~]$ ssh cmcen03 date ; ssh cmcen04 date pią kwi 27 11:37:41 CEST 2012 pią kwi 27 11:37:41 CEST 2012 CMCEN04 [oraowner@cmcen04 ~]$ ssh cmcen03 date ; ssh cmcen04 date pią kwi 27 11:38:45 CEST 2012 pią kwi 27 11:38:45 CEST 2012 Powyższa sytuacja została osiągnięta dzięki wymianie publicznych kluczy RSA i DSA poprzez plik ~/.ssh/authorized_keys 10
Instalacja oprogramowania Oracle GRID 11.2.0.1 11
12
13
14
15
Stworzenie dodatkowych grup dyskowych W trakcie instalacji, została stworzona grupa dyskowa GRID, odpowiedzialna za przechowywanie pliku VOTE i rejestru klastra OCR. Przed zainstalowaniem i wykreowaniem bazy danych należy jeszcze powołać pozostałe grupy dyskowe. [oraowner@cmcen03 ~]$ sqlplus / as sysasm SQL*Plus: Release 11.2.0.1.0 Production on Fri Apr 27 09:14:22 2012 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0-64bit Production With the Real Application Clusters and Automatic Storage Management options SQL> create diskgroup DATA 2 external redundancy disk 'ORCL:DATA'; Diskgroup created. 16
SQL> create diskgroup FRA 2 external redundancy disk 'ORCL:FRA'; Diskgroup created. Sprawdzenie działania wykreowanych usług [oraowner@cmcen03 ~]$ ssh cmcen03 date ; ssh cmcen04 date pią kwi 27 11:37:41 CEST 2012 pią kwi 27 11:37:41 CEST 2012 [oraowner@cmcen03 ~]$ srvctl status nodeapps VIP cmcen03-vip is enabled VIP cmcen03-vip is running on node: cmcen03 VIP cmcen04-vip is enabled VIP cmcen04-vip is running on node: cmcen04 Network is enabled Network is running on node: cmcen03 Network is running on node: cmcen04 GSD is disabled GSD is not running on node: cmcen03 GSD is not running on node: cmcen04 ONS is enabled ONS daemon is running on node: cmcen03 ONS daemon is running on node: cmcen04 eons is enabled eons daemon is running on node: cmcen03 eons daemon is running on node: cmcen04 [oraowner@cmcen03 ~]$ srvctl status asm ASM is running on cmcen03,cmcen04 [oraowner@cmcen03 ~]$ srvctl status listener Listener LISTENER is enabled Listener LISTENER is running on node(s): cmcen03,cmcen04 [oraowner@cmcen03 ~]$ srvctl status scan SCAN VIP scan1 is enabled SCAN VIP scan1 is running on node cmcen04 SCAN VIP scan2 is enabled SCAN VIP scan2 is running on node cmcen03 SCAN VIP scan3 is enabled SCAN VIP scan3 is running on node cmcen03 [oraowner@cmcen03 ~]$ srvctl status scan_listener SCAN Listener LISTENER_SCAN1 is enabled SCAN listener LISTENER_SCAN1 is running on node cmcen04 SCAN Listener LISTENER_SCAN2 is enabled SCAN listener LISTENER_SCAN2 is running on node cmcen03 SCAN Listener LISTENER_SCAN3 is enabled SCAN listener LISTENER_SCAN3 is running on node cmcen03 [oraowner@cmcen03 ~]$ srvctl status diskgroup -g grid Disk Group grid is running on cmcen03,cmcen04 [oraowner@cmcen03 ~]$ srvctl status diskgroup -g data Disk Group data is running on cmcen03,cmcen04 [oraowner@cmcen03 ~]$ srvctl status diskgroup -g fra Disk Group fra is running on cmcen03,cmcen04 Wszystkie usługi działają prawidłowo można przystąpić do kreowania bazy danych. 17
Baza danych Zgodnie z zaleceniami, została wykreowana standardowa baza danych (nazwa: CKM strona kodowa AL32UTF8), wraz z domyślnymi komponentami w wersji Enterprise Edition. W celu sprawnego zarządzania środowiskiem, zostały stworzone dwa skrypty, zawierające ustawienia powłoki dla oprogramowania GRID (grid.env) i DB (db.env) pliki zostały umieszczone w katalogu /home/oraowner/bin. [oraowner@cmcen03 ~]$ cat ~/bin/db.env export ORACLE_SID=ckm1 export ORACLE_BASE=/u01/app/oraowner export PATH=/u01/app/oraowner/product/11.2.0/dbhome_1/bin:/u01/app/11.2.0/grid/bin:/usr/ke rberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oraowner/bin export ORACLE_HOME=/u01/app/oraowner/product/11.2.0/dbhome_1 echo $ORACLE_SID echo $ORACLE_HOME [oraowner@cmcen03 ~]$ cat ~/bin/grid.env export ORACLE_SID=+ASM1 export ORACLE_BASE=/u01/app/oraowner export PATH=/u01/app/11.2.0/grid/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/ oraowner/bin export ORACLE_HOME=/u01/app/11.2.0/grid echo $ORACLE_SID echo $ORACLE_HOME Pliki glogin.sql zostały uzupełnione o wpisy, pozwalające identyfikować środowisko, z którego nastąpiło logowanie do narzędzia. [oraowner@cmcen03 admin]$ cd /u01/app/oraowner/product/11.2.0/dbhome_1/sqlplus/admin/ [oraowner@cmcen03 admin]$ cat glogin.sql -- -- Copyright (c) 1988, 2005, Oracle. All Rights Reserved. -- -- NAME -- glogin.sql -- -- DESCRIPTION -- SQL*Plus global login "site profile" file -- -- Add any SQL*Plus commands here that are to be executed when a -- user starts SQL*Plus, or uses the SQL*Plus CONNECT command. -- -- USAGE -- This script is automatically run -- set sqlprompt '&_user:&_connect_identifier> ' [oraowner@cmcen03 admin]$ cp glogin.sql /u01/app/11.2.0/grid/sqlplus/admin/ 18
Rejestracja bazy w klastrze Baza CKM posiada dwie instancje ckm1 (cmcen03) oraz ckm2 (cmcen04). [oraowner@cmcen03 ~]$ srvctl config database -d ckm Database unique name: ckm Database name: ckm Oracle home: /u01/app/oraowner/product/11.2.0/dbhome_1 Oracle user: oraowner Spfile: +DATA/ckm/spfileckm.ora Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: ckm Database instances: ckm1,ckm2 Disk Groups: DATA,FRA Services: Database is administrator managed [oraowner@cmcen03 ~]$ srvctl status database -d ckm Instance ckm1 is running on node cmcen03 Instance ckm2 is running on node cmcen04 Plik parametrów Plik parametrów jest wspólny dla obydwu instancji klastra bazodanowego i jest składowany w postaci SPFILE na grupie dyskowej DATA SYS:ckm1> sho parameters spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +DATA/ckm/spfileckm.ora SYS:ckm1> create pfile='/tmp/init.ora' from spfile='+data/ckm/spfileckm.ora'; Plik zostal utworzony. SYS:ckm1>!cat /tmp.init.ora cat: /tmp.init.ora: Nie ma takiego pliku ani katalogu SYS:ckm1>!cat /tmp/init.ora ckm1. db_cache_size=33017561088 ckm2. db_cache_size=33017561088 ckm1. java_pool_size=268435456 ckm2. java_pool_size=268435456 ckm1. large_pool_size=268435456 ckm2. large_pool_size=268435456 ckm1. oracle_base='/u01/app/oraowner'#oracle_base set from environment ckm2. oracle_base='/u01/app/oraowner'#oracle_base set from environment ckm1. pga_aggregate_target=4294967296 ckm2. pga_aggregate_target=4294967296 ckm1. sga_target=38654705664 ckm2. sga_target=38654705664 ckm1. shared_io_pool_size=0 ckm2. shared_io_pool_size=0 ckm1. shared_pool_size=4831838208 ckm2. shared_pool_size=4831838208 ckm1. streams_pool_size=0 19
ckm2. streams_pool_size=0 *.audit_file_dest='/u01/app/oraowner/admin/ckm/adump' *.audit_trail='db' *.cluster_database=true *.compatible='11.2.0.0.0' *.control_files='+data/ckm/controlfile/current.256.781695003','+fra/ckm/controlfile /current.256.781695003' *.db_block_size=8192 *.db_create_file_dest='+data' *.db_domain='' *.db_name='ckm' *.db_recovery_file_dest='+fra' *.db_recovery_file_dest_size=1759122554880 *.diagnostic_dest='/u01/app/oraowner' *.dispatchers='(protocol=tcp) (SERVICE=ckmXDB)' ckm2.instance_number=2 ckm1.instance_number=1 *.log_archive_format='%t_%s_%r.dbf' *.nls_language='polish' *.nls_territory='poland' *.open_cursors=300 *.pga_aggregate_target=4294967296 *.processes=300 *.remote_listener='cmcen43:2521' *.remote_login_passwordfile='exclusive' *.sessions=335 *.sga_target=38654705664 ckm2.thread=2 ckm1.thread=1 ckm1.undo_tablespace='undotbs1' ckm2.undo_tablespace='undotbs2' Grupy REDO W celu optymalizacji przełączeń między grupami REDO zostały powołane po trzy nowe grupy o wielkości 250M na każdym z wątków instancji klastra. Wstępne grupy REDO zostały usunięte. SYS:ckm1> alter database add logfile thread 1 2 group 11 size 250M, 3 group 12 size 250M, 4 group 13 size 250M; Baza danych zostala zmieniona. SYS:ckm1> define _editor=vi SYS:ckm1> ed Zapisano file afiedt.buf 1 alter database add logfile thread 2 2 group 21 size 250M, 3 group 22 size 250M, 4* group 23 size 250M SYS:ckm1> / Baza danych zostala zmieniona. 20
SYS:ckm1> alter system switch logfile; System zostal zmieniony. SYS:ckm1> alter system checkpoint; System zostal zmieniony. Zapisano file afiedt.buf 1* alter database drop logfile group 1, group 2, group 3, group 4 SYS:ckm1> / Baza danych zostala zmieniona. SYS:ckm1> ; 1 select g.thread#, g.group#, g.bytes/1024/1024 as mb, f.member 2 from v$log g, v$logfile f 3* where g.group#=f.group# SYS:ckm1> / THREAD# GROUP# MB MEMBER ---------- ---------- ---------- ------------------------------------------------- 1 11 250 +DATA/ckm/onlinelog/group_11.268.781705577 1 11 250 +FRA/ckm/onlinelog/group_11.264.781705579 1 12 250 +DATA/ckm/onlinelog/group_12.269.781705579 1 12 250 +FRA/ckm/onlinelog/group_12.263.781705581 1 13 250 +DATA/ckm/onlinelog/group_13.270.781705581 1 13 250 +FRA/ckm/onlinelog/group_13.265.781705583 2 21 250 +DATA/ckm/onlinelog/group_21.271.781705609 2 21 250 +FRA/ckm/onlinelog/group_21.262.781705611 2 22 250 +DATA/ckm/onlinelog/group_22.272.781705611 2 22 250 +FRA/ckm/onlinelog/group_22.261.781705613 2 23 250 +DATA/ckm/onlinelog/group_23.273.781705613 2 23 250 +FRA/ckm/onlinelog/group_23.272.781705615 12 wierszy zostalo wybranych. Serwisy ORACLE W celu nawiązywania połączeń z klastrem ORACLE zostały powołane trzy serwisy dialer, i3_ice oraz siebel [oraowner@cmcen03 ~]$ srvctl add service -d ckm -s dialer -r ckm1,ckm2 -e select -m basic -B SERVICE_TIME [oraowner@cmcen03 ~]$ srvctl start service -d ckm -s dialer [oraowner@cmcen03 ~]$ srvctl add service -d ckm -s i3_ic -r ckm1,ckm2 -e select -m basic -B SERVICE_TIME [oraowner@cmcen03 ~]$ srvctl start service -d ckm -s i3_ic [oraowner@cmcen03 ~]$ srvctl add service -d ckm -s siebel -r ckm1,ckm2 -e select -m basic -B SERVICE_TIME [oraowner@cmcen03 ~]$ srvctl start service -d ckm -s siebel [oraowner@cmcen03 ~]$ srvctl status service -d ckm Service dialer is running on instance(s) ckm1,ckm2 Service i3_ic is running on instance(s) ckm1,ckm2 Service siebel is running on instance(s) ckm1,ckm2 21
Plik TNSNAMES.ORA W celu połączenia się z serwerem Oracle, należy skonfigurować plik tnsnames.ora, znajdujący się w likalizacji $ORACLE_HOME/network/admin po stronie klienta. Przykładowa zawartość pliku, łączącego się do zdefiniowanych serwisów, znajduje się poniżej: dialer = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = cmcen43.racdomain)(port = 1521)) (CONNECT_DATA = (SERVICE_NAME = dialer) ) ) i3_ic = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = cmcen43.racdomain)(port = 1521)) (CONNECT_DATA = (SERVICE_NAME = i3_ic) ) ) siebel = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = cmcen43.racdomain)(port = 1521)) (CONNECT_DATA = (SERVICE_NAME = siebel) ) ) Backup bazy danych W celu przyspieszenia backup u bazy zostanie skonfigurowany backup inkrementalny poziomu 0 (raz w tygodniu sobota 23.00) oraz backup inkrementalny poziomu 1 (raz dziennie 23.00). Wydajność backup u zostanie podniesiona poprzez włączenie trybu śledzenia zmian bloków danych block change tracking. SYS:ckm1> alter database enable block change tracking; Baza danych zostala zmieniona. Skrypt do backup u Skrypt został umieszczony w katalogu /home/oraowner/bin/mk_backup.sh. Parametrem skryptu jest poziom przyrostowego backup u 0 lub 1. Logi z backup ów powstają w tym samym katalogu, w którym znajduje się poniższy skrypt. W celu uniezależnienia wykonywania backup u od działania węzłów klastra, wykonano następujące serwisy. 22
[oraowner@cmcen03 ~]$ srvctl add service -d ckm -s rman1 -r ckm1 -a ckm2 [oraowner@cmcen03 ~]$ srvctl add service -d ckm -s rman2 -r ckm2 -a ckm1 [oraowner@cmcen03 ~]$ srvctl start service -d ckm -s rman1 [oraowner@cmcen03 ~]$ srvctl start service -d ckm -s rman2 [oraowner@cmcen03 ~]$ srvctl status service -d ckm Service dialer is running on instance(s) ckm1,ckm2 Service i3_ic is running on instance(s) ckm1,ckm2 Service rman1 is running on instance(s) ckm1 Service rman2 is running on instance(s) ckm2 Service siebel is running on instance(s) ckm1,ckm2 Skrypt do backup u. #!/bin/bash export ORACLE_SID=ckm1 export ORACLE_BASE=/u01/app/oraowner export PATH=/u01/app/oraowner/product/11.2.0/dbhome_1/bin:/u01/app/11.2.0/grid/bin:/usr/ke rberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oraowner/bin export ORACLE_HOME=/u01/app/oraowner/product/11.2.0/dbhome_1 export NLS_DATE_FORMAT=YYYY.MM.DD.HH24:MI:SS asm_disk='+fra' log_dest=/home/oraowner/bin/mk_backup.log rec_window=14 sys_pwd=ora123 inclev=0 if [ $# -gt 0 ]; then inclev=$1 fi rman target / append log=${log_dest} <<! run { allocate channel c1 device type disk connect sys/${sys_pwd}@cmcen43:1521/rman1; allocate channel c2 device type disk connect sys/${sys_pwd}@cmcen43:1521/rman1; allocate channel c3 device type disk connect sys/${sys_pwd}@cmcen43:1521/rman1; allocate channel c4 device type disk connect sys/${sys_pwd}@cmcen43:1521/rman2; allocate channel c5 device type disk connect sys/${sys_pwd}@cmcen43:1521/rman2; allocate channel c6 device type disk connect sys/${sys_pwd}@cmcen43:1521/rman2; crosscheck archivelog all; crosscheck backupset; backup as compressed backupset incremental level ${inclev} database format '${asm_disk}'; backup as compressed backupset archivelog all delete input format '${asm_disk}'; backup as compressed backupset current controlfile format '${asm_disk}'; backup spfile format '${asm_disk}'; delete noprompt obsolete recovery window of ${rec_window} days; release channel c1; release channel c2; release channel c3; release channel c4; release channel c5; release channel c6; 23
}! Obecnie backup jest wykonywany równolegle 6 kanałami (po 3 na każdą instancję). Domyślnie skrypt będzie uruchamiany z węzła cmcen03 a w przypadku awarii na węźle cmcen04 zostanie do przedstawione poniżej w sekcji opisującej tworzenie SCHEDULE dla bckup u. Automatyzacja wykonywania skryptu Ze względu na bug nie pozwalający na implementację backup u poprzez DBMS_SCHEDULER na Linux w wersji Oracle RDBMS 11.2.0.1 nie można było użyć wbudowanego mechanizmu automatycznych zadań. Należy przeprowadzić automatyzację z użyciem mechanizmów OS np. CRON. 24