SQL Avanzado

En esta sección, describiremos las siguientes palabras claves y conceptos SQL:

  • SQL UNION
  • SQL UNION ALL
  • SQL INTERSECT
  • SQL MINUS
  • SQL Subconsulta
  • SQL EXISTS
  • SQL CASE Seguir leyendo
Anuncios

Manejo de tablas grandes en Oracle 10g (Ultima parte)

MANEJO DE PARTICIONES

Borrando Particiones

Se puede borrar particiones de range, list, o composite range-list de tablas particionadas. Para las tipos hash-partition o hash- subpartitions de range-hash tablas particionada, debes ejecutar coalesce envés de drop partition.

■ ALTER TABLE … DROP PARTITION para borrar una partición de una table
■ ALTER TABLE … DROP SUBPARTITION para borrar una sub partición de un range-list tablas particionadas. Seguir leyendo

Xbox WiFi: Utiliza tu Laptop como un adaptador inalambrico

Comúnmente quienes somos muy fans de los vídeo juegos y sobre todo adictos al Xbox Live nos hemos visto en un problema común: ¿Como conectarse a Xbox Live cuando solo tenemos una red inalambrica disponible? En Xbox 360 existe una solución pero cuesta $100 dolares.

Así que hoy navegando por la red[1] me encontré con un enlace a Instructables con unos sencillos pasos de como utilizar nuestro portátil para compartir la conexión a Internet y utilizarlo a modo de Adaptador inalambrico, una de esas sencillas solucione que dices como no se me ocurrió antes. Ya lo he probado y funciona correctamente. Y debe sin problemas funcionar con Xbox, Xbox 360, Windows XP, Vista y Mac OS X.

Las instrucciones en español, aquí enseguida después del salto:

 

  1. Conecta mediante un cable de red (RJ45) cruzado tu Xbox al laptop por medio del puerto Ethernet, si no tienes un cable cruzado puedes utilizar cualquier HUB, Switch que tengas por ahí (en mi caso yo use el mismo router inalámbrico un poco ilógico lo se 🙂 )
  2. Ve a Inicio – Conectar a – Conexiones de Red Inalámbricas – Propiedades
  3. Ve a la pestaña Opciones Avanzadas y marca la casilla: Permitir a usuarios de otras redes conectarse a travez de la conexión de Internet de este equipo.

  4. Despues unicamente “repara” la conexión de internet LAN, dando clic derecho en el icono de la barra de tareas.
  5. Listo tu Xbox deberia estar recibiendo conexión a Internet por medio de tu Laptop.

Estas instrucciones han sido probadas en Windows XP, para otros sistemas operativos visita la pagina en Instructables

Via | Bitslab

Enlace | Use your laptop as an Xbox/Xbox 360 “Wireless Adapter” on Windows XP/Vista, and Mac OSX

Manejo de tablas grandes en Oracle

Tablas Particionadas en Oracle

Es un esquema de organización de los datos con el cual podemos dividirla en múltiples objetos de almacenamientos llamados particiones de datos o rangos, dependiendo los valores puede ser dividido en uno o más columnas de la tabla. Cada particiones de datos es almacenado separadamente. Estos objetos almacenados pueden estar en diferentes tablespaces, en el mismo o en una combinación de ambos. Seguir leyendo

Crear una base de datos en MySQL

Vamos a crear una base de datos MySQL sencilla y rápidamente, gracias a phpMyAdmin. Seguir leyendo

