Oracle 10.1.0.3 bajo Gentoo

From Luniwiki
Jump to: navigation, search

Paquetes preliminares

Ponemos la variable pic en los use flags del make.conf

emerge -av libaio
emerge -av libXtst 
emerge -av emerge emul-linux-x86-xlibs

Una vez añadido la variable pic en los USE Flags del make.conf, reinstalamos estos paquetes:

emerge glibc binutils app-emulation/emul-linux-x86-baselibs app-emulation/emul-linux-x86-xlibs -av

Software

Del download center de Oracle descargamos la versión de 64 bits. Descomprimimos los ficheros.

gunzip ship.db_Disk*gz
for i in ship.db*cpio ; do cpio -idmv < $i ; done ;

Preparación del entorno

export TEMP=/tmp
export TMPDIR=/tmp

Parametros de kernel. Editamos el fichero /etc/sysctl.conf y añadimos las siguientes líneas.

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

Para coger los parametros ejecutamos

sysctl -p

Creamos el usuario Oracle

groupadd dba
groupadd oinstall
useradd -c "Propietario del software Oracle" -g oinstall -G dba -d /oracle oracle
passwd oracle

Aumentamos los limites del usuario Oracle, en el fichero /etc/security/limits.conf

oracle               soft    nofile  4096
oracle               hard    nofile  63536
*               soft    nproc   2047
*               hard    nproc   16384

Para que estos parametros se cojan a cada inicio de sesión editamos /etc/profile.d/oracle.sh

if [ $USER = "oracle" ]; then
          if [ $SHELL = "/bin/ksh" ]; then
                ulimit -u 16384
                ulimit -n 63536
          else
                ulimit -u 16384 -n 63536
          fi
 ORACLE_BASE=/oracle
 ORACLE_HOME=/oracle/product/10.1.0.3
 ORACLE_SID='EXTRE'
 ORACLE_TERM=xterm
 ORACLE_OWNER=oracle
 TNS_ADMIN=/oracle/product/10.1.0.3/network/admin
 NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1
 ORA_NLS10=/oracle/product/10.1.0.3/nls/data
 CLASSPATH=/oracle/product/10.1.0.3/jdbc/lib/classes12.zip
 LD_LIBRARY_PATH=/oracle/product/10.1.0.3/lib:/oracle/product/10.1.0.3/lib32
 DISABLE_HUGETLBFS=1
 PATH=/oracle/product/10.1.0.3/bin
 ROOTPATH=/oracle/product/10.1.0.3/bin
 LDPATH=/oracle/product/10.1.0.3/lib:/oracle/product/10.1.0.3/lib32
 TZ=CET
fi

Creamos el fichero /etc/env.d/99oracle

ORACLE_BASE=/oracle
ORACLE_HOME=/oracle/product/10.1.0.3
ORACLE_SID='EXTRE'
ORACLE_TERM=xterm
ORACLE_OWNER=oracle
TNS_ADMIN=/oracle/product/10.1.0.3/network/admin
NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1
ORA_NLS10=/oracle/product/10.1.0.3/nls/data
CLASSPATH=/oracle/product/10.1.0.3/jdbc/lib/classes12.zip
LD_LIBRARY_PATH=/oracle/product/10.1.0.3/lib:/oracle/product/10.1.0.3/lib32
DISABLE_HUGETLBFS=1
PATH=/oracle/product/10.1.0.3/bin
ROOTPATH=/oracle/product/10.1.0.3/bin
LDPATH=/oracle/product/10.1.0.3/lib:/oracle/product/10.1.0.3/lib32
TZ=CET

Instalación del producto

su - oracle
export DISPLAY="ip.de.nuestro.clienteX:0"
./runInstaller -ignoreSysPrereqs
Seguimos la pantalla del instalador,...

