viernes, junio 14, 2013

Instalar Oracle Database 11G en Oracle Linux Parte II

CONFIGURAR BASE DE DATOS

Bueno, pues finalmente aquí os dejo la segunda parte:

Esta guia continua donde lo dejamos aquí: Instalar Oracle Database 11G en Oracle Linux

Una vez instalado el software de la base de datos, quedará configurar la misma, para ello deberemos estando en el escritorio gnome (Xwindows) nos situamos en la carpeta “bin” de Oracle_home” (en nuestro caso /oracle/product/11.2.0/dbhome_1/bin) y ejecutamos el archivo “netca”, nos saldrá la siguiente ventana:

Pinchamos en siguiente y sólo nos dejará agregar, volveremos a pinchar en siguiente:


Dejamos el nombre que trae por defecto y le damos a siguiente:



Seguimos dejando todo tal y como viene por defecto y le damos a siguiente:




Con el puerto que usará lo mismo:



Finalmente nos pedirá si queremos configurar otro listener, le diremos que no.




Seguiremos pinchando en siguiente




Y por último en terminar



Luego en  la carpeta bin en la que estamos ejecutaremos “dbca” y nos saldrá la siguiente ventana deberemos de pinchar en siguiente:




Entonces deberemos crear la base de datos tal y como mostramos a continuación:



Tras eso seleccionaremos la que nos muestra por defecto, salvo que queramos alguna cosa rara, pero en nuestro caso, haremos una base de datos normal:




Nos pedirá el nombre de la base de datos global, en este ejemplo, usaremos dbrls, el sid pondremos lo mismo:


Para luego tener datos con los que trabajar marcaremos los esquemas de ejemplo:



Nos aparecerá lo siguiente, no es necesario modificar nada aquí, le daremos a siguiente:



Tras eso, nos pedirá password para los usuarios especiales de la base de datos, podemos poner una contraseña para cada usuario (lo más recomendado). Sino, ponemos una contraseña para todos igual. En este manual lo haremos así, pondremos de contraseña "oracle" y le daremos a siguiente.





Nos saldrá la siguiente ventana, por que esa contraseña no cumple su politica de contraseñas, como ya hemos dicho antes como es una de ejemplo de diremos que sí a continuar.



La siguiente ventana la dejamos igual, damos a siguiente:




Tras eso, marcaremos en la siguiente ventana la opción de “Activar archivado” y tras eso le daremos al botón de “Editar Parámetros de Modo de Archiva…”



Nos saldrá la siguiente ventana de opciones, que con que nombre y en que ruta se han de guardar los archivo de Archive log. Pondremos como muestra la imagen.




Aceptamos y continuamos, nos saldrá la siguiente ventana que daremos al botón siguiente:



Luego toca el tamaño de la memoria, por defecto le dejaremos el 40% que indica, si fuera un Server con menos memoria, podríamos bajárselo o dependiendo del numero de conexiones que fuera a tener o de los usos de la BD subirlo. Ahi ya cada uno.






Iremos después al juego de caracteres y lo pondremos tal y como aparece en la imagen, el que trae por defecto nos tiene a nuestra querida ñ, si quisieramos usar caracteres raros en conjunto (mezcla caracteres castellanos y japoneses por ejemplo) tendríamos que poner el unicode y luego configurar mas cosas. O si queremos alguno en especial lo seleccionamos y listo.






Luego toca configurar los tablespaces, en este caso no crearemos ninguno así que todo lo que vayamos crenado ira al tablespace users, pero si quisieramos desde aquí podemos crear tablespaces, darles nombre, tamaño alojarlos donde digamos e incluso que si llega al tamaño máximo que vaya incrementando hasta cierto tope. Esto podemos hacerlo también después desde la Enterprise Manager.




Aceptamos, le damos a siguiente y ya sólo quedaría darle a terminar, para que empiece la creación de la base de datos.




Y tras esto, ya tendríamos todo instalado.



 Retoques Finales


-Activar Instancia

Con un editor de texto, Editamos el archivo /etc/oratab y cambiar la N por Y en la línea de la instancia quedando así en nuestro ejemplo:

dbrls:/oracle/product/11.2.0/dbhome_1:Y

-Creación de script de Arranque

