Instalación Oracle 10g en Linux

En este manual vamos a explicar paso a paso como realizar la instalación de Oracle 10g en un sistema operativo Linux (en este caso Fedora pero es igualmente valido para otras distribuciones como Suse, Ubuntu, Red Hat, etc). Repasaremos los requisitos de Hardware y Software necesarios y crearemos ciertas variables de entorno y scripts para poder iniciar de forma automatica este SGBD.

Si lo que necesitas es instalar Oracle 11g, visita este otro manual.

Requisitos Hardware

Para empezar nos loguearemos en el sistema como root. En este manual suponemos que queremos instalar ORACLE en la máquina local. Si no hemos accedido como root, abriremos una nueva terminal y entraremos el siguiente comando:

$ su – root 

Con este comando le estamos indicando al sistema que deseamos loguearnos como root y tener, de esta forma, todos los privilegios posibles sobre el sistema, también podemos acceder introduciendo únicamente $ su.

Debemos comprobar que tenemos los requisitos mínimos de hardware para instalar ORACLE, dichos requisitos son los siguientes:

  • 512 MB RAM
  • SWAP (aproximadamente dos veces la cantidad de RAM)
  • 400 MB de espacio libre en el directorio /tmp
  • Entre 1,5GB y 3GB de espacio en disco para el software ORACLE
  • 1,2GB para la base de datos

Para determinar la cantidad de memoria RAM que tenemos, introduciremos el siguiente comando:

# grep MemTotal /proc/meminfo
 

Si la cantidad de memoria que poseemos es menor a la necesaria deberemos instalar más antes de continuar.

Comprobaremos ahora la cantidad de espacio swap que tenemos configurado

# grep SwapTotal /proc/meminfo
 

Comprobaremos después el tamaño que tenemos disponible en el directorio /tmp

# df –k /tmp
 

Si el tamaño disponible es menor de 400MB, eliminaremos los archivos innecesarios que podamos tener en dicho directorio. Si aun así seguimos con problemas de espacio, seguiremos los siguientes pasos:

Usaremos el comando df –k para encontrar un sistema de ficheros con espacio suficiente. Entraremos los comandos mostrados a continuación para crear un directorio temporal donde verifiquemos que poseemos suficiente espacio libre:

$ su – root
# mkdir /punto_de_montaje/tmp
# chmod a+wr /punto_de_montaje/tmp
# exit
 

Ahora procederemos a inicializar las variables de entorno de dicho directorio:

$ TEMP=/punto_de_montaje/tmp
$ TMPDIR=/punto_de_montaje/tmp
export TEMP TMPDIR
 

La instalación de ORACLE tanto para la versión Enterprise, para la estándar o para la personalizada (la máxima es de 1,5 GB), nos obliga a tener mas de 2GB de espacio libre en nuestro disco duro, el comando # df nos ayudará a conocerlo.

Para comprobar que la arquitectura del procesador corresponde con la de la base de datos que hemos descargado introduciremos:

# grep "model name" /proc/cpuinfo
 

Este comando nos muestra el tipo de procesador, debemos verificar que el tipo de procesador concuerda con el tipo de procesadores para los que la base de datos descargada ha sido diseñada.

Requisitos Software

En el sistema necesitamos los siguientes paquetes y sus respectivas versiones, para comprobarlo podemos usar el comando:

# rpm –q paquete

Paquetes y versiones necesarias:

make-3.79.1
gcc-3.2.3-34
compat-db-4.0.14-5
compat-gcc-7.3-2.96.128
compat-gcc-c++-7.3-2.96.128
compat-libstdc++-7.3-2.96.128
compat-libstdc++-devel-7.3-2.96.128
openmotif21-2.1.30-8
setarch-1.3-1
 


Si alguno de los paquetes mencionados no se encuentra instalado o la versión instalada es inferior a la especificada, deberemos instalarlo mediante el comando:

# rpm –Uvh paquete
 

Comprobaremos también que la versión de nuestro Kernel es una de las recomendadas:

# uname –r
 

Creación de Grupos y Usuarios

Para instalar Oracle necesitamos tener grupos y usuarios específicos:

  • OSDBA: Necesitaremos tener el grupo en el que estarán los usuarios que tendrán privilegios de dba sobre la base de datos.
  • Usuario sin privilegios: Debemos tener un usuario sin privilegios (normalmente nobody)
  • OINSTALL: Éste es el grupo que tiene acceso a todo el software ORACLE instalado en el sistema, los usuarios oracle que creemos pertenecerán a este grupo.
  • Propietario del Software ORACLE: Usuario al cual pertenecerá todo el software oracle instalado durante el proceso de instalación, el nombre de usuario que escogeremos será oracle. Este usuario pertenecerá al grupo oinstall y opcionalmente podrá también pertenecer al grupo OSDBA como grupo secundario.