La segunda vez que tenemos que ejecutar el root.sh hay que realizar estos cambios. Se ha cambiado el init.cssd para que funcione con gentoo. Hemos parcheado varios ficheros. Hemos utilizado la herramienta relink con varios ficheros de oracle (para el de client_noshared, hay que utilizar las AMD64 Stuffs).

Asistente de conexión

Durante la instalación instalación ha fallado el asistente de conexión, porque las librerías no se habian creado correctamente, todavia no estaba parcheado los distintos ficheros.

netca

Levanta el asistente que nos crea el tnsnames.ora y el listener.ora

Scripts de inicio

oratab

Cambiar el fichero /etc/oratab

INSTANCIA:/oracle/product/10.1.0.3:Y 

ora.database ora.listener ora.console

Creamos los ficheros en la carpeta /etc/init.d. Creamos los 3 ficheros. Y les damos permiso de ejecución:

chmod +x ora.*

Damos de alta los scripts en el sistema de arranque:

rc-update add ora.database default
* ora.database added to runlevel default
rc-update add ora.listener default
* ora.listener added to runlevel default
rc-update add ora.console default
* ora.console added to runlevel default

ora.rawdevices

Para que oracle utilice dispisitivos raw (mejora bastante el rendimiento con respeto sistema de ficheros), utilizamos un pequeño scipts que inicializa las particiones raw.

configuración ora.rawdevices

En la carpeta /etc/conf.d/ editamos el fichero ora.rawdevices, el kernel esta compilado con 8192 raw devices (por defecto el kernel viene con 256).

#Compilado en el kernel con 8192 por defecto el kernel viene con 255
MAXRAW=8192
#Establecemos propietarios de los raw devices y permisos
OWNER="oracle"
GROUP="oinstall"
PERMS="660"
#Asignacion del Raw device a una particion
config_raw201="/dev/sda7"
config_raw202="/dev/sda8"

Las particiones tambien pueden ser logical volumes sin formatar.

Script ora.rawdevices

En la carpeta /etc/init.d creamos el fichero ora.rawdevices siguiente:

#!/sbin/runscript
# Copyright 2006-2008 Luniel Systems
# Distributed under the terms of the GNU General Public License v2
# $Header: $
depend() {
       need net
       before ora.database
}
start() {
       ebegin "Asignando Raw device a chunks de Oracle"
       for minor in `seq 1 ${MAXRAW}`
       do
               particion=config_raw${minor}
               eval particion=\$$particion
               if [ ! "#${particion}#" = "##" ]; then
                       echo "Asignando el device /dev/raw${minor} a la particion $particion"
                       if [ -e $particion ]; then
                               if [ ! -c /dev/raw$minor ]; then
                               /bin/mknod /dev/raw$minor c 162 $minor
                               fi
                               if [ $? ]; then
                                       /sbin/raw /dev/raw$minor $particion
                                       if [ $? ]; then
                                               chmod $PERMS /dev/raw$minor
                                               chown $OWNER:$GROUP /dev/raw$minor
                                       fi
                               fi
                               eend $?
                       else
                               eend 1
                       fi
               fi
       done
}
stop() {
       ebegin "eliminando Raw devices"
       for minor in `seq 1 ${MAXRAW}`
       do
               particion=config_raw${minor}
               eval particion=\$$particion
               if [ ! "#${particion}#" = "##" ]; then
                       echo "Eliminando el device /dev/raw${minor} a la particion $particion"
                               if [ -c /dev/raw$minor ]; then
                               rm /dev/raw$minor
                               fi
                               eend $?
               fi
       done
}

Arranque automatico

Para que los raw devices se arranquen de forma automatica ejecutamos

rc-update add ora.rawdevices default

Luego para poder usuarlo con oracle creamos un link al /dev/rawxxx y le damos el link como archivo de datos.

Creación de la base de datos

Utilizamos el asistente de Oracle.

dbca

Añadimos el usuario oracle al grupo disk en el archivo /etc/group

disk::6:root,adm,oracle

Referencias

--Daniel Simao 15:38 18 jun 2008 (UTC)