Archivo de la categoría ‘Oracle 10g’

ESTIMACIÓN DE TAMAÑOS DE MUESTRAS

Miércoles, 18 de agosto de 2010

El rendimiento de una base de datos relacional, y en particular una base de datos Oracle, depende principalmente del rendimiento de las sentencias SQL que en ella se ejecutan. A partir de la versión 10g Release 2, Oracle declara obsoleto el optimizador basado en la regla (“RULE”), es decir, desde la versión 10.2.0.1, en adelante, el único optimizador soportado por Oracle, es aquel basado en el costo (“COST”).

En la optimización por costo de sentencias SQL, Oracle determina los planes de ejecución óptimos de cada sentencia, a partir de estadísticas de tablas e índices involucrados en cada instrucción SQL. Dichas estadísticas deben ser recolectadas previamente, y actualizadas en forma periódica.

Renombrar (o mover) un Data File

Miércoles, 21 de abril de 2010

Como se ha visto en clases, es posible renombrar (o mover) un Datafile posterior a su creación, por ejemplo cuando se crea un nuevo Tablespace, o cuando éste se modifica agregando nuevos archivos utilizando la sentencia:

SQL> ALTER TABLESPACE <nombre> ADD DATAFILE ‘/path’ SIZE <n> M;

Si por ejemplo, se ha cometido un error en el nombre o la extensión del archivo no sigue la norma definida  (que típicamente es *.dbf) es posible hacer el cambio de nombre, sin necesidad de bajar la BD realizando los 4 pasos siguientes:

1. Poner el Tablespace en modo OFFLINE, por ejemplo:

SQL> ALTER TABLESPACE DATOS OFFLINE;

2.  Renombrar el archivo físico, por ejemplo en linux sería:

$ mv  datos02.dfb  datos03.dbf

3. Modificar el Tablespace para que reconozca el nuevo archivo:

SQL> ALTER TABLESPACE RENAME DATAFILE ‘/u01/app/oradata/datos02.dfb’  TO  ‘/u01/app/oradata/datos03.dbf’;

4. Finalmente, dejar el Tablespsace ONLINE nuevamente:

SQL> ALTER TABLESPACE DATOS ONLINE;

¿Qué significa la “i” y la “g” en las versiones de Oracle Database?

Domingo, 23 de agosto de 2009

Como una manera de satisfacer algunas dudas de nuestros visitantes, escribo este pequeño post.

La “i” aparece por primera vez en el lanzamiento de Oracle 8i (8.1.7.x), que revolucionó el mercado por ahi por 1998. La “i” simplemente significa Internet. Estamos en plena revolución de las empresas .COM, y todo lo que tuviera relación con Internet era “fashion”. Oracle lanza la primera base de datos para soporte de aplicaciones internet. Esto significa que viene con características de mayor alta disponibilidad -las aplicaciones internet son por definición 7×24-, además de traer java embebido en el motor, un lenguaje que nace para construir aplicaciones internet. El motor trae una seria de APIs que le permiten a los desarrolladores  la construcción de aplicaciones web. Además, el motor viene preparado para manejar todo tipos de datos multimedial (opción oracle intermedia), tales como documentos, imágenes, sonido, propio del mundo internet. Si a esto le agregamos el soporte para guardar datos en XML, un lenguaje de marcas que generaliza el HTML de los navegadores, hace de esta versión oracle 8i una de las más populares y robusta. Mucha de la arquitectura actual del motor fue concebida en esta versión. A pesar de que esta versión ya se encuentra largamente desoportada, muchos clientes mantienen operando aplicaciones basadas en esta versión producto de su estabilidad y buenas prestaciones.

Usuarios y privilegios en Oracle

Martes, 2 de junio de 2009

1. Crear Usuarios y asignar privilegios en Oracle

El siguiente es un resumen de algunas consideraciones al momento de crear un usuario o cuenta en Oracle, y los privilegios y roles que le podemos asignar.

  • El nombre de usuario no debe superar 30 caracteres, no debe tener caracteres especiales y debe iniciar con una letra.
  • Un método de autentificación. El mas común es una clave o password, pero Oracle 10g soporta otros métodos (como biometric, certificado y autentificación por medio de token).
  • Un Tablespace default, el cual es donde el usuario va a poder crear sus objetos por defecto, sin embargo, esto no significa que pueda crear objetos, o que tenga una cuota de espacio. Estos permisos se asignan de forma separada, salvo si utiliza el privilegio RESOURCE el que asigna una quota unlimited, incluso en el Tablespace SYSTEM!  Sin embargo si esto ocurre, ud. puede posteriormente mover los objetos creados en  el SYSTEM a otro Tablespace.

Añadir Columnas con Valores Por Defecto Oracle 11g v/s Predecedores.

Miércoles, 4 de marzo de 2009

En versiones anteriores a Oracle 11g, al añadir columnas con propiedad not null con valor default a una tabla con muchos registros suele ser costoso para la base de datos ya que al realizar esta acción se producen ciertos eventos que afectan a la performance de esta, como por ejemplo la generación de redologs switch, undo, aumento excesivo del SCN de la bd.

He aquí una demostración realizada en una base de datos versión 10gR2, sobre una tabla con una cantidad de registros más o menos considerable.

SQL> select count(1) from datos_prueba;

COUNT(1)

———-

2000000

Transcurrido: 00:00:00.07

  • · Verificando la secuencia de redolog switch de la instancia.

SQL> archive log list

Modo log de la base de datos Modo de Archivado

Archivado automático Activado

Destino del archivo USE_DB_RECOVERY_FILE_DEST

Secuencia de log en línea más antigua 139

Scripts de creación de Base de Datos Oracle 9i y 10g

Domingo, 21 de diciembre de 2008

En ciertas circunstancias un DBA debe ser capaz de crear una base de datos Oracle sin ayuda de los utilitarios gráficos disponibles en Oracle (DBCA).

Es bueno experimentar con la creación manual de bases de datos Oracle, ya que entrega una experiencia que permite entender y decantar muchos conceptos en relación al funcionamiento del motor Oracle.

Este artículo describe las tareas que el DBA debe realizar para crear una base de datos en ambiente (Linux-Unix) haciendo uso solo de la clásica consola de administración sqlplus.

Pasos para crear una base de datos Oracle:

  1. Decidir  nombre único para la instancia, nombre de base de datos, tamaño del bloque Oracle, set de caracteres, número máximo de archivos de datos, y número máximo de archivos de redolog.
  2. Decidir la estructura de almacenamiento físico de la base de datos (ASM, File System, Raw Devices) . En el ejemplo se usa almacenamiento por file system, y se han definido y creado los puntos de montaje de acuerdo al modelo OFA de Oracle.

Mejorando el desempeño de consultas con QUERY REWRITE y Vistas Materializadas

Jueves, 4 de diciembre de 2008

Desde Oracle 8i existe una funcionalidad de la base de datos Oracle llamada QUERY REWRITE, en la cual en ciertas circunstancias de configuración de parámetros y objetos de base de datos, un SQL emitido por un usuario es re-escrito por otro equivalente que tiene mejor costo. En consecuencia esta funcionalidad tiene como requisito que el optimizador esté configurado como CBO.

Un caso de aplicación frecuente en el uso de QUERY REWRITE se da en ambientes de datawarehouse, donde consultas que usan funciones de grupo sobre una fact table de millones de registros, pueden ser resueltas sobre una tabla de resumen (de cardinalidad mucho menor que la fact table) que contenga la misma información pero con mucho menos lecturas en disco.

Las tablas de resúmenes indicadas se deben implementar con Vistas Materializadas para hacer uso de la característica de QUERY REWRITE.

Cambio en el comportamiento del GROUP BY in Oracle 10g

Lunes, 1 de diciembre de 2008

Si usted recientemente actualizo su versión de base de datos oracle a la versión 10g, habrá notado que las consultas que agrupan (GROUP BY) le entrega los resultados en cualquier orden.

Pues bien, desde la versión oracle 10g el comportamiento de esta clausula ha cambiado con respecto a sus predecesores.  Ahora esta usando el nuevo mecanismo  HASH GROUP BY, el cual no garantiza que el resultado este en ningún orden a menos que utiliza la clausula “ORDER BY”.

Realicemos una prueba para verificar este comportamiento

En Oracle 9i

SQL> select owner,count(1) from dba_segments group by owner;

OWNER    COUNT(1)
CTXSYS    76
HR        25
MDSYS    53
ODM        82
ODM_MTR    12
OE        46
OLAPSYS    149
ORDSYS    7
OUTLN    6

Plan de Ejecución

SELECT STATEMENT  CHOOSE
50 SORT GROUP BY
49 VIEW SYS.SYS_DBA_SEGS
48 UNION-ALL
……

En Oracle 10g