Crearemos ahora el Grupo de Inventario de Oracle y el grupo OSDBA (dba). Para crear dicho grupo introduciremos

# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
 

Una vez creado el grupo añadiremos el usuario que será el propietario de todo el software ORACLE que instalemos en el sistema.

# /usr/sbin/useradd –g oinstall –G dba oracle
 

En este comando, la opción –g especifica el grupo primario al que pertenecerá el usuario. La opción –G especifica los grupos secundarios a los que va a pertenecer. Una vez hemos creado el usuario y lo hemos añadido a sus grupos correspondientes, vamos a asignarle una contraseña para tener acceso al sistema. Para asignarle una contraseña usaremos el siguiente comando:

# passwd oracle
 


Verificaremos ahora que el usuario nobody existe. Para ello introduciremos el comando

# id nobody
 

Si existe, la salida por pantalla debe ser similar a la siguiente:

uid=99(nobody) gid=99(nobody) grupos=99(sobody)

De no existir este usuario lo crearemos de la misma forma que hemos creado el usuario oracle.

# /usr/sbin/useradd nobody
 

Configurando los parámetros del Kernel

Ahora vamos a verificar que todos los parámetros de nuestro Kernel son iguales a los mostrados en la siguiente tabla. Si el valor de cualquier parámetro es superior al requerido, lo dejaremos como está, en cambio, todos los que sean inferiores los modificaremos por los mostrados a continuación.

Parámetro

Valor

Archivo

semmsl
semmns
semopm
semmni
250
32000
100
128
/proc/sys/kernel/sem
shmall 2097152 /proc/sys/kernel/shmall
shmmax ½*RAM (bytes) /proc/sys/kernel/shmmax

shmmni

4096 /proc/sys/kernel/shmmni
file-max 65536 /proc/sys/fs/file-max
ip_local_port_range 1024 65000 /proc/sys/net/ipv4/ip_local_port_range

Para comprobarlos usaremos los siguientes comandos:

semmsl, semmns        # /sbin/sysctl –a | grep sem
semopm, semmni
shmall, shmmax        # /sbin/sysctl –a | grep shm
shmmni
file-max            # /sbin/sysctl –a | grep file-max
ip_local_port_range    # /sbin/sysctl –a | grep ip_local_port_range
 

Como hemos dicho antes, todos los parámetros inferiores a los mostrados serán modificados. Para ello abriremos el archivo /etc/sysctl.conf con cualquier editor y añadiremos las líneas necesarias, por ejemplo:

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
 

Todas las modificaciones que realicemos en este archivo persistirán una vez reiniciemos el sistema. Una vez realizadas las modificaciones haremos efectivos los cambios ejecutando:

# /sbin/sysctl –p
 


Revisaremos la salida que obtengamos por pantalla para comprobar que todos los cambios que hemos realizado han sido correctos.

Para mejorar el funcionamiento del software ORACLE en los sistemas Linux, es necesario hacer unas modificaciones en los limites de shell del usuario oracle. Para conseguir esto editaremos el fichero /etc/security/limits.conf y añadiremos al final las siguientes líneas.

oracle     soft nproc 2047
 
oracle    hard nproc 16384
 
oracle     soft nofile 1024
 
oracle     hard nofile 65536
 

A continuación modificaremos (o crearemos si no existe) el archivo /etc/pam.d/login y añadiremos la siguiente línea:

session required /lib/security/pam_limits.so


Modificaremos ahora la shell inicial por defecto del usuario oracle. Editaremos el archivo /etc/profile (/etc/profile.local en el caso de SuSe) y añadiremos:

if [ $USER = "oracle" ]; then

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

fi
 

Y seguiremos el mismo procedimiento añadiendo el siguiente código al archivo /etc/csh.login (/etc/csh.login.local para SuSe)


if ( $USER == "oracle" ) then

limit maxproc 16384

limit descriptors 65536

endif
 

Creación de Directorios

En este apartado deberemos crear los directorios donde se va a instalar ORACLE en nuestro sistema. Según la OFA (Optimal Flexible Architecture) se recomienda crear un path similar a:

/punto_de_montaje/app/oracle_user

En este ejemplo:

  1. punto_de_montaje es el directorio que contendrá el software oracle
  2. oracle_user es el nombre de usuario de Linux que será propietario del software ORACLE instalado en el sistema

Un ejemplo podría ser:

/u01/app/oracle

