Artículos sobre oracle 10g

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:

AWR Report – How to get it through EM

We need a database user/pwd

….

But we can generate it using SQLPLUS as well :

AWR Snapshot Reports
Oracle provides reports that you can run to analyze the data in the AWR. These reports are much like the statspack reports prior to Oracle Database 10g. There are two reports: awrrpt.sql and awrrpti.sql, which are available in the directory $ORACLE_HOME/ rdbms/ admin.
The output of these reports is essentially the same, except that awrrpti.sql script allows you to define a specific instance to report on. The reports are much like the statspack reports of old, in that you define a beginning and ending snapshot ID, and the output filename of the report. Additionally, you can opt to produce the report in either text format or HTML format.

[oaPROD usa.com01 PROD] $ sqlplus ‘/as sysdba’
SQL> @awrrpt.sql

Current Instance   DB Id    DB Name      Inst Num 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

Ramakrishnan & Gehrke Sailors script for Oracle database

The chapter 5 of the  book “Database Management Systems” (Ramakrishnan, Raghu & Johannes Gehrke.) introduces the Sailors data model, a set of three tables named Sailors, Boats and Reserves

In this article, the SQL script that implements the creation of these relational structures is developed and adapted  for Oracle Database. This script is based on the script worked by Hjalmtyr Hafsteinsson for PostgreSQL database.

The script does the following tasks

Cleans Sailors Schema and tablespaces of previous script executions

Creates Sailors_data and Sailors_index  tablespaces

Creates Sailors Schema

Grants roles and privileges to Sailors user

Connects to Sailors user

Creates tables, constraints,  in the Sailors Schema

Populates tables

Adds new columns  and new constraints (that are not part of the original data model)

Creates B-tree indexes for columns that are used in WHERE clause

Cambiar logfile del Listener sin tener que detenerlo

Hay veces que el log del listener crece sin parar y puede llegar a pesar varios GB . Una solucion para esto es detener el listener, truncar el archivo y volver a levantarlo, pero hay veces que las base de datos son 24/7 y esta solucion no sirve .

La solucion que voy a postear es una de las muchas que encontre en este link : http://msutic.blogspot.com/2009/06/truncating-rotating-flushing.html

La solución que implemente fue en un Oracle 10.2.0.5 y consistia en crear un nuevo log para el listener por cada mes del año con el siguiente formato :listener_yyyymm.log , asi cada mes del año iba a tener su propio log.

Estos son los pasos :

1) Conectarse con el utilitario LSNRCTL y setear el listener actual (Por lo general el nombre default es LISTENER)

C:UsersJCAJ>lsnrctl

LSNRCTL> set current_listener LISTENER

Current Listener is LISTENER

Comandos utiles para hacer limpieza en Oracle sobre UNIX

Todos sabemos que para administrar una base de datos Oracle sobre UNIX necesitamos obligatoriamente tener cierto control sobre el sistema operativo, y poder mantener «la casa ordenada» en la cual vive nuestra base de datos.

Uno de las labores que normalmente los ingenieros de sistemas delegan a los DBAs es que se hagan cargo de sus filesystems (filesystem con owner oracle), entonces necesitaremos por ejemplo buscar los logs que crecen, los archivos que han crecido demasiado y quiza no son parte de Oracle, core dump y otros.

Para esto usemos lo siguiente :

1) Buscar archivos grandes (sobre 2MB)

# para esto usaremos el comando find con parametros, y salida la ordenaremos de forma numérica por tamaño :

find / -size +2000 -exec ls -s {} ; | sort -nr >large_files.out

# Un ejemplo del archivo generado sería:

cat large_files.out

18916604 /home/jacevedofl/.VirtualBox/HardDisks/Winblows XP.vdi

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.

ESTIMACIÓN DE TAMAÑOS DE MUESTRAS

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

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.

1 2