Adicionar días/horas/minutos/segundos a fechas en Oracle

Cuando de trabajar con fechas en Oracle se trata, se debe tener en cuenta que la aritmética de fechas en Oracle trabaja en función de un día. Aunque podemos trabajar con cualquier fecha, para hacerlo más fácil realizaré la labor con la pseudo-columna SYSDATE. Si bien sabemos, SYSDATE muestra la fecha y hora actual de sistema, sumando 1 (uno) a SYSDATE se aumentará la fecha y hora actual en un día. Se pueden usar fracciones para añadir horas, minutos o segundos a la fecha:

ALTER SESSION SET nls_date_format = ‘dd-mm-yyyy hh24:mi:ss’; SELECT sysdate,        sysdate + 1,        sysdate + 1/24 FROM dual;
SYSDATE             SYSDATE+1           SYSDATE+1/24
------------------- ------------------- -------------------
18-02-2010 09:26:44 19-02-2010 09:26:44 18-02-2010 10:26:44 
SELECT sysdate,        sysdate + 1/1440,        sysdate + 1/86400 FROM dual;
SYSDATE             SYSDATE+1/1440      SYSDATE+1/86400
------------------- ------------------- -------------------
18-02-2010 09:26:44 18-02-2010 09:27:44 18-02-2010 09:26:45

Algunos ejemplos que pueden servir para aclarar el uso de fracciones, teniendo presente que 1 día = 24 horas = 1440 minutos = 86400 segundos:

Fecha y hora actual sysdate
  Dia siguiente (24 Horas adelante) sysdate + 1
  12 días delante sysdate + 12
  2 Horas adelante sysdate + 2 / 24
  120 Minutos adelante sysdate + 120 / 1440
  15 Segundos adelante sysdate + 15 / 86400
  Día siguiente a las 9 AM TRUNC(sysdate) + 1 + 9/24
  Próximo martes a las 3 PM NEXT_DAY(TRUNC(sysdate), 'TUESDAY') + 15/24
  Ultimo dia del mes a las 10:30 AM LAST_DAY(TRUNC(sysdate)) + 10/24 + 30/1440
  Próximo Martes, Jueves o Domingo a las 8:05 AM TRUNC(LEAST(NEXT_DAY(sysdate, 'TUESDAY'),  NEXT_DAY(sysdate, 'THURSDAY'),  NEXT_DAY(sysdate, 'SUNDAY'))) + 8/24 + 5/1440
Ej.
Adelantar 120 Minutos a la fecha:
 
UPDATE table_name
SET fecha=sysdate + 120 / 1440
where no_orden=num_orden;

Cómo calcular el tamaño de una base de datos en Oracle

Con el tiempo las bases de datos de Oracle crecen paulatinamente en tamaño. Dependiendo del tamaño de la organización, el factor de crecimiento puede ser tal que necesitará darse mantenimiento a intervalos periódicos para asegurar suficiente espacio disponible en el servidor y hacer que la base de datos funcione eficientemente. El tamaño de una base de datos Oracle depende de un número de factores. Además de la información, existen archivos temporales y esenciales de control que contienen la estructura de la base de datos. Todos estos son esenciales para el buen funcionamiento.

Paso 1

Incluye los tamaños de los archivos de datos en la búsqueda. El tamaño total incluye tablas, campos, procedimientos almacenados y otros objetos de la base de datos. Calcula el tamaño de la vista “dba_data_files” como sigue:

SELECT SUM(bytes)/1024/1024/1024 data_size from dba_data_files;

Paso 2

Calcula el tamaño de los archivos temporales. Estos almacenan datos durante el procesamiento pero no es permanente. Calcula el tamaño del archivo temporal como sigue:

select nvl(sum(bytes),0)/1024/1024/1024 temp_size from dba_temp_files.

Paso 3

Obtén el tamaño del redo log. Este almacena cualquier cambio en la base de datos antes de ser aplicados en los datos actuales de la base. Esto ofrece una manera de almacenar la base de datos a su estado original previo a un extracto diseñado para modificar cualquier información.

select sum(bytes)/1024/1024/1024 redo_size from sys.v_$log.

Paso 4

Extrae el tamaño del archivo de control usado por Oracle usando la vista V$CONTROLFILE. Esta vista se usa para obtener información del esquema de la base de datos y los objetos contenidos en la misma.

El extracto seleccionado para obtener el tamaño del archivo de control es:

select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile

Paso 5

Combina los extractos seleccionados para calcular el tamaño de la base de datos. El resultado corresponde al tamaño total de la base de datos en gigabytes:

select d.data_size+T.temp_size+R.redo_size+C.controlfile_size “Database Size in GB” from ( select sum(bytes)/1024/1024/1024 data_size from dba_data_files) d, ( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from dba_temp_files ) t, ( select sum(bytes)/1024/1024/1024 redo_size from sys.v_$log ) r, ( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) c;

Esto presentará el tamaño total de la base de datos en el siguiente formato:

Tamaño de la base de datos en GB

Resultado:

149.58765

35 motores de Bases de Datos Open Source

Fantástico el artículo que han preparado en WebResourcesDepot en el cual nos hablan de las grandes posibilidades que tenemos a la hora de elegir un motor de base de datos en el terreno Open Source.

Como indican en el artículo, probablemente conozcáis las principales alternativas (algunas de ellas comerciales):

Como indican en ese texto, es normal que dichas opciones estén tan extendidas: están muy bien documentadas, hay una gran comunidad de usuarios detrás de todas ellas y están muy integradas con la mayoría de CMS del mercado, además de estar disponibles en las principales empresas de hosting. Pero hay todo un mundo de posibilidades que va más allá de esas opciones.

Lo demuestra el citado artículo, del que simplemente haré una adaptación y que os recomiendo visitar. Las 35 alternativas Open Source en este terreno son las siguientes, y antes de nada, permitidme que me disculpe por la traducción. No estoy familiarizado con muchos de los términos que se manejan en el artículo, así que puede que haya metido la pata en alguna descripción:

MongoDB

Es una base de datos Open Source de gran rendimiento, escalable, schema-free (creo que esto se refiere a que no es una base de datos relacional convencional, aunque no estoy del todo seguro) y orientada a documentos (esquemas de datos tipo JSON). Hay drivers preparados para usar esta base de datos desde lenguajes como PHP, Python, Perl, Ruby, JavaScript, C++ y muchos más.

 

Hypertable

Hypertable es un sistema de almacenamiento distribuido de datos de alto rendimiento diseñado para soportar aplicaciones que requieran máximo rendimiento, escalabilidad y eficiencia. Se ha diseñado y modelado a partir del proyecto BigTable de Google y se enfoca sobre todo a conjuntos de datos de gran escala.

Apache CouchDB

Como en el caso de MongoDB, este proyecto está destinado a ofrecer una base de datos orientada a documentos que se pueden consultar o indexar en modo MapReduce usando JavaScript. CouchDB ofrece una API JSON RESTful a la que se puede acceder desde cualquier entorno que soporte peticiones HTTP.

 

 

Neo4j

Es un motor de persistencia completamente transaccional en Java que almacena los datos mediante grafos, y no mediante tablas. Neo4j ofrece una escalabilidad masiva. Puede manejar grafos de varios miles de millones de nodos/relaciones/propiedades en una única máquina, y se puede escalar a lo largo de múltiples máquinas.

 

 

Riak

Riak es una base de datos ideal para aplicaciones web y combina:

  • Una tienda con un valor clave descentralizado
  • Un motor map/reduce flexible
  • Una interfaz de consultas HTTP/JSPN amigable.

Oracle Berkeley DB

Se trata de un motor de bases de datos embebidas que proporciona a los desarrolladores persistencia local, rápida y eficiente con una administración nula. Oracle Berkeley DB es una librería que se enlaza directamente en nuestras aplicaciones y permite realizar llamadas simples a funciones en lugar de enviar mensajes a un servidor remoto para mejorar el rendimiento.

Apache Cassandra

Cassandra es probablemente uno de los proyectos NoSQL más concoidos del mercado. Se trata de una base de datos distribuida de segunda generación con alta escalabilidad que está siendo usada por gigantes como Facebook (que es quien la ha desarrollado), Digg, Twitter, Cisco y más empresas. El objetivo es ofrecer un entorno consistente, tolerante a fallos y de alta disponibilidad a la hora de almacenar datos.