Procederemos a crear dichos directorios. Para seleccionar donde crear los directorios podemos usar el comando df –k para determinar el espacio libre que tenemos en cada sistema de ficheros.

Con la información que obtengamos por pantalla decidiremos dónde crear dichos directorios teniendo en cuenta que la instalación de ORACLE nos ocupará de 3GB a 4GB. Una vez decidido, los crearemos mediante:

mkdir –p /u01/app/oracle

chown –R oracle:oinstall /u01/app/oracle

chmod –R 775 /u01/app/oracle
 


Mas adelante, cuando configuremos el entorno de usuario oracle, relacionaremos la variable ORACLE_BASE con éstos directorios.

Configurando Entorno de usuario ORACLE

Para realizar la instalación de ORACLE deberemos loguearnos en el sistema como usuario oracle. Antes de eso, debemos configurar el entorno de dicho usuario.

1. Modificaremos la mascara predeterminada (umask) a 022

2. Configuración de las variables, ORACLE_BASE, ORACLE_SID


  • Accedemos al sistema como Oracle

$ su – oracle

  • Buscaremos la Shell por defecto
$ echo $SHELL
  • Abriremos el archivo de inicio de la shell de oracle
$ vi .bash_profile
  • Modificamos o añadimos la siguiente línea
umask 022
  • Ejecutamos el script de inicio de la shell
$ ./.bash_profile
  • Entramos los siguientes comandos para inicializar las variables ORACLE

ORACLE_BASE=/u01/app/oracle

ORACLE_SID=sales

export ORACLE_BASE ORACLE_SID

  • Nos aseguramos que las variables ORACLE_HOME y TNS_ADMIN no están iniciadas
unset ORACLE_HOME
unset TNS_ADMIN
  • Verificamos que las variables se han iniciado correctamente (el comando umask debe mostrar los valores 22, 022 o 0022)
$ umask
env | more

INSTALACIÓN ORACLE

Una vez hemos realizado todos los pasos anteriores ya estamos listos para instalar ORACLE en nuestro sistema. Si vamos a instalarlo desde un CD, pendrive, etc primero deberemos montar esa unidad (si el sistema no la ha montado automáticamente).

Si estamos instalando ORACLE desde un CD, ejecutaremos los siguientes comandos

$ cd /tmp
$ /path_del_directorio/runInstaller
 

Dónde path_del_directorio es el directorio donde hemos montado dicha unidad.

Si tenemos los archivos copiados en el disco duro, nos dirigimos al directorio Disk1 y allí ejecutamos:

$ ./runInstaller
 

Si el archivo que poseemos es un cpio, bastará con situarnos en el directorio /tmp y ejecutar:

$ cpio –idv < /path_directorio/archivo.cpio
 

Dónde path_directorio es el directorio donde tenemos el archivo cpio. La opción –i del comando cpio se utiliza para extraer los archivos, -d para crear los directorios necesarios y –v indica que lo haga a modo verbose.


Una vez hemos realizado este proceso, y tras comprobar que estamos conectados como oracle, podemos proceder, ahora si, a realizar la instalación ejecutando ./runInstaller del directorio Disk1.

Durante el proceso de instalación tendremos que ejecutar algunos scripts como root, por lo que podemos ir preparando una nueva terminal con este usuario.


En la primara pantalla que aparece deberemos especificar una contraseña válida para los usuarios sys, system, sysman y dbsnmp. También nos ofrece seleccionar el tipo de instalación a realizar, en nuestro caso dejaremos la que viene por defecto, es decir, Enterprise.

Haremos clic en siguiente y nos solicita que introduzcamos la ruta del directorio de inventario de oracle y el nombre del grupo del sistema que va a realizar la instalación, en nuestro caso oinstall. Al hacer clic en siguiente, el programa de instalación nos pide ejecutar un script con privilegios de root, abriremos una nueva terminal, nos conectaremos como tal (su – root) y ejecutaremos el script solicitado.


A partir de este momento el sistema no va a solicitar más nuestra atención hasta el final de la instalación donde tendremos que ejecutar un último script.

Si hemos realizado correctamente la instalación podemos dirigirnos a la página de configuración de ORACLE en la siguiente dirección: http://localhost:5500/em

POST-INSTALACIÓN

Una vez realizada la instalación y cuando ya hemos comprobado que nos podemos dirigir sin problemas a la página de configuración de ORACLE, procederemos a reiniciar el sistema. Una vez reiniciado, podremos comprobar como ya no tenemos acceso a la Web mencionada anteriormente.

