Artículos sobre oracle 9i

HOW TO: Analyzing and Interpreting AWR Report

Hello

Today I wanted to share with you my personal approach for how to get into the details on AWR Report and where to see and where should be our attention. Keep in mind just two main focuses : the Application and the Database instance

1) Application: Most of the times you should go directly to review how was the SQL statements Performance. That is MANDATORY and the result of your analysis will be the classic TOP 10 SQL with the worst performance. That should be called : Oracle Application’s Performance Tuning .

2) Instance: read once, twice or three times the AWR looking for issues. What kind of issues or metrics ?

For example here I have  a Conclusion and Workaround for one database instance issue regarding performance :

1) Tuning recommendations for PROD-ACME  database instance:

HOWTO: Checking options installed within the Database/Oracle Home

1)From Oracle Universal Installer: In OUI select installed products and click on list and expand, you will see a list of options installed in database.

You have to use OUI to check whether Oracle Secure Enterprise Search is installed or not.

TIP: Start Oracle Universal Installer from your system prompt (UNIX) with the following command:

./runInstaller

2)From v$option:

SQL> set pages 100

SQL> select * from v$option;

PARAMETER                                                        VALUE

—————————————————————- —–

Partitioning                                                     TRUE

Objects                                                          TRUE

Real Application Clusters                                        FALSE

Advanced replication                                             TRUE

Bit-mapped indexes                                               TRUE

Connection multiplexing                                          TRUE

Connection pooling                                               TRUE

Database queuing                                                 TRUE

Incremental backup and recovery                                  TRUE

Instead-of triggers                                              TRUE

Parallel backup and recovery                                     TRUE

Parallel execution                                               TRUE

Parallel load                                                    TRUE

Point-in-time tablespace recovery                                TRUE

Fine-grained access control                                      TRUE

Proxy authentication/authorization                               TRUE

Paquete LT_CTX_PKG inválido (9.2.0.8)

El otro día revisando los objetos inválidos del SYS de una BD Oracle 9.2.0.8 me encontré que el paquete LT_CTX_PKG estaba inválido por que había un código no identificado dentro del BODY de este.

Buscando bien por internet me encontré con la solución y lo que hay que hacer por si a alguien se le presenta este problema es ejecutar el wrapped package : owmctxb.plb
Un wrapped package es un paquete codificado y no puede ser leído de forma normal como los *.sql.
Este paquete se encuentra en la ruta : $ORACLE_HOME/rdbms/admin
Entonces ejecutamos este paquete como sys  :
sqlplus «/as sysdba» @$ORACLE_HOME/rdbms/admin/owmctxb.plb

Con esto se arreglaría el problema de invalidez del LT_CTX_PKG .
Ademas esto también arreglaría el problema de invalidez de otros paquetes como el LTADM y el LTUTL también pertenecientes al SYS .

Recuperación parcial de una base de datos Oracle, cuando se ha perdido un datafile y base de datos se encuentra en modo NOARCHIVELOG

Hace algunos dias se me presentó el siguiente caso:

1.- Base de datos Oracle 9i sobre Windows XP

2.- Base de datos se encuentra en modo NOARCHIVELOG

3.- Programador agrega un datafile con file# 20 a un tablespaces llamado MYTABLESPACE

4.- De esta forma, el tablespace MYTABLESPACE contiene 3 datafile con file# 15, 17 y 20

5.- Al programador no le gustó el nombre que le dió al datafile 20 y lo elimina a nivel de sistema operativo

6.- El programador tambien elimina por error el datafile 17, que si contenia datos.

7.- El programador trata de subir la base de datos y esta no sube, solo llega a la fase de montaje.

8.- El programador entra en pánico.

Solución:

1.- Tratar de recuperar los datafiles a nivel de sistema operativo con alguna herramienta de recuperación como http://ntfsundelete.com/ u otra similar.

Renombrar (o mover) un Data File

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?

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.

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

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

Full Table Scan en Oracle. ¿Aburrido de lecturas innecesarias?

Es muy común que los DBAs traten dentro de los ambientes OLTP evitar este tipo de accesos a los datos. Sabemos que este acceso es lento para tablas grandes, pero también sabemos que es muy usado en tablas pequeñas. Veamos como podemos sacar provecho de la eliminación o uso del no muy bien ponderado full table scan.

Vamos a empezar a ver algún ejemplo práctico: Vamos a crear una tabla mas o menos masiva a partir de otra ya existente:

[oracle@antares ~]$ sqlplus «/as sysdba»

SQL*Plus: Release 9.2.0.8.0 – Production on Tue Mar 3 17:06:31 2009

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to:
Oracle9i Release 9.2.0.8.0 – Production
JServer Release 9.2.0.8.0 – Production

SQL> create table tabla_test as select *  from obj$;

Table created.

SQL> select count(*) from tabla_test;

COUNT(*)
———-
66084

SQL>

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

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

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.