Controlar espacio de los tablespaces en Oracle

  1. OBJETIVOS

    Automatizar el control de espacios libre en los tablespaces de base de datos mediante un procedimiento pl/sql.
    Se pretende facilitar un procedimiento que compruebe el espacio libre del tablespace y si este es menor de un portentaje especificado del total se envie un correo de alerta para que el administrador pueda aumentar el tamaño del tablespace

  2. COMO VER EL ESPACIO LIBRE DE LOS TABLESPACES DE ORACLE              

  3.  Para ver el espacio libre que queda en un tablespace tenemos que mirar en la tabla dba_free_space

  4. SELECT tablespace_name,
    ROUND(sum(bytes)/1024/1024,0)
    FROM dba_free_space
    WHERE tablespace_name NOT LIKE ‘TEMP%’
    GROUP BY tablespace_name;

    Con esta consulta obentemos el nombre del tablespace y el espacio en Megas libre

    Para ver el espacio total en un tablespace tenemos que mirar en la tabla dba_data_files

    SELECT tablespace_name,
    round(sum(BYTES/1024/1024),0)
    FROM dba_data_files b
    WHERE tablespace_name NOT LIKE ‘TEMP%’
    GROUP BY b.tablespace_name;

    Con esta consulta obentemos el nombre del tablespace y el espacio total en Megas que puede llegar a tener

  5. COMO ENVIAR UN CORREO EN PL/SQL

    Como hemos dicho en el objetivo de este articulo, cuando el tablespace se esté quedando sin espacio libre, se recibirá un correo.
    Vamos a proporcionar un procedimiento para poder enviar un correo.

    CREATE OR REPLACE PROCEDURE SEND_MAIL(SENDER IN VARCHAR2, RECIPIENT IN VARCHAR2, SUBJECT IN VARCHAR2, MESSAGE IN VARCHAR2) IS
    — SENDER: direccion de correo de quien envia el mail
    — RECIPIENT: dirreción de correo a la que va dirigida el mail
    — SUBJECT: Es el asunto del correo
    — ESSAGE: es el texto del mensaje
    mailhost CONSTANT VARCHAR2(30) := ‘mail.server.es’; — servidor de correo , sustituir cadena por una valida
    mesg VARCHAR2(1000); — texto del mensaje
    mail_conn UTL_SMTP.CONNECTION; — conexion con el servidor smtp
    BEGIN
    mail_conn := utl_smtp.open_connection(mailhost, 25);
    mesg := ‘Date: ‘ ||
    TO_CHAR( SYSDATE, ‘dd Mon yy hh24:mi:ss’ ) || CHR(13) || CHR(10) ||
    ‘From: <‘|| Sender ||’>’ || CHR(13) || CHR(10) ||
    ‘Subject: ‘|| Subject || CHR(13) || CHR(10)||
    ‘To: ‘||Recipient || CHR(13) || CHR(10) || ” || CHR(13) || CHR(10) || Message;
    utl_smtp.helo(mail_conn, mailhost);
    utl_smtp.mail(mail_conn, Sender);
    utl_smtp.rcpt(mail_conn, Recipient);
    utl_smtp.data(mail_conn, mesg);
    utl_smtp.quit(mail_conn);
    EXCEPTION
    WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR(-20004,SQLERRM);
    END send_mail;

    Sustituir mail.server.es por un servidor smtp valido

  6. PROCEDIMIENTO PARA CONTROLAR EL ESPACIO LIBRE DE LOS TABLESPACES

    A través de este procedimiento comprobamos que queda más de un porcentaje establecido libre en el tablespace con respecto a su espacio total
    Si el espacio libre es menor al limite establecido ( portentaje ) del total del tablespace se envia un correo utilizando el procedimiento que se ha explicado en el punto anterior.

    CREATE OR REPLACE PROCEDURE ALERTA_ESPACIO (limite number) IS
    — CREAMOS EL CURSOR CON EL NOMBRE DE LOS TABLESPACES
    — Y ESPACIO LIBRE
    CURSOR c_espacio_libre IS
    SELECT tablespace_name,
    ROUND(sum(bytes)/1024/1024,0)
    FROM dba_free_space
    WHERE tablespace_name NOT LIKE ‘TEMP%’
    GROUP BY tablespace_name;
    — CREAMOS EL CURSOR CON EL NOMBRE DE LOS TABLESPACES
    — Y ESPACIO total
    CURSOR c_espacio_total IS
    select tablespace_name,
    round(sum(BYTES/1024/1024),0)
    FROM dba_data_files b
    WHERE tablespace_name NOT LIKE ‘TEMP%’
    GROUP BY b.tablespace_name;
    — DEFINIMOS LAS VARIABLES PARA METER EL CONTENIDO DEL CURSOR
    c_nombre VARCHAR2(20);
    c_libre NUMBER(10);
    c_total NUMBER(10);
    v_bbdd VARCHAR(20);
    BEGIN
    — OBTENEMOS EL NOMBRE DE LA BASE DE DATOS
    SELECT name into v_bbdd from v$database;
    — ABRIMOS EL CURSOR Y NOS POSICIONAMOS EN LA PRIMERA LINEA
    OPEN c_espacio_libre;
    OPEN c_espacio_total;
    FETCH c_espacio_libre INTO c_nombre,c_libre;
    FETCH c_espacio_total INTO c_nombre,c_total;
    — EN CASO DE QUE EXISTA RESULTADO REALIZAMOS LAS COMPROBACIONES DE ESPACIO
    WHILE c_espacio_libre%found
    LOOP
    — comprobacion del tablespace ES MENOR DE limite MEGAS
    IF (c_libre * 100) / c_total < limite THEN
    send_mail(‘dedireccion@orasite.es’,’paradirecion@orasite.es’,
    ‘ALERTA DE ESPACIO EN BASE DE DATOS ‘ || v_bbdd,
    ‘El tablespace con nombre: ‘ || c_nombre || ‘ se esta quedando sin espacio’ ||chr(10)|
    ‘El tamaño restante es de: ‘ || c_libre || ‘ Megas’);
    END IF;
    FETCH c_espacio_libre INTO c_nombre, c_libre;
    FETCH c_espacio_total INTO c_nombre,c_total;
    END LOOP;
    CLOSE c_espacio_libre;
    CLOSE c_espacio_total;
    END;
    /
    Este procedimiento recibe un parametro, que será el porcentaje que queramos comprobar. Un valor normal sería 10, de esta forma comprobará que el espacio libre sea mayor de un 10 por ciento del tamaño total del tablespace.
    En caso de que no sea mayor que ese límite puesto, se enviará un mail. Modificar las direcciones de correo, por direcciones de correo validas.

  7. AUTOMATIZAR LA TAREA DE COMPROBACION DE TABLESPACES

    Esta tarea se puede automatizar poniendo un job ( tarea ) en la base de datos y que compruebe cada x tiempo si los tablespaces se han llenado.
    Si no tenemos ningún job en la base de datos, antes de poner un job tenemos que asegurarnos que el valor job_queue_processes es mayor que 0.

