Krótki opis instalacji Oracle 11g w systemie RHEL 5. Punkt po punkcie tak jak to wyglądało w mojej sytuacji.
- Wyłączenie SELinuksa.
SELinux jakoś do końca nie chciał mi działać z Oraclem. Uparcie nie pozwalał na otwarcie niektórych plików i na uruchomienie bazy danych. Ponieważ moja maszyna nie jest narażona za bardzo na kontakt ze światem zewnętrznym, to po prostu go wyłączyłem na stałe. Najłatwiej to zrobić poprzez edycję pliku
/etc/sysconfig/selinux
i zmianę wartości parametruSELINUX
:6SELINUX=disabledTeraz pozostaje restart maszyny i i SELinux powinien już być wyłączony.
- Dodanie nazwy serwera do
/etc/hosts
.Należy się upewnić, że można prawidłowo rozwiązać nazwę serwera, najprościej poprzez umieszczenie odpowiedniego wpisu w pliku
/etc/hosts
. W moim przypadku wyglądała ona tak:4192.168.122.50 oracle - Konfiguracja parametrów jądra (wg dokumentacji)
Można także skonfigurować odpowiednie parametry jądra systemu. Ja pominąłem tek krok, ale dokumentacja go zaleca, więc można do pliku
/etc/sysctl.conf
dodać takie linie:kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144Należy pamiętać o tym, aby parametr
kernel.shmmax
nie był większy niż połowa dostępnej ilości pamięci RAM. - Instalacja dodatkowych bibliotek.
W przypadku Oracla należy doinstalować kilka dodatkowych pakietów:
yum install binutils elfutils-libelf glibc glibc-common libgcc \
libstdc++ make elfutils-libelf-devel glibc-devel gcc gcc-c++ \
libstdc++-devel unixODBC libaio libaio-devel unixODBC-devel \
'sysstat*' 'compat-libstdc++*' - Konfiguracja użytkownika dla Oracla.
Dobrze jest uruchomić serwer na koncie oddzielnego użytkownika, którego należy utworzyć i odpowiednio skonfigurować.
Dodanie nowego konta wraz z odpowiednimi grupami:
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
useradd -g oinstall -G dba,oper,asmadmin oracle
passwd oracleUstawienie odpowiednich ograniczeń dla użytkownika
oracle
, w pliku/etc/security/limits.conf
należy umieścić takie linie:50
51
52
53oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536Należy się jeszcze upewnić, że w pliku
/etc/pam.d/system-auth
znajduje się taka linia:18session required pam_limits.soOstatnim krokiem będzie zdefiniowanie odpowiednich zmiennych środowiskowych dla użytkownika
oracle
w pliku/home/oracle/.bash_profile
:15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38export ORACLE_HOSTNAME=oracle
export ORACLE_BASE=/opt/oracle/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export ORACLE_SID=baza
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export ORA_OWNR="oracle"
export JAVA_HOME="/etc/alternatives/java_sdk"
export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=nativeNależy zwrócić w szczególności uwagę na miejsce, gdzie ma zostać umieszczona baza danych Oracle, nazwę serwera czy też użytkownika i odpowiednio je dostosować do własnych potrzeb.
- Utworzenie katalogu do instalacja.
Teraz jeszcze należy utworzyć odpowiedni katalog, w którym zostanie zainstalowana baza danych:
mkdir -p /opt/oracle
chown -R oracle:oinstall /opt/oracle
chmod -R 770 /opt/oracle - Instalacja bazy danych Oracle
Instalację bazy danych należy wykonać, będąc użytkownikiem
oracle
. Należy pamiętać, że w czasie instalacji będzie potrzebny dostęp do serwera X Window (jeżeli nie zadziała to przy użyciu komendysu
lubsudo
zawsze można zalogować się na serwer przy użyciu poleceniassh -X oracle@localhost
).Jako użytkownik
oracle
należy uruchomić skryptrunInstaller
. Sprawdzi on środowisko i następnie uruchomi właściwy instalator graficzny. Podczas niego należy odpowiedzieć na szereg pytań, poniżej zrzuty ekranu z mojej instalacji:
Jednym z ostatnich kroków instalacji jest konieczność uruchomienia dwóch skryptów:
orainstRoot.sh
orazroot.sh
.Należy pamiętać, że skrypty te należy uruchomić na uprawnieniach użytkownika
root
:# /opt/oracle/oraInventory/orainstRoot.sh
Changing permissions of /opt/oracle/oraInventory to 770.
Changing groupname of /opt/oracle/oraInventory to oinstall.
The execution of the script is complete# /opt/oracle/oracle/product/11.1.0/db_1/root.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /opt/oracle/oracle/product/11.1.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
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.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions. - Automatyczny start instancji bazy danych
W pliku
/etc/oratab
należy zdefiniować, jakie instancje bazy danych będą automatycznie uruchamiane podczas startu bazy danych. W ostatniej kolumnie należy zmienićN
naY
:1baza:/opt/oracle/oracle/product/11.1.0/db_1:YTeraz czas na utworzenie odpowiednich plików startowych:
/etc/sysconfig/oracle
– definicja zmiennych środowiskowych, używanych w skryptach startowych1
2
3ORACLE_BASE=/opt/oracle/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
ORACLE_OWER="oracle"/etc/init.d/oracle
– skrypt, który umożliwia uruchomienie i zatrzymanie bazy danych1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52#!/bin/bash
#
# /etc/rc.d/init.d/oracle
#
# chkconfig: 345 98 02
# description: Uruchomienie bazy danych Oracle
# Source function library.
. /etc/init.d/functions
if [ -f /etc/sysconfig/oracle ] ; then
. /etc/sysconfig/oracle
fi
start() {
echo "Starting Listener: "
su - $ORACLE_OWER -c "$ORACLE_HOME/bin/lsnrctl start"
echo "Starting Oracle Database: "
su - $ORACLE_OWER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
return 0
}
stop() {
echo "Shutting down Oracle Database: "
su - $ORACLE_OWER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
echo "Starting Listener: "
su - $ORACLE_OWER -c "$ORACLE_HOME/bin/lsnrctl stop"
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
;;
esac
exit $?/etc/init.d/em
– skrypt, który pozwala na uruchomienie Enterprise Managera1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48#!/bin/bash
#
# /etc/rc.d/init.d/em
#
# chkconfig: 345 99 01
# description: Uruchomienie Enterprise Managera
# Source function library.
. /etc/init.d/functions
if [ -f /etc/sysconfig/oracle ] ; then
. /etc/sysconfig/oracle
fi
start() {
echo "Starting Enterprise Manager: "
su - $ORACLE_OWER -c "$ORACLE_HOME/bin/emctl start dbconsole"
return 0
}
stop() {
echo "Shutting down Enterprise Manager: "
su - $ORACLE_OWER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
;;
esac
exit $?
Teraz trzeba skonfigurować system, aby uruchamiał skrypty podczas startu:
chmod +x /etc/init.d/oracle /etc/init.d/em
chkconfig --add oracle
chkconfig --add emPo tych krokach baza danych oraz EM będą uruchamiane podczas startu serwera. Oczywiście można także uruchomić te aplikacje od razu:
1service oracle start; service em start