En este apartado de Post-Instalación mostraremos todos los comandos necesarios para activar el acceso a la administración de oracle vía Web, inicialización de la base de datos y acceso a ella mediante sqlplus.

Antes de nada debemos dirigirnos al directorio donde ORACLE guarda sus ejecutables. Dicho directorio se encuentra en: /oracle_sw_path/product/10.1.0/DB_1/bin, dónde oracle_sw_path es el path donde hemos instalado ORACLE, en nuestro caso /u01/app/oracle.

Una vez allí introduciremos:

$ export ORACLE_SID=orcl
$ ./emctl start dbconsole
 

Podemos comprobar como ahora ya tenemos acceso a la Web de administración de ORACLE. Si accedemos a ella podremos ver que la base de datos no está disponible. Vamos a hacer que lo esté. Para ello introduciremos los siguientes comandos:

$ export ORACLE_HOME=/oracle_sw_path/product/10.1.0/Db_1/
$ ./lsnrctl start
$ ./lsnrctl status
 

Nota: Por alguna extraña razón, al si inicializamos el “listener” y no comprobamos su estado a continuación, los servicios no se inician correctamente.

$ ./sqlplus "/AS SYSDBA"
SQL> STARTUP
SQL> @?/rdbms/admin/utlrp.sql
 

Con esto ya tenemos la base de datos inicializada. Podemos dirigirnos nuevamente a la Web de administración y comprobaremos como ya no nos muestra el mensaje de advertencia que mostraba antes. De la misma forma, ya podemos crear usuarios, eliminarlos, crear tablas, etc.

FACILITANDO LAS COSAS

Enlaces

Para no tener que dirigirnos siempre al directorio de ejecutables de ORACLE, crearemos unos enlaces simbólicos a un directorio que crearemos manualmente, esto nos facilitará mucho las cosas como podremos ver mas adelante. Para empezar crearemos el directorio bin
en el home del usuario oracle, eso nos permitirá introducir en él scripts o enlaces que podremos usarlos como comandos propios de Linux. Para ello seguiremos los siguientes pasos.

Nos aseguramos de estar en el home de oracle (/home/oracle).

$ pwd
 

Si nos encontramos allí creamos el directorio bin

$ mkdir bin
 

Una vez creado entramos en él y ejecutamos:

$ ln –s /oracle_sw_path/product/10.1.0/Db_1/bin/emctl emctl
$ ln –s /oracle_sw_path/product/10.1.0/Db_1/bin/lsnrctl lsnrctl
$ ln –s /oracle_sw_path/product/10.1.0/Db_1/bin/sqlplus sqlplus
 

Ahora ya podremos introducir los comandos anteriores sin tener que dirigirnos al directorio bin de ORACLE y sin hacer referencia a él. Podemos intentar por ejemplo dirigirnos a cualquier otro directorio (/tmp por ejemplo) y ejecutar:

$ sqlplus "/AS SYSDBA"
 

Veremos que el resultado es el mismo que ejecutar desde el directorio /oracle_sw_path/product/10.1.0/Db_1/bin/:

$ ./sqlplus "/AS SYSDBA"
 

O desde cualquier otro directorio

$ /oracle_sw_path/product/10.1.0/Db_1/bin/sqlplus "/AS SYSDBA"
 

Estos pasos, no son ni mucho menos necesarios o imprescindibles pero si ayudan y facilitan mucho las cosas.

Ya que nos hemos propuesto facilitar más aún las cosas, vamos a crear un script que haga automáticamente todo el trabajo por nosotros. Dicho script se ejecutará automáticamente durante el arranque y la detención del sistema, iniciando o parando todos los procesos según sea el caso. Crearemos dicho script en el directorio /etc/init.d el cual será llamado desde /etc/rc.d/rc5.d. Para ello, como usuario root, seguiremos los siguientes pasos:

  1. Creación del scipt:
vi /etc/init.d/4clixprojectscript
 
## Proyecto 4CLIX
 
## Script Inicio/Detención/Reinicio ORACLE
 
## 100% Creado por: Aitor
 
# ORA_HOME=/u01/app/oracle/product/10.1.0/Db_1
 
# ORA_OWNER=oracle
 
# ORA_SID=orcl
 
# password_sys -> password asignado a system durante la instalación
 
ORA_HOME=/u01/app/oracle/product/10.1.0/Db_1
 
echo
 
case "$1" in
 
'start')
 
echo "Iniciando ORACLE 4CLIX Project: "
 
su – oracle –c "export ORACLE_SID=orcl ; $ORA_HOME/bin/emctl start dbconsole"
 
su – oracle –c "export ORACLE_HOME=$ORA_HOME/ ; $ORA_HOME/bin/lsnrctl start"
 
