viernes, 6 de noviembre de 2015

Conceptos básicos en Oracle Database

En nuestro anterior post (Configuración de la Conexión en sqldeveloper) vimos como configurar la conexión local con Oracle Database y cómo configurarla en red que es lo que a la final vamos a utilizar en entornos de producción. Antes de empezar con la temática del presente post, vamos a explicar algo que dejamos de lado en el post anterior y es la explicación de lo que representa el usuario SYS y SYSTEM en un servidor de bases de datos ORACLE.

Usuarios SYS y SYSTEM


Los usuarios SYS y SYSTEM se crean automáticamente en la instalación de Oracle DB y automáticamente reciben el rol de DBA. A continuación se muestra de manera general las funciones que cada uno tiene disponibles dentro de la base de datos.

SYS: Es el usuario con los más altos privilegios dentro de las bases de datos Oracle. Además, todas las tablas y vistas del diccionario de datos general están dentro del esquema SYS. Sin embargo, para preservar la integridad de las bases de datos ningún usuario debería modificar las tablas dentro del esquema SYS directamente, estas tareas de actualización las debería realizar únicamente la base de datos.

SYSTEM: Este usuario tiene acceso a todas las funciones del sistema excepto las siguiente:

- Backup and recovery
- Database upgrade

Todas las tareas administrativas del día a día deberían realizarse con el usuario SYSTEM, está totalmente desaconsejado utilizar el usuario SYS para tareas del día a día.

Manejo de la base de datos


A diferencia de otros motores de bases de datos no es común crear múltiples bases de datos en ORACLE. En Oracle es común hablar de esquemas de bases de datos, por ejemplo el esquema (schema) SYS que guarda toda la información relativa a la base de datos. Un esquema de base de datos (database schema) es una colección de estructuras lógicas de datos, también llamados esquemas de objetos (schema objects). Podríamos pensar que los esquemas de objetos son directamente las tablas, sin embargo, existen distintos tipos de esquemas, los más importantes son en evidencia las tablas y los índices.

SQL (Structured query language)


El lenguaje SQL fue diseñado para manejar un marco estándar de manipulación de datos en bases de datos relacionales. Todas las operaciones sobre la base de datos están basadas en lenguaje SQL, desde crear tablas hasta administrar el acceso a los objetos de la base de datos por los distintos usuarios. Oracle SQL es una implementación del estándar ANSI de SQL, e incluye muchas funcionalidades extendidas.

PL/SQL (Procedural Language/Structured Query Language)


PL/SQL es una extensión del lenguaje SQL de Oracle. PL/SQL puede utilizar todas las funciones, tipos de datos y procedimientos de SQL y además de esto controlar el flujo de un programa SQL, utilizar variables y utilizar manejadores de errores de sus procedimientos. El principal beneficio de PL/SQL es el de guardar la lógica de la aplicación dentro de la base de datos, esto se hace mediante sentencias SQL que pueden ser agrupadas como una unidad para resolver un problema específico.

Estructuras de Almacenamiento


Existen dos estructuras de almacenamiento (Database Storage Structures) en Oracle DB.

Estructura física de almacenamiento


Dentro de esta estructura tenemos tres elementos a saber. Archivos de datos (Data files), los cuales contienen la información física de los datos en la base de datos. Los datos acerca de la estructura como tables e índices son guardados en estos archivos. Archivos de control (Control files), son los que guardan información acerca de la estructura física de la base de datos (metadatos). Allí se guarda por ejemplo el nombre de la base de datos y la localización de los archivos asociados a la base de datos. Archivos de Log (Online redo log files), los cuales guardan todos los cambios realizados a los datos.

Estructura lógica de almacenamiento


En la estructura lógica encontramos en primera instancia los Bloques de datos (Data blocks), las bases de datos Oracle son guardadas por bloques que corresponden a un número específico de bytes en el disco. Por otra parte tenemos las Extensiones (Extents), los cuales son simplemente múltiples bloques de datos (data blocks) contiguos asignados para el almacenamiento de un tipo específico de información. En tercer lugar tenemos los Segmentos (Segments), los cuales son conjuntos de extensiones (extents) asignados a un objeto de usuario. Los ejemplos más importantes de segmentos son las tablas e índices, aunque también está la información deshecha e información temporal. Finalmente tenemos los Espacios de Tablas (Tablespaces). Una base de datos está dividida lógicamente en unidades llamadas tablespaces. En definición, un tablespace es un contenedor para un segmento de la base de datos, por ejemplo, tablas.

