Oracle 11gR2 στο Ubuntu 11.04 64bit

Από Hellug Wiki
---> Αυτό το άρθρο είναι παλιό! <---
Είναι πιθανό ότι τα πράγματα έχουν αλλάξει και υπάρχει πλέον καλύτερος τρόπος για να πετύχει κανείς το ίδιο αποτέλεσμα.
Oracle 11gR2
Κατηγορίαβάση δεδομένων
Άδεια χρήσηςOTN
Websitehttp://www.oracle.com/

Αυτό το άρθρο περιγράφει την εγκατάσταση της βάσης δεδομένων Oracle, έκδοση 11gR2, στο Ubuntu 11.04 64bit.

Αν έχετε αρκετή μνήμη, μπορείτε να δοκιμάσετε τα παρακάτω σε μια εικονική μηχανή, πχ με το VirtualBox.

Αρχεία εγκατάστασης

Κατεβάστε τα αρχεία εγκατάστασης από την Oracle, βρίσκονται στα Downloads --> Database 11g και είναι περίπου 2gb.

Προφανώς επιλέγετε την έκδοση Linux x86-64!

Για να ενεργοποιηθούν οι σύνδεσμοι download πρέπει να αποδεχτείτε την άδεια χρήσης. Η άδεια επιτρέπει την ελεύθερη χρήση του για "developing, testing, prototyping and demonstrating your application" μόνο.
Η εγκατάσταση σε Ubuntu δεν υποστηρίζεται από την Oracle.

Προκαταρκτικά

Ανοίξτε μια κονσόλα και εγκαταστήστε κάποια απαραίτητα πακέτα:

sudo apt-get install libaio1 libaio-dev unixODBC unixODBC-dev expat sysstat libelf-dev elfutils lsb-cxx pdksh libstdc++5 ia32-libs rlfe

Για να δουλεύουν τα άνω και κάτω βέλη στην sqlplus χρειάζεται να φτιάξετε ένα alias, πχ:

echo "alias sqlplus='rlfe sqlplus'" >> ~/.bashrc
source ~/.bashrc

Για την εγκατάσταση απαιτούνται κάποιες εντολές σε συγκεκριμένες θέσεις. Δημιουργήστε τους παρακάτω συνδέσμους:

sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64
Χρησιμοποιήστε οπωσδήποτε την παράμετρο -s.

Δημιουργήστε ένα νέο προφίλ παραμέτρων πυρήνα δίνοντας την εντολή:

sudo cat - >> /etc/sysctl.d/60-oracle.conf

Μετά κάντε copy paste το παρακάτω κείμενο (απευθείας στην κονσόλα):

# Oracle 11gR2 kernel parameters
fs.aio-max-nr=1048576
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
kernel.sem=250 32000 100 128
kernel.shmmax=2147483648

Πατήστε ctrl-d για να γραφτεί το αρχείο.

Η παράμετρος kernel.shmmax δηλώνει μέγιστη δυνατή τιμή, πχ το μέγεθος της RAM.

Αν έχετε αμφιβολία, επαληθεύστε ότι γράφτηκε σωστά με την:

sudo cat /etc/sysctl.d/60-oracle.conf

Φορτώστε τις νέες παραμέτρους πυρήνα:

sudo service procps start

Επαληθεύστε:

$ sudo sysctl -q fs.aio-max-nr
-> fs.aio-max-nr = 1048576

Δημιουργήστε ομάδες και χρήστες:

sudo groupadd oinstall
sudo groupadd dba
sudo useradd -m -g oinstall -G dba oracle
sudo usermod -s /bin/bash oracle
sudo passwd oracle
sudo groupadd nobody
sudo usermod -g nobody nobody

Επαλήθευση:

sudo id oracle
-> uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)

Για να αλλάξετε τα όρια του λογαριασμού oracle κρατήστε πρώτα ένα αντίγραφο του παλιού αρχείου:

sudo cp /etc/security/limits.conf /etc/security/limits.conf.original

Μετά δώστε:

sudo cat - >> /etc/security/limits.conf

Κάντε copy paste τα ακόλουθα (απευθείας στην κονσόλα):

#Oracle 11gR2 shell limits:
oracle soft nproc 2048
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

Πατήστε ctrl-d για να γραφτεί το αρχείο.

Επαλήθευση:

sudo cat /etc/security/limits.conf

Προσθέστε τα εξής στο /etc/profile:

if [ "$USER" = oracle ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

Δημιουργήστε τους απαραίτητους φακέλους, πχ /u01/app για το λογισμικό της Oracle software και /u02/oradata για τα αρχεία της βάσης δεδομένων:

sudo mkdir -p /u01/app/oracle
sudo mkdir -p /u01/app/oraInventory
sudo mkdir -p /u02/oradata
sudo chown oracle:oinstall /u01/app/oracle
sudo chown oracle:oinstall /u01/app/oraInventory
sudo chown oracle:oinstall /u02/oradata
sudo chmod 750 /u01/app/oracle
sudo chmod 750 /u01/app/oraInventory
sudo chmod 750 /u02/oradata

Επιτρέψτε στο λογαριασμό oracle να χρησιμοποιεί sudo (για ευκολία):

usermod -G admin oracle

Εγκατάσταση

Προσαρτήστε με τον κατάλληλο τρόπο το μέσο εγκατάστασης, πχ ένα dvd στο φυσικό οδηγό ή ένα αρχείο iso σε εικονική μηχανή.

Ξεκινήστε το πρόγραμμα εγκατάστασης με:

runInstaller

Μπορεί να χρειαστεί αρκετή ώρα για να εμφανιστεί, μετά ακολουθήστε τα βήματα.

Επιλέξτε "Ignore All" στο Prerequisites Check.

Μετά την εγκατάσταση εκτελέστε το oraenv για να φτιάξετε τις μεταβλητές περιβάλλοντος:

/usr/local/bin/oraenv

Παράδειγμα μεταβλητών περιβάλλοντος:

ORACLE_SID=oracle_sid
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/dbhome_1/lib
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/u01/app/oracle/product/11.2.0/dbhome_1/bin

Κατά την εγκατάσταση μπορεί να σας εμφανίσει το παρακάτω λάθος:

Error in invoking target 'all_no_orcl' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oraInventory/logs/installActions2011-12-01_01-06-40PM.log' for details.

Αυτό οφείλεται στη χρήση hard links, βεβαιωθείτε ότι δώσατε ln -s πιο πάνω.

Εκτέλεση

Database Instance

Αφού έχετε φτιάξει τις μεταβλητές περιβάλλοντος δώστε:

sqlplus / as sysdba

Αυτό σας βγάζει στο prompt:

SQL>

Δοκιμάστε (μέσα στην sqlplus) να σηκώσετε το instance:

startup nomount

Θα πρέπει να απαντήσει το εξής (μαζί με κάποια επιπλέον νούμερα):

ORACLE instance started.

Δώστε (μέσα στην sqlplus):

select * from dual;

Θα επιστρέψει ένα record από τον πίνακα dual - συγχαρητήρια :)

Αν δε σηκωθεί το instance μπορεί να φταίει το /dev/shm. Το προεπιλεγμένο μέγεθος του /dev/shm είναι 4G. Αν θέσατε το MEMORY_TARGET στο "Initialization Parameter File" σε κάτι μεγαλύτερο από 4G, θα λάβετε μήνυμα λάθους όταν προσπαθήσετε να σηκώσετε το instance. Πρέπει να ορίσετε με το χέρι το κατάλληλο μέγεθος του /dev/shm στο αρχείο /etc/fstab, πχ για 8 gigabytes:

tmpfs /dev/shm tmpfs size=8g 0 0

Αν έχει σηκωθεί κανονικά το instance, τότε σε μια κονσόλα καλέστε το listener configuration tool:

netca

Αφού φτιάξετε το listener καλέστε το database creation assistant:

dbca

Αν λάβετε το μήνυμα λάθους "/bin/rpm: not found", πρέπει να φτιάξετε το:

ln -s /usr/bin/rpm /bin/rpm

Όταν τελειώσει η δημιουργία της βάσης, σημειώστε τη διεύθυνση (url) του Enterprise Manager και ανοίξτε την στο browser.

Μπορείτε να σταματήσετε το instance (μέσα στην sqlplus) με:

shutdown

Βγαίνετε από την sqlplus με:

quit

SqlDeveloper

Ξεκινήστε τον SqlDeveloper πχ με:

/u01/app/oracle/product/11.2.0/dbhome_1/sqldeveloper/sqldeveloper.sh

Μάλλον πρέπει να φτιάξετε κάποιο alias για αυτό!

Αν οι γραμματοσειρές φαίνονται πολύ μικρές, προσθέστε το παρακάτω στο αρχείο ide.properties (χρησιμοποιήστε την εντολή find στο φάκελο ~/.sqldeveloper):

Ide.FontSize=14

Αν οι γραμματοσειρές του SqlDeveloper δεν είναι anti-aliased, προσθέστε το παρακάτω στην αρχή του αρχείου $ORACLE_HOME/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf

AddVMOption -Dswing.aatext=true

Εναλλακτικά μπορείτε να προσθέσετε το παρακάτω στο .bashrc σας για JDK 1.5:

export _JAVA_OPTIONS='-Dswing.aatext=true'

Για JDK 1.6:

export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'

Warehouse Builder

Ξεκινήστε τον Warehouse Builder πχ με:

/u01/app/oracle/product/11.2.0/dbhome_1/owb/bin/owb

Μάλλον πρέπει να φτιάξετε κάποιο alias και για αυτό!

Αν οι γραμματοσειρές του Warehouse Builder είναι πολύ μικρές, προσθέστε το παρακάτω στο αρχείο ide.properties (χρησιμοποιήστε την εντολή find στο φάκελο ~/.owb):

Ide.FontSize=14