su – oracle –c "export ORACLE_HOME=$ORA_HOME/ ; $ORA_HOME/bin/lsnrctl status"
 
su – oracle –c "export ORACLE_HOME=$ORA_HOME/ ; export ORACLE_SID=orcl ;
 
sqlplus /nolog << EOF
 
conn system/password_sys as sysdba
 
startup
 
exit
 
EOF"

echo

;;

'stop')

echo "Deteniendo ORACLE 4CLIX Project: "

su – oracle –c "export ORACLE_HOME=$ORA_HOME ; export ORACLE_SID=orcl ;

sqlplus /nolog << EOF

conn system/password_sys as sysdba

shutdown immediate

exit

EOF"

su – oracle –c "export ORACLE_SID=orcl ; $ORA_HOME/bin/emctl stop dbconsole"

su – oracle –c "export ORACLE_HOME=$ORA_HOME/ ; $ORA_HOME/bin/lsnrctl stop"

echo

;;

'restart')

echo "Reiniciando ORACLE 4CLIX Project: "

$0 stop

$0 start

echo
 
;;
 
*)
 
echo "Uso: 4clixprojectscript {start / stop / restart}"
 
exit 1
 
esac
 
exit 0
 
  1. Estableciendo propietario del script:

Como queremos que el usuario oracle tenga todo el control sobre este script y, de esta forma, pueda ejecutarlo y modificarlo cuando lo desee vamos a hacer que sea su nuevo propietario.

# chown oracle:oinstall /etc/init.d/4clixprojectscript

  1. Creación de los enlaces:

# ln –s /etc/init.d/4clixprojectscript /etc/rc.d/rc5.d/S98clixproject

# ln –s /etc/init.d/4clixprojectscript /etc/rc.d/rc5.d/K98clixproject

A partir de este momento, cada vez que iniciemos y apaguemos el sistema, este script será ejecutado con start o stop según sea necesario.

  1. Modificación .bash_profile

Cada vez que iniciamos sqlplus debemos especificar las variables ORACLE_SID y ORACLE_HOME. Para no tener que inicializarlas cada vez que queremos ejecutarlo, seguiremos los siguientes pasos:

Nos situamos en el directorio home del usuario oracle

$ cd /home/oracle

Editamos el fichero oculto .bash_profile

$ vi .bash_profile

En él, añadiremos las siguientes líneas:

export ORACLE_SID=orcl

ORACLE_HOME=/ora_path/product/10.1.0/Db_1/

export ORACLE_HOME


Con estos cambios, cada vez que accedamos al sistema como usuario oracle, estas variables se inicializarán de forma automática. Podemos reiniciar el sistema y comprobarlo con el comando set.

$ set


ORACLE_SID=orcl

ORACLE_HOME=/oracle_sw_path/product/10.1.0/Db_1/


A partir de este momento, al iniciar nuestro sistema ya tenemos la base de datos y todos sus componentes activos para poder trabajar con ella. Ya no va a ser necesario ejecutar ningún script ni introducir ningún tipo de comando.

Entradas relacionadas:

  • Para acceder a los comandos Oracle mas utilizados, puedes visitar:

Comandos Oracle – Primera Parte –

Comandos Oracle – Segunda Parte –

Comandos Oracle – Tercera Parte –

Fuente: PFM 4CLIX

Anuncios

4 Responses to Instalación Oracle 10g en Linux

  1. No he conseguido que se levante la base de datos haciendo los script que comentas.

    Uso Suse Enterprise Server 10 y he tenido que hacer “cd /etc/init.d” y ejecutar el comando insserv .

    Y ahora sí que me funciona.

    Gracias por el manual, me fue de mucha ayuda.

  2. Aitor says:

    Hola José Manuel,

    Me alegro de que te haya sido de utilidad. Este manual lo hice hace unos cuatro años y el script que aparece al final funcionaba correctamente con Fedora (creo que era Fedora 3) y es posible que igual haya alguna diferencia con Suse Enterprise, la verdad es que no lo he probado ahí. Lo importante es que te ha sido de utilidad ya que la primera vez que instalas Oracle en Linux es un verdadero quebradero de cabeza :).

    Gracias por visitar el blog y por tu apunte, seguro que a los usuarios de Suse les irá bien!

  3. No me di cuenta, pero parece que el post no se publicó bien. Realmente el comando es insserv y como argumento le pasamos el nombre del script que pretendemos ejecutar.

    Y tener la precaución de ejecuarlo desde /etc/init.d/

    Saludos.

  4. Reblogueó esto en Trigo IT Projecty comentado:
    Oralce

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: