0% encontró este documento útil (0 votos)
582 vistas12 páginas

Índices en Oracle: Creación y Gestión

Este documento describe cómo crear, eliminar y reconstruir índices en Oracle. Explica que los índices mejoran el rendimiento de las consultas al permitir un acceso más rápido a los registros. Detalla cómo crear índices al crear una tabla o en una tabla existente, y los tipos de índices como índices únicos. También cubre cómo reconstruir índices cuando sea necesario y cómo monitorear el uso de índices.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
582 vistas12 páginas

Índices en Oracle: Creación y Gestión

Este documento describe cómo crear, eliminar y reconstruir índices en Oracle. Explica que los índices mejoran el rendimiento de las consultas al permitir un acceso más rápido a los registros. Detalla cómo crear índices al crear una tabla o en una tabla existente, y los tipos de índices como índices únicos. También cubre cómo reconstruir índices cuando sea necesario y cómo monitorear el uso de índices.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

Anuncio silenciado. Deshacer


Haremos todo lo posible para mostrarte anuncios relevantes en el futuro. Actualiza tu configuracin de anuncios para que podamos mostrarte mejores anuncios.

Los ndices en Oracle, creacin, eliminacin, reconstruccin Fecha Wednesday, 17 February a las [Link] Tema Bases de Datos
Os explicamos qu son los ndices y cmo usarlos en Oracle Database. Enumeramos los tipos de ndices y cmo crearlos. Mostramos cmo saber cundo es necesario reindexar un ndice en Oracle y cmo hacerlo. Explicamos cmo cambiar de ubicacin un ndice ya creado.

Definicin de ndice qu es un ndice? para qu sirve?. Cmo crear ndices en Oracle. Creacin de un ndice al crear una tabla de Oracle. Crear un ndice en una tabla ya existente en Oracle. Cmo saber si un ndice se est utilizando, monitorizacin del uso de ndices en Oracle. Mostrar informacin de los ndices de una tabla en Oracle. Mostrar todas las restricciones de una tabla de Oracle. Mostrar todos los ndices de una tabla en Oracle. Obtener el tamao ocupado por un ndice de una tabla de Oracle. Reconstruccin de ndices cando es necesaria? cmo hacerla?, parmetros de los ndices en Oracle. Reconstruir ndices en Oracle. Cambiar los parmetros de configuracin de un ndice en Oracle. Cambiar la ubicacin de un ndice a otro tablespace. Cmo saber cundo es necesaria la reindexacin o reconstruccin de ndices. Artculos relacionados. Crditos.

Definicin de ndice qu es un ndice? para qu sirve?


El ndice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rpido acceso a los registros de una tabla. Al aumentar drsticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se vayan a realizar bsquedas frecuentes. El ndice tiene un funcionamiento similar al ndice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posicin en la base de datos. Para buscar un elemento que est indexado, slo hay que buscar en el ndice de dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posicin marcada por el ndice. Los ndices pueden ser creados usando una o ms columnas, preparando la base de datos tanto para bsquedas rpidas al azar como para ordenaciones eficientes de los registros. Los ndices son construidos sobre rboles B, B+, B* o sobre una mezcla de ellos, funciones de clculo u otros mtodos. El espacio en disco requerido para almacenar el ndice es tpicamente menor que el espacio de almacenamiento de la tabla (puesto que los ndices generalmente contienen solamente los campos clave de acuerdo con los que la tabla ser ordenada, y excluyen el resto de los detalles de la tabla), lo que da la posibilidad de almacenar en memoria los ndices de tablas que no cabran en ella. En una base de datos relacional un ndice es una copia de parte de una tabla.

[Link]

1 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

Cmo crear ndices en Oracle


Creacin de un ndice al crear una tabla de Oracle
Para crear un ndice en la creacin de una tabla de Oracle podemos utilizar SQL*Plus (herramienta de lnea de comandos incluida con Oracle), se puede utilizar tambin Oracle Enterprise Manager (modo grfico) o una aplicacin externa que permita acceso a Oracle, como por ejemplo: AjpdSoft Administracin Bases de Datos Abriremos esta aplicacin e introduciremos los datos para la conexin (nombre de la base de datos, nombre de usuario, contrasea, tipo de acceso):

Crearemos una tabla para el ejemplo de creacin de ndices ejecutando la siguiente consulta SQL:

CREATE TABLE facturacion ( codigo number(10) not null, fecha date default sysdate, codigocliente number(10), nombrecliente varchar(100), observacion varchar(2000),
constraint pk_facturacion_codigo primary key (codigo)

) tablespace USERS
Como se puede observar en la consulta SQL anterior, al aadir la lnea:

