Szkolenie - rbogusze/oracleinfrastructure GitHub Wiki
## Konfiguracja testowego vm ##
### Dlaczego sendmail uruchamia się tak długo? ### Próbuje on rozwiązać nazwę hosta tm11201.localdomain i czeka na timeout DNS, którym jest w tym momencie serwer na którym działa klient vmplayer’a.
Aby mu pomóc określ aktualne IP maszyny wirtualnej
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:3B:E4:25
inet addr:192.168.211.174 Bcast:192.168.211.255
I taki adres IP wstaw do pliku /etc/hosts, w tym przypadku:
# vi /etc/hosts
192.168.211.174 tm11201.localdomain tm11201
### Zmiana rozdzielczości ekranu pod vmware ###
## Tworzenie bazy danych ##
Zaloguj się jako oracle na serwer bazodanowy
Potwierdź dostępność narzędzia tworzącego bazę
$ which dbca
~/db/11.2.0.1/bin/dbca
Zwolnijmy miejsce na filesystemie
$ cd /BACKUP/
$ rm arch_*
$ rm db_*
Utwórzmy pusty katalog na nową bazę
# mkdir /JASIO
$ id -a
uid=600(oracle) gid=600(dba) groups=600(dba)
# chown oracle:dba /JASIO
$ touch /JASIO/ala_ma_kota
Upwnij się, że jest wystarczająco dużo wolnego miejsca
$ df -h
/dev/sda2 18G 14G 3.1G 82% /
Przy uzyciu kreatora:
$ dbca
Strona kodowa: EE8ISO8859P2 /ORABIN/db/admin/JASIO/scripts
Jakie bazy działają na serwerze
$ ps -ef | grep pmon
Jak została utworzona moja baza
alter database backup controlfile to trace;
Tworzenie spfile z inita
create spfile from pfile;
startup force
**Zadanie 1: Zrestartuj bazy danych JASIO i CZESIODBCA jednocześnie podglądając plik alertlog.**
Ustalenie zmiennych środowiskowych dla konkretnej bazy danych
$ env | grep ORA
$ cat /etc/oratab
$ . oraenv
Określenie położenia pliku alert log
> show parameter dump
background_dump_dest /ORABIN/db/diag/rdbms/jasio/JASIO/trace
**Zadanie 2: Utwórz 3 grupy redo o wielkości 100M i skasuj stare, w tej samej lokalizacji tylko o innej nazwie**
> column MEMBER format a50
select * from v$logfile;
select GROUP#,BYTES,STATUS from sys.v$log;
> alter database add logfile group 4 ('/JASIO/oradata/redo100M6a.rdo') size 100M;
> alter database drop logfile group 1;
> alter system switch logfile;
> alter system checkpoint;
**Zadanie 3: Przełącz bazę w tryb archivelog**
> select LOG_MODE from v$database;
> show parameter log_archive_dest_1
$ mkdir -p /JASIO/arch
> alter system set log_archive_dest_1='location=/JASIO/arch';
> shutdown immediate
> startup mount
> alter database archivelog;
> alter database open;
> alter system switch logfile;
**Zadanie 4: Sytuacja awaryjna: Baza nie uruchamia się ze względu na błędną wartość parametru inicjalizacyjnego**
> alter system set log_archive_format='log_%S.arc' scope=spfile;
> startup force
ORA-19905: log_archive_format must contain %s, %t and %r
> create pfile from spfile;
> shutdown immediate
$ cd $ORACLE_HOME/dbs
$ env | grep ORACLE_SID
ORACLE_SID=JASIO
$ mv spfileJASIO.ora spfileJASIO.ora.bck1
$ vi initJASIO.ora
*.log_archive_format='log_%S_%t_%r.arc'
> startup
> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- --------
spfile string
> create spfile from pfile;
> startup force
> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ----------
spfile string /ORABIN/db/11.2.0.1/dbs/spfile
JASIO.ora
**Zadanie 5: Zmiana położenia plików bazy danych**
Zmiana przeprowadzana jest poleceniem:
> alter database rename file '/disk1/file1' to '/disk2/file1';
Przygotuj komendy do zmiany na działającej bazie
> select name from v$datafile;
> set linesize 200
> spool rename.sql
> select 'alter database rename file '''||name||''' to '''||REPLACE(name,'JASIO','KASIA')||'''; ' from v$datafile;
> spool off
Usuwamy śmieci tak żeby zostały tylko komendy 'alter database ...'
$ vi rename.sql
Zamknij bazę
> shutdown immediate
Fizycznie przesuń pliki
# mkdir /KASIA
# chown oracle:dba /KASIA
$ mkdir /KASIA/KASIA
$ mv /JASIO/JASIO/*.dbf /KASIA/KASIA
> startup mount
> @rename.sql
> alter database open;
Co się składa na pliki bazy danych
> set echo on
> @files
Zmiana położenie plików controlfile
Określ aktualne położenie plików controlfile
> select value from v$parameter where name='control_files';
/JASIO/JASIO/control01.ctl, /JASIO/JASIO/control02.ctl
Powiedzmy, że ustalamy miejsce docelowe na /KASIA/KASIA
> alter system set control_files='/KASIA/KASIA/control01.ctl','/KASIA/KASIA/control02.ctl' scope=spfile;
> shutdown immediate
Fizycznie zmieniamy położenie plików controlfile
$ mv /JASIO/JASIO/control01.ctl /KASIA/KASIA/control01.ctl
$ mv /JASIO/JASIO/control02.ctl /KASIA/KASIA/control02.ctl
> startup
**Zadanie 6: konfiguracja sieci**
Status
$ lsnrctl status
Start
$ lsnrctl start
Stop
$ lsnrctl stop
Automatyczna rejestracja (po 5 min) baz jeżeli listener działa na porcie defaultowym. Lub wymuszona:
> alter system register;
Konfiguracja pliku tnsnames.ora
$ cd $ORACLE_HOME/network/admin/
Przykładowy wpis do tnsnames.ora
$ vim tnsnames.ora
ORACLE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = 10.0.255.193)(Port = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = TEST)
)
)
$ tnsping ORACLE
**Zadanie 6: konfiguracja konsoli administratora**
Określenie statusu, jeżeli uruchomiona podaje adres pod jakim jest dostępna, np. https://oracle1:5500/em/ Logowanie jako użytkownik bazodanowy system.
$ export ORACLE_UNQNAME=$ORACLE_SID
$ emctl status dbconsole
Uruchomienie
$ emctl start dbconsole
Zatrzymanie
$ emctl stop dbconsole
Rekonfiguracja
$ emca -deconfig dbcontrol db -repos drop
$ emca -config dbcontrol db -repos create
## Instalacja ASMLib ##
Określ wersję jądra linuksa
# uname -a
Linux tm11201 2.6.18-274.el5 #1 SMP Fri Jul 22 04:43:29 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release
CentOS release 5.7 (Final)
http://www.oracle.com/technetwork/topics/linux/asmlib/index-101839.html
Red Hat Enterprise Linux 5 AS -> Intel EM64T (x86_64) Architecture ->
# wget http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.4-1.el5.x86_64.rpm
# wget http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel5/amd64/2.1.8/oracleasm-support-2.1.8-1.el5.x86_64.rpm
# wget http://oss.oracle.com/projects/oracleasm/dist/files/RPMS/rhel5/amd64/2.0.5/2.6.18-274.el5/oracleasm-2.6.18-274.el5-2.0.5-1.el5.x86_64.rpm
Instalacja:
# rpm -ivh oracleasmlib-2.0.4-1.el5.x86_64.rpm oracleasm-2.6.18-274.el5-2.0.5-1.el5.x86_64.rpm oracleasm-support-2.1.8-1.el5.x86_64.rpm
Preparing... ########################################### [100%]
1:oracleasm-support ########################################### [ 33%]
2:oracleasm-2.6.18-274.el########################################### [ 67%]
3:oracleasmlib ########################################### [100%]
# fdisk -l
# fdisk /dev/sdb
n add a new partition
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2219, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2219, default 2219):
Using default value 2219
Command (m for help): p
Disk /dev/sdb: 18.2 GB, 18253611008 bytes
255 heads, 63 sectors/track, 2219 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 2219 17824086 83 Linux
Command (m for help): w
The partition table has been altered!
Naznaczanie urządzeń tagiem ASMlib
# /etc/init.d/oracleasm configure
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
# /etc/init.d/oracleasm createdisk DATA1 /dev/sdb1
Marking disk "DATA1" as an ASM disk: [ OK ]
# /usr/sbin/oracleasm listdisks
DATA1
# ls -l /dev/oracleasm/disks
Czyścimy miejsce
Kasowanie bazy danych
Ustaw środowisko wybranej bazy danych
$ cd
$ . menu.sh
ORACLE_SID: ZENEKDBCA
Wystartuj bazę w trybie mount restrict
> shutdown abort
> startup mount restrict
Upewnij się, że to na pewno baza którą chcesz skasować
> show parameter name
$ env | grep ORACLE_SID
$ rlwrap rman target /
RMAN> list archivelog all;
RMAN> delete archivelog all;
RMAN> crosscheck backup;
RMAN> delete expired backup;
RMAN> list backup;
RMAN> delete backup;
RMAN> drop database;
Skasuj wpis nieistniejącej bazy z pliku oratab
$ vi /etc/oratab
-> to skasuj ZENEKDBCA:/ORABIN...
Przygotowanie mediów instalacyjnych
$ cksum linux.x64_11gR2_grid.zip
3369676398 1052897657 linux.x64_11gR2_grid.zip
$ unzip linux.x64_11gR2_grid.zip
Instalacja właściwa
$ cd grid/
$ ./runInstaller
Obserwacje
$ cat /etc/oratab
+ASM:/ORABIN/db/product/11.2.0/grid:N
$ cd /ORABIN/db/product/11.2.0/grid
Tworzenie bazy na ASM
Zaloguj się jako oracle
$ dbca
Okreslenie zajetości miejsca w ASM
Na dyskgrupie:
> @asm.sql
> SELECT name, free_mb, total_mb, round(free_mb/total_mb*100) "%FREE" FROM v$asm_diskgroup;
Na dysku:
> select GROUP_NUMBER, DISK_NUMBER, NAME, TOTAL_MB, FREE_MB from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME TOTAL_MB FREE_MB
------------ ----------- ------------------------------ ---------- ----------
1 0 DATA1 17406 15959
Dodawanie nowego dysku do ASM
# fdisk -l
Disk /dev/sdc: 18.2 GB, 18253611008 bytes
Patrycjonujemy dysk
# fdisk /dev/sdc
# fdisk -l
/dev/sdc1 1 2219 17824086 83 Linux
Tagujemy partcję ASMlibem
# /etc/init.d/oracleasm createdisk DATA2 /dev/sdc1
Marking disk "DATA2" as an ASM disk: [ OK ]
# /usr/sbin/oracleasm listdisks
DATA1
DATA2
Start ASM
$ ps -ef | grep pmon
$ . oraenv
ORACLE_SID = [ZENEKDBCA] ? +ASM
$ sqlplus / as sysasm
> startup
Konfigurator asm
$ asmca
lub
> ALTER DISKGROUP DATA ADD DISK 'ORCL:DATA2' REBALANCE POWER 11;
$ sqlplus / as sysasm
> select * from V$ASM_OPERATION;
> select * from V$ASM_OPERATION;
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE
------------ ----- ---- ---------- ---------- ---------- ---------- ----------
EST_MINUTES ERROR_CODE
----------- --------------------------------------------
1 REBAL REAP 1 0 721 727 684
0
Usunięcie dysku z grupy
> ALTER DISKGROUP DATA DROP DISK 'DATA1' REBALANCE POWER 5;
> ALTER DISKGROUP DATA REBALANCE POWER 11;
Użytkownik testowy scott
@?/rdbms/admin/utlsampl.sql
> grant select any dictionary to scott;
> connect scott/tiger
> select table_name from user_tables;
Pobranie czasu z bazy
> select sysdate from dual;
Pobranie SCNa z bazy
> column CURRENT_SCN format 999999999999999;
> select current_scn from v$database;
Wyświetlić zawartość tabelki
> select * from DEPT;
> update dept set DNAME='ala' where 1=1;
> select * from DEPT AS OF SCN 1047999;
> ALTER TABLE scott.DEPT ENABLE ROW MOVEMENT;
> FLASHBACK TABLE scott.DEPT TO SCN 1047999;
### Backup bazy danych ###
Dodajmy dysk na potrzeby backupu
- Zamknij maszynę wirtualną
- Dodaj dysk poprzez ‘Edit virtual machine settings’ -> Add… -> Hard Disk (rozmiar 30G, reszta ustawień defaultowa)
Po starcie zaloguj jako root
# fdisk -l
Disk /dev/sdb: 32.2 GB, 32212254720 bytes
# fdisk /dev/sdb
# mkfs.ext3 /dev/sdb1
# rm -f /BACKUP/*
# echo "/dev/sdb1 /BACKUP ext3 defaults 0 0" >> /etc/fstab
# mount /BACKUP
# df -h
# chown oracle:dba /BACKUP
Backup na filesystem
Lokalizacja na backupy
Kasujemy niepotrzebne binaria instalacyjne
$ cd /ORABIN/inst
$ rm -Rf grid/
$ df -h
Sprawdzić prawo do zapisu
$ touch /BACKUP/ala
$ rm /BACKUP/ala
Ustaw środowisko bazodanowe
$ cd
$ . menu.sh
$ rlwrap rman target / nocatalog
> show all;
> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 8 DAYS;
> CONFIGURE BACKUP OPTIMIZATION ON;
sqlplus> show parameter control_file_record_keep_time
control_file_record_keep_time integer 7
> BACKUP DATABASE FORMAT "/BACKUP/db_%U";
> BACKUP ARCHIVELOG ALL FORMAT '/BACKUP/arch_%U';
> BACKUP CURRENT CONTROLFILE FORMAT '/BACKUP/ctrl_%U';
Wyświetl ukończone backupy:
> list backup;
Potwierdź fizyczne istnienie backupu z informacją o backupie
> crosscheck backup;
Usuń informacje o backupach których nie znaleziono
> delete expired backup;
Tabelka testowa
$ rlwrap sqlplus / as sysdba
> create table skarby (nazwa varchar2(30), value number);
> insert into skarby values ('super nowy',100);
> commit;
$ cd /ZOSIA/ZOSIA
$ rm *.dbf
SQL> startup force
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/ZOSIA/ZOSIA/system01.dbf'
Odtwarzanie pełne
$ rlwrap rman target / nocatalog
> restore database;
> recover database;
> alter database open;
> drop table skarby;
> shutdown abort
> startup mount
$ rlwrap rman target / nocatalog
> restore database;
> recover database;
> alter database open;
Odtwarzanie na konkretny punkt w czasie
$ rlwrap sqlplus / as sysdba
> shutdown abort
> startup mount
$ export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
$ rlwrap rman target / nocatalog
run {
SET UNTIL TIME '2013-03-07 02:40:37';
restore database;
recover database;
alter database open resetlogs;
}
Powrót do inkarnacji ojca i zmiana czasu wycofania bazy
RMAN> list incarnation;
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 JASIO 2326726408 PARENT 1 2009-08-15 00:16:43
2 2 JASIO 2326726408 PARENT 945184 2013-03-05 01:22:20
3 3 JASIO 2326726408 CURRENT 1248412 2013-03-07 02:57:55
$ rlwrap sqlplus / as sysdba
> shutdown abort
> startup mount
$ export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
$ rlwrap rman target / nocatalog
> reset database to incarnation 2;
run {
SET UNTIL TIME '2013-03-07 02:45:37';
restore database;
recover database;
alter database open resetlogs;
}
Utrata redo logów po zamknięciu bazy:
> insert into skarby values ('jeszcze nowszy',100);
> commit;
> select * from skarby;
super nowy 100
jeszcze nowszy 100
> select member from v$logfile;
/JASIO/JASIO/redo03.log
/JASIO/JASIO/redo02.log
/JASIO/JASIO/redo01.log
> shutdown immediate
$ rm /JASIO/JASIO/redo03.log
$ rm /JASIO/JASIO/redo02.log
$ rm /JASIO/JASIO/redo01.log
> show parameter background_dump_dest
/ORABIN/db/diag/rdbms/jasio/JASIO/trace/
> startup
ORA-00313: open failed for members of log group 1 of thread
ORA-00312: online log 1 thread 1: '/JASIO/JASIO/redo01.log'
USER (ospid: 9673): terminating the instance due to error 313
> startup mount
> recover database until cancel;
Media recovery complete.
> alter database open resetlogs;
> select * from skarby;
super nowy 100
jeszcze nowszy 100
Skasowanie redologów podczas pracy bazy danych
> insert into skarby values ('kasowanie redo gdy baza open',100);
> commit;
> select * from skarby;
super nowy 100
jeszcze nowszy 100
kasowanie redo gdy baza open 100
> select member from v$logfile;
/JASIO/JASIO/redo03.log
/JASIO/JASIO/redo02.log
/JASIO/JASIO/redo01.log
$ rm /JASIO/JASIO/redo03.log /JASIO/JASIO/redo02.log /JASIO/JASIO/redo01.log
> startup force
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/JASIO/JASIO/redo03.log'
ORA-27037: unable to obtain file status
$ rlwrap rman target / nocatalog
RMAN> restore database;
RMAN> recover database;
SQL> recover database until cancel;
AUTO
SQL> alter database open resetlogs;
Utrata wszystkich plików bazy danych
Zrób backup!
SQL> shutdown abort
Kasowanie plików bazy daych
$ rm /ORABIN/db/11.2.0.1/dbs/spfileJASIO.ora
$ rm /KASIA/KASIA/*
$ rm /JASIO/JASIO/*
$ rm /ZOSIA/ZOSIA/*
$ cd $ORACLE_HOME/dbs
$ vi initJASIO.ora
db_name=JASIO
sga_target=600M
SQL> startup nomount
Wyszukujemy pliku backupu bazy
$ cd /BACKUP/
$ ls -ltr
$ rlwrap rman target / nocatalog
> RESTORE SPFILE FROM '/BACKUP/db_0no3t9pt_1_1';
Uruchomienie bazy z spfilea wyciągniętego z backupu
> shutdown immediate
> startup nomount
> show parameter spfile
/ORABIN/db/11.2.0.1/dbs/spfileJASIO.ora
Wyciągnięcie z backupu controlfile
$ ls -ltr /BACKUP
$ rlwrap rman target / nocatalog
> RESTORE CONTROLFILE FROM '/BACKUP/ctrl_0to3t9s0_1_1';
> alter database mount;
> list backup;
List of Archived Logs in backup set 21
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- ------------------- ---------- ---------
1 2 1251808 2013-03-07 04:47:23 1251852 2013-03-07 04:47:57
Ostatnim backupen archiveloga jest Thrd 1 Seq 2, czyli w poleceniu ‘set UNTIL SEQUENCE’ musimy dodać +1 tak aby zrealizować aplikację tego ostatniego archiveloga.
Właściwe odtwarzanie i dokręcanie.
run {
set UNTIL SEQUENCE 3;
restore database;
recover database;
}
> alter database open resetlogs;
lub
restore database UNTIL SEQUENCE 3;
recover database UNTIL SEQUENCE 3;
alter database open resetlogs;
Wyciągnięcie starego pliku controlfile i rejestracja w nim pozostałych backupów
$ rlwrap sqlplus / as sysdba
> shutdown abort
> startup nomount
Wybieramy controlfile automatycznie utworzony podczas backupu bazy danych, pliki zaczynające się od db_
$ ls -ltr /BACKUP
$ rlwrap rman target / nocatalog
> RESTORE CONTROLFILE FROM '/BACKUP/db_0no3t9pt_1_1';
> alter database mount;
> list backup;
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ------------------- ----
1 Full 1251755 2013-03-07 04:45:38 /ZOSIA/ZOSIA/system01.dbf
2 Full 1251755 2013-03-07 04:45:38 /ZOSIA/ZOSIA/sysaux01.dbf
3 Full 1251755 2013-03-07 04:45:38 /ZOSIA/ZOSIA/undotbs01.dbf
4 Full 1251755 2013-03-07 04:45:38 /ZOSIA/ZOSIA/users01.dbf
Backup ten musi zostać uspójniony, a baza nie zna archivelogów którymi mogłaby to zrobić.
$ rlwrap rman target / nocatalog
> CATALOG START WITH '/BACKUP/';
I dopiero teraz komenda na odtwarzania
run {
set UNTIL SEQUENCE 3;
restore database;
recover database;
alter database open resetlogs;
}
Przejście z bazą na ASM (lub dowolna zmiana podstawowego miejsca na którym jest baza danych)
Gdzie znajdują się pliki bazy danych
$ rlwrap sqlplus / as sysdba
> select FILE_NAME from dba_data_files;
/ZOSIA/ZOSIA/users01.dbf
/ZOSIA/ZOSIA/undotbs01.dbf
/ZOSIA/ZOSIA/sysaux01.dbf
/ZOSIA/ZOSIA/system01.dbf
$ rlwrap rman target / nocatalog
> BACKUP AS COPY DATABASE FORMAT '+DATA';
SQL> shutdown immediate;
SQL> startup mount
RMAN> switch database to copy;
RMAN> recover database;
RMAN> alter database open;
$ rlwrap sqlplus / as sysdba
> select FILE_NAME from dba_data_files;
+DATA/jasio/datafile/users.276.809418967
+DATA/jasio/datafile/undotbs1.274.809418941
+DATA/jasio/datafile/sysaux.273.809418895
+DATA/jasio/datafile/system.272.809418845
Przejście z redo na ASM
- utwórz nowe pliki redo na ASM, skasuj stare
Przejście z controlfile na ASM
> shutdown immediate
> show parameter control_files
control_files /KASIA/KASIA/control01.ctl, /KASIA/KASIA/control02.ctl
> alter system set control_files = '+DATA/jasio/control01.ctl' scope=spfile;
> shutdown immediate
> startup nomount
RMAN> restore controlfile to '+DATA/jasio/control01.ctl' from '/KASIA/KASIA/control01.ctl';
> shutdown immediate
> startup
Przejście z spfile na ASM
> create pfile from spfile;
> create spfile='+DATA/jasio/spfileJASIO.ora' from
pfile='/ORABIN/db/11.2.0.1/dbs/initJASIO.ora';
> shutdown immediate
$ cd $ORACLE_HOME/dbs
$ mv spfileJASIO.ora spfileJASIO.ora.bck2
$ mv initJASIO.ora initJASIO.ora.bck2
$ echo "SPFILE='+DATA/jasio/spfileJASIO.ora'" > $ORACLE_HOME/dbs/initJASIO.ora
> startup
Przeniesienie plików przestrzeni tymczasowej
> select FILE_NAME from dba_temp_files;
/JASIO/JASIO/temp01.dbf
> alter database tempfile '/JASIO/JASIO/temp01.dbf' drop including datafiles;
> ALTER TABLESPACE "TEMP" ADD TEMPFILE '+DATA' SIZE 50M;
## Instalacja RAC ## ### Przygotowanie systemu operacyjnego ###
Wyłączenie SE Linux
# vi /etc/selinux/config
SELINUX=disabled
Wyłączenie firewall
# service iptables stop
# chkconfig iptables off
Instalacja synchronizacji czasu
# yum install ntp
# chkconfig --levels 235 ntpd on
# ntpdate 0.rhel.pool.ntp.org
# service ntpd start
Aby uniknąć następującego błędu podczas instalacji bazy:
PRVF-5439 : NTP daemon does not have slewing option "-x" set on node "rac1"
# service ntpd stop
# vim /etc/sysconfig/ntpd
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
to
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
# service ntpd start
Instalacja wymaganych pakietów systemowych dla OEL6 pod bazę 11g
# yum install oracle-rdbms-server-11gR2-preinstall xorg-x11-apps
# yum install wget unzip libX11-devel which libXScrnSaver telnet
Ciekawe narzędzia monitorujące
# iftop
# nmon
ASMlib OEL6
# yum install oracleasm-support
Zaloguj się jako użytkownik oracle (w innym oknie) i wyświetl grupę oracle
$ id -a
$ id -a
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)
Czyli wiemy, że:
nazwa użytkownika: oracle
nazwa grupy: oinstall
# /etc/init.d/oracleasm configure
### Konfiguracja udziału dzielonego dla ASM ###
Dysk dzielony został udostępniony dla dwóch serwerów na tych samuch zasadach poprzez interfejs iscsi.
Widoczny w katalogu
# cd /dev/disk/by-path
# ls -l
lrwxrwxrwx 1 root root 9 Mar 3 22:51 ip-192.168.1.49:3260-iscsi-iqn.2006-01.com.openfiler:tsn.user1-lun-0 -> ../../sdc
Utwórz partycję na dysku (tylko na jednym serwerze)
# fdisk /dev/sdc
Naznacz partycję tagiem ASMLiba (tylko na jednym serwerze)
# /etc/init.d/oracleasm deletedisk /dev/sdc1
# /etc/init.d/oracleasm createdisk DATA1 /dev/sdc1
Na każdym z nodów:
# partprobe
# /usr/sbin/oracleasm scandisks
# /usr/sbin/oracleasm listdisks
### Instalacja GI - Grid Infrastructure ### Instalację wykonujemy z jednego serwera, sam proces instalacji przeprowadza ją na obu serwerach.
Potwierdź poprawność konfiguracji
$ cat /etc/hosts
Upewnij się, adresy IP są rozwiązywane prawidłowo
$ ping userx1
$ ping userx1-priv
$ ping userx2
$ ping userx2-priv
$ nslookup (ip publiczny obu nodów)
$ nslookup (adres scan)
$ nslookip (ip vip obu nodów)
Zaloguj się jako użytkownik oracle na pierwszy z nodów na graficzne środowisko serwera VNC.
$ cd /unziped/oracle/oracle11.2.0.3_linux_SE_EE_x86-64/grid
$ ./runInstaller
Błędy:
**Task resolve.conf integrity**
PRVF-5636 : The DNS response time for an unreachable node exceeded
"15000" ms on following nodes
MOS:
- PRVF-5637 : DNS response time could not be checked on following nodes [ID 1480242.1]
Verified that the /etc/resolv.conf is same across the nodes and nslookup for all names from all the nodes worked fine, and nslookup of unknown-not-reachable-node is fast:
$ time nslookup unknown-not-reachable-node
At the time of this writing, bug 16038314 is still being worked by Development, the workaround is to verify /etc/resolv.conf and nslookup manually.
**Instalacja ręcznie pakietu cvu**
Wykonać na każdym węźle:
# cd /unziped/oracle/oracle11.2.0.3_linux_SE_EE_x86-64/grid/rpm
# rpm -i cvuqdisk-1.0.9-1.rpm
### Instalacja bazy danych RAC ### Zaloguj się jako użytkownik oracle na pierwszy z nodów na graficzne środowisko serwera VNC.
$ cd /unziped/oracle/oracle11.2.0.3_linux_SE_EE_x86-64/database
$ ./runInstaller
### Deinstalacja oprogramowania klastrowego i bazy ### W tym celu musimy lokalnie podiadać deinstalatora binariów oraclowych\
Zaloguj się jako użytkownik oracle na hoście na którym chcesz odinstalować binaria.
$ mkdir /u01/inst
$ cp /mirror/oracle/oracle11.2.0.3_linux_SE_EE_x86-64/p10404530_112030_Linux-x86-64_7of7.zip /u01/inst/
$ cd /u01/inst/
$ unzip p10404530_112030_Linux-x86-64_7of7.zip
$ cd deinstall
$ ./deinstall -home /u01/app/oracle/product/11.2.0/dbhome_1
$ ./deinstall -home /u01/app/11.2.0/grid
rm -Rf /etc/ora*
rm -Rf /tmp/*
rm -Rf /var/tmp/*
rm -Rf /u01/app
rm -f /etc/init.d/init.ohasd /etc/init.d/ohasd
chown oracle:oinstall /u01
reboot
### Instalacja bazy danych ### Zaloguj się jako użytkownik oracle na pierwszy z nodów
$ cd /u01/app/oracle/product/11.2.0/dbhome_1/bin
$ ./dbca
Dodaj do /etc/oratab na node1
RAC1:/u01/app/oracle/product/11.2.0/dbhome_1:N
Dodaj do /etc/oratab na node2
RAC2:/u01/app/oracle/product/11.2.0/dbhome_1:N
Ustaw środowisko na instancję i włącz tryb archivelog
> alter system set log_archive_dest_1='location=+DATA' scope=both;
> alter system set cluster_database=false scope=spfile sid='RAC1';
$ srvctl stop database -d RAC
$ sqlplus / as sysdba
> startup mount
> alter database archivelog;
> alter system set cluster_database=true scope=spfile sid='RAC1';
> shutdown immediate
$ srvctl start database -d RAC
### Backup na ASM ###
$ rlwrap rman target / nocatalog
> BACKUP DATABASE FORMAT "+DATA";
> BACKUP ARCHIVELOG ALL FORMAT '+DATA';
> BACKUP CURRENT CONTROLFILE FORMAT '+DATA';
$ rlwrap sqlplus / as sysdba
> create table skarby (nazwa varchar2(30), value number);
> insert into skarby values ('dobrze',100);
> commit;
> select sysdate from dual;
2013-03-08 06:43:01
> insert into skarby values ('zle',100);
> commit;
> select * from skarby;
NAZWA VALUE
------------------------------ ----------
dobrze 100
zle 100
Decyduje się, że dodanie wiersza 'zle' było katastrofą i chcę odtworzyć bazę na chwilę po dodaniu pierwszego wiersza, czyli 2013-03-08 06:43:01
### RAC: Procedura odzyskania z backupu na konkretny punkt w czasie ###
Jeżeli zajdzie potrzeba odzyskania stanu bazy z backupu na konkretny punkt w czasie wykonaj następujące punkty:
Uruchom tylko jedną instancję bazy danych
> alter system set cluster_database=false scope=spfile sid='RAC1';
$ srvctl stop database -d RAC
$ sqlplus / as sysdba
> startup mount
Ustaw środowisko bazodanowe i podłącz się do RMANa
$ NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
$ export NLS_DATE_FORMAT
$ NLS_LANG=AMERICAN_AMERICA.EE8ISO8859P2
$ export NLS_LANG
$ rman "target / nocatalog"
run {
SET UNTIL TIME '2013-03-08 06:43:01';
restore database;
recover database;
alter database open resetlogs;
}
Włącz drugą instancję
> alter system set cluster_database=true scope=spfile sid='RAC1';
> shutdown immediate
$ srvctl start database -d RAC
### Podstawowe komendy administracji RAC ###
Cala baza
$ srvctl stop database -d RAC
$ srvctl start database -d RAC
Jedna z instancji
$ srvctl stop instance -d RAC -i RAC1
$ srvctl stop instance -d RAC -i RAC2
$ srvctl start instance -d RAC -i RAC1
$ srvctl start instance -d RAC -i RAC2
Status klastra
Ustaw środowisko na ASM
$ . oraenv
ORACLE_SID = [RAC] ? +ASM1
$ crsctl stat res -t
## Instalacja RAC - screeny z instalacji ##
http://oracleinfrastructure.googlecode.com/files/installing_oracle.pdf