Creamos el archivo oracledb en la siguiente ubicación “/etc/init.d” con el siguiente código. Sólo hay que cambiar los valores de las variables OUSER y OPATH, que será el usuario con el que hemos hecho la instalación (en nuestro caso oracle11g) y el path donde lo hemos instalado (En este caso "/oracle/product/11.2.0/dbhome_1”) , el codigo no es mio, yo solo lo copie en su momento y lo sigo usando hoy en día, muchas gracias a su creador.

--------- INICIO CODIGO ---------
#!/bin/bash
#
# Run level script to start Oracle services on Linux
#
# -------------------------------------------------------------------------
# Copyright (c) 2006 nixCraft project
# This script is licensed under GNU GPL version 2.0 or above
# Comment/suggestion:
# -------------------------------------------------------------------------
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle service

OUSER="oracle11g"
OPATH="/oracle/product/11.2.0/dbhome_1"

# check Oracle db status
function chkdb_status() {

# set username
SUSER="system"
# set password
SPASS="oracle"

sqlplus /nolog > /dev/null 2>&1 <whenever sqlerror exit failure
connect $SUSER/$SPASS
exit success
EOF

if [ $? -ne 0 ]; then
 echo "Connection failed : DB is down"
 exit 1
else
 echo "Connection succeeded : DB is up"
fi
}

case "$1" in
        start)
        echo  "*** Starting Oracle *** "
        su - $OUSER -c "$OPATH/bin/lsnrctl start"
        su - $OUSER -c "$OPATH/bin/dbstart"
        ;;
        stop)
        echo  "*** Stopping Oracle *** "
        su - $OUSER -c "$OPATH/bin/lsnrctl stop"
        su - $OUSER -c "$OPATH/bin/dbshut"
        ;;
        restart)
        $0 stop
        $1 start
        ;;
        isqlstart)
        echo  "*** Starting Oracle iSQL Plus *** "
        su - $OUSER -c "$OPATH/bin/isqlplusctl start"
        echo "*** Note: You can access service at url:  http://$(hostname):5560/isqlplus"
        ;;
        isqlstop)
        echo  "*** Stopping Oracle iSQL Plus *** "
        su - $OUSER -c "$OPATH/bin/isqlplusctl stop"
        ;;
        emstart)
        echo  "*** Starting Oracle Enterprise Manager 10g Database Control ***"
        su - $OUSER -c "$OPATH/bin/emctl start dbconsole"
        echo "*** Note: You can access service at url:  http://$(hostname):1158/em"
        ;;
        emstop)
        echo  "*** Stopping Oracle Enterprise Manager 10g Database Control ***"
        su - $OUSER -c "$OPATH/bin/emctl stop dbconsole"
        ;;
        status)
        echo "*** Oracle database status ***"
        chkdb_status
        ;;
        *)
        echo $"Usage: $0 {start|stop|isqlstart|isqlstop|emstart|emstop}"
        exit 1
esac
exit 0


--------- FIN CODIGO ---------

Una vez hecho esto, creamos los enlaces simbólicos siguientes:

#ln -s /etc/init.d/oracledb /etc/rc.d/rc2.d/S99oracledb
#ln -s /etc/init.d/oracledb /etc/rc.d/rc3.d/S99oracledb
#ln -s /etc/init.d/oracledb /etc/rc.d/rc4.d/S99oracledb
#ln -s /etc/init.d/oracledb /etc/rc.d/rc5.d/S99oracledb
#ln -s /etc/init.d/oracledb /etc/rc.d/rc0.d/K01oracledb
#ln -s /etc/init.d/oracledb /etc/rc.d/rc6.d/K01oracledb

Luego le damos permiso de ejecución al código que hemos creado:

#chmod +x /etc/init.d/oracledb

Tras esto, probamos que arranque ejecutando lo siguiente:

#/etc/init.d/oracledb start



Si nos da el error siguiente:

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener

Tendremos que cambiar los archivos “dbstart” y “dbshut” con un editor de texto así:

vim /oracle/product/11.2.0/dbhome_1/bin/dbstart

Sustituyendo el campo:

ORACLE_HOME_LISTNER=$1

Por

ORACLE_HOME_LISTNER=$ORACLE_HOME

Cambiar Parámetros de la base de datos.

Abrimos una terminal desde el usuario oracle11g que hemos creado para dicha instalación y ejecutamos lo siguiente:

#sqlplus /nolog

Nos abrirá una sesión de sqlplus y ahí escribiremos:

#connect system/oracle as sysdba;

Una vez conectados,  podremos entre otras ejecutar las siguientes instrucciones:

#ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE SCOPE=BOTH; 
# ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
#ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=FALSE SCOPE=BOTH;

La primera es para que tras escribir este comando a la hora de exportar tablas el sistema no ignore las tablas que no tengan líneas.

La segunda es para que no nos pida cambiar la contraseña nunca

La ultima es para que no diferencie entre mayúsculas y minúsculas.


