lunes, 7 de marzo de 2016

Sintaxis básica en PHP

Ya hemos vista anteriormente una pequeña Introducción al Lenguaje PHP, en esta ocasión, empezaremos con el estudio de la sintaxis básica del lenguaje y cómo combinarlo con el lenguaje de marcado HTML.

Etiquetas de Apertura y Cierre


Cómo en muchos lenguajes de scripting, PHP utiliza etiquetas que identifican el inicio y fin de un script PHP. Éstas etiquetas pueden ser usadas en scripts que contengan solamente código PHP o bien una combinación con otro lenguaje como HTML. A continuación, vemos cómo PHP se puede utilizar como lenguaje embebido dentro de HTML.

index.php
<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?php echo "<p>Hola mundo</p>"; ?>
  </body>
</html>

Además de esto, puede darse el caso contrario, y utilizarse HTML como lenguaje embebido de PHP.

index.php
<?php
   echo "<!DOCTYPE html>";
   echo "<head><title>Título Página</title></head>";
   echo "<body>";
   echo "<p>Hola mundo!</p>";
   echo "</body>";
?>

Ambas formas son correctas y tienen sus ventajas y sus desventajas que serán estudiadas mucho más adelante en este curso de PHP. Por ahora, basta conocer las diferentes formas en que puede utlizarse PHP como lenguaje de scripting.

En este punto y antes de continuar, es necesario decir que se debe tener configurado un servidor Web Apache o IIS, en conjunto con los binarios del lenguaje PHP. Ya en un post anterior (Lenguaje PHP) se resumió de manera ordenada los pasos que se deben seguir para instalar y configurar los dos servidores Web mencionados sea cual sea la plataforma.

PHP también puede ser utilizado para usos más complejos como manipulación de archivos del sistema, tareas de de rutinas, etc. En operador ternario alguna vez utilizamos PHP para crear un script que debía ser ejecutado desde consola para la actualización dinámica de la dirección IP en un servidor DNS. Para más información visista nuestro post Configuración Servidor DNS con BIND.

Escape de HTML


Existen varias formas de escapar del lenguaje HTML cuando se utiliza en conjunto con PHP. Una de ellas es la que se vio en el primer ejemplo del presente post. Consiste básicamente en abrir y cerrar las etiquetas de PHP cada vez que se requiera imprimir código HTML. Sin embargo, observemos ahora cómo luce este tipo de escape con sentencias condicionales.

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?php
         if (true) {
            echo "<p>Hola mundo</p>";
         }
         else 
         {
            echo "<p>Esto no se imprime</p>";
         }
      ?>
  </body>
</html>

Esto es entendible, sin embargo, por lectura de código y optimización ésta es una forma arcáica de imprimir datos en PHP (Sobretodo en bloques de texto grandes). Para esto, PHP ha diseñado una forma alternativa de sintáxis que puede ser utilizada en documentos que tienen características de plantilla. Para nuestro caso, supondremos que el documento es una plantilla, y lo modificaremos de la siguiente forma para que utilice la sintáxis alternativa.

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?php if (true): ?>
         Hola mundo 
      <?php else: ?>
         Esto no se imprime
      <?php endif; ?>
  </body>
</html>

Para bloques pequeños de código, puede utilizarse esta sintaxis o simplemente utilizar la short echo tag siempre disponible desde php 5.4.

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?= "Hola mundo" ?>
  </body>
</html>

Finalmente, si combinamos la short echo tag con un operador ternario para simular el bloque if anterior quedaríamos finalmente con el siguiente script.

<!DOCTYPE html>
<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Título</title>
   </head>
   
   <body>
      <?= (true) ? "Hola mundo" : "Esto no se imprime" ?>
  </body>
</html>

La belleza, en todo su esplendor!. Se ha refactorizado el código de los anteriores ejemplos en tan solo una línea de código PHP.

Nota: Como otros lenguajes (C, Perl) cada sentencia PHP debe terminar con un punto y coma. Sin embargo, en algunas partes de los ejemplos se ha omitido dado que PHP no los requiere en dichos casos. El lector debe observar los ejemplos en los cuales se utliza la short echo tag, dado que con esta sentencia no se necesita un punto y coma.

Comentarios en PHP


PHP soporta comentarios tipo C, C++ y Unix-shell. A continuación se muestra la forma en que se puede comentar el código PHP de cada una de las formas posibles.

index.php
<?php
   // Esto es un comentario en una sola línea tipo C++
   echo "Hola ";

   # Esto es un comentario tipo Unix-shell
   echo "mundo";

   /* Este es un comentario
      multilínea */
   echo "!";
?>

