Instalacja Oracle 10.2.0.4 na systemie Oracle Enterprise Linux 5 (jądro 2.6.18-164.el5)

Poniższa instalacja zakłada postawienie oracle w wersji 10 i zaaplikowanie pacza 10.2.0.4

64 bit czy 32 bit?

Uwaga- opisana instalacja wykonana jest na maszynie 64 bitowej, na systemie 64 bitowym. Instalacja oracla 32-bitowego na systemie 32 bitowym nie różni się specjalnie. Jedyny wyjątek stanowią oczywiście biblioteki 32 bitowe.

Sprawdzenie wersji jądra

uname -r

2.6.18-164.el5

Istalacja pakietów

Uwaga jeżeli nie będziemy mogli wystartować instalatora lub dostaniemy blędy w czasie linkowania - oznacza to że nie mamy potrzebnych pakietów. Jeżeli instalator zasygnalizuje brak pakietu zalecam zapuścić instalator na nowo. Wszystkie potrzebne pakiety są dostępne na płycie instalacyjnej, w katalogu Server.

Zmiana parametrów jądra

Pakiety 32 bitowe i 64 bitowe

Istalator wymaga niektórych pakietów w wersjach 32 bitowych.

su - root
rpm  -Uvh binutils-2.17.50.0.6-12.el5.x86_64.rpm

rpm  -Uvh gcc-4.1.2-46.el5.x86_64.rpm
          glibc-devel-2.5-42.x86_64.rpm
          libgomp-4.4.0-6.el5.x86_64.rpm
          glibc-headers-2.5-42.x86_64.rpm
          kernel-headers-2.6.18-164.el5.x86_64.rpm

rpm  -Uvh gcc-c++-4.1.2-46.el5.x86_64.rpm
          libstdc++-devel-4.1.2-46.el5.x86_64.rpm


rpm -Uvh  glibc-devel-2.5-42.x86_64.rpm


rpm -Uvh libXp-1.0.0-8.1.el5.i386.rpm -- konieczne do wystartowania instalatora

Stworzenie użytkownika Oracle oraz grup dba i oinstall

groupadd oinstall
groupadd dba

useradd -G dba oracle
useradd -G oinstall oracle

Tworzenie porzebnych katalogów

Musimy stworzyć dwa katalogi: w jednym zaistalowana zostanie aplikacja. Drugi katalog będzie używany przez instalator m.in. do zapisywania logów z instalacji (ora Inventory).

 mkdir -p /u01/app/oracle/product/10.2.0/db_1

Uruchomienie instalatora

Instalator odpalamy jako uzytkownik Oracle.

$ sciezka/do/skryptu/runInstaller

Istalacja pacza 10.2.0.4

Pacz 10.2.0.4 jest do ściągnięcia z metalinka. Jeżeli wierzyć komentarzowi na stronie oracla, to usuwa wiele istotnych błędów.

Ustawienie zmiennych systemowych

DOdajemy poniższe wpisy do pliku .bash_profile, znajdującym się w katalogu domowym użytkownika oracle:

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=test
export PATH=$PATH:$ORACLE_HOME/bin:/u01/app/oracle/product/10.2.0/db_1/bin

Stworzenie instancji za pomocą Database Creator Assistant (dbca)

Kreator odpalamy poleceniem dbca

Stworzenie instancji ręcznie

Żeby stworzyć instancję ręcznie, trzeba się trochę napracować. Po pierwsze:

Tworzymy plik pfile
test.__db_cache_size=536870912
test.__java_pool_size=33554432
test.__large_pool_size=218103808
test.__shared_pool_size=1358954496
test.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/test/adump'
*.background_dump_dest='/u01/app/oracle/admin/test/bdump'
*.compatible='10.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/test/control01.ctl',
'/u01/app/oracle/oradata/test/control02.ctl',
'/u01/app/oracle/oradata/test/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/test/cdump'
*.db_block_size=8192
*.db_cache_size=268435456
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='test'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4294967296
*.dispatchers='(PROTOCOL=TCP) (SERVICE=utfXDB)'
*.java_pool_size=16777216
*.job_queue_processes=10
*.large_pool_size=218103808
*.nls_language='POLISH'
*.nls_length_semantics='CHAR'
*.nls_territory='POLAND'
*.open_cursors=300
*.pga_aggregate_target=524288000
*.processes=400
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=445
*.sga_max_size=2154116608
*.sga_target=2154116608
*.shared_pool_size=1258291200
*.streams_pool_size=0
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/test/udump'