Y así  con esto tenemos una base de pruebas creada.  Decir que el verdadero trabajo vendría ahora hasta ir configurando la BD y demas, pero eso ya lo iremos mirando. Un saludo.

Ah!, decir que en oracle linux 5, la parte de instalar paquetes necesarios para la base de datos, el usuario oracle, el grupo oinstall, los limites del sistema y los parámetros del kernel, todo eso nos lo instalará si ejecutamos lo siguiente (aunque si el sistema es de 64 bits hay que instalar después el paquete unixODBC de 32):

#yum install oracle-validated

miércoles, junio 13, 2012

Script de Backup de Oracle Database en Linux

Hola, aqui  os dejo un script para hacer una export de los datos de una base de datos en oracle. Lo unico que hay que cambiar serían las variables el numero de días que queremos guardar y la password del usuario system (estas dos cosas aparecen en rojo).

 Lo ideal sería crear un archivo .sh con este código. y luego un segundo donde ejecutamos el primer script y le damos ademas como $1 la ruta del log. Esto es sí metieramos este script en un archivo llamado "backup.sh"  y lo dejáramos en  /u01 y quisieramos crear el log llamado oracle.log tambien en /u01 creariamos un segundo script llamado "tarea.sh" quue llamara a este tal que así:

Este script genera un .dmp con los datos y guarda luego este archivo comprimido con un formato de nombre donde aparece la fecha. Además sólo mantiene sin borrar un numero de archivos igual al valor de la variable XHIST.

tarea.sh

#!/bin/bash
/u01/./backup.sh  >> /u01/oracle.log



backup.sh

#!/bin/bash
###########################################################
## Script para realizar backup Oracle
## ver 1.0
## RLS
###########################################################

XBACKUP="/u01/oracle/export"
XDIA=`date +'%d%m%Y-%H%M'`
XDIA_BACKUP=$XBACKUP/$XDIA
XDIA_F=`date +'%d-%m-%Y-%H%M'`
XHIST=7 #INDICA AQUI NUMERO DE DIAS a GUARDAR
LIMIT=$( expr $XHIST + 7)

echo "***Proceso de Backup iniciado: " $XDIA_F

o#Creamos el directorio para realizar el backup
mkdir $XDIA_BACKUP
echo "  -> Carpeta creada..."
chmod 777 $XDIA_BACKUP
chown -R oracle11g:oinstall $XDIA_BACKUP
echo "  -> Generando backup..."

##Seteamos variables de Entorno
ORACLE_HOME=/u01/oracle/product/11.2.0/dbhome_1
PATH=${PATH}:$ORACLE_HOME/bin
ORACLE_USER=oracle11g
ORACLE_SID=cti
ORACLE_BACKUP=$XDIA_BACKUP
export ORACLE_HOME PATH ORACLE_SID ORACLE_BACKUP
NLS_LANG=spanish_spain.we8mswin1252; export NLS_LANG

##Lanzamos exportacion de ORACLE
$ORACLE_HOME/bin/exp system/password full=y file=$ORACLE_BACKUP/spyro.dmp log=$ORACLE_BACKUP/spyro.log statistics=none BUFFER=1000000
echo "El import ha terminado con el siguiente estado:"
XRESULT=`tail -n 1 $ORACLE_BACKUP/spyro.log`
echo $XRESULT
echo "  -> Comprimiendo el Backup..."

##Comprimimos el archivo generado
gzip -8 $XDIA_BACKUP/spyro.dmp
echo "  -> Backup Generado en:" $XDIA_BACKUP
echo "  -> Borrando Backups antiguos de las siguientes fechas:"
DAYS=$(for d in $(seq $XHIST $LIMIT);do date --date="$d days ago" +"%d%m%Y"; done)
for d in $DAYS
do
rm -f -R $XBACKUP/$d*
echo $d

sábado, marzo 24, 2012

Instalar Oracle Database 11G en Oracle Linux Parte I

He hecho este pequeño manual revisando guias y  manuales por la red. Espero que al menos os sirva tanto como me ha servido a mí.

PREREQUISITOS

Oracle Linux


En este manual daremos por realizada la instalación del sistema operativo Linux de Oracle. Para nuestro ejemplo usaremos Oracle Linux 5 Release 6.

Todo el software de oracle lo instalaremos en:

/oracle 
Nota: A lo largo del manual, cuando aparezca un comando a ejecutar via terminal, aparecerá siempre precedido del carácter # por lo que luego a la hora de ejecutar dicho comando no hay que poner  dicho carácter o no funcionará. Así si nos muestra lo siguiente:

#yum install binutils

Significa que el comando a poner será:

yum install binutils

