Archive for the ‘Bases de datos’ Category

Expiración de Password en Oracle Database 11g

Viernes, enero 27th, 2012

Hoy, después de unos meses de no haberme conectado a la base de datos de mi equipo, resultó que no podía iniciar sesión en el Enterprise Manager de la base de datos. Nada. La página web (https://pc0001:1158/em) me mostraba error en la autenticación. Pensé que había olvidado el password aunque finalmente pude conectarme a través de SQL Plus con el password que pensé no servía (me conecté como “sys as sysdba”) y modifiqué el password a mano del usuario ‘system’:

alter user USERNAME identified by PASSWORD;

Luego de ello entré al Enterprise Manager… Y sorpresa, los passwords de sys y otros habían expirado.

De lo que pude leer, lo que pasa es que Oracle Database 11g pone por defecto la expiración del password como habilitada. Pero están de acuerdo que no es común cambiar los passwords en una base de datos. Si están en mi mismo caso, hay que quitar esa opción de expiración. Y como siempre, es más fácil a través del SQL Plus.

ALTER PROFILE DEFAULT LIMIT
FAILED_LOGIN_ATTEMPTS UNLIMITED
PASSWORD_LIFE_TIME UNLIMITED;

Algunos enlaces de interés (parte de la información fue obtenida de estas fuentes):

  • http://www.odi.ch/weblog/posting.php?posting=520

MySQL: “INSERT INTO … SELECT …” y “NOW()”

Sábado, agosto 28th, 2010

Tuve la necesidad de hacer una migración de datos en MySQL: De una tabla origen a otra destino completamente distintas (eran tablas de plugins distintos del WordPress). Para ello me topé con dos problemas:

  • ¿Cómo recupero un valor con la fecha del día? (algo así como el “today” de oracle)
  • ¿Cómo hago un “select … into”?
  • Si deseas consultar la fecha del sistema:

    mysql> select date(now())as DateToday;
    +------------+
    | DateToday  |
    +------------+
    | 2008-12-22 |
    +------------+
    1 row in set (0.00 sec)
    

    Un select para llenar otra tabla:

    MySQL Server no soporta la sintaxis de extensiones Sybase SQL: SELECT … INTO TABLE …. En su lugar, MySQL Server soporta la sintaxis estándar SQL INSERT INTO … SELECT …, que básicamente es lo mismo.

    INSERT INTO tbl_temp2 (fld_id)
        SELECT tbl_temp1.fld_order_id
        FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
    

    Juntando ambas cosas:

    INSERT INTO nueva_tabla (texto_nuevo, fecha_insercion)
        SELECT texto_viejo, now()
        FROM tabla_vieja;