En nuestro próximo post entraremos en detalle en Oracle SQL. Hay muchas características relacionadas con la administración de bases de datos Oracle que tal vez no tocaremos pero que mencionaremos de vez en cuando. Lo importante a mi modo de ver, es hacer énfasis en uno de los aspectos más utilizado en las empresas por los administradores de bases de datos y profesionales de soluciones informáticas, el lenguaje SQL.


Referencias

- SYS and SYSTEM users. (2015, 30 September). In Oracle Help Center. Retrieved 20:00, November 5, 2015, from
- SQL. (2015, November 5). In Wikipedia, The Free Encyclopedia. Retrieved 01:12, November 7, 2015, from https://en.wikipedia.org/w/index.php?title=SQL&oldid=689169121
- Introduction to Oracle Database. (2015, September 30). In Oracle Help Center. Retrieved 01:12, November 7, 2015, from http://docs.oracle.com/database/121/CNCPT/intro.htm#CNCPT88791

miércoles, 4 de noviembre de 2015

Configuración de la conexión en sqldeveloper

En nuestro anterior post (Instalación Oracle Database) aprendimos a instalar el servidor de bases de datos Oracle Database y la herramienta SQL Developer para manejar y administrar las bases de datos Oracle. En esta ocasión veremos como configurar la conexión al servidor de bases de datos que hemos instalado.

Configuración de la Conexión Local


Lo primero que debemos hacer abrir el programa sqldeveloper que hemos instalado con anterioridad. Para crear una nueva conexión debemos dar clic en el botón verde (+) del panel de Conexión. El programa mostrará la siguiente interfaz en donde debemos colocar los datos que se presentan a continuación.



Nombre de la Conexión: Mi conexión
Usuario: SYSTEM
Contraseña: *******
Nombre del Host: localhost
Puerto: 1521
SID: xe

El nombre de la conexión puede ser cualquier nombre que podamos reconocer como identificador de la conexión. El usuario SYSTEM se crea en la instalación del motor de bases de datos al igual que la constraseña. Los últimos tres parámetros por lo general están parametrizados de forma automática. Cuando ya esté todo configurado damos clic en Probar y no debe salir ningún mensaje de error. Enseguida damos clic en Guardar y finalmente en Conectar.

Configuración del la Conexión en Red


Para configurar la conexión en red, es decir, conectarse desde el sqldeveloper a un servidor de bases de datos Oracle dentro de la misma red, debemos realizar los mismos pasos vistos para la conexión local y cambiar el host por la dirección del servidor de BD. Adicional a esto, el servidor debe tener una regla de entrada en la configuración del firewall para permitir al servicio de Oracle recibir conexiones entrantes por el puerto 1521 desde otros hosts. Entramos entonces a las configuraciones avanzadas del firewall de windows y creamos una regla de entrada para un puerto específico.



Digitamos el puerto 1521 que es el utilizado por el servidor de bases de datos Oracle DB para la conexión.



Posteriormente seleccionamos Permitir la Conexión.



Seleccionamos cuando se aplicará esta regla, por lo general, es recomendable deshabilitar las conexiones públicas y dejar solamente las privadas y redes de trabajo.



Le colocamos un nombre y descripción a la regla para poder identificarla fácilmente en posteriores ocasiones.



Finalmente verificamos que la regla esté habilitada (icono verde).



Después de esto podremos conectarnos desde cualquier host en la red a nuestros servidor. Hasta la próxima.


Referencias

- SQL Developer Concepts and Usage. (2015, 13 May). In Oracle Help Center. Retrieved 23:19, November 4, 2015, from
http://docs.oracle.com/cd/E15846_01/doc.21/e15222/intro.htm#RPTUG10000
- Agregar o editar regla de firewall. (2015). In Microsoft TechNet: Recursos para profesionales de TI. Retrieved 23:19, November 4, 2015, from https://technet.microsoft.com/es-es/library/cc753558.aspx

martes, 3 de noviembre de 2015

Instalación Oracle Database

En nuestro anterior post (Introducción a Oracle Database) tuvimos un primer acercamiento al motor de bases de datos de Oracle Corporation. Cabe recordar, que Oracle Database no es el único motor de bases de datos que maneja la empresa, a su cargo, está el desarrollo y administración de otros motores como MySQL, BerkeleyDB, TimesTen, Oracle Rdb, y Oracle NoSQL Database. El objetivo de este post, es realizar una instalación del motor Oracle Database en su última versión Express.

Instalación sobre Windows 7/8