Full Outer Join en Oracle

La sentencia full outer join de SQL (como lenguaje de consulta) extrae todos los registros de las tablas relacionadas, independientemente de si sus relaciones aparecen o no en la otra tabla. Pues bien, en Oracle no la puedo utilizar, porque no esta permitida, no me pregunten, no soy especialista en Oracle, solo sé que no pude usarla porque no es aceptada. Pero en ocasioes, talvés raras ocasiones, es necesario, es decir, la debes emplear (así vaya contra tus principios como me dijo un compañero).

Pues bién, ¿como hacer esta instucción?, si deseas utilizar la instrucción:

–En SQL 92 (ANSI)
SELECT ename, job, dname
FROM emp e FULL OUTER JOIN dept d
ON e.deptno = d.deptno;

debes hacerla de esta forma:

–En SQL ISO
SELECT ename, job, dname
FROM emp e, dept d
WHERE e.deptno = d.deptno(+)
UNION
SELECT ename, job, dname
FROM emp e, dept d
WHERE e.deptno(+) = d.deptno;

La idea es utilizar la instrucción UNION para unir dos conjuntos de resultado y obetener solo uno, que es finalmente el que me sirve…. y aunque trate de hacerlo con más de dos instrucciones UNION solo funcionó con una, como en el ejemplo… a menos que haya hecho algo mal! ???

Una explicación detallada de estas instrucciones y de las demás join las encuentras en la siguiente dirección web: http://www.zonaoracle.com/manuales-tutoriales-oracle/sql92/index.asp con los ejemplos correspondientes.

Espero que les sea de utilidad.

Contacto