Instalacja Oracle 12c na Slackware64 14.1 (Current)

W tym miejscu zapraszamy Was do współpracy. Czekamy na propozycje, sugestie i rady.
Moderatorzy zatroszczą się o to, by najlepsze teksty trafiły do FAQ.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
sectt
Użytkownik
Posty: 139
Rejestracja: 2006-06-04, 12:15
Lokalizacja: Kraków

Instalacja Oracle 12c na Slackware64 14.1 (Current)

Post autor: sectt »

Instalacja Oracle 12c na Slackware64 14.1 (Current)

Witam, chciałbym odświeżyć stary wątek.
Od razu chciałbym zaznaczyć, że każda instalacja może być inna w zależności od zainstalowanych zależności.
Moja instalacja Slackware current posiada zainstalowane pakiety multilib od aliena.

Oracle 12c można zainstalować jako kontener lub zwykłą baze.
Moja instrukcja przedstawia instalacje zwykłej bazy.

Ściągamy instalator z strony producenta.

Instalacja

Jako root dodajemy wykonujemy :
1)Dodajemy grupy i użytkownika do systemu:

Kod: Zaznacz cały

groupadd dba
groupadd oinstall
adduser oracle
usermod -g oinstall -G dba oracle
2)Instalator prosi o posiadanie swapa, więc należy go stworzyć na potrzeby instalacji (chyba, że go posiadasz - 10G):

Kod: Zaznacz cały

 dd if=/mnt/tmpswap bs=1k count=10097156
 chmod 600 /mnt/tmpswap
 mkswap /mnt/tmpswap 10097156
 swapon /mnt/tmpswap
3) Konfiguracja parametrów kernela i ustawień limitów:
Edytujemy/tworzymy /etc/sysctl.conf

Kod: Zaznacz cały

fs.file-max = 6815744 
kernel.shmall = 2097152 
kernel.shmmax = 2147483648                                                                                                                                                                   
kernel.shmmni = 4096 
kernel.sem = 250 32000 100 128 
net.core.rmem_default = 4194304 
net.core.rmem_max = 4194304 
net.core.wmem_default = 1048576 
net.core.wmem_max = 1048576 
fs.aio-max-nr = 1048576 
net.ipv4.ip_local_port_range = 9000 65500
Edytujemy/tworzymy /etc/security/limits.conf

Kod: Zaznacz cały

oracle soft nproc 2047 
oracle hard nproc 16384 
oracle hard nofile 65536 
oracle soft nofile 1024
4) Przygotowanie miejsca instalacji :

Kod: Zaznacz cały

 mkdir /opt/oracle
 chown oracle /opt/oracle
 chgrp oinstall /opt/oracle
Każdy może sobie wybrać swoje miejsce instalacji, należy tylko pamiętać, żeby ustawić to miejsce w zmiennych ale o tym za chwile.

Restart system :

Kod: Zaznacz cały

reboot
Można bawić sie ze zmienną DISPLAY lub po prostu zalogować sie na użytkownika oracle i uruchomić instalator jako oracle (wymagane sa X'y).
1)Logujemy sie na użytkownika oracle :

Kod: Zaznacz cały

su - oracle
2)Rozpakowywujemy ściągniętą bazke :

Kod: Zaznacz cały

unzip linuxamd64_12c_database_1of2.zip
unzip linuxamd64_12c_database_2of2.zip
2)Ustawiamy zmienne :

Kod: Zaznacz cały

export TMP=/tmp; 
export TMPDIR=$TMP; 
export ORACLE_HOSTNAME=twój hostname;
export ORACLE_UNQNAME=jakaś unikalna nazwa;
export ORACLE_BASE=/opt/oracle/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2/db_1;
export ORACLE_SID=twój sid;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export DB_CREATE_FILE_DEST='/opt/oracle/app/oracle/oradata'
3)Uruchamiamy instalator :

Kod: Zaznacz cały

cd database
./runInstaller -ignoreSysPrereqs
To chyba tyle jeżeli chodzi o łatwą część instalacji.
Instalator jest prosty i nie wymaga tłumaczeń, niestety(przynajmniej u mnie) instalator wywalił błędy.
Nie należy zamykać instalatora ponieważ, można wykonać jakieś operacje i nacisnąć 'retry'.

Troubleshooting

Każdy system jest inny i każdy może dostać inny błąd :razz:

Kod: Zaznacz cały