El primer paso consiste en descargar la última versión del motor de bases de datos Oracle Database Express. Para efectos de este post, la última versión es la 11g Release 2 y es la versión sobre la cual se realizarán pruebas y se hará la instalación. Para verificar la última versión del motor puede ingresarse al siguiente enlace.


Dependiendo del sistema operativo y la arquitectura se debe descargar la versión adecuada, en este caso, se descargara la versión para Windows de 32 bits. En el caso de no tener una cuenta Oracle debe crearse, es totalmente gratuita.


Al descomprimir la carpeta del instalador se verá una carpeta llamada DISK1. Al entrar en ella se encontrará el archivo de instalación setup.exe el cuál debe ser ejecutado como administrador.


El programa hará un par de verificaciones para saber si se cumplen los requerimientos del sistema. 


Los demás pasos será cuestión de simplemente dar clic en Next. En alguna parte del proceso el programa de instalación preguntará el password que se asignará a los usuarios SYSTEM y SYS.


Al finalizar la instalación deberá visualizarse un mensaje como el siguiente.



Instalación sobre GNU/Linux


Debian 32 bits


Para instalar Oracle en distribuciones basadas en Debian, basta seguir el siguiente tutorial creado por Oracle http://www.oracle.com/technetwork/topics/linux/xe-on-kubuntu-087822.html el cual explica de manera detallada los pasos que se deben seguir para realizar una instalación satisfactoria. Para aquellos aún tiene dudas, existen básicamente dos formas rápidas en las cuales podemos realizar esta instalación.

La primera consiste en seguir el tutorial al pie de la letra y agregar el siguiente repositorio en el archivo /etc/apt/sources.list.

deb http://oss.oracle.com/debian unstable main non-free

Después de esto se deberán ejecutar los siguientes comandos

wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
apt-get update
apt-get install oracle-xe

Si realizando estos pasos se obtiene algún error, bien sea por la llave del apt o cualquier otro, siempre podemos descargar los paquetes directamente por http. Para esto, basta entrar y descargar todos los archivos con extensión .deb en los siguientes enlaces

https://oss.oracle.com/debian/dists/unstable/main/binary-i386/
https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/

A la fecha, son cuatro los archivos .deb que incluye la instalación de Oracle Database, los cuales deberán instalarse con el comando dpkg.

dpkg -i libaio_0.3.104-1_i386.deb oracle-xe-client_10.2.0.1-1.2_i386.deb oracle-xe-universal_10.2.0.1-1.1_i386.deb oracle-xe_10.2.0.1-1.1_i386.deb

Después de esto, es probable que el sistema arroje una alerta por la configuración de Oracle DB similar a la siguiente.



Es por esto, que finalmente debemos ejecutar el siguiente comando para correr la configuración de Oracle.

/etc/init.d/oracle-xe configure

Al ejecutar dicho comando se debería configurar algunos puertos y la contraseña de los usuarios SYS y SYSTEM. Después de esto, la consola deberá mostrarnos que Oracle DB está listo para ser utilizado. Adicional, debemos configurar algunas variables de entorno para que en adelante no tengamos problemas con el Cliente de Oracle.

En el directorio $HOME, editamos el siguiente archivo de configuración de la sessión

nano .bashrc

Justo al final, agregamos las siguientes líneas dependiendo de los directorios en donde se haya instalado la base de datos de Oracle.

export ORACLE_SID=xe
export ORACLE_BASE=/usr/lib/oracle/xe/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/client
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

Apache también posee sus propias variables de entorno, por lo cual, debemos agregar las mismas líneas al final del archivo /etc/apache2/envvars. Este punto es muy importante ya que gracias a estas variables podremos utilizar el driver oci8 desde el entorno web.

Linux 64 bits


Descargamos la última versión de Oracle para Linux 64 bits.

http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html

Después de descargar el instalador de Oracle, descomprimimos el archivo y buscamos el .rpm que debemos instalar. Para efectos de este tutorial y la versión que hemos descargado se ha descomprimido el archivo mostrado a continuación. Para la presente versión de Oracle Database, al descomprimir el archivo .zip se crea automáticamente una carpeta llamado Disk1 en donde se encuentra el archivo que debemos instalar.



El siguiente paso consiste en generar el archivo .deb el cual es el que realmente instalaremos en distribuciones basadas en Debian. Para generarlo, debemos ejecutar el siguiente comando sobre dicho archivo.

alien -d --scripts oracle-xe-11.2.0-1.0.x86_64.rpm
La consola mostrará un mensaje para informar que el respectivo archivo .deb ha sido generado.