Los comentarios multilínea no deben ser anidados por ninguna razón en PHP. Los comentarios en PHP sirven para documentar el código y que en el futuro los programadores puedan entender un poco mejor las razones por las cuales hemos creado variables, procedimientos, entre otros componentes del script. Para más información sobre cómo documentar el código puedes visitar phpDocumentor. Hasta la próxima!.


Referencias

- PHP: PHP tags - Manual. (2016, March 7). In PHP: Languaje Reference - Manual. Retrieved 03:42, March 7, 2016, from http://php.net/manual/en/language.basic-syntax.phptags.php
- PHP: Comments - Manual. (2016, March 7). In PHP: Languaje Reference - Manual. Retrieved 03:42, March 7, 2016, from http://php.net/manual/en/language.basic-syntax.comments.php

domingo, 21 de febrero de 2016

Schemas en Oracle Database

En anteriores post hemos visto Cómo instalar Oracle Database y Cómo instalar Oracle SQL Developer para el manejo de las bases de datos Oracle. En el post del día de hoy comenzaremos con el estudio de Oracle Database y el lenguaje estándar SQL.

Database Schemas


Un Schema (Esquema) es una colección de estructuras lógicas de datos, o esquemas de objetos. En el post Conceptos básicos en Oracle Database se explicó el concepto de estructuras lógicas y estructuras físicas de almacenamiento en Oracle Database. En lo que refiere a un esquema, este siempre pertenece a un usuario de la base de datos con el mismo nombre. A su vez, un usuario siempre tiene un esquema asociado.

Para entender esto mejor, visualicemos esquema SYSTEM del cual el usuario dueño es SYSTEM. Para observar las tablas del sistema que tienen asociado el esquema SYSTEM, es decir, donde SYSTEM es el dueño basta realizar el SELECT mostrado a continuación.


El ejemplo anterior nos indica cómo consultar las tablas asociadas a un esquema/usuario de la base de datos. Más adelante veremos cómo crear un esquema, lo cual por intuición, significa crear un usuario. Por ahora, es necesario comprender cómo es la arquitectura de las bases de datos Oracle para guardar bases teóricas sólidas. Por esto reiteró, es necesario comprender lo básico en arquitectura de Oracle leyendo el post Conceptos básicos en Oracle Database.

Los esquemas de objetos pueden ser manipulados mediante el lenguaje SQL e incluyen los siguientes tipos.

Object Schema
Clusters
Database Links
Database triggers
Dimensions
External procedure libraries
Indexes and index types
Java classes, Java resources, and Java sources
Materialized views and materialized view logs
Object tables, object types, and object views
Operators
Sequences
Stored functions, procedures and packages
Synonyms
Tables and index-organized tables
Views

Existen otros tipos de esquemas de objetos que no están contenidos en ningún esquema de bases de datos. Estos son:

Object Schema
Contexts
Directories
Profiles
Roles
Tablespaces
Users

Es de notar, que un Tablespace puede contener objetos de diferentes esquemas de bases de datos, a su vez, un objeto puede estar contenido en diferentes Tablespaces. Es decir, no existe una relación entre Esquemas y Tablespaces. A lo largo del curso Oracle, expondremos en detalle los esquemas de objetos más importantes en Oracle Database. En nuestro próximo post, entraremos en detalle sobre la creación de bases de datos y usuarios. Hasta pronto!


Referencias

- Schema Objects. (2015, July 27). In Oracle Help Center. Retrieved 03:42, February 21, 2016, from https://docs.oracle.com/cd/B19306_01/server.102/b14220/schema.htm

sábado, 20 de febrero de 2016

Instalación Sublime Text Linux

Sublime Text es un editor de texto escrito en Python que ha demostrado ser uno de los mejores editores multiplataforma desde su segunda versión. En la Página oficial de Sublime Text se pueden descargar los instaladores tanto para Windows como para Linux 32/64 bits. Según sea la arquitectura de nuestra computadora deberemos descargar la carpeta correspondiente como tarball.



Instalación sobre Debian GNU/Linux


Después de decargar el source, descomprimirmos la carpeta descargada y navegamos en consola hasta ubicarnos dentro de ella. Creamos la carpeta sublime_text en /opt, creamos el enlace simbólico a /usr/bin y copiamos el ícono de acceso a la aplicación en el menú del sistema.

cd Downloads/sublime_text_3
mkdir /sublime_text/opt
cp -Rv * /opt/sublime_text
ln -s /opt/sublime_text/sublime_text /usr/bin/sublime-text
cp /opt/sublime_text/sublime_text.desktop /usr/share/applications

