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

  1. Zamknij maszynę wirtualną
  2. 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

⚠️ **GitHub.com Fallback** ⚠️