/bin/ld: cannot find -ljavavm12
collect2: error: ld returned 1 exit status
make: *** [/opt/oracle/app/oracle/product/12.1.0/dbhome_1/rdbms/lib/oracle] Error 1
Należy wykonać :

Kod: Zaznacz cały

cd $ORACLE_HOME/rdbms/lib
mv config.o config.o.bad

Kod: Zaznacz cały

cd $ORACLE_HOME/bin
relink all
Po wykonaniu relink dostałem :

Kod: Zaznacz cały

/opt/oracle/app/oracle/product/12.1.0/dbhome_1/bin/relink: line 168: 13794 Segmentation fault      $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/install/modmakedeps.pl $ORACLE_HOME $ORACLE_HOME/inventory/make/makeorder.xml > $CURR_MAKEORDER
writing relink log to: /opt/oracle/app/oracle/product/12.1.0/dbhome_1/install/relink.log
Należy wykonać :

Kod: Zaznacz cały

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk install
 
cd $ORACLE_HOME/network/lib
make -f ins_net_server.mk install

cd $ORACLE_HOME/sqlplus/lib
make -kf ins_sqlplus.mk install

cp $ORACLE_HOME/javavm/jdk/jdk6/lib/libjavavm12.a $ORACLE_HOME/lib/

cd $ORACLE_HOME/bin
relink all
Jak dobrze pamiętam to po ostatnim relink all też poleciał Segmentation fault ale tym razem instalator ruszył dalej.
Także klikamy 'retry'

Instalator po pomyślnej instalacji próbuje stworzyć baze danych(jeżeli oczywiście zaznaczyliśmy to w wcześniej), niestety i tu sie wywala na wykonywaniu sql'a - w logach nie było nic ? :/
Baze więc trzeba stworzyć ręcznie.

Tworzenie bazy

Ten krok możemy wykonać jedynie w przypadku pomyślnej instalacji bazy danych.

Trzeba stworzyć potrzebne katalogi.
Jako root wykonujemy:

Kod: Zaznacz cały

mkdir -p /opt/oracle/app/oracle/admin/orcl/dpdump
mkdir -p /opt/oracle/app/oracle/admin/orcl/adump
mkdir -p /opt/oracle/app/oracle/admin/orcl/pfile
mkdir -p /opt/oracle/app/oracle/oradata/orcl/controlfile
mkdir -p/opt/oracle/app/oracle/fast_recovery_area/orcl/controlfile/
chomd 775 /opt/oracle/app/oracle/
chown oracle:oinstall /opt/oracle/app/oracle/
Logujemy sie na użytkownika oracle :

Kod: Zaznacz cały

su - oracle
Pamiętajmy o ustawieniu zmiennych jeżeli nie mamy ich obecnie ustawionych.
Ja sobie dodałem wszystkie zmienne do pliku .bashrc i nie musze pamiętać o ich ustawianiu.

W katalogu :

Kod: Zaznacz cały

/opt/oracle/app/oracle/product/12.1.0.2.0/db_1/
powinniśmy znaleźć plik:

Kod: Zaznacz cały

init.ora
i

Kod: Zaznacz cały

initSID.ora
Jeżlli tego drugiego nie poasiadamy to kopiujemy :

Kod: Zaznacz cały

cp init.ora initSID.ora
i edytujemy.

Kod: Zaznacz cały

db_name="SID"
I wszędzie gdzie jest ścieżka do oracle ustawiamy na naszą lokalizacje gdzie zainstalowaliśmy oracle.

Logujemy sie do oracle jako sysdba :

Kod: Zaznacz cały

$ sqlplus
SQL*Plus: Release 12.1.0.1.0 Production on Sat Jul 18 08:46:42 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter user-name: /as sysdba
Connected to an idle instance.
Tworzymy spfile :

Kod: Zaznacz cały

create spfile from pfile='/opt/oracle/app/oracle/product/12.1.0.2.0/db_1/initSID.ora';
Startujemy oracle nie montując bazy danych :

Kod: Zaznacz cały

SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1336176640 bytes
Fixed Size 2288104 bytes
Variable Size 469763608 bytes
Database Buffers 855638016 bytes
Redo Buffers 8486912 bytes
Tworzymy baze danych :

Kod: Zaznacz cały

CREATE DATABASE orcl
USER SYS IDENTIFIED BY yourPass
USER SYSTEM IDENTIFIED BY yourPass
LOGFILE GROUP 1 ('/opt/oracle/app/oracle/log/redo01a.log','/opt/oracle/app/oracle/log/redo01b.log') SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/opt/oracle/app/oracle/log/redo02a.log','/opt/oracle/app/oracle/log/redo02b.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/opt/oracle/app/oracle/log/redo03a.log','/opt/oracle/app/oracle/log/redo03b.log') SIZE 100M BLOCKSIZE 512
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/opt/oracle/app/oracle/oradata/orcl/system01.dbf'
SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SYSAUX DATAFILE '/opt/oracle/app/oracle/oradata/orcl/sysaux01.dbf'
SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
DEFAULT TABLESPACE users
DATAFILE '/opt/oracle/app/oracle/oradata/orcl/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/opt/oracle/app/oracle/oradata/orcl/temp01.dbf'
SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
UNDO TABLESPACE undotbs1
DATAFILE '/opt/oracle/app/oracle/oradata/orcl/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
USER_DATA TABLESPACE usertbs
DATAFILE '/opt/oracle/app/oracle/oradata/orcl/usertbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
Opis wszystkich opcji znajdziemy w dokumentacji oracla
Wykonujemy sql'e :

Kod: Zaznacz cały

SQL>@/opt/oracle/app/oracle/product/12.1.0.2/db_1/rdbms/admin/catalog.sql;
SQL>@/opt/oracle/app/oracle/product/12.1.0.2/db_1/rdbms/admin/catproc.sql;

Kod: Zaznacz cały

SQL> alter user system identified by manager;
User altered.
SQL> alter user system account unlock;
User altered.
SQL>conn system/manager
Connected.
SQL>@/opt/oracle/app/oracle/product/12.1.0.2/db_1/sqlplus/admin/pupbld.sql;
Tworzymy przestrzenie tabel :

Kod: Zaznacz cały

SQL>CREATE TABLESPACE apps_tbs LOGGING
DATAFILE '/opt/oracle/app/oracle/oradata/orcl/apps01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
Tablespace created.
dla indexu :

Kod: Zaznacz cały

SQL> CREATE TABLESPACE indx_tbs LOGGING
DATAFILE '/opt/oracle/app/oracle/oradata/orcl/indx01.dbf'
SIZE 100M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
Tablespace created.
Restart komputera :

Kod: Zaznacz cały

reboot
Zalogujmy sie jako sysdba i spróbujmy wystartować baze:

Kod: Zaznacz cały

SQL> startup
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size                  2932632 bytes
Variable Size             721420392 bytes
Database Buffers          343932928 bytes
Redo Buffers                5455872 bytes
Database mounted.
Database opened.
SQL> 
Edytujmy teraz :
Tam gdzie jest ORCL trzeba ustawić swojego SID'a

Kod: Zaznacz cały

/opt/oracle/app/oracle/product/12.1.0.2.0/db_1/network/admin/tnsnames.ora

Kod: Zaznacz cały

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = ourHostname)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ourHostname)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

Kod: Zaznacz cały

/opt/oracle/app/oracle/product/12.1.0.2.0/db_1/network/admin/listener.ora

Kod: Zaznacz cały

LISTENER_ORCL =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ourHostname)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
    )
  )
Sprawdzamy czy mamy polinkowany listener w bazie :

Kod: Zaznacz cały

SQL> show parameter local_listener;
VALUE powinno wskazywać na LISTENER_ORCL
Jeżeli nie to musimy wykonać :

Kod: Zaznacz cały

alter system set local_listener='LISTENER_ORCL' scope=both;
Jeżeli sie będzie rzucał o spfile i nie będzie podanej wartości dla:

Kod: Zaznacz cały

SQL>show parameter pfile
to wykonujemy :

Kod: Zaznacz cały

SQL>CREATE SPFILE FROM PFILE;

Kod: Zaznacz cały

SQL>shutdown

Kod: Zaznacz cały

SQL>startup
Startujemy listener:

Kod: Zaznacz cały

lsnrctl start LISTENER_ORCL
Listener chwile wstaje, więc trzeba chwile poczekać.
Na początku wyświetli :

Kod: Zaznacz cały

The listener supports no services
ale po chwili po wykonaniu :

Kod: Zaznacz cały

lsnrctl stat
powinno nam sie wyświetlić :

Kod: Zaznacz cały

Service "orcl" has 1 instance(s).
To chyba tyle. Jak widać materiał jest dość obszerny i mam nadzieje że o niczym nie zapomniałem.
W razie uwag czy problemów proszę komentować, postaram sie odpowiedzieć, jeżeli będe znał odpowiedź.

Pozdrawiam,
sectt
ODPOWIEDZ