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
Kod: Zaznacz cały
dd if=/mnt/tmpswap bs=1k count=10097156
chmod 600 /mnt/tmpswap
mkswap /mnt/tmpswap 10097156
swapon /mnt/tmpswap
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
Kod: Zaznacz cały
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard nofile 65536
oracle soft nofile 1024
Kod: Zaznacz cały
mkdir /opt/oracle
chown oracle /opt/oracle
chgrp oinstall /opt/oracle
Restart system :
Kod: Zaznacz cały
reboot
1)Logujemy sie na użytkownika oracle :
Kod: Zaznacz cały
su - oracle
Kod: Zaznacz cały
unzip linuxamd64_12c_database_1of2.zip
unzip linuxamd64_12c_database_2of2.zip
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'
Kod: Zaznacz cały
cd database
./runInstaller -ignoreSysPrereqs
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
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
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
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
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
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/
Kod: Zaznacz cały
su - oracle
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/
Kod: Zaznacz cały
init.ora
Kod: Zaznacz cały
initSID.ora
Kod: Zaznacz cały
cp init.ora initSID.ora
Kod: Zaznacz cały
db_name="SID"
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.
Kod: Zaznacz cały
create spfile from pfile='/opt/oracle/app/oracle/product/12.1.0.2.0/db_1/initSID.ora';
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
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;
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;
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.
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.
Kod: Zaznacz cały
reboot
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>
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))
)
)
Kod: Zaznacz cały
SQL> show parameter local_listener;
Jeżeli nie to musimy wykonać :
Kod: Zaznacz cały
alter system set local_listener='LISTENER_ORCL' scope=both;
Kod: Zaznacz cały
SQL>show parameter pfile
Kod: Zaznacz cały
SQL>CREATE SPFILE FROM PFILE;
Kod: Zaznacz cały
SQL>shutdown
Kod: Zaznacz cały
SQL>startup
Kod: Zaznacz cały
lsnrctl start LISTENER_ORCL
Na początku wyświetli :
Kod: Zaznacz cały
The listener supports no services
Kod: Zaznacz cały
lsnrctl stat
Kod: Zaznacz cały
Service "orcl" has 1 instance(s).
W razie uwag czy problemów proszę komentować, postaram sie odpowiedzieć, jeżeli będe znał odpowiedź.
Pozdrawiam,
sectt