Umieszczamy plik pod nazwą inittest.ora w katalogu dbs. Następnie logujemy się lokalnie do sqlplusa na uprawnienia sysdba. Startujemy bazę w trybie nomount.

Poniżej przykładowy skrypt tworzący bazę. Wyszczególnione w skrypcie katalogi powinny być utworzone. W skrypcie nie powinno być pustych linii bo może to spowodować błąd ORA-01092: ORACLE instance terminated. Disconnection forced.

CREATE DATABASE test
USER SYS identified by test
USER SYSTEM identified by test
MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 2920
LOGFILE
  GROUP 1 '/u01/app/oracle/oradata/test/redo01.log'  SIZE 50M,
  GROUP 2 '/u01/app/oracle/oradata/test/redo02.log'  SIZE 50M,
  GROUP 3 '/u01/app/oracle/oradata/test/redo03.log'  SIZE 50M
CHARACTER SET UTF8
NATIONAL CHARACTER SET AL16UTF16
DATAFILE
'/u01/app/oracle/oradata/test/system01.dbf' SIZE 1500M 
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
sysaux datafile
'/u01/app/oracle/oradata/test/sysaux01.dbf' SIZE 450M 
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
UNDO TABLESPACE UNDOTBS1
DATAFILE '/u01/app/oracle/oradata/test/undotbs01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/u01/app/oracle/oradata/test/temp01.dbf'
SIZE 3000M REUSE AUTOEXTEND ON NEXT 1000M MAXSIZE 31744M ;

@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/javavm/install/initjvm

Po stworzeniu bazy uruchamiamy trzy skrypty. Catalog.sql tworzy widoki słownika, bez niego niemożliwe jest na przykład wykoanie importu za pomocą narzędzia imp.

Zarejestrowanie serwisu w listenerze

Do zdalnego połączenia do bazy można urzyć SID bazy lub nazwy serwisu udostępnionego przez listenera. Listener to program nasłuchujący na określnonym porcie (portach) i pozwalający nawiązać połączenie. Jak zarejestrować serwis w listenerze? Musimy wyedytować plik listener.ora

sqlplus sys@test as sysdba 

SQL*Plus: Release 10.2.x.x.x - Production on Cz Maj 13 13:17:06 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Proszę podać hasło:
 
ERROR:
ORA-01031: niewystarczające uprawnienia

Tworzenie pliku haseł

SQL> grant SYSDBA to sys;
grant SYSDBA to sys
*
BŁĄD w linii 1:
ORA-01994: GRANT nieudane: brak pliku haseł lub jest on wyłączony


orapwd file='$ORACLE_HOME/dbs/orapw$ORACLE_SID' password=pass

Powyższym poleceniem stworzyliśmy brakujący plik haseł. Plik haseł umożliwia uwierzytelnienie użytkownika kiedy baza jest w trybie nomount. Jak wiadomo hasła użytkowników przechowywane są w pliku kontrolnym. W trybie nomount nie ma do niego dostępu - tak więc niemożliwe byłoby zdalne zalogowanie się do bazy.

 show parameter remote_login

NAME                       TYPE        VALUE
-------------------------- ----------- ----------
remote_login_passwordfile  string      EXCLUSIVE

SQL> grant SYSDBA to sys;
grant SYSDBA to sys
*
BŁĄD w linii 1:
ORA-01999: pliku haseł nie można aktualizować w trybie SHARED
orapwd file=orapwSID password=hasło


SQL> grant SYSDBA to sys;

SQL>  select * from v$pwfile_users;

USERNAME                       SYSDBA          SYSOPER
------------------------------ --------------- ---------------
SYS                            TRUE            TRUE