Después de esto, y antes de instalar el paquete debian debemos realizar algunas configuraciones previas. Dicho esto, creamos el archivo /sbin/chkconfig y agregamos el siguiente contenido.

#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Ubuntu
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
echo >> $file
echo '### BEGIN INIT INFO' >> $file
echo '# Provides: OracleXE' >> $file
echo '# Required-Start: $remote_fs $syslog' >> $file
echo '# Required-Stop: $remote_fs $syslog' >> $file
echo '# Default-Start: 2 3 4 5' >> $file
echo '# Default-Stop: 0 1 6' >> $file
echo '# Short-Description: Oracle 11g Express Edition' >> $file
echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01
#EOF

Ahora debemos otorgar los permisos necesarios al archivo creado.

chmod 755 chkconfig

Después de esto, debemos crear el siguiente enlace simbólico.

ln -s /usr/bin/awk /bin/awk

Finalmente, editamos el archivo /etc/sysctl.conf y agregamos los siguientes parámetros del kernel.

# Oracle 11g XE kernel parameters
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
kernel.shmmax=536870912
Para hacer estos cambios efectivos ejecutamos el siguiente comando.

/sbin/sysctl -p

Ahora debemos crear un grupo llamado dba con el usuario oracle. El último comando configura la contraseña para el usuario oracle.

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

Después de esto instalamos el paquete con el comando dpkg.

dpkg --install oracle-xe_11.2.0-2_amd64.deb

A continuación se muestra el mensaje en consola que deberá salir al realizar la instalación del paquete.



Así, corremos la configuración y configuramos los parámetros solicitados.

/etc/init.d/oracle-xe configure

Al realizar la configuración de los parámetros solicitados la consula mostrará un mensaje de éxito al iniciar el servicio de la base de datos.



Por lo general la instalación de Oracle Database queda alojada en el directorio /u01, siguiendo esta premisa, se debe editar el archivo .bashrc del usuario para agregar las siguientes variables de entorno.

export ORACLE_SID=xe
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin

Apache también posee sus propias variables de entorno, por lo cual, debemos agregar las mismas líneas al final del archivo /etc/apache2/envvars. Este punto es muy importante ya que gracias a estas variables podremos utilizar el driver oci8 desde el entorno web.

Finalmente, para verificar que todo ha salido como se esperaba resta entrar al SQL*Plus, o a cualquier otro programa de manejo de la base de datos como SQLDeveloper y realizar algunas consultas con el usuario SYSTEM. En una próxima ocasión veremos como instalar el Oracle Instant Client, el cual provee las librerías necesarias y SDKs para conectar con las bases de datos Oracle con distintos tipos de Software. Hasta pronto!


Referencias

- Cómo instalar Oracle Database 11g R2 Express Edition XE. (2015, Enero 2). En Tu informática fácil. Retrieved 03:42, November 4, 2015, from 
- Installing Oracle Database Software. (2012, January 01). In Oracle Real User Experience Insight Documentation. Retrieved 10:00, February 7, 2016, from
https://docs.oracle.com/cd/E26370_01/doc.121/e26358/dbinstall.htm
- ORA-09925: Unable to create audit trail file tips. (2014, November 24). In Oracle Consulting, Oracle Support and Oracle Training by BC Oracle Consulting. Retrieved 22:00, February 7, 2016, from http://www.dba-oracle.com/t_ora_09925.htm
- Specifing Initialization Parameters. (2014, November 24). En Oracle Consulting, Oracle Support and Oracle Training by BC Oracle Consulting. Retrieved 22:00, February 7, 2016, from
https://docs.oracle.com/cd/B28359_01/server.111/b28310/create005.htm
- ORA-10997: another startup/shutdown operation o... | Oracle Community. (2016, February 08). In Welcome | Oracle Community. Retrieved 21:45, February 08, 2016, from
https://community.oracle.com/thread/1135858?start=0&tstart=0
- Installing Oracle 11gXE on Mint and Ubuntu. (2011, November 26). In The Anti-Kyte | Oracle - for when it was like that when you got there. Retrieved 21:11, February 14, 2016, from
https://mikesmithers.wordpress.com/2011/11/26/installing-oracle-11gxe-on-mint-and-ubuntu/
- Installing Java, Oracle 11g R2 Express Edition and SQL Developer on Ubuntu 64-bit. (2014, March 18). In Experienced Oracle SOA / BPM & Portal professionals - Lean thinking, Agile working | Whitehorses. Retrieved 21:11, February 14, 2016, from
http://blog.whitehorses.nl/2014/03/18/installing-java-oracle-11g-r2-express-edition-and-sql-developer-on-ubuntu-64-bit/

