Entradas

Mostrando las entradas etiquetadas como Bases de datos

Listar Esquemas y Tablas de Oracle

Una de mis tareas laborales es fungir como DBA de una base de datos Oracle . Para un nuevo proyecto necesitaba crear un usuario y darle a ese usuario permisos de SELECT sobre todas las tablas de un Esquema .  Estuve investigando y llegué a algunas consultas útiles, pero todo repartido en varios sitios.  Listar todos los SCHEMAS Esta consulta la encontré en sitio de Burleston Consulting , un referente para todos los que tenemos que lidiar con bases de datos Oracle. Si nunca visitaron el sitio vale la pena hacerlo. La consulta la encontré aquí .  SELECT DISTINCT owner AS SCHEMA FROM dba_segments WHERE owner IN (SELECT username                   FROM dba_users                  WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY owner ASC; Listar todas las tablas de un SCHEMA Encontré var...

Contar Registros en todas las tablas de SQL Server

Hace un par de años SQL Server entró en mi vida profesional. No he tenido necesidad de hacer grandes cosas en SQL Server, pero seguramente en un futuro post del blog escriba algo para quienes puntualmente tocan SQL Server.  Como parte de una migración desde otra base de datos, necesite contar la cantidad de registros en cada tabla migrada. Encontré este post , que sugiere un query. Aqui va una version del mismo que corre en SQL Server 2008 o posterior:           SELECT sysobjects.Name , sysindexes.Rows           FROM                   sysobjects           INNER JOIN sysindexes ON sysobjects.id = sysindexes.id           WHERE type = 'U' AND sysindexes.IndId < 2       ...

¿PERL?

En el año que terminó recibí dos ofertas firmes de empleo, que involucraban este lenguaje. Es habitual que me llamen reclutadores , un par de veces al año, buscando gente con conocimiento de PERL . Me sorprendió las ofertas firmes de empleo, con salarios competitivos y en un caso un paquete de beneficios interesante. El PERL entró a mi vida hace unos 15 años, con un cambio de empleo . Entre mis tareas como administrador de sistemas debía realizar scripts para automatización de tareas. Muchos de esos scripts se hacían con herramientas de filtros ( SED , AWK ). Varios scripts se sustituyeron o hicieron desde cero en PERL. Con algunas ventajas frente a programar con filtros, por la claridad de a la hora de entender la lógica del programa. El lenguaje resultaba adecuado para el trabajo. Con otro cambio de empleo, empecé a trabajar como desarrollador WEB . Mi trabajo inicial era corregir bugs y agregar funcionalidades a KOHA , un sistema de gestión integrado para una bibliote...

Respaldos MOODLE

He estado trabajando en la actualización de un servidor Moodle muy viejo, versión 1.9.4. Para llevar este servidor a la ultima versión estable, es necesario hacer una serie de actualizaciones pasando por varias de las versiones intermedias. Se aconseja realizar respaldos totales, previo a cada actualizaciones. Es deseable que en el respaldo esté el directorio de datos ( MOODLEDATA ), la base de datos y el directorio que contiene los ejecutables. Para este trabajo hice un script que dejo acá: #!/bin/sh # Respaldo Total de Moodle MYSQLDUMP=$(which mysqldump) TAR=$(which tar) # Directorio Instalación de Moodle MOODLE_DIR= "/var/www//moodle" # Directorio de Datos de Moodle MOODLE_DATA_DIR= "/var/moodledata" APACHE_CONF_DIR= "/etc/apache2" PHP_CONF_DIR= "/etc/php5" MYSQL_USER= "mysql_administrator" MYSQL_PASSWORD= "Muy.Secreta" MYSQL_DB= "moodle_db" SERIAL=$(date +%Y%m%d-%H%M) BKP_DIR= "/home/RESPALDO"...

OpenCobol: vivo y activo !!!!!!

A fines de Febrero nos visitó en la oficina un vendedor, ofreciendo actualizar el compilador de COBOL que utilizamos en uno de nuestros servidores. No programo en COBOL , estoy familiarizado con el lenguaje. Destacaba la conectividad con Bases de datos y facilidades para desarrollo WEB de la nueva versión. La visita despertó mi curiosidad por el estado de los compiladores de COBOL libres. Recordaba haber leído sobre los mismos hace mucho, en Linux Journal . En ese momento los compiladores solo podían compilar programas sencillos, SQL embebido o conexión a bases de datos era un sueño. Recordaba un compilador llamado Tiny Cobol , con el que compile algún programa de Pruebas. Este proyecto está detenido desde principios del 2011. Buscando información rencontré el proyecto opencobol , actualmente conocido como GNU COBOL . Y mirando el proyecto encontré: Un compilador que soporta una parte sustancial del COBOL 85 y COBOL 2002.  Muchas extensiones de los compiladores COBOL ex...

Extensiones de Oracle para PHP

Dando soporte, donde un desarrollo en PHP debe utilizar una base de datos  Oracle , decidí documentar el proceso. MySQL y PostgreSQL   vienen como parte de la mayoría de las instalaciones de PHP. En otras bases de datos, ya me pasó con Informix , es necesario agregarlas en forma manual. No suele haber paquetes precompilados .  Encontré esta guia en el sitio de SuSE, que con algunos cambios y adaptaciones aplique con éxito. Brevemente, esto es lo que hay que hacer: Instalar PHP-devel : la forma mas simple de hacer esto es desde YaST, que resuelve automaticamente las dependencias. Si estamos trabajando con SLES, necesitaremos el SDK.  Instalar la extensión PECL de Oracle : Se baja desde esta pagina , en el sitio de PECL . Descomprimir el archivo, cambiarse al directorio creado y correr phpize .Se creara un script configure. Fijamos la variable de ambiente ORACLE_HOME, para que apunte al directorio de instalacion de Oracle. Para concluir, ejecutamos: ./config...

Editando la configuracion de Oracle

Estoy haciendo mis primeras armas como DBA en ORACLE . Aplicando unos cambios en la configuración de un servidor me enfrenté al error ORA-00838, que resolví con esta receta . Para resolverlo tuve que hacer cambios en la configuración, pero la configuración está en un archivo binario. Lo primero es exportar la configuración a un archivo de texto: create pfile='/tmp/pfile.backup' from spfile; Esto genera un archivo de texto, /tmp/pfile.backup , que podemos editar con un archivo de texto. Luego de editar el archivo de texto, generamos el archivo binario para arrancar el motor: create spfile from pfile='/tmp/pfile.backup'; Luego de eso, podemos arrancar el motor, con el comando startup .

Otra solucion para problemas de Collation en Moodle con MySQL

Hace algunos meses comentaba sobre algunos problemas que tuve con el collation de MySQL en un upgrade de Moodle . En otra actualizacion, revisando las herramientas CLI me encontré con este script:  mysql_collation.php Aparentemente el problema era frecuente, la gente de Moodle creo una herramienta.

Una actualizacion de Moodle que se complicó

Imagen
Unos meses atrás, encaré actualizar un servidor Moodle 1.9 con MySQL 5.1 a la versión 2.0. Seguí el procedimiento que postee en el blog . Terminé la instalación procedi a configurar Moodle. Encuentro con un error de base de datos: El mensaje de error hacia referencia al collation de dos tablas. Desde la consola, corrí un show table status . Había tablas con distintos collation. Decidí convertir las tablas a UTF-8 , con collate utf8_unicode_ci. Utilice el siguiente alter table : ALTER TABLE database.table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci ;   Como tenia que cambiar mas de 250 tablas, generé un script ad-hoc , partiendo de la salida del show tables , generando las sentencias SQL con AWK. Yo elegí como charset UTF-8, pero la receta aplica para cualquier combinación razonable de charset y collate.

Script para correr sqlplus

Estoy ejecutando consultas a una base de datos Oracle desde shellscripts. Ejecuto las consultas invocando a sqlplus , la interfase de linea de comando de Oracle. Para poder reutilizar código, cree este script: #!/bin/sh PATH="/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin" umask 022 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/dbhome_1 export ORACLE_SID=DBSID export PATH=${ORACLE_HOME}/bin:${PATH} export LD_LIBRARY_PATH=${ORACLE_HOME}/lib USER="DBUSER" PASSWORD="DBPASSWORD" if [ ${#} -eq 1 ]; then         if [ -f ${1} ];then                 sqlplus ${USER}/${PASSWORD} @${1}         fi else         # Solo ejecutamos el SQLPLUS         sqlplus ${USER}/${PASSWORD} fi Ejecutando el script so...

Employees: Una base de datos de prueba para MySQL

Un problema frecuente: queremos probar un motor de base de datos. Seria bueno contar con una base de datos con varias tablas y un conjunto de tuplas de tamaño razonable, ni muy grande ni muy pequeño. Por una entrevista de trabajo, conocí la existencia de la base de datos Employees. Patrick Crews y Giuseppe Maxia, obtuvieron el conjunto de datos original y lo convirtieron en un paquete pronto para ser cargado en MySQL. Simplemente bajamos el paquete desde Launchpad , lo cargamos en nuestro servidor y esta pronto para utilizarlo. En la documentación tenemos un conjunto de consultas para validar los datos . El set de datos original fue creado por Fusheng Wang y Carlo Zaniolo, de Siemens Corporate Research. Los datos estan en XML, y pueden descargarse de aqui: employeeTemporalDataSet . El README se explaya en  el contenido del archivo.

SQuirreL SQL: Cliente SQL Universal

SQuirrel SQL es un cliente SQL Universal. Implantado en JAVA , corre en Windows, Linux y MacOS. Se conecta a las bases de datos por JDBC , soportando todas las bases de datos del mercado. La instalación es muy simple, tiene como pre requisito tener instalado JAVA. Basta con bajar del sitio el instalador (squirrel-sql-3.4.0-install.jar) y ejecutarlo: java -jar squirrel-sql-3.4.0-install.jar . Sugiero instalar la base de datos bajo /opt , y hacer los symlinks necesarios para correr el ejecutable en /usr/local/bin . Luego tendremos que instalar los drivers JDBC para acceder a las bases de datos, si ya no lo tenemos hecho. Si nuestro escritorio es Ubuntu y queremos acceder a postgres y mysql, deberiamos instalar lo siguiente: apt-get install libmysql-java (JDBC MySQL) . apt-get install libpg-java (JDBC PostgreSQL) . Ya podemos ejecutar squirrelSQL y habilitar los drivers que hemos instalado. Hacemos click en la pestaña drivers , y elejimos la base de datos que queremos config...

Informix en PHP

Hace poco me pidieron que configurara el PHP de un servidor para trabajar con una base de datos Informix . Usualmente el PHP que proveen las distribuciones trae el soporte a PostgreSQL y MySQL. Encontré varias guías que explicaban como instalar el soporte en PDO , pero andaba necesitando acceder con las funciones ifx*, no orientadas a objetos. Para cualquiera de las dos opciones tuve que bajar e instalar el SDK (Kit de desarrollador) . EL driver PDO como las funciones ifx_* compilan contra las bibliotecas del SDK. Una de las guias que utilicé para el driver PDO es esta .Pero seguia sin encontrar rastros de las funciones ifx_*. Hasta que me topé con este sitio . Las funciones ifx_* son parte de PECL , un repositorio de extensiones de PHP. Por lo que vi en la pagina de ifx_* actualmente el driver no tiene mantenimiento, pero no dio problemas para compilarlo. Lo instalé siguiendo la guía, corrí algunos programas de pruebas y listo.