Instalar repositorio público para descargar software


Una vez instalado Oracle Linux, abrimos una sesión de terminal y escribimos lo siguiente en función de nuestra reléase:

Oracle Linux 5

               # cd /etc/yum.repos.d
               # wget http://public-yum.oracle.com/public-yum-el5.repo

Oracle Linux 6

               # cd /etc/yum.repos.d
               # wget http://public-yum.oracle.com/public-yum-ol6.repo

Luego una vez descargado el archive, lo abrimos con nuestro editor de texto favorito (Vi,Vim, etc..)

Localizamos el repositorio que cumple nuestras características p.ej si es un linux 5 release 6 sería “el5_u6_base”. Y cambiamos el parámetro siguiente: enabled=0 a enabled=1

Con esto ya podemos descargar del repositorio público de Oracle software específico y firmado para nuestro S.O.

Pondremos “yum list” en nuestra terminal para comprobar que funciona.

Comprobar que tenemos todo el software al día


Ejecutaremos:

#Yum update
#Yum upgrade

Instalar los siguiente Paquetes


Con el comando “yum install” habremos de instalar el siguiente software: (de normal muchos ya estarán instalados y al día)

binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.1
gcc-c++-4.1.1
glibc-2.5-12
glibc-2.5-12 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5-12 (32 bit)
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libgcc-4.1.1
libgcc-4.1.1 (32 bit)
libstdc++-4.1.1
libstdc++-4.1.1 (32 bit)
libstdc++-devel 4.1.1
make-3.81
numactl-devel-0.9.8.x86_64
sysstat-7.0.0
unixODBC-2.2.11 (32 bit)
unixODBC-devel-2.2.11 (64 bit)
unixODBC-devel-2.2.11 (64 bit )


Como las versiones avanzan, deberemos poner:

#“yum install binutils” (sin comillas y así nos dará la ultima versión de dicho paquete.

Comprobar Datos de Red


Ejecutaremos los siguientes comandos:

#cat /etc/nsswitch.conf | grep hosts

Con este parámetro comprobamos que usamos /etc/hosts para resolución de nombres

Con los parámetros “Hostname” y “domainname” vemos que tenga el nombre de la maquina y su dominio tal y como queremos.

#cat /etc/hosts

comprobamos que es correcto ha de darnos algo así:

127.0.0.1 localhost.localdomain localhost
IP myhost.example.com myhost

[LA 2ª  línea tendrá que ser la que le damos a nuestro servidor, su IP, “myhost” el nombre de nuestra maquina y “example.com” el dominio. Para nuestro ejemplo quedaría así:

192.168.1.100     Bilinux

Crear el usuario y grupos necesarios


#/usr/sbin/groupadd dba
#/usr/sbin/groupadd oinstall
#/usr/sbin/groupadd asmadmin
#/usr/sbin/useradd -g oinstall -G dba oracle11g



#passwd oracle11g (y asignamos una contraseña, por ejemplo “ora123”)

Crear directorio de instalación oracle.

#mkdir -p /oracle
#mkdir /oraInventory
#chown -R oracle11g:oinstall  /oracle
#chown -R oracle11g:oinstall /oraInventory
#chmod -R 0775 /oracle
#chmod -R 0775 /oraInventory


Revisar y configurar los limites del shell


Esto se revisa en el siguiente archivo:

/etc/security/limits.conf

Habremos de añadir lo siguiente:

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


Configurar parametros del Kernel

Parametro
Valor minimo
Archivo
Comando
semmsl
semmns
semopm
semmni
250
32000
100
128
/proc/sys/kernel/sem
/sbin/sysctl -a | grep sem
shmall
2097152
/proc/sys/kernel/shmall
/sbin/sysctl -a | grep shm
shmmax
El mínimo de los siguientes valores:
La mitad del tamaño de memoria.
4GB - 1 byte
Note:  El valor mínimo requerido para shmmax is 0.5GB. Oracle
Recomienda que el valor de shmmax sea de 2.0GB para un rendimiento optimo.
/proc/sys/kernel/shmmax
/sbin/sysctl -a | grep shm
shmmni
4096
/proc/sys/kernel/shmmni
/sbin/sysctl -a | grep shm
file-max
6815744
/proc/sys/fs/file-max
/sbin/sysctl -a | grep file-max
ip_local_port_
range
Minimo: 9000
Maximo: 65500
Note: Ignora cualquier warning hecho desde Oracle Universal Instaler para este parametro.
/proc/sys/net/ipv4/ip_local_
port_range
/sbin/sysctl -a | grep ip_local_port_range
rmem_default
262144
/proc/sys/net/core/rmem_
default
/sbin/sysctl -a | grep rmem_default
rmem_max
4194304
/proc/sys/net/core/rmem_max
/sbin/sysctl -a | grep rmem_max
wmem_default
262144
/proc/sys/net/core/wmem_
default
/sbin/sysctl -a | grep wmem_default
wmem_max
1048576
/proc/sys/net/core/wmem_max
/sbin/sysctl -a | grep wmem_max
aio-max-nr
Maximo 1048576

/sbin/sysctl
/sbin/sysctl -a | grep aio-max-nr


Con los comandos comentados en la columna “Comando” podemos ver los valores que tienen los parámetros en el sistema. En caso de que alguno muestre valores inferiores al valor minimo indicado arriba habrá que procede a cambiarlo de la siguiente manera.

1º Con un editor de texto configura el siguiente archivo:

#/etc/sysctl.conf

En el añade o edita las siguientes líneas en función de lo que haga falta.

fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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 = 1048576

2º Ejecuta el siguiente comando para aplicar a los siguientes cambios al kernel:

#/sbin/sysctl –p

Nota: Te aparecerán los datos, revisa que son correctos.

3º Si los datos son correctos ejecuta el siguiente comando para confirmarlo:

#/sbin/sysctl –a

4º Después de aplicar los cambios habrá que reiniciar la maquina para que surtan efecto.

Cambiar el bash_profile del usuario


Modificamos con un editor de texto el archivo .bash_profile del usuario con el que vamos a instalar la base de datos (En este caso oracle11g)

Por ejemplo pondríamos en la terminal (viva el vim, me va el modo hardcore XDDD)

#vim /home/oracle11g/.bash_profile

Tendrá que quedar tal que así (sólo lo que esta en cursiva):


# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
ORACLE_HOME=/oracle/product/11.2.0/dbhome_1 ; export ORACLE_HOME
ORACLE_BASE=/oracle ; export ORACLE_BASE
ORACLE_SID=cti ; export ORACLE_SID
NLS_LANG=spanish_spain.WE8MSWIN1252 ; export NLS_LANG
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/lib ; export PATH

export PATH

 

Instalar software Oracle Database


Una vez hecho todo esto, accedemos a las xwindows con el usuario que hemos creado (en este caso oracle11g) y ejecutamos el archivo “runinstaler” que se encuentra en la raíz de la carpeta database e iremos instalando en entorno grafico la misma.

Nos aparecerá la siguiente ventana:



 
Pinchamos en siguiente, nos aparecerá la siguiente venta, como es una base de datos de prueba y no tenemos licencia de oracle pincharemos en sí.



En la siguiente pantalla elegiremos “Instalar sólo software de la base de datos”.




Tras eso elegiremos tal y como indica “Instalación de base de datos de instancia única”





Dejamos los idiomas que tiene por defecto (pues nosotros sólo queremos castellano e ingles luego cada cual que ponga lo que quiera) y seguimos pinchando en siguiente:


En nuestro caso vamos a instalar una edición estandar  por lo tanto seleccionaremos “Estándar Edition” en la Edición de la base de datos.

 
Siguiendo este manual elegiremos como ubicación la carpeta /oracle, quedando todo de la siguiente manera:



En caso de que sea la primera instalación de Oracle en la maquina, nos saldrá la siguiente ventana que si has seguido todo este manual correctamente  sólo resta darle a “siguiente”.

Igual en la anterior ventana, pincharemos en siguiente pues estos grupos ya los habíamos creado antes:


Si hemos seguido todo este manual, tras esto ya sólo nos quedara darle al botón terminar para que proceda la instalación. Si quedara algo nos lo indicará y tendremos que proceder a solventar dicho problema, pero con este manual deberíamos ver esto:

   
Una vez terminada la instalación, nos saldrá el siguiente aviso:
 



Deberemos hacer lo que nos indica, conectarnos a la terminal como root y ejecutar los siguientes archivos. Para ello estando en las xwindows, abrimos la terminal, y ejecutaremos lo siguiente:

#su – root
Nota: Nos pedirá entonce la contraseña de root, se la ponemos y damos aceptar.

#/oraInventory/orainstRoot.sh

#/oracle/product/11.2.0/dbhome_1/root.sh
Nota: Tendremos que dar una vez más al return.

Una  vez hecho esto, le daremos aceptar a la ventana de antes. Ya estaría todo instalado.

 Con esto ya estaría el software de la base de datos instalado en nuestra maquina. El proximo día agregaré la como configurar la base de datos en funcion de lo que necesitemos y ponerla para que arranque al principio.