constraint pk_facturacion_codigo primary key (codigo)


Estamos indicando a Oracle que cree la tabla "facturacion", con el campo "codigo" y que ste sea clave primaria, por lo que crear un ndice automticamente para este campo. Esta es una forma de crear ndices, en la creacin de la tabla:

Tras crear la tabla insertaremos algunos registros con la instruccin SQL:

insert into facturacion (codigo, codigocliente, nombrecliente) values (1, 50, 'AjpdSoft')

[Link]

2 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

Puesto que hemos indicado que la columna "codigo" sea clave primaria, Oracle no permitir valores duplicados para esta columna, esta comprobacin la realizar basndose en el ndice creado. Si intentamos agregar un nuevo registro con con el valor de "codigo" a "1" (que ya existe) nos mostrar este error:

Con el texto: ORA-00001: restriccin nica (SYSTEM.PK_FACTURACION_CODIGO) violada, indicando que la restriccin nica PK_FACTURACION_CODIGO no se ha cumplido por lo que no dejar insertar el registro. Insertaremos varios registros (cambiando el valor de "codigo"). Ejecutando la consulta SQL:

select * from facturacion


Podremos ver los registros insertados en la tabla "facturacion":

Para ver el ndice creado se puede utilizar esta consulta.

Crear un ndice en una tabla ya existente en Oracle


La creacin de un ndice en Oracle se realiza mediante el comando create index. Cuando se define una clave primaria o una columna unvoca (UNIQUE) durante la creacin de una tabla o su mantenimiento, Oracle crear automticamente un ndice de tipo UNIQUE que gestione dicha restriccin, como hemos indicado anteriormente. La sintaxis completa de create index es la siguiente:

create [bitmap | unique] index nombre_indice on nombre_tabla (nombre_columna [, nombre_columna2] ...) [reverse]; bitmap indica que se cree un ndice de mapa de bits que permite crear ndices en columnas con
muy pocos valores diferentes.
[Link] 3 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

unique indica que el valor de la o las columnas indexadas debe ser nico, no puede haber
duplicidades.

nombre_indice debe ser un nombre unvoco (no debe existir otro nombre de objeto en Oracle) que
siga los convenios de denominacin de Oracle para nombrar columnas. nombre_tabla ser el nombre de la tabla donde se crear el ndice. nombre_columna (o columnas) ser la columna de la tabla nombre_tabla en la que se crear el ndice. Se puede crear un ndice para varias columnas. reverse indica a Oracle que invierta los bytes del valor indexado, lo que puede mejorar la distribucin del procesamiento y de los datos cuando se insertan muchos valores de datos secuenciales. Para crear un ndice en Oracle podemos utilizar SQL*Plus (herramienta de lnea de comandos incluida con Oracle), se puede utilizar Oracle Enterprise Manager (modo grfico) o una aplicacin externa que permita acceso a Oracle, como por ejemplo: AjpdSoft Administracin Bases de Datos Abriremos esta aplicacin e introduciremos los datos para la conexin (nombre de la base de datos, nombre de usuario, contrasea, tipo de acceso):

Siguiendo con el ejemplo, aadiremos un ndice normal para la columna "nombrecliente" de la tabla "facturacion". Para ello ejecutaremos la siguiente consulta SQL:

create index IN_FACTURACION_NOMBRECLIENTE on FACTURACION (NOMBRECLIENTE)

Para ver el ndice creado podemos ejecutar la siguiente consulta SQL (como indicamos aqu):

select index_name Nombre, index_type Tipo, table_name Tabla, tablespace_name Tablespace, secondary Secundario from all_indexes where table_name = 'FACTURACION'

[Link]

4 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

Para aadir un ndice de tipo UNIQUE, obligando a que los valores del campo indexado sean unvocos, no se puedan repetir en el campo de la tabla, ejecutaremos la siguiente sentencia SQL:

create unique index IN_FACTURACION_COD_CODCLI_FE on FACTURACION (CODIGOCLIENTE, FECHA)

De esta forma Oracle no permitir que haya dos registros en la tabla "facturacion" con el mismo valor en los campos "codigocliente" y "fecha", es decir, slo podr aadirse una factura por cliente y por da, un cliente no podr tener dos facturas en un mismo da. Por ejemplo, si insertamos este registro:

insert into facturacion (codigo, codigocliente, fecha) values (6900, 500, to_date('31/12/2009', 'DD-MM-YYYY'))
Intentaremos insertar un segundo registro con el mismo valor en codigocliente y en fecha:

insert into facturacion (codigo, codigocliente, fecha) values (6910, 500, to_date('31/12/2009', 'DD-MM-YYYY'))
Oracle detectar que se est intentando infringir una restriccin nica, por lo que mostrar el siguiente mensaje de error y no dejar que se inserte el registro:

Con el texto: ORA-00001: restriccin nica

(SYSTEM.IN_FACTURACION_COD_CODCLI_FE) violada.

Cmo saber si un ndice se est utilizando, monitorizacin del uso de ndices en Oracle
Para consultar las estadsticas sobre el uso de uno o varios ndices de tablas de Oracle, en primer lugar deberemos activar la monitorizacin del ndice que queramos, para ello utilizaremos el siguiente comando SQL:

alter index nombre_indice monitoring usage;


Por ejemplo, en nuestro caso, para monitorizar el ndice IN_FACTURACION_NOMBRECLIENTE:
[Link] 5 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

alter index IN_FACTURACION_NOMBRECLIENTE monitoring usage;


Tras activar la monitorizacin, podremos ver si el ndice ha sido usado ejecutando la siguiente consulta SQL. En nuestro caso comprobaremos si han sido usado los ndices monitorizados de la tabla FACTURACION:

select * from v$object_usage where table_name = 'FACTURACION'

Mostrar un registro indicando los siguientes datos: INDEX_NAME: nombre del ndice usado. TABLE_NAME: nombre de la tabla a la que pertenece el ndice usado. MONITORING: estado de monitorizacin, si est activa mostrar "YES". USED: mostrar "NO" si an no ha sido usado. START_MONITORING: fecha y hora de inicio de monitorizacin. END_MONITORING: fecha y hora de fin de monitorizacin. Si insertamos algunos registros en la tabla FACTURACION y hacemos alguna consulta SQL ordenando por "nombre_cliente" para que el ndice sea usado podremos ver cmo cambia el valor de USED en v$object_usage:

Para desactivar la monitorizacin ejecutaremos el siguiente comando SQL:

alter index nombre_indice nomonitoring usage;


En nuestro ejemplo:

alter index IN_FACTURACION_NOMBRECLIENTE nomonitoring usage


Ejecutando nuevamente la consulta:

select * from v$object_usage where table_name = 'FACTURACION'


Veremos que ha cambiado el valor de MONITORING a "NO" y ha aadido la fecha y hora a END_MONITORING:

[Link]

6 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

Mostrar informacin de los ndices de una tabla en Oracle


Mostrar todas las restricciones de una tabla de Oracle
Para mostrar todas las restricciones de una tabla oracle (nombre de la restriccin, nombre de la tabla, columnas a las que afecta) ejecutaremos la siguiente consulta SQL:

select constraint_name Nombre, table_name Tabla, substr(column_name, 1, 255) Columnas from all_cons_columns where table_name = 'FACTURACION'

Mostrar todos los ndices de una tabla en Oracle


La siguiente consulta SQL mostrar todos los ndices de la tabla "FACTURACION" de Oracle (nombre del ndice, tipo de ndice, nombre de la tabla, tablespace en el que se guarda, si es secundario):

select index_name Nombre, index_type Tipo, table_name Tabla, tablespace_name Tablespace, secondary Secundario from all_indexes where table_name = 'FACTURACION'

Obtener el tamao ocupado por un ndice de una tabla de Oracle


[Link] 7 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

La siguiente consulta SQL mostrar el tamao en megabytes de un ndice determinado, en nuestro caso del ndice PK_FACTURACION_CODIGO perteneciente a la tabla FACTURACION y el campo CODIGO del ejemplo. La consulta SQL para mostrar el tamao ocupado por un ndice es la siguiente:

select segment_name, sum(bytes)/1024/1024 MB from dba_extents where segment_name = 'PK_FACTURACION_CODIGO' group by segment_name

Reconstruccin de ndices cando es necesaria? cmo hacerla?, parmetros de los ndices en Oracle
Reconstruir ndices en Oracle
Oracle proporciona la capacidad de realizar una reconstruccin rpida de ndices, que permite crear de nuevo un ndice sin necesidad de eliminar el ndice existente. El ndice actualmente disponible se usa como origen de datos para el ndice nuevo, en lugar de utilizar la tabla como origen de datos. Durante la reconstruccin del ndice pueden cambiarse los parmetros de almacenamiento (storage) y la asignacin del espacio de tablas (tablespace). Para reconstruir un ndice de una tabla utilizaremos la clusula rebuild con el comando alter index. Un ejemplo de reconstruccin de un ndice en Oracle podra ser:

