martes, 8 de febrero de 2011

Instalando ORACLE 11G en ubuntu.

Guia de instalación de Oracle 11g en Debian/Ubuntu

Puedes descargarte el instalador de Oracle desde su página de descargas. Yo voy a instalar sobre un Ubuntu 64 por lo que me bajaré el instalador linux 64 bit. Tu bajate el que se ajuste a tu arqutectura.
Tras descargar y descomprimir, vamos a empezar.

Presupuestos

  1. La instalación la hará el usuario root u Oracle cuando se especifique
  2. Tienes al menos 500 MB de ram
  3. Tienes al menos 1 GB de swap

Preparando el sistema

1. Crear el usuario y grupo de oracle:
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd nobody
/usr/sbin/useradd -m -g oinstall -G dba -p passwd -d /home/oracle oracle
2. Creamos ciertos directorios y le asignamos permisos
mkdir -p /u01/app/oracle
mkdir -p /u02/oradata
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u02
3. Parámetros del kernel
....  



Oracle Installation:


Oracle Software Prerequisites


Install required packages


sudo su -

apt-get install build-essential
apt-get install libaio1
apt-get install libaio-dev
apt-get install unixODBC
apt-get install unixODBC-dev
apt-get install pdksh
apt-get install expat
apt-get install sysstat
apt-get install libelf-dev
apt-get install elfutils
apt-get install lsb-cxx
To avoid error "linking ctx/lib/ins_ctx.mk...":
cd /tmp
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-17ubuntu1_amd64.deb
dpkg-deb -x libstdc++5_3.3.6-17ubuntu1_amd64.deb ia64-libs
cp ia64-libs/usr/lib/libstdc++.so.5.0.7 /usr/lib64/
cd /usr/lib64/
ln -s libstdc++.so.5.0.7 libstdc++.so.5

cd /tmp
wget http://mirrors.kernel.org/ubuntu/pool/universe/i/ia32-libs/ia32-libs_2.7ubuntu6.1_amd64.deb
dpkg-deb -x ia32-libs_2.7ubuntu6.1_amd64.deb ia32-libs
cp ia32-libs/usr/lib32/libstdc++.so.5.0.7 /usr/lib32/
cd /usr/lib32
ln -s libstdc++.so.5.0.7 libstdc++.so.5

cd /tmp
rm *.deb
rm -r ia64-libs
rm -r ia32-libs

To avoid error invoking target 'idg4odbc' of makefile:
ln -s /usr/bin/basename /bin/basename

To avoid errors when executing the post-install root.sh script:
ln -s /usr/bin/awk /bin/awk


Kernel Parameters


sudo su -

Make a backup of the original kernel configuration file:
cp /etc/sysctl.conf /etc/sysctl.original

Modify the kernel parameter file


echo "#">> /etc/sysctl.conf
echo "# Oracle 11gR2 entries">> /etc/sysctl.conf
echo "fs.aio-max-nr=1048576" >> /etc/sysctl.conf
echo "fs.file-max=6815744" >> /etc/sysctl.conf
echo "kernel.shmall=2097152" >> /etc/sysctl.conf
echo "kernel.shmmni=4096" >> /etc/sysctl.conf
echo "kernel.sem=250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range=9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default=262144" >> /etc/sysctl.conf
echo "net.core.rmem_max=4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default=262144" >> /etc/sysctl.conf
echo "net.core.wmem_max=1048586" >> /etc/sysctl.conf
echo "kernel.shmmax=2147483648" >> /etc/sysctl.conf

Note: kernel.shmmax = max possible value, e.g. size of physical memory in bytes
Load new kernel parameters
sysctl -p



Oracle Groups and Accounts


sudo su -

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

passwd oracle

groupadd nobody
usermod -g nobody nobody

id oracle
uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)
Make a backup of the original file:
cp /etc/security/limits.conf /etc/security/limits.conf.original

echo "#Oracle 11gR2 shell limits:">>/etc/security/limits.conf
echo "oracle soft nproc 2048">>/etc/security/limits.conf
echo "oracle hard nproc 16384">>/etc/security/limits.conf
echo "oracle soft nofile 1024">>/etc/security/limits.conf
echo "oracle hard nofile 65536">>/etc/security/limits.conf



Oracle Directories


i.e. /u01/app for Oracle software and /u02/oradata for database files

mkdir -p /u01/app/oracle
mkdir -p /u01/app/oraInventory
mkdir -p /u02/oradata

chown oracle:oinstall /u01/app/oracle
chown oracle:oinstall /u01/app/oraInventory
chown oracle:oinstall /u02/oradata

chmod 750 /u01/app/oracle
chmod 750 /u01/app/oraInventory
chmod 750 /u02/oradata


Oracle Universal Installer


Login as the Oracle user - do not use 'su' command
ssh -Y oracle@server_address

See Tips below for mounting the Oracle installation source
/path_to_installer/runInstaller

Note: Select the "Ignore All" button at the Prerequisite Checks dialog.


 ********************************************************************************
*********************************************************************************



Guia de instalación de Oracle 11g en Debian/Ubuntu

Puedes descargarte el instalador de Oracle desde su página de descargas. Yo voy a instalar sobre un Ubuntu 64 por lo que me bajaré el instalador linux 64 bit. Tu bajate el que se ajuste a tu arqutectura.
Tras descargar y descomprimir, vamos a empezar.

Presupuestos

  1. La instalación la hará el usuario root u Oracle cuando se especifique
  2. Tienes al menos 500 MB de ram
  3. Tienes al menos 1 GB de swap

Preparando el sistema

1. Crear el usuario y grupo de oracle:
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd nobody
/usr/sbin/useradd -m -g oinstall -G dba -p passwd -d /home/oracle oracle
2. Creamos ciertos directorios y le asignamos permisos
mkdir -p /u01/app/oracle
mkdir -p /u02/oradata
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u02
3. Parámetros del kernel
Vamos a ver que los parámetros del kernel
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range
Te tiene que salir algo así como :
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 2147483648
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
Si no, como es mi caso, haz los cambios necesarios en /etc/sysctl.conf
vi /etc/sysctl.conf
#
# Lineas a añadir para la configuración de oracle
#
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
Y aplicas los cambios
/sbin/sysctl -p
Ahora vamos a establecer los límites. Para eso editamos el fichero /etc/security/limits.conf y ponemos dentro (incluidos los asteriscos):
*               soft    nproc   2047
*               hard    nproc   16384
*               soft    nofile  1024
*               hard    nofile  65536
Añade ( o descomenta ) la siguiente línea en : /etc/pam.d/login y /etc/pam.d/su
session    required     /lib/security/pam_limits.so
Dado que usamos Bash debemos añadir este código a /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
Instalamos los siguientes paquetes ya que tenemos una distribución x64
aptitude install build-essential ia32-libs libc6-dev-i386 libc6-dev   libaio-dev
y hacemos unos cuantos enlaces simbolicos. Oracle está pensado para funcionar con Red Hat y va a buscar las cosas a los directorios donde espera encontrarlos en Red Hat. Por lo que vamos a ponerle las cosas faciles.
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename 
ln -s /etc /etc/rc.d                  
Por fin nos cambiamos de usuario para ser oracle
Y, al menos en mi caso, cambiamos de usuario significa que salimos de la sesion actual y nos volvemos a logar como oracle. Si estas haciendo la instalacion en local vuelves a entrar en gnome o kde. Esto es porque si no no podrás hacer el export del display. Ya volveremos sobre este tema.
Vamos a poner algunas cosas en el ~/.bash_profile
ORACLE_BASE=/home/oracle/ORACLE
ORACLE_SID=test
export ORACLE_BASE ORACLE_SID
unset ORACLE_HOME
unset TNS_ADMIN
umask 022
Para poder exportar el DISPLAY. Cosa totalmente necesaraia para la instalción debemos haber entrado com el usuario oracle.
Abirmos una consola y ejectuamos
 xhost +
Para comprobar que todo ha ido bien puedes hacer exactamente la misma comprobación que hará Oracle:
/usr/X11R6/bin/xclock
Y se te abriá el reloj.
Recuerda: yo estoy haciendo la instalación en la misma máquina. y tengo un entorno gráfico ejecutando. He salido de la sesion del entrono grafico y he entrado como el usuario oracle que hemos creado un poco mas arriba.
ahora ya podemos empezar. Vamos al directorio dode hayamos descomprimido el instalador y:
./runInstaller -ignoreSysPrereqs

***************************************************************************
***************************************************************************
FUENTES:

http://en.juantxu.net/doku.php/ora/Instal_11g
http://forums.oracle.com/forums/thread.jspa?threadID=1115155&tstart=0

***************************************************************************

3 comentarios:

Alexander Calderón dijo...

Para los que no encuentran como iniciar el servicio en UBUNTU de forma automatica, si es que asi lo quieren.

There is almost for sure that you will hope to start your Oracle automatically during system boot. Even you may turn this feature off, but the init.d script is very useful, too. First of all, specify which database instant will be started together with Oracle. Edit /etc/oratab as below:
AL32UTF8:/u01/app/oracle/product/11.1.0/db_1:Y
Next, create init.d script as /etc/init.d/oracle:
#!/bin/bash
#
# Run-level Startup script for the Oracle Instance and Listener
#
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance

ORA_HOME="/u01/app/oracle/product/11.1.0/db_1"
ORA_OWNR="oracle"

# if the executables do not exist -- display error

if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi

# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display

case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/dbstart $ORA_HOME"
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"

#Optional : for Enterprise Manager software only
su - $ORA_OWNR -c "$ORA_HOME/bin/emctl start dbconsole"

touch /var/lock/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "

#Optional : for Enterprise Manager software only
su - $ORA_OWNR -c "$ORA_HOME/bin/emctl stop dbconsole"

su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNR -c "$ORA_HOME/bin/dbshut $ORA_HOME"
rm -f /var/lock/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0
Permission is very important, too:
chmod 755 /etc/init.d/oracle
Finally, install the script so Oracle will start during system bootup:
update-rc.d oracle defaults 99 01

Alexander Calderón dijo...

Si no quieren levantar el servicio al iniciar Ubuntu, pues no siempre lo usaran y por el hecho que pone muy lenta la maquina basta con solo escribir esto en la consola:

su - oracle -c "/home/oracle/ORACLE/product/11.2.0/dbhome_1/bin/dbstart /home/oracle/ORACLE/product/11.2.0/dbhome_1"
su - oracle -c "/home/oracle/ORACLE/product/11.2.0/dbhome_1/bin/lsnrctl start"

export ORACLE_UNQNAME=ora
su - oracle -c "/home/oracle/ORACLE/product/11.2.0/dbhome_1/bin/emctl start dbconsole"

la chica de tus sueños dijo...

Hola, Alejandro.
Veo que éste blog es bastante antiguo... Lo que pasa es que tengo Ubuntu 13.10, instalé Oracle Database 11g Express Edition, se ha creado el usuario oracle. ahora, cuando intento arracnarlo, me da error "Problema al cargar la página", http://localhost:8080/apex/f?p=4950. No sé cómo solucionarlo.... ¿Me podrías hechar una mano?

Gracias de todas formas ;)