Cosas sobre sys.col_usage$



La tabla sys.col_usage$ almacena de forma automática a través del proceso SMON , la cantidad de veces que alguna columna se ocupa en una claúsula WHERE de una sentencia SQL, si esto lo miramos con un poco de altura de miras, no solamente veremos que es información estadística que se almacena para siempre y por siempre, he acá algunas cosas para tener en cuenta



Desde está información por ejemplo nosotros podríamos chequear cual es el mejor índice o cuales son los índices necesarios en una tabla de acuerdo a los filtros que tenga..

La estructura de la tabla

SQL> desc sys.col_usage$
Name Null? Type
----------------------------------------- -------- -----------------------
OBJ# NUMBER
INTCOL# NUMBER
EQUALITY_PREDS NUMBER
EQUIJOIN_PREDS NUMBER
NONEQUIJOIN_PREDS NUMBER
RANGE_PREDS NUMBER
LIKE_PREDS NUMBER
NULL_PREDS NUMBER
TIMESTAMP DATE



La explicación de sus columnas

OBJ# : Es el id del objeto (tabla principal) , este id lo podemos ubicar en DBA_OBJECTS.OBJECT_ID

INTCOL# : Es el id de la columna, se puede obtener su nombre desde DBA_TAB_COLUMNS.COLUMN_ID

EQUALITY_PREDS : Es la cantidad de filtros en el where del tipo
ej : where campo1 = -literal-

EQUIJOIN_PREDS : Es la cantidad de filtros en el where del tipo
ej : where tabla1.campo1 = tabla2.campo1

NONEQUIJOIN_PREDS : Es la cantidad de filtros en el where del tipo
ej : where tabla1.campo1 =! tabla2.campo1

RANGE_PREDS : Es cuando el campo es utilizado dentro de una claúsula BETWEEN

LIKE_PREDS : Es cuando el campo es utilizado dentro de una claúsula LIKE

NULL_PREDS : Es cuando se consulta por si el campo es nulo o no nulo
ej : where tabla1.campo1 is null

TIMESTAMP : Es la fecha en que se produjo la última utilización de fitros (where) para un objeto en partícular.



Una forma más amistosa de chequear los datos de la tabla SYS.COL_USAGE$ es mediante la siguiente consulta, que entrega los nombres de los objetos y claro, el nombre de la columna de forma inmediata

select oo.name owner,
o.name,
c.name column_name,
u.equality_preds,
u.equijoin_preds,
u.nonequijoin_preds,
u.range_preds,
u.like_preds,
u.null_preds,
u.timestamp
from sys.col_usage$ u ,
sys.obj$ o ,
sys.user$ oo,
sys.col$ c
where o.obj# = u.obj#
and oo.user# = o.owner#
and c.obj# = u.obj#
and c.col# = u.intcol#
AND o.name = 'nombre del objeto a consultar'



Esta tabla también tiene la gracia que a partir de ahí Oracle puede generar los histogramas cuando se ocupa el package DBMS_STATS con el parámetro METHOD_OPT => 'FOR all COLUMNS SIZE auto', o sea, le indicamos a él que calcule la cantidad de buckets para nuestro histograma (de 1 a 256)

Si hacemos lo siguiente

- Generamos una tabla
- Cargamos datos en la tabla
- Generamos histogramas

No estaría correcto, ya que los histogramas no se van a generar con información fidedigna , a menos que haya información en la SYS.COL_USAGE$ y solamente habrá información en esa tabla si comenzamos a utilizar filtros en la consultas que ocupan esa tabla

A partir de Oracle10g la información se carga a esta tabla cuando se produce una toma de estadísticas o se puede hacer ejecutando la siguiente instrucción

exec dbms_stats.flush_database_monitoring_info;



La carga de está información se realiza con una frecuencia de minutos , quizás podríamos decir unos 15 , o cuando se hace alguna actualización o inserción , como podemos apreciar de distintas fuentes está tabla SYS.COL_USAGE$ se actualiza

by Ligarius
04.03.13. 07:32:11. 610 words, 3928 views. Categories: Base de datos, Tuning / Performance ,

Preparando el Examen RAC 11gr2



Bueno, creo que ha sido bastante el descanso y ya debo comenzar a planificar mi siguiente exámen de certificación..

Ahora apuntaré los dardos hacía RAC 11gr2 , ya una vez lo día con resultados...mmm malos :|

Pero siempre hay segundas oportunidades, por ende comenzaré desde ya a estudiar para poder darlo a mediados de Junio.. espero que la segunda sea la vencida :>>



Lamentablemente subieron los porcentajes de aprobación , de un 60% a un 65% :-/ , bueno, pensándolo bien no es tan malo...sirve de filtro ...

by Ligarius
28.02.13. 06:52:18. 88 words, 3919 views. Categories: Certificaciones ,

Eliminando un nodo desde RAC 11gr2



Antes de hablar del post, les comento algo importante :yes: , ayer ví la película "The Pact - 2012" y la verdad, encontré la perfección...se las presento (Caity Lotz)




Con respecto al post, les dejo un documento detallado de como eliminar un nodo en un RAC , las versiones que se utilizan

Linux x86 de 64 bits
Oracle 11gr2 (11.2.0.3) 64 bits
3 nodos


Aparece el paso a paso , los pantallazos y salidas de todos los comandos .
Borrar un nodo en un RAC 11gr2

Links relacionados
Add node to RAC 11gr2

Espero les sirva


by Ligarius
25.02.13. 16:28:31. 90 words, 5405 views. Categories: Instalación, Oracle11gR2, Real Application Cluster ,

Mandela....Open Source muy bueno...

Mandela....Open Source muy bueno...



Como todo mortal dedicado a Oracle, siempre ando en la necesidad de buscar una herramienta buena para graficar :)) , fue así como conocí a Mandela...un software Open Source, la verdad muy bueno... y gratis.

Es elaborado por una persona en Brasil , persona perteneciente a Inmetrics...

Pues bien , la gracia de este Software es que muestra todo le comportamiento de una base de datos, mediante gráficos, ya no más SpotLigth o TOAD , que lo único que hacen es ralentizar la base, además de ser invasivo.

Por ello , he aquí una herramienta liviana con una pequeña y breve explicación

- Lo primero que hay que hacer es descargar el Software , lo puedes hacer desde la URL

http://www.mandela.org en la pestaña de "Download - Latest Release"

- Para comenzar a trabajar con Mandela , pues se debe generar una configuración , la cual es almacenada en un archivo dentro del disco duro





- Después de esto, agregamos una base de datos



- Accedemos al menú principal



- Y seleccionamos por ejemplo "Wait Events" , obteniendo los siguientes gráficos




El resto, pues es sólo navegar y averiguar

Espero les sirva, como me está sirviendo a mí... ;)

by Ligarius
18.02.13. 07:53:56. 207 words, 3775 views. Categories: Instalación ,

Formato IPv6 y oracle



Hoy en día la asignación de IPs está dada por el formato IPv4 (Internet Protocol version 4) , la cual como todos sabemos ya está llegando a su límite dato que se pueden asignar sólo hasta 2^32 (32 bits) , o sea, 4.294.967.296 direcciones IP.

Es por eso que hace un tiempo se está cambiando a un formato más poderoso llamado IPv6, el cual puede almacenar 2^128 direcciones IP lo que expresado en números sería la friolera de 340.282.366.920.938.463.463.374.607.431.768.211.456 , ¿harto cierto? ;D

¿Pero que hay de Oracle? ¿Soporta el protocolo IPv6?

Pues las buenas noticias son que Oracle 11gr2 soporta IPv6 para todos sus componentes y características para base de datos Stand Alone.

Cabe mencionar que una IP del protocolo IPv6 , está compuesto por 8 grupos de 4 digitos Hexadecimales, por ejemplo

1287:FFFF:0:0:417A:0:8790:FFA4


Un gran detalle de la implementación de IPv6 con Oracle es que el Sistema Operativo debe tener soporte para este nuevo formato de IP, de otra forma no se puede utilizar. Incluso el sistema operativo puede tener ambos formatos de IP..

Veamos un ejemplo de su implementación :

- Versión de Sistema Operativo : Windows 7 de 64 bits
- Versión de Oracle 11.2.0.1 de 64 bits


1) Al momento de hacer un ipconfig en el sistema operativo podemos observar que existen ambas IPs

Teniendo en cuenta que posee los 2 formatos de IP , ya sea IPv4 e IPv6


2) El formato del listener.ora, para comprobar que soporta IPv6 podría ser el siguiente (con registro manual del servicio)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\oracleyyo\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracleyyo\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(SID_NAME = ORCL)
(ORACLE_HOME = C:\app\oracleyyo\product\11.2.0\dbhome_1)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = fe80::bd7e:48bb:8cc:9da2%14)(PORT = 1521))
)
)

ADR_BASE_LISTENER = C:\app\oracleyyo


3) Chequeamos el listener para ver el uso de la ip (formato IPv6)

C:\app\oracleyyo\product\11.2.0\dbhome_1\BIN>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 14-FEB-2013 16:13:23

Copyright (c) 1991, 2010, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
Start Date 14-FEB-2013 15:55:52
Uptime 0 days 0 hr. 17 min. 32 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\app\oracleyyo\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File c:\app\oracleyyo\diag\tnslsnr\ligarius\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fe80::bd7e:48bb:8cc:9da2%14)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

C:\app\oracleyyo\product\11.2.0\dbhome_1\BIN>


4) El formato de nuestro tnsnames.ora

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fe80::bd7e:48bb:8cc:9da2%14)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)


5) Si realizamos la conexión a la instancia mediante el string en el tnsnames.ora, veremos que se conecta sin problemas

C:\app\oracleyyo\product\11.2.0\dbhome_1\BIN>sqlplus system/oracle123@orcl

SQL*Plus: Release 11.2.0.1.0 Production on Jue Feb 14 16:15:10 2013

Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>


6) Se realizamos un tnsping

C:\app\oracleyyo\product\11.2.0\dbhome_1\BIN>tnsping orcl

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 14-FEB-2013 16:15:22

Copyright (c) 1997, 2010, Oracle. All rights reserved.

Used parameter files:
C:\app\oracleyyo\product\11.2.0\dbhome_1\network\admin\sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = fe80::bd7e:48bb:8cc:9da2%14)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))

OK (0 msec)


7) Incluso podemos llevar a cabo un Easy Connect

C:\app\oracleyyo\product\11.2.0\dbhome_1\BIN>sqlplus system/oracle123@[fe80::bd7e:48bb:8cc:9da2%14]:1521/orcl

SQL*Plus: Release 11.2.0.1.0 Production on Jue Feb 14 16:17:39 2013

Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


8) Lo que se excluye de esta nueva versión de IPs , es Oracle RAC y Oracle Failsafe :)


Documentación :
http://www.oracle.com/us/technologies/ipv6/index.html

by Ligarius
14.02.13. 12:58:55. 735 words, 5052 views. Categories: Tnsnames ,

<< 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 44 >>