Instalación de Java (JDK)

La mayoría de personas que han utilizado una computadora han oído hablar de Java o lo recuerdan por su símbolo de tasa de té. Alguna vez navegando en la web han tenido la necesidad de instalar el cliente de Java bien sea para ejecutar una aplicación web o de escritorio. En este post, no veremos como instalar la versión Java que conocen la mayoría de personas, en su lugar, descargaremos e instalaremos el JDK (Java Development Kit) que es el entorno de desarrollo de aplicaciones en dicho lenguaje.

Instalación de Java (JDK)


El JDK de Java permite la ejecución de aplicaciones desarrolladas en Java (JRE) y a su vez permite el desarrollo de aplicaciones aportando las librerías necesarias para compilar código hecho en Java. Para más información sobre Java puedes visitar nuestra entrada Introducción a Java. Lo primero que debemos hacer es descargarnos la última versión del JDK disponible desde el siguiente enlace:


Para efectos de este post instalaremos de manera independiente el JDK y su IDE de desarrollo NetBeans. Sin embargo, en el mismo enlace visto anteriormente se da la posibilidad de obtener el JDK y NetBeans desde un solo archivo de instalación. Hasta el momento, la última versión del JDK es la 8 update 65, para esta versión específica encontraremos el instalador en el siguiente enlace:




El primer pantallazo del instalador preparará la instalación del programa. Dependiendo de la máquina puede tardar varios minutos pasar de este paso al siguiente, lo más importante es esperar tal y como el mensaje lo anuncia.



Lo siguiente será seguir las instrucciones lo cual indica dar clic en Next en repetidas ocasiones. En algún punto de la instalación el programa mostrará la ruta donde quedarán los binarios del JDK tal y como lo muestra la siguiente imagen.



Recordar esta ruta es importante porque más adelante podremos configurar la variable PATH del sistema para ejecutar o compilar aplicaciones desde la consola de windows. Al final de la instalación deberá aparecer el siguiente mensaje.



NetBeans


NetBeans es el IDE desarrollado por Oracle para trabajar con aplicaciones hechas en Java. NetBeans al igual que Java es multiplataforma, permite el desarrollo de aplicaciones de forma modular aportando los módulos necesarios para cada caso particular. Su editor de texto provee un resaltador de sintaxis avanzado y funciones de depuración de código en tiempo real, es sin duda, una muy acertada opción.

Podemos descargar la última versión de NetBeans en el siguiente enlace:




Para desarrollar en Java es necesario descargar solamente las herramientas para Java SE y Java FX. NetBeans permite el desarrollo de otros lenguajes como PHP, C, C++ y HTML5, sin embargo, al escoger alguna de estas opciones el instalador será mucho más pesado. Al ejecutar el instalar del NetBeans deberá aparecer una ventana similar a la siguiente:



Seguimos las instrucciones del instalador hasta donde aparezca la opción voluntaria de instalar JUnit. Este programa es un framework para testear aplicaciones desarrolladas  en Java. Si nunca lo has utilizado es mejor no instalarlo por ahora y ahorrarnos ese espacio en disco que pudiere ocupar.



Más adelante y después de algunos Next aparecerá la siguiente ventana la cual mostrará el directorio en donde se ha instalado el NetBeans y el directorio de donde ha tomando el JDK. Esto debe ser transparente para el usuario, en caso de no aparecer por ejemplo el directorio del JDK podremos pensar en que no está instalado o simplemente no lo ha tomado. En dado caso debemos colocar la ruta manualmente pero esto es algo que casi nunca ocurre.



Al finalizar la instalación deberá aparecer una ventana similar a la siguiente:



Por último, al abrir el NetBeans se mostrará la interfaz principal del programa.




Referencias

- Java (programming language). (2015, November 3). In Wikipedia, The Free Encyclopedia. Retrieved 03:12, November 4, 2015, from https://en.wikipedia.org/w/index.php?title=Java_(programming_language)&oldid=688830228
- NetBeans. (2015, October 22). In Wikipedia, The Free Encyclopedia. Retrieved 03:10, November 4, 2015, from https://en.wikipedia.org/w/index.php?title=NetBeans&oldid=686984856
- JDK Installation for Microsoft Windows. (2015, April 08). In Java Plataform Standard Editions Documentation. Retrieved 03:10, November 4, 2015, from
http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_jdk_install.html#CHDEBCCJ