Memcached

Memcached es un almacen del tipo in-memory key-value para pequeñas cadenas de datos arbitrarios (textos, objetos) de resultados de llamadas a base de datos, llamadas a API, o renderizado de páginas. Está orientado a acelerar aplicaciones web dinámicas al aliviar la carga de la base de datos.

 

Firebird

Firebird -no confundir con Firefox- es una base de datos relacional que puede ser utilizada en Linux, Windows y varias plataformas UNIX, y ofrece un alto rendimiento y potente soporte de lenguajes para procedimientos almacenados y triggers.

Redis

Redis es una base de datos avanzada del tipo fast key-value  que está escrita en C y quese puede usar como memcached, por delante de una base de datos tradicional, o bien por sí sola de forma independiente. Tiene soporte para varios lenguajes de programación y se utiliza en proyectos muy populares como GitHub o Engine Yard. También hay un cliente PHP llamado Rediska que permite gestionar bases de datos Redis.

HBase

HBase es u almaceén distribuido del tipo column-oriented que puede ser también denominado como la base de datos Hadoop. El proyecto está dirigido a ofrecer tablas enormes de “miles de millones de filas, y millones de columnas”. Dispone de un gateway RESTful que soporta XML, Protobug y opciones de codificación binaria de datos.

 

 

Keyspace

Se trata de un almacén del tipo key-value con replicación consistente y que funciona sobre sistemas operativos Windows. Keyspace ofrece una alta disponibilidad al enmascarar los fallos de servidor y red y al aparecer como un único servicio de alta disponibilidad.

 

4store

4store es un motor de almacenamiento de bases de datos y de consultas que mantiene datos en formato RDF. Está escrito en ANSI C99, está diseñado para funcionar en sistemas UNIX y ofrece una plataforma de alto rendimiento, escalable y estable.

 

 

 

 

MariaDB

MariaDB es una rama compatible hacia atrás de MySQL® Database Server. Incluye soporte para la mayoría de los motores de almacenamiento Open Source, y además para el propio motor de almacenamiento Maria.

 

 

 

Drizzle

Es un fork de MySQL que se centra en ser una base de datos eficiente y estable, sobre todo optimizada para aplicaciones de Internet y que siguen la filosofía Cloud Computing.

 

 

 

 

HyperSQL

Es un motor de bases de datos relacionales SQL escrito en Java. HyperSQL ofrece un pequeño pero veloz motor de bases de datos que dispone de tablas in-memory y basadas en disco, y que soporta los modos embebido y servidor. Además, dispone de herramientas como una consola de comandos SQL y una interfaz gráfica para las consultas.

MonetDB

MonetDB es un sistema de bases de datos para aplicaciones de alto rendimiento dirigidas a la minería de datos, OAP, GIS, búsquedas XML, y recolección de información a partir de ficheros de texto y multimedia.

 

Persevere

Es un motor de almacenamiento de objetos y un servidor de aplicaciones (ejecutándose en Java/Rhino) que ofrece almacenamiento de datos dinámicos JSON para el desarrollo rápido de aplicaciones de Internet orientadas a datos y basadas en JavaScript.

 

 

 

eXist-db

eXist-db está desarrollada a través de la tecnología XML. Almacena datos CML según el modelo de datos de este estándar, y se caracteriza por un procesado eficiente y basado en índices de XQuery.

 

Otras alternativas

Fuentes

Fuentes Original

Cambiar de ubicación una base de datos Oracle

      1. INTRODUCCIÓN
      2. Algunas veces es necesario mover o cambiar de ubicación una base de datos por diversas causas.Antes de realizar dicha operación es conveniente realizar un backup completo de la base de datos por si acaso existe un fallo al realizar la operación

      3. PASOS A SEGUIR:
    • Bajamos los servicios de base de datos
    • Bajamos la base de datos

      sqlplus /nolog
      SQL> connect /as sysdba
      SQL> shutdown immediate
      SQL> exit

      Bajamos el listener

      $lsnrctl stop nb_listener

    • Cambiamos los archivos Sigue leyendo

Oracle Enterprise Manager 10g Grid Control Release 5

Cuando escuché por primera vez Oracle OEM, ya tenía mis primeras dudas sobre si era una versión para “servidores nuevos“. Después el nombre de Enterprise Manager tampoco me aportó mucho, luego descubrí el concepto de Grid que pretendía vendernos Oracle y la guinda fue cuando descubri lo que era el:

Oracle Enterprise Manager Grid Control

El caso es que llevo una temporada trabajando con él (versión 10.2.0.3.0) y solo les puedo contar cosas buenas. Si bien me lo vendieron como solución para la monitorización de Oracle RAC de forma centralizada, creo que es la única herramienta con esta capacidad. Luego descubrí que Oracle tenía pensado llegar a mucho más.

Han escrito una buena cantidad de teoría sobre lo que debería ser una sistema de monitorización y alertas, pero a la Oracle y listos. De la gestión de bases de datos pasamos a un producto semejante a OpenView o Nagios.

Aunque al producto que más rendimiento le sacaremos es a su base de datos, poco a poco añaden o mejoran el resto de productos de la compañia y mediante plugins se pueden monitorizar desde bases de datos DB2, SQL Server, Sybase o MySQL, a servidores de aplicación como JBoss, IIS, Apache o WebSphere pasando por cabinas de disco como EMC y hasta VMWare o firewalls de CheckPoint y Juniper.

Les dejo un enlace con la Sigue leyendo

Utilidades Oracle para Visual Studio .NET

Oracle Para los desarrolladores de bases de datos  Microsoft .NETOracle en aplicaciones .NET, Oracle ha lanzado sus herramientas de desarrollo que se integran el IDE de Visual Studio .NET. Se trata de una serie de complementos que permiten trabajar directamente con orígenes de datos Oracle sin salir del editor de Visual Studio.

Estas herramientas se componen de los siguientes add-in:

  • Explorador de Oracle para navegar entre schemas.
  • Diseñadores y asistentes: diseñador de tablas, asistente de procedimientos almacenados, etc.
  • Generación automática de código.
  • Editor PL/SQL.
  • Ayuda sensitiva al contexto.

Más información:

Consultas combinadas. JOINS

Consultas combinadas.

Habitualmente cuando necesitamos recuperar la información de una base de datos nos encontramos con que dicha información se encuentra repartida en varias tablas, referenciadas a través de varios códigos. De este modo si tuvieramos una tabla de ventas con un campo cliente, dicho campo contendría el código del cliente de la tabla de cliente.

Sin embargo está forma de almacenar la información no resulta muy util a la hora de consultar los datos. SQL nos proporciona una forma facil de mostrar la información repartida en varias tablas, las consultas combinadas o JOINS.

Las consultas combinadas pueden ser de tres tipos: Sigue leyendo

Configurar Oracle XE para que conecte correctamente Forms 6i

Por defecto Oracle XE se instala con el juego de caracteres AL32UTF8, con ese juego de caracteres el cliente de Oracle Forms 6i no conecta con la base de datos, para migrar ese juego de caracteres a UTF8 pero debemos de ejecutar las siguientes instrucciones:

sqlplus /nolog
SQL> connect / as sysdba
Conectado.
SQL> shutdown immediate
SQL> startup restrict
SQL> alter database character set internal_use UTF8;
SQL> shutdown immediate
SQL> startup

Oracle adquiere a Virtual Iron y mejora su oferta de virtualización


Oracle anunció la compra la empresa especializada en herramientas de gestión de sistemas virtuales para bases de datos

Oracle aumentó su gama de productos de virtualización con la compra de Virtual Iron, una compañía especializada en herramientas para la gestión de sistemas virtuales para bases de datos. Sigue leyendo

Manejo de tablas grandes en Oracle (Continuacion)

MANEJO DE PARTICIONES Oracle 10G

Continuando mi último artículo sobre el uso de las particiones de oracle, los tipos de particiones y su uso. En este artículo haremos referencia a varias funcionalidades que pueden resultar útiles en determinado momento en la definición de una tabla particionada. Sigue leyendo