Para verificar que todo ha quedado correctamente configurado, ejecutamos el comando sublime-text en consola y tendrá que abrir enseguida el Sublime Text. Debe ocurrir exactamente los mismo si ejecutamos el Sublime Text desde el menú del sistema. A continuación dejo las imagenes de ejecución en consola y la búsqueda en el menú del sistema. Hasta la próxima!.

Ejecución por consola de Sublime Text

Búsqueda de Sublime Text en el menú de GNOME

martes, 2 de febrero de 2016

Instalación SQL Developer

Uno de los aspectos más importantes cuando se empieza a manejar un motor de bases de datos es cómo manipular los datos de manera óptima y eficiente. Para esto cada Sistemas Gestores de Bases de Datos (SGBD) posee uno o más IDE's como solución al manejo de la información mediante el lenguaje estructurado SQL. Para el Caso de Oracle, el IDE más popular existente es SQL Developer, creado por Oracle como herrmienta de acceso gratuita. En un post anterior (Instalación Oracle Database) vimos cómo instalar Oracle en distintas plataformas. El día de hoy veremos como realizar la instalación de esta herramienta de administración de la base de datos Oracle.

Instalación sobre Windows 7/8


Lo primero que debemos hacer es descargar la última versión disponible del programa la cual podemos encontrar en el siguiente enlace.


Dependiendo de la versión del sistema operativo y de si ya se tiene una instalación del JDK de Java, se debe escoger la version adecuada para la máquina en donde será instalado. Para efectos de este tutorial, se escogerá la versión para Windows de 32/64 bits sin el instalador del JDK. 


Es necesario tener una instalación previa del JDK el cuál puede ser descargado desde el siguiente enlace:


Dado que este post no está dedicado a la instalación del JDK o alguna tecnología de desarrollo en Java no se hará énfasis en esta instalación.

Después de descargar el archivo de instalación del SQL Developer y descomprimirlo, al interior de la carpeta generada se encontrará un archivo con el nombre sqldeveloper.exe. Se debe ejecutar este archivo como administrador y seguir las instrucciones del programa. El primer mensaje que debería aparecer muestra la ruta en donde está instalada la versión del JDK en el equipo.



En este caso, la versión instalada en el sistema es la versión 8 update 65. Damos clic en el botón de OK y el programa se ejecutará automáticamente. Antes de mostrarse la interfaz principal, si es la primera vez que se ejecuta el programa aparecerá un mensaje preguntando si se desea importar preferencias de instalación de versiones anteriores del programa. Si no es el caso, damos clic en No.



Por último, se mostrará la interfaz principal del programa.



Dado que esta versión del sqldeveloper es portable deberá crearse un acceso directo del instalador en la carpeta del escritorio para poder se ejecutada a cuando se requiera.

Instalación sobre GNU/Linux (Debian)


Desde la misma página de descarga del SQL Developer (Download) se debe aceptar la licencia y descargar la última versión del programa mediante la opción Other Plataforms.Una vez descargado se debe instalar el paquete sqldeveloper-package.

apt-get install sqldeveloper-package

Con esto, se podrá ejecutar el siguiente comando

make-sqldeveloper-package -b BUILD_LOCATION ZIP_FILE_LOCATION

En donde BUILD_LOCATION es la ruta en donde quedará compilado el SQL Developer y ZIP_FILE_LOCATION es la ruta en donde se ha descargado el source para todas las plataformas. Se directorio en donde quedará compilado deberá estar vacío, por lo cual es recomendable crear un directorio exclusivo para la compilación. En la imagen de abajo de puede evidenciar la ejecución de la compilación con la versión actual del SQL Developer.



Después de esto deberá haberse generado un archivo con extensión .DEB similar a los que se instalan desde los repositorios oficiales.


Finalmente resta instalar el paquete generado con el comando dpkg.

dpkg -i sqldeveloper_4.1.3.20.78+0.2.4-1_all.deb

Al ejecutar el programa instalado, se deberá proporcionar el path en donde se tenga instalado el JDK de java para la arquitectura necesario. Por lo general esta ruta debe ser similar a la siguiente /usr/lib/jvm/java-8-openjdk-amd64. Después de proporcionar esta ruta, el programa no volverá a preguntar por el path del JDK.


Referencias

- Oracle SQL Developer. (2015, November 2). In Wikipedia, The Free Encyclopedia. Retrieved 03:42, November 4, 2015, from 
https://en.wikipedia.org/w/index.php?title=Oracle_SQL_Developer&oldid=688730169
- Install Oracle SQL Developer on Ubuntu Karmic & Lucid | UnMickAble. (2010, September 27). In UnMickAble | Linux, Python, Boston, Donegal. Retrieved 10:00, February 2, 2016, from http://timony.com/mickzblog/2010/01/09/install-oracle-sql-developer-on-ubuntu-karmic/

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/