Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Mejoras de Oracle 11g

No description
by

Miguel Herrera

on 2 August 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Mejoras de Oracle 11g

Miguel Angel Herrera
Mejoras de Oracle 11g Enterprise Edition
Estado actual
Oracle es un sistema de gestión de base de datos desarrollado por Oracle Corporation.

En INEGI contamos con la versión Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 y este documento nos muestra algunas mejoras para esta versión, de las cuales hablaremos más adelante.
Objetivo General
Analizar las mejoras de esta versión y su impacto
Ejemplo
Oracle 10G y
sus características
Ejemplo
Objetivos Específicos
Conocer los tiempos de respuesta de las mejoras.

Identificar los pro y contra de estas mejores.
Esto nos permite
cambiar a modo
solo lectura
las tablas que deseamos
Ventajas
Uso:
SQL>
ALTER TABLE th_conteo_2005_slp_read READ ONLY;
Table altered
SQL>
insert into th_conteo_2005_slp_read select * from th_conteo_2005_slp where conteo_2005_id=41;
insert into th_conteo_2005_slp_read select * from th_conteo_2005_slp where conteo_2005_id=41
ORA-12081: no se permite la operación de actualización en la tabla "APPS"."TH_CONTEO_2005_SLP_READ"
SQL
> ALTER TABLE th_conteo_2005_slp_read READ WRITE;
Table altered
SQL>
insert into th_conteo_2005_slp_read select * from th_conteo_2005_slp where conteo_2005_id=41;
1 row inserted
SQL> commit;
Commit complete

La ventaja de usar estos tipo de índices es que se puede deshabilitar los índices sin necesidad de borrarlos, lo cual implica que se puedan habilitar y deshabilitar de forma muy rápida.
Ventajas
Ejemplo
select * from th_conteo_2005_slp a where a.municipio_id=34;
41 rows selected in 1.981 seconds (more…)
SQL> CREATE INDEX Indice_01 ON th_conteo_2005_slp(municipio_id) INVISIBLE;
Index created
select * from th_conteo_2005_slp a where a.municipio_id=34;
41 rows selected in 0.842 seconds (more…)

Ejemplo
Supongamos que deseamos obtener las personas de acuerdo al sexo sin considerar los casos en “No aplica” para todos los municipios, pero los totales por sexo los queremos por columnas. Lo que tendríamos que hacer es utilizar combinación de SUM y CASE WHEN para obtener los totales por sexo.
Cómo se hace
Usando Pivot
Oracle 11G y
sus características
Cómo se inserta
Cómo se construye
Conclusiones
¿Por qué migrar a Oracle 11G?
Como es de esperarse cada nueva versión de Oracle tiene muchas ventajas a la versión anterior, estas mejoras en su mayoría corresponde a mejoras en su núcleo, Administración y seguridades, estas mejoras contribuyen con herramientas, funcionalidades y utilidades para los DBA para mejorar y controlar la administración de nuestras base de datos.
Mejoras en Oracle 11G
Crear índice invisible
CREATE INDEX Indice_01 ON th_conteo_2005_slp(municipio_id) INVISIBLE;
Pasar índice invisible a visible
ALTER INDEX Indice_01 VISIBLE;
Cambiar a solo lectura la tabla
ALTER TABLE Nombre_Tabla READ ONLY;
Cambiar a modulo lectura y escritura
ALTER TABLE Nombre_Tabla READ WRITE;
Asignación del nextval
a una variable
Declare
nValor number(5);
Begin
nValor:=secuencia_id.nextval;
End;
Esto nos quita la tediosa tarea de asignar a una variable el nextval de una sequencia, ahora podemos asignar directamente a una variable
Gracias!!!
Queda a criterio de cada persona saber cual usar, dependiendo de las necesidades del trabajo.

SQL Pivot
En esta versión 11g podremos pivotear el resultado de una consulta sobre un campo específico
Columnas Virtuales
Son columnas que depende de una expresión o formula, es decir son campos calculados con otros campos, estos datos pueden quedar solo en la definición de la metadata y no en el espacio de datos de la tabla.
SELECT a.municipio_id,
SUM(case
when a.sexo_id = 1 then
a.total_personas
else
0
end) hombres,
SUM(case
when a.sexo_id = 2 then
a.total_personas
else
0
end) mujeres
FROM th_conteo_2005_slp a
GROUP BY a.municipio_id
ORDER BY 1

13.946 segundos
SELECT *
FROM (SELECT municipio_id, sexo_id, total_personas
FROM th_conteo_2005_slp
WHERE sexo_id BETWEEN 1 and 2) PIVOT(SUM(total_personas) FOR sexo_id IN (1, 2))
ORDER BY 1
12.355 segundos
create table TH_CONTEO_2005_SLP_COL_VIR_2
(
CONTEO_2005_ID NUMBER not null,
ENTIDAD_ID NUMBER(2) not null,
MUNICIPIO_ID NUMBER(3) not null,
LOCALIDAD_ID NUMBER(4) not null,
AGEB_ID VARCHAR2(4) not null,
MANZANA_ID NUMBER(3) not null,

COL_VIRTUAL_1 as (lpad(entidad_id,2,0)||lpad(municipio_id,3,0)||lpad(localidad_id,4,0)) virtual
)


insert into th_conteo_2005_slp_col_vir_2
(
conteo_2005_id,
entidad_id,
municipio_id,
localidad_id,
ageb_id,
manzana_id
)
values
(1, 01, 001, 0001, '3456', 1);

Cuando la tabla ya existe
alter table th_conteo_2005_slp
add (
ubicacion as (LPAD(TO_CHAR("ENTIDAD_ID"),2,'0')||LPAD(TO_CHAR("MUNICIPIO_ID"),3,'0')||LPAD(TO_CHAR("LOCALIDAD_ID"),4,'0')));

No ocupan espacio físico
select sum(bytes) / 1024 / 1024 espacio_MB
from user_segments
where segment_name = 'TH_CONTEO_2005_SLP'


794 MB Antes y después de tener columnas virtuales
Full transcript