Archive for the ‘Base de Datos’ Category

Ejecutar un script desde SQLPlus de Oracle

jueves, noviembre 26th, 2009

Luego de haberse loeado a SQL Plus de oracle la forma inmediata de ejecutar un script es

SQL >  @{file}

O sea

SQL >  @insertTablaX.sql

por ejemplo. Si recibes error de archivo no encontrado intenta introduciendo la ruta completa

SQL >  @d:/opt/scripts/inserttablaX.sql

Diferencias entre systimestamp y sysdate en Oracle

martes, noviembre 17th, 2009

Tengan cuidado al usar systimestamp y sysdate en Oracle, esto porque existe una pequeña diferencia al momento de tratar de presentar informacion:

SELECT TO_CHAR(systimestamp, 'DD/MM/YYYY HH24:MI:SS.FF3') FROM dual;
SELECT TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS.FF3') FROM dual;

Estas dos sentencias son diferentes, la primera te entrega la fecha hasta los milisegundos y la segunda da error. Esto porque sysdate solo guarda hasta el segundo, no considera los milisegundos.

Jdbc getMetaData ampliado

lunes, junio 22nd, 2009

El driver de Oracle nos entrega lo que la espcificación obliga, pero internamente los comentarios los configura en null, para poder simular una consulta de forma de poder extraer los comentarios entonces se puede utilizar

SELECT NULL AS table_cat,
o.owner AS table_schem,
o.object_name AS table_name,
o.object_type AS table_type,
C.COMMENTS AS remarks
FROM all_objects o,ALL_TAB_COMMENTS C
WHERE o.owner LIKE 'tu_esquema' ESCAPE '/'
AND o.object_type IN ('xxx', 'TABLE', 'VIEW')
AND o.owner= c.owner
AND o.object_name= c.table_name
ORDER BY table_type, table_schem, table_name

Windows Batch para respaldo

viernes, junio 19th, 2009

Este es un archivo llamado backup.cmd que utilizo para respaldar una base de datos y el repositorio de subversion, estando programada para correr diariamente, primero extrae la fecha, crea una carpeta, y crea los backup dentro de la carpeta

FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET date=%yyyy%%mm%%dd%
mkdir d:\backup\%date%
exp system/password@SID file=d:\backup\%date%\ora_esquema%date%.dmp owner=esquema
"C:\Program Files (x86)\VisualSVN Server\bin\svnadmin.exe" dump D:\SubVersionRepo\proyecto > d:\backup\%date%\svn_proyecto%date%.dump

Eliminar registros repetidos

jueves, febrero 12th, 2009

Cuando existen registros repetidos dentro de una base de datos una de las formas de eliminarlos sería la siguiente:

DELETE FROM tabla
WHERE rowid not in
(SELECT MIN(rowid)
FROM tabla
GROUP BY columna_pk1, columna_pk2,...) ;
COMMIT;

Entendiendose que columna_pk1, columna_pk2, … son las columnas que forman parte de la clave primaria. Además solo asume repetición por clave primaria, en ningun caso revisa todas las columnas de la tabla.

Fuentes:
https://www.devx.com/tips/Tip/14665

https://www.remote-dba.cc/oracle_tips_duplicate_rows.htm

https://www.dba-oracle.com/t_delete_duplicate_table_rows.htm