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.