ALTER INDEX nombre_indice REBUILD;


Siguiendo nuestro ejemplo, para reindexar el ndice PK_FACTURACION_CODIGO ejecutaremos la siguiente instruccin SQL:

ALTER INDEX PK_FACTURACION_CODIGO REBUILD;


Ejecutaremos esta consulta desde Oracle Enterprise Manager, accediendo a la opcin "Hoja de Trabajo de SQL", desmarcaremos la opcin "Permitir Slo Sentencias SELECT", en "Comandos SQL" introduciremos:

ALTER INDEX PK_FACTURACION_CODIGO REBUILD;


Y pulsaremos en "Ejecutar". Si todo es correcto nos devolver en "Resultados": SQL se ha ejecutado correctamente.

[Link]

8 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

Cambiar los parmetros de configuracin de un ndice en Oracle


Si queremos cambiar algn parmetro de configuracin de algn ndice, como el almacenamiento (storage) o incluso el espacio de tablas (tablespace) podremos ejecutar la siguiente instruccin SQL:

alter index nombre_indice rebuild storage (initial 8M next 4M) tablespace nombre_tablespace;
Con la instruccin anterior se reconstruir el ndice "nombre_indice" asignndole un tamao inicial de extensin de 8MB y un tamao para las siguientes extensiones de 4MB. El ndice "nombre_indice" ser creado en el tablespace "nombre_tablespace". Por lo que esta instruccin SQL servir para cambiar de tablespace un ndice (si as lo deseamos).

Cambiar la ubicacin de un ndice a otro tablespace en Oracle


Oracle recomienda que los ndices sean almacenados en un tablespace que apunte a una unidad fsica diferente a la de los tablespaces de los datos. A continuacin explicamos cmo cambiar la ubicacin (tablespace) de un ndice ya creado. En primer lugar necesitaremos disponer de un tablespace para los ndices, crearemos uno accediendo a Oracle Enterprise Manager, pulsando en "Servidor" y en la seccin "Almacenamiento" pulsando en "Tablespaces". Nos mostrar los tablespaces actuales, pulsaremos "Crear":

[Link]

9 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

[Link]

10 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

O bien ejecutando una consulta SQL como la siguiente:

CREATE SMALLFILE TABLESPACE "TB_INDICES" DATAFILE 'F:Oracleindicesf_tbindices.dbf' SIZE 100M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS
---Continuar---

[Link]

11 / 12

Los ndices en Oracle, creacin, eliminacin, reconstruccin Imprimible Proyecto AjpdSoft

24/10/2013

Cmo saber cundo es necesaria la reindexacin o reconstruccin de ndices


---Continuar---

Artculos relacionados
Consultas SQL de Oracle para obtener datos de una tabla. Tipos de datos / Datatypes en Oracle. Algunas consultas SQL muy tiles para el administrador de Oracle (DBA). Concepto y ejemplo de creacin de disparadores (triggers) en Oracle. Cmo acceder a Oracle con Delphi sin utilizar cdigo fuente. Auditora de una base de datos Oracle qu es? para qu sirve? cmo se activa?. Conectar APEX con una base de datos Oracle Database 9i externa. Insertar y extraer documentos en una tabla Oracle con Visual Basic 6 Artculos del proyecto AjpdSoft sobre Oracle Database. AjpdSoft Administracin Bases de Datos. AjpdSoft Monitor Espacio Oracle Cdigo Fuente Delphi. AjpdSoft Acceso a Oracle y MySQL Cdigo Fuente Delphi. Instalar Oracle Database 11g Standard Edition en Windows XP Profesional. Instalar Oracle Database 10g en Windows XP. Instalar Oracle Database 10g Express Edition XE en Linux Ubuntu 6.06. Manual para instalar Oracle 9i en Windows con capturas de pantalla. Instalacin de Oracle Client en Windows XP. Instalar y realizar aplicacin web con Oracle Application Express. Instalacin y configuracin de Windows XP Service Pack 3. AjpdSoft Enciclopedia - Definicin ODBC. AjpdSoft Enciclopedia - Definicin SQL. Tipos de datos en MySQL Server. Instalar agente de Symantec Backup Exec en WXP, copia de Oracle. Acceso a una base de datos (Oracle) mediante ASP y ODBC.

Crditos
Artculo realizado ntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.

Este artculo proviene de Proyecto AjpdSoft [Link] La direccin de esta noticia es: [Link] Este sitio web NO CONTIENE malware, todos los programas con cdigo fuente aqu. Autor: Alonso Javier Prez Daz Bscanos en Google+

[Link]

12 / 12

También podría gustarte