0% encontró este documento útil (0 votos)
212 vistas184 páginas

Oracle Database 11gR2 para Desarrolladores

oracle

Cargado por

Roberto Martinez
Derechos de autor
© © All Rights Reserved
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)
212 vistas184 páginas

Oracle Database 11gR2 para Desarrolladores

oracle

Cargado por

Roberto Martinez
Derechos de autor
© © All Rights Reserved
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
Está en la página 1/ 184

Oracle es marca registrada de Oracle Corporation y

sus filiales. Otros nombres pueden ser marcas


comerciales de sus respectivos propietarios.
El material contenido en este documento, ha sido elaborado en base a informacin disponible
de manera abierta en la web, se aclara, que no existe autora que deba ser adjudica de forma
directa o indirecta al presentador de esta exposicin, la cul debe ser utilizada, slo con fines
didcticos.

Ronald Vargas, oracledbacr.blogspot.com

Ronald Vargas, oracledbacr.blogspot.com

Ronald Vargas Q.,


Technical Sales Consultant, Netsoft Oracle VAD Costa Rica y Guatemala

Blog: oracledbacr.blogspot.com +53000 visitas

Oracle Database 11gR2 Sales-PreSales Specialist Assessment


Oracle Database Security 11gR2 Sales-PreSales Specialist Assessment
Oracle Real Application Clusters 11g PreSales Specialist Assessment
Oracle GoldenGate Presales Specialist Assessment
Consultor DBA ORACLE / INFORMIX+20 aos
Instructor de Oracle University, Top 10 Latinoamrica 2005
Fundador ORAUGCRC
Miembro IOUC, Comunidad Oracle Hispana, OracleMania
Representante LAOUC
Expositor OTN TOUR DAY 2011 LAD
Profesor ULACIT
Primer Centroamericano Nominado a Oracle ACE

Ronald Vargas, oracledbacr.blogspot.com

Oracle Database 11gR2 para Desarrolladores


1977 Software Development Laboratories, Proculsora de Oracle, es
fundada por Larry Ellison, Bob Miner y Ed Oates.
1978 Oracle Version 1, escrita en lenguaje de programacin
Ensamblador, corre en un PDP-11 de RSX, con 128K de memoria.
Implementacin separada en el cdigo para la base de datos y en el
cdigo del usuario. Oracle V1 nunca fue oficialmente liberada.

Ronald Vargas, oracledbacr.blogspot.com

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

Oracle Database 11gR2 para Desarrolladores

Escalabilidad
Alta Disponibilidad
Seguridad
Contingencia
Rendimiento
Respaldos y Recuperacin
Administracin
Migracin

Ronald Vargas, oracledbacr.blogspot.com

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

Ronald Vargas, oracledbacr.blogspot.com

10

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

11

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

12

Ronald Vargas, oracledbacr.blogspot.com

13

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

14

Ronald Vargas, oracledbacr.blogspot.com

15

Oracle Database 11gR2 para Desarrolladores


Retos que enfrenta el mejoramiento de
la seguridad

El dba no debe porque ser dios


Mitigar el riesgo de delito ciberntico
Eliminar el riesgo de robo de informacin
Maquillar la data en ambientes de
desarrollo
Control de manejo de polticas de acceso a
los datos
Implementar manejo seguro de datos
histricos

Ronald Vargas, oracledbacr.blogspot.com

16

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

17

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

18

Ronald Vargas, oracledbacr.blogspot.com

19

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

20

Ronald Vargas, oracledbacr.blogspot.com

21

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

22

Ronald Vargas, oracledbacr.blogspot.com

23

Oracle Database 11gR2 para Desarrolladores


La creciente demanda de TI dentro de la empresa ha establecido una relacin
crtica entre el xito de la empresa y la disponibilidad de la infraestructura de
TI.

Ronald Vargas, oracledbacr.blogspot.com

24

Oracle Database 11gR2 para Desarrolladores

61% Incremento
Informationweek.com encuesta revela, una disminucin del 11% en el nmero de
incidentes de soporte. La mayora dijo que la principal razn, se debi a una
infraestructura ms estable.

Ronald Vargas, oracledbacr.blogspot.com

25

Oracle Database 11gR2 para Desarrolladores

Prioridades Financieras
Reducir costos 24%

58%

Se entiende que la eficiencia se da


cuando se
menos
recursos
noutilizan
saben
a que
para lograr un mismo objetivo.

corresponden sus costos

Mejorar eficiencia 20%

Mejor Eficacia 17%

LaEso
eficacia
hace referencia a nuestra
significa que no se puede llevar a cabo
capacidad
para lograr
lo que
nos el
anlisis
costo-beneficio
o incluso
determinar
retorno de inversin,
lo que hace difcil justificar
proponemos.
y obtener el apoyo a nuevas inversiones.

Ronald Vargas, oracledbacr.blogspot.com

26

Oracle Database 11gR2 para Desarrolladores


La no disponibilidad de una aplicacin o dato crtico puede
implicar un costo significativo para las empresas en trminos de:
Prdida de productividad e ingresos
Clientes insatisfechos
Mala imagen corporativa

99,9% = 43.8 minutos/mes u 8,76 horas/ao ("tres nueves")


99,99% = 4.38 minutos/mes o 52.6 minutos/ao ("cuatro nueves")
99,999% = 0.44 minutos/mes o 5.26 minutos/ao ("cinco nueves")

Ronald Vargas, oracledbacr.blogspot.com

27

Oracle Database 11gR2 para Desarrolladores


Por tanto, una infraestructura de TI altamente disponible es un factor de xito
crtico para las empresas de la economa actual, que se mueve con rapidez y
est siempre activa

Ronald Vargas, oracledbacr.blogspot.com

28

Oracle Database 11gR2 para Desarrolladores


Parte de estas cosas las podemos alcanzar apoyados en:

La ciencia y tecnologa
Tecnologa para: Ahorrar, Confiar y Diferenciar ACD Las estrategias deben estar basadas en:
Sentido comn
Informacin actual y histrica ( estudios de mercado y experiencia )
Background de cada uno de nosotros

Ronald Vargas, oracledbacr.blogspot.com

29

Oracle Database 11gR2 para Desarrolladores


Mundo de las empresas desnudas
Todo el mundo lo sabe todo

Ronald Vargas, oracledbacr.blogspot.com

30

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

31

Ronald Vargas, oracledbacr.blogspot.com

32

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

33

Oracle Database 11gR2 para Desarrolladores


Oracle Corporation reclama el haber sido:

The first commercially available SQL-based database (1979)


The first database to support symmetric multiprocessing (SMP) (1983)
The first distributed database (1986)
The first database product tested to comply with the ANSI SQL standard
(1993)
The first 64-bit database (1995)
The first database to incorporate a native JRE (1998)
The first proprietary RDBMS to become available on Linux (1998)
The first database to support XML (1999)

Ronald Vargas, oracledbacr.blogspot.com

34

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

35

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

36

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

37

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

38

Oracle Database 11gR2 para Desarrolladores


Instance

Memory structures

User
process

SGA

Database
buffer
cache

Server
process

Processes

DBWn

CKPT

LGWR

Shared pool

Redo log
buffer

SMON

PMON

Library
cache
Data dictionary
cache
ARCn

RECO

Others

Database

Storage structures

Data files

Control
files

Ronald Vargas, oracledbacr.blogspot.com

Online redo
log files
39

Oracle Database 11gR2 para Desarrolladores


Server
process 1

Server
process 2

PGA

Background
process

PGA

Data dictionary
cache

Shared
SQL area
Library
cache

SGA

Other
Shared pool

Redo log
buffer
Database buffer
cache
Java
pool

PGA

Streams
pool

I/O buffer

Free
memory

Response
queue

Request
queue

Large pool

Oracle Database Memory Structures


Ronald Vargas, oracledbacr.blogspot.com

40

Oracle Database 11gR2 para Desarrolladores


Is part of the SGA
Holds copies of data blocks that are read from data files
Is shared by all concurrent users

Instance
SGA

Database
buffer
cache

DBWn

CKPT

LGWR

Shared pool

Redo log
buffer

SMON

PMON

Ronald Vargas, oracledbacr.blogspot.com

Library
cache
Data dictionary
cache
ARCn

RECO

Others

41

Oracle Database 11gR2 para Desarrolladores


Is a circular buffer in the SGA
Holds information about changes made to the database
Contains redo entries that have the information to redo
changes made by operations such as DML and DDL
Instance
SGA

Database
buffer
cache

DBWn

CKPT

LGWR

Shared pool

Redo log
buffer

SMON

PMON

Ronald Vargas, oracledbacr.blogspot.com

Library
cache
Data dictionary
cache
ARCn

RECO

Others

42

Oracle Database 11gR2 para Desarrolladores


Is a portion of the SGA
Contains:
Library cache
Shared SQL area

Data dictionary cache


Control structures
Instance
SGA

Database
buffer
cache

DBWn

CKPT

LGWR

Shared
SQL area

Shared pool
Library
cache

Redo log
buffer

SMON

Data dictionary
cache

PMON

ARCn

RECO

Library
cache

Data dictionary
cache

Other

Others

Ronald Vargas, oracledbacr.blogspot.com

43

Oracle Database 11gR2 para Desarrolladores


User process
Is started when a database user or a batch process
connects to Oracle Database

Database processes
Server process: Connects to the Oracle instance and is
started when a user establishes a session
Background processes: Are started when an Oracle
instance is started
Instance

Process Architecture

SGA

Database
buffer
cache

PGA
User
process

Server
process

Shared pool

Redo log
buffer

Library
cache
Data dictionary
cache

Background processes
DBWn

CKPT

LGWR

Ronald Vargas, oracledbacr.blogspot.com

SMON

PMON

ARCn

RECO

Others
44

Oracle Database 11gR2 para Desarrolladores


Database Writer Process (DBWn)
Writes modified (dirty) buffers in the database
buffer cache to disk:
Asynchronously while performing other processing
Periodically to advance the checkpoint

DBWn

Database buffer
cache

Database writer
process
Ronald Vargas, oracledbacr.blogspot.com

Data files

45

LogWriter Process (LGWR)


Writes the redo log buffer to a redo log file on disk
Writes:
When a user process commits a transaction
When the redo log buffer is one-third full
Before a DBWn process writes modified buffers to disk

LGWR
Redo log buffer

LogWriter process

Ronald Vargas, oracledbacr.blogspot.com

Redo log files

46

Checkpoint Process (CKPT)


Records checkpoint information in
Control file
Each data file header

CKPT

Control file

Checkpoint
process

Data files

Ronald Vargas, oracledbacr.blogspot.com

47

System Monitor Process (SMON)


Performs recovery at instance startup
Cleans up unused temporary segments

SMON

Instance

System Monitor
process

Temporary
segment

Ronald Vargas, oracledbacr.blogspot.com

48

Process Monitor Process (PMON)


Performs process recovery when a user process fails
Cleans up the database buffer cache
Frees resources that are used by the user process

Monitors sessions for idle session timeout


Dynamically registers database services with listeners

PMON
Process Monitor
process

User
Failed user
process
Database buffer
cache
Ronald Vargas, oracledbacr.blogspot.com

49

Archiver Processes (ARCn)


Copy redo log files to a designated storage device after
a log switch has occurred
Can collect transaction redo data and transmit that
data to standby destinations

ARCn

Archiver process

Copies of redo log


files

Ronald Vargas, oracledbacr.blogspot.com

Archive destination

50

Ronald Vargas, oracledbacr.blogspot.com

51

Oracle Database 11gR2 para Desarrolladores

Control files

Parameter file

Password file

Data files

Backup files

Online redo log files

Archived redo log files

Alert log and trace files


Ronald Vargas, oracledbacr.blogspot.com

52

Estructuras Lgicas y Fsicas RDBMS Oracle

La unidad mnima de almacenamiento es el


objeto conocido con el nombre de tabla
Tabla: es un objeto bidimensional, compuesto
de columnas y registros

Ronald Vargas, oracledbacr.blogspot.com

53

Cmo se ejecuta una sentencia en una base


de datos Oracle

Ronald Vargas, oracledbacr.blogspot.com

54

Oracle Parseo
El parseo es un proceso mediante el cul, el
optimizador de consultas del motor de la base de
datos Oracle establece:

Revisin de la sintaxis de la instruccin SQL


Obtencin de privilegios para ejecutar la sentencia
Modo de recuperacin de los datos ( explain plan )
Presentacin de la salida de ejecucin ( fetch )

Ronald Vargas, oracledbacr.blogspot.com

55

Oracle Parseo
Explain plan:
Software Parseo
Hardware Parseo

Ronald Vargas, oracledbacr.blogspot.com

56

Oracle Parseo

Ronald Vargas, oracledbacr.blogspot.com

57

Oracle Parseo
Oracle < 7.0 Optimizacin basada en regla ( RULE )
Oracle > 7.0 Optimizacin basada en regla y
optimizacin basada en costo ( RULE / COST )
Oracle 11g superior Optimizacin basada en costo,
RULE no es soportado.

Ronald Vargas, oracledbacr.blogspot.com

58

El optimizador de la base de datos


Oracle y el manejo de ndices

Ronald Vargas, oracledbacr.blogspot.com

59

Oracle optimizacin

Ronald Vargas, oracledbacr.blogspot.com

60

Oracle optimizacin

Ronald Vargas, oracledbacr.blogspot.com

61

Oracle optimizacin
Cualquier consulta en Oracle Database,
que devuelva ms

del 5%

los registros de una tabla es


FTS por regla

Full Table Scan

Ronald Vargas, oracledbacr.blogspot.com

62

Ronald Vargas, oracledbacr.blogspot.com

63

AWR - Repositorio de Carga de Trabajo,


para monitoreo de la base de datos

Oracle

Ronald Vargas, oracledbacr.blogspot.com

64

AWR - Oracle
El AWR, repositorio de carga de trabajo de Oracle,
es la evolucin del reporte STATSPACK a partir de
las bases de datos versin Oracle 10g.
Fue desarrollado por el equipo de Oracle Technical
Support y requiere para ser interpretado, un nivel
de experiencia significativo.
El AWR trabaja en conjunto con el ADDM (Active
Database Diagnostic Monitor) y puede ser
empleado desde lnea de comando o desde el OEM
( Database Control DBCA ).
Ronald Vargas, oracledbacr.blogspot.com

65

AWR - Oracle

Ronald Vargas, oracledbacr.blogspot.com

66

Oracle Auto-Tuning

Ronald Vargas, oracledbacr.blogspot.com

67

Oracle Auto-Tuning
Desde Oracle 10g caractersticas de afinamiento:
Oracle 10g Grid
Nuevo 10g Enterprise Manager (OEM), interface Web
AWR and ASH incorporado dentro de las opciones OEM
Performance Pack and Diagnostic Pack
Automated Session History (ASH
Automatic Database Diagnostic Monitor (ADDM)
Automatic Workload Repository (AWR)
SQLTuning Advisor
SQLAccess Advisor

Ronald Vargas, oracledbacr.blogspot.com

68

Oracle Auto-Tuning
Oracle 11g caractersticas de afinamiento:

SQL Performance Analyzer


11g Compression
SQL optimization improvements
Automatic Memory Tuning El afinamiento

del PGA fue


introducido en Oracle 9i. El afinamiento automtico del SGA por primera vez en
Oracle 10g. In 11g, toda la memoria puede ser automticamente ajustada, al
setearse un nico parmetro.

PGA, SGA y procesos de S.O.

AWR Baselines
Adaptive Metric Baselines
Ronald Vargas, oracledbacr.blogspot.com

69

Oracle Database 11gR2 para Desarrolladores


Auto-Tuning

Advisory
Instrumentation

Ronald Vargas, oracledbacr.blogspot.com

70

Ronald Vargas, oracledbacr.blogspot.com

71

Ronald Vargas, oracledbacr.blogspot.com

72

Ronald Vargas, oracledbacr.blogspot.com

73

Oracle Database 11gR2 para Desarrolladores


Sentencia bsica:
SELECT * FROM scott.employees;

95% Sentencias son a dos o ms tablas


Cuando se hace una consulta a ms de una tabla es requerido,
que exista alguna manera de relacionar los registros de cada
una de las tablas involucradas en la consulta.
A esta relacin se le conoce con el nombre de MODELO
RELACIONAL
Ronald Vargas, oracledbacr.blogspot.com

74

Oracle Database 11gR2 para Desarrolladores

DEPARTMENTS

JOB_HISTORY
EMPLOYEE_ID
(PK,FK)
START_DATE (PK)
END_DATE
JOB_ID (FK)
DEPARTMENT_ID (FK)

EMPLOYEES
EMPLOYEE_ID (PK)
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID (FK)
SALARY
COMMISION_PCT
MANAGER_ID (FK)
DEPARTMENT_ID (FK)

DEPARTMENT_ID (PK)
DEPARTMENT_NAME
MANAGER_ID
LOCATION_ID (FK)

LOCATIONS
LOCATION_ID (PK)
STREET_ADDRESS
POSTAL_CODE
CITY
STATE_PROVINCE
COUNTRY_ID (FK)

COUNTRIES
JOBS
JOB_ID (PK)
JOB_TITLE
MIN_SALARY
MAX_SALARY

COUNTRY_ID (PK)
COUNTRY_NAME
REGION_ID (FK)

REGIONS
REGION_ID (PK)
REGION_NAME

Ronald Vargas, oracledbacr.blogspot.com

75

Oracle Database 11gR2 para Desarrolladores


Tabla_1 ==== 1000000
Tabla_2 ====
5000
En la clusula FROM, en que orden van las
tablas?
a) FROM Tabla_1, Tabla_2
b) FROM Tabla_2, Tabla_1

Ronald Vargas, oracledbacr.blogspot.com

76

Oracle Database 11gR2 para Desarrolladores


La respuesta correcta es: B) FROM Tabla_2, Tabla_1

Oracle Parsea las tablas de derecha a


izquierda. Las dems tablas lo hacen de
izquierda a derecha ( orden dispuesto en
la clusula FROM )

Ronald Vargas, oracledbacr.blogspot.com

77

Oracle Database 11gR2 para Desarrolladores


Tabla_1 ==== 10000000
Tabla_2 ====
5000
Tabla_3 ==== 2500000

Tabla 1 FK ------ Tabla_3


Tabla_2 FK ----- Tabla_3
Tabla_1
Tabla_2

En la clusula FROM, en que orden van las


tablas?
a) FROM Tabla_1, Tabla_2, Tabla_3
b) FROM Tabla_2, Tabla_1, Tabla_3
c) FROM Tabla_3, Tabla_2, Tabla_1
d) FROM Tabla_3, Tabla_1, Tabla_2
Ronald Vargas, oracledbacr.blogspot.com

78

Oracle Database 11gR2 para Desarrolladores


La respuesta correcta es: A) y B)

La tabla PIVOTE, es la tabla que es


intercepcin entre las tablas. La tabla que
tiene elementos de todas las tablas
involucradas para poder hacer la relacin.

Ronald Vargas, oracledbacr.blogspot.com

79

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

80

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

81

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

82

Oracle Database 11gR2 para Desarrolladores


Rendimiento de una base de datos Oracle, esta
dada por la ecuacin:

CPU + MEMORIA + I/0


Recuperacin de datos en memoria es
1/10000 mejor

que hacerlo a disco

Ronald Vargas, oracledbacr.blogspot.com

83

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

84

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

85

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

86

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

87

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

88

Oracle Database 11gR2 para Desarrolladores


Microprocesadores CISC: objetivo alcanzar la velocidad
a travs de un conjunto rico de
instrucciones, que necesitan menos pasos para completar una tarea.
Microprocesadores RISC: requieren ms instrucciones para completar una determinada tarea, pero se
centran en la reduccin del nmero de ciclos que tarda en completar la misma.

Tiempo muerto entre instrucciones

RISC

CISC

10%

>50%

Costo Servidor sin NAS/SAN


RISC

CISC

> $20.000,00

$7.000,00

Sistemas Operativos

RISC

CISC

UNIX ( Solaris, AIX,HP/UX)

WINDOWS/LINUX

Ronald Vargas, oracledbacr.blogspot.com

89

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

90

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

91

Oracle Database 11gR2 para Desarrolladores


Express
Edition

Standard
Edition One

Standard
Edition

Enterprise
Edition

Non-Oracle developers, open


source developers, new
DBAs, students, non-Oracle
ISVs, hw vendors

Low-price option for


SMB/LOB Deployments,
ISVs who need a supported
Oracle database

Full-featured database for


SMBs with optional clustering
support (up to 4 CPUs)

Large-scale Enterprises that


demand high-performance BI
(ETL, DW, OLTP), security,
scalability, availability, etc.

FREE

$180/user (min. 5)
or $5,800
per Processor (CPU)**

$350/user (min.10)
or $17,500
per Processor (CPU)**

$950/user (min. 25)


or $47,500
per Core** (multipliers apply)

< 20 users

< 400 users

400-1000 users

> 1000 users

Uses 1 CPU
< 4GB DB size
1 instance per CPU
Use up to 1GB RAM

2 CPU

Single or clustered up to 4
CPUs

4+ CPUs

Free OTN
Community Forum

< 500GB DB size*

> 500 GB DB size*


< 500 GB DB size*

Fee-based Support
available

Fee-based Support
available

Ronald Vargas, oracledbacr.blogspot.com

Fee-based Support
available

92

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

93

Oracle Database 11gR2 para Desarrolladores


Tipos de bases de datos en Oracle
OLTP - transaccional
OLAP procesamiento por lotes (DW )
Multipropsito transaccional y reportera

Ronald Vargas, oracledbacr.blogspot.com

94

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

95

Oracle Database 11gR2 para Desarrolladores


Rendimiento RDBMS Frmula= CPU+MEMORIA+I/O
Tipo Procesador ( INTEL, AMD, RISC ) + Sistema Operativo ( Windows, Linux, Unix )

Memoria:
1. Cach sistema operativo ( 40%)
2. Instancia de la base de datos ( - 50% memoria fsica )
3. Memoria de procesos background ( 90MB a 145MB )
4. Memoria usuarios conectados a la base de datos ( Cliente/Servidor, Web 3
capas, mlti-hilo ( JAVA )
5. Procesos de respaldo y monitoreo
6. Instancia ASM ( 280MB a 350MB )
APLICATIVO

CONSUMO

Java

12-15MB

Pgina de Oracle JSP

32 MB

Serverlet

24 MB

Forms & Reports


Ronald Vargas, oracledbacr.blogspot.com

15 a 20 MB
96

Oracle Database 11gR2 para Desarrolladores


Ejemplo1:
Servidor para BD Oracle 11gR2, con 50 usuarios cliente/servidor Developer.
S.O.: LINUX con 4GB
RAM FISICO:

Cach: 1.6GB

Instancia: 800MB

Background: 108MB

800MB+108MB+1.1GB =
2GB

Usuarios:50x
22MB=1.1GB

Libres= 400MB

Ronald Vargas, oracledbacr.blogspot.com

97

Oracle Database 11gR2 para Desarrolladores


Insuficiente
memoria

Intercambio
de contexto

Swaping

Ronald Vargas, oracledbacr.blogspot.com

Bajo
rendimiento

98

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

99

Oracle Database 11gR2 para Desarrolladores


Redundant Array of Independent Disks

Ronald Vargas, oracledbacr.blogspot.com

100

Ronald Vargas, oracledbacr.blogspot.com

101

Oracle Database 11gR2 para Desarrolladores


WITH
dept_costs AS (
SELECT d.department_name, SUM(e.salary) AS dept_total
FROM
employees e JOIN departments d
ON
e.department_id = d.department_id
GROUP BY d.department_name),
avg_cost
AS (
SELECT SUM(dept_total)/COUNT(*) AS dept_avg
FROM
dept_costs)
SELECT *
FROM
dept_costs
WHERE dept_total >
(SELECT dept_avg
FROM avg_cost)
ORDER BY department_name;

Ronald Vargas, oracledbacr.blogspot.com

102

Declaracin para Mltiples INSERT

Target_a

Sourcetab

Subquery

INSERT ALL
INTO target_a VALUES(,,)
INTO target_b VALUES(,,)
INTO target_c VALUES(,,)
SELECT
FROM sourcetab
WHERE ;

Target_b

Target_c
Ronald Vargas, oracledbacr.blogspot.com

103

Tipos deINSERT
Los diferentes tipos de INSERT mltitablas son:

Incondicional INSERT
Condicional INSERT ALL
Pivoteado INSERT
Condicional INSERT FIRST

Ronald Vargas, oracledbacr.blogspot.com

104

Multitable INSERT Statements


Syntax for multitable INSERT:
INSERT [conditional_insert_clause]
[insert_into_clause values_clause] (subquery)

conditional_insert_clause:

[ALL] [FIRST]
[WHEN condition THEN] [insert_into_clause values_clause]
[ELSE] [insert_into_clause values_clause]

Ronald Vargas, oracledbacr.blogspot.com

105

Incondicional INSERT ALL


Select the EMPLOYEE_ID, HIRE_DATE, SALARY, and
MANAGER_ID values from the EMPLOYEES table for those
employees whose EMPLOYEE_ID is greater than 200.
Insert these values into the SAL_HISTORY and
MGR_HISTORY tables by using a multitable INSERT.

INSERT ALL
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID, hire_date HIREDATE,
salary SAL, manager_id MGR
FROM employees
WHERE employee_id > 200;

Ronald Vargas, oracledbacr.blogspot.com

106

Conditional INSERT ALL:


Example
Hired before
1995
EMP_HISTORY

Employees
With sales
commission

EMP_SALES

Ronald Vargas, oracledbacr.blogspot.com

107

Conditional INSERT ALL


INSERT ALL
WHEN HIREDATE < '01-JAN-95' THEN
INTO emp_history VALUES(EMPID,HIREDATE,SAL)
WHEN COMM IS NOT NULL THEN
INTO emp_sales VALUES(EMPID,COMM,SAL)
SELECT employee_id EMPID, hire_date HIREDATE,

salary SAL, commission_pct COMM


FROM employees

Ronald Vargas, oracledbacr.blogspot.com

108

Conditional INSERT FIRST:


Example
Scenario: If an employee
salary is 2,000, the
record is inserted into the
SAL_LOW table only.

Salary < 5,000


SAL_LOW

5000 <= Salary


<= 10,000
SAL_MID
EMPLOYEES
Otherwise
SAL_HIGH
Ronald Vargas, oracledbacr.blogspot.com

109

Conditional INSERT FIRST


INSERT FIRST
WHEN salary < 5000 THEN
INTO sal_low VALUES (employee_id, last_name, salary)
WHEN salary between 5000 and 10000 THEN
INTO sal_mid VALUES (employee_id, last_name, salary)
ELSE
INTO sal_high VALUES (employee_id, last_name, salary)

SELECT employee_id, last_name, salary


FROM employees

Ronald Vargas, oracledbacr.blogspot.com

110

Pivoteado INSERT
INSERT ALL
INTO sales_info VALUES (employee_id,week_id,sales_MON)
INTO sales_info VALUES (employee_id,week_id,sales_TUE)
INTO sales_info VALUES (employee_id,week_id,sales_WED)
INTO sales_info VALUES (employee_id,week_id,sales_THUR)
INTO sales_info VALUES (employee_id,week_id, sales_FRI)
SELECT EMPLOYEE_ID, week_id, sales_MON, sales_TUE,
sales_WED, sales_THUR,sales_FRI
FROM sales_source_data;

Ronald Vargas, oracledbacr.blogspot.com

111

Declaracin MERGE
Usted puede condicionalmente hacer un insert, una
actualizacin o un borrado de registros en una tabla,
utilizando MERGE.
MERGE INTO table_name table_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE SET
col1 = col1_val,
col2 = col2_val
WHEN NOT MATCHED THEN
INSERT (column_list)
VALUES (column_values);

Ronald Vargas, oracledbacr.blogspot.com

112

Merging Rows: Ejemplo


Insertar o actualizar registros en la tabla COPY_EMP3
emparejando con la tabla EMPLOYEES.
MERGE INTO copy_emp3 c
USING (SELECT * FROM EMPLOYEES ) e
ON (c.employee_id = e.employee_id)
WHEN MATCHED THEN
UPDATE SET
c.first_name = e.first_name,
c.last_name = e.last_name,
...
DELETE WHERE (E.COMMISSION_PCT IS NOT NULL)
WHEN NOT MATCHED THEN
INSERT VALUES(e.employee_id, e.first_name, e.last_name,
e.email, e.phone_number, e.hire_date, e.job_id,
e.salary, e.commission_pct, e.manager_id,
e.department_id);

Ronald Vargas, oracledbacr.blogspot.com

113

Ronald Vargas, oracledbacr.blogspot.com

114

Indices virtuales
El proceso de afinamiento de instrucciones
SQL, requiere que de manera alterna,
podamos definir estrategias de indexacin,
para observar su efecto en los planes de
ejecucin.
Crear ndices adicionales, no es el problema.

Ronald Vargas, oracledbacr.blogspot.com

115

Indices virtuales
El problema es, que crear ndices extras sobre tablas grandes,
puede tomar un monto considerado de tiempo y espacio en
disco.
Adicionalmente, los ndices creados pueden ser utilizados por
otras sesiones de usuarios y podra afectar el rendimiento en
otras partes de la aplicacin.
Esto puede ser problemtico cuando estamos intentando
identificar el problema en un sistema en produccin.
Ronald Vargas, oracledbacr.blogspot.com

116

Indices virtuales
En contraste a los ndices convencionales, los ndices
virtuales no estn asociados a un segmento, el tiempo de
creacin y el espacio asociado en disco es irrelevante.
Adicionalmente, no pueden ser vistos por otras sesiones,
por tanto, no se ve afectado el normal funcionamiento del
sistema.

Este clase muestra de manera sencilla como utilizarlos y las


consideraciones que debemos tener en cuenta.

Ronald Vargas, oracledbacr.blogspot.com

117

Indices virtuales
SQL> desc movto_h
Name
----------------------------------------NO_CIA
CENTRO
TIPO_DOC
PERIODO
RUTA
NO_DOCU
FECHA
NO_FISICO
SERIE_FISICO
...
FECHA_APLICACION
TSTAMP
NO_TRASLADO

Null?
-------NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL
NOT NULL

Ronald Vargas, oracledbacr.blogspot.com

Type
-------------VARCHAR2(2)
VARCHAR2(2)
VARCHAR2(2)
VARCHAR2(4)
VARCHAR2(4)
VARCHAR2(12)
DATE
VARCHAR2(12)
VARCHAR2(15)
DATE
DATE
VARCHAR2(12)

118

Indices virtuales

SQL> select count(*) from movto_h;


COUNT(*)
---------6445961

Ronald Vargas, oracledbacr.blogspot.com

119

Indices virtuales
SQL> create index v_movto_h_nofisico on
movto_h(no_fisico) nosegment;
Index created.
SQL> explain plan for
2 select count(distinct no_fisico) from movto_h;
Explained.

Ronald Vargas, oracledbacr.blogspot.com

120

Indices virtuales
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------Plan hash value: 891170817
-----------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
-----------------------------------------------------------------------------|
0 | SELECT STATEMENT
|
|
1 |
7 | 21381
(3)| 00:04:17 |
|
1 | SORT GROUP BY
|
|
1 |
7 |
|
|
|
2 |
TABLE ACCESS FULL| movto_h | 6445K|
43M| 21381
(3)| 00:04:17 |
-----------------------------------------------------------------------------9 rows selected.

Ronald Vargas, oracledbacr.blogspot.com

121

Indices virtuales
SQL> explain plan for
2 select count(distinct no_fisico) from movto_h where no_fisico < 10000;
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------Plan hash value: 891170817
-----------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
-----------------------------------------------------------------------------|
0 | SELECT STATEMENT
|
|
1 |
7 | 21547
(3)| 00:04:19 |
|
1 | SORT GROUP BY
|
|
1 |
7 |
|
|
|* 2 |
TABLE ACCESS FULL| movto_h |
322K| 2203K| 21547
(3)| 00:04:19 |
------------------------------------------------------------------------------

Predicate Information (identified by operation id):


PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------2 - filter(TO_NUMBER("NO_FISICO")<10000)
14 rows selected.

Ronald Vargas, oracledbacr.blogspot.com

122

Indices virtuales
SQL> create index v_movto_h_nofisico2 on
movto_h(to_number(no_fisico)) nosegment;

Index created.
SQL> explain plan for
2 select count(distinct no_fisico) from
movto_h where no_fisico < 10000;
Explained.

Ronald Vargas, oracledbacr.blogspot.com

123

Indices virtuales
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------Plan hash value: 891170817
-----------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
-----------------------------------------------------------------------------|
0 | SELECT STATEMENT
|
|
1 |
7 | 21547
(3)| 00:04:19 |
|
1 | SORT GROUP BY
|
|
1 |
7 |
|
|
|* 2 |
TABLE ACCESS FULL| movto_h |
322K| 2203K| 21547
(3)| 00:04:19 |
-----------------------------------------------------------------------------Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------2 - filter(TO_NUMBER("NO_FISICO")<10000)
14 rows selected.

Ronald Vargas, oracledbacr.blogspot.com

124

Indices virtuales
SQL>
SQL> alter session set "_use_nosegment_indexes"=TRUE;
Session altered.
SQL> explain plan for
2 select count(distinct no_fisico) from movto_h where
no_fisico < 10000;
Explained.

Ronald Vargas, oracledbacr.blogspot.com

125

Indices virtuales
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------Plan hash value: 2481667387
-------------------------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
-------------------------------------------------------------------------------------------|
0 | SELECT STATEMENT
|
|
1 |
7 |
7
(0)| 00:00:01 |
|
1 | SORT GROUP BY
|
|
1 |
7 |
|
|
|* 2 |
INDEX FAST FULL SCAN| V_movto_h_NOFISICO |
322K| 2203K|
7
(0)| 00:00:01 |
-------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------2 - filter(TO_NUMBER("NO_FISICO")<10000)
14 rows selected.

Ronald Vargas, oracledbacr.blogspot.com

126

Indices virtuales
SQL> SELECT index_owner, index_name
2
FROM dba_ind_columns
3
WHERE index_name NOT LIKE 'BIN$%'
4 MINUS
5 SELECT owner, index_name
6
FROM dba_indexes;
INDEX_OWNER
-----------------------------PRUEBAS21
PRUEBAS21
PRUEBAS21

INDEX_NAME
----------------------------V_movto_h_NOFISICO
V_movto_h_NOFISICO2
V_ARINMN

Ronald Vargas, oracledbacr.blogspot.com

127

Indices virtuales
SQL> drop index v_movto_h_nofisico;
Index dropped.
SQL> explain plan for
2 select count(distinct no_fisico) from movto_h where
no_fisico < 10000;
Explained.

Ronald Vargas, oracledbacr.blogspot.com

128

Indices virtuales
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------Plan hash value: 11771441
-------------------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)|
-------------------------------------------------------------------------------------|
0 | SELECT STATEMENT
|
|
1 |
7 |
10
(0)|
|
1 | SORT GROUP BY
|
|
1 |
7 |
|
|
2 |
TABLE ACCESS BY INDEX ROWID| movto_h
|
322K| 2203K|
10
(0)|
|* 3 |
INDEX RANGE SCAN
| V_movto_h_NOFISICO2 | 58014 |
|
2
(0)|

Time

00:00:01 |
|
00:00:01 |
00:00:01 |

-------------------------------------------------------------------------------------PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------Predicate Information (identified by operation id):
--------------------------------------------------3 - access(TO_NUMBER("NO_FISICO")<10000)
15 rows selected.

Ronald Vargas, oracledbacr.blogspot.com

129

Indices virtuales
SQL> select count(*) from movto_h;
COUNT(*)
---------6445961
drop index v_movto_h_nofisico2;
create index v_movto_h_nofisico2 on movto_h(to_number(no_fisico))
nosegment;
drop index v_movto_h_nofisico2;
create index v_movto_h_nofisico2 on movto_h(to_number(no_fisico));
SQL> drop index v_movto_h_nofisico2;
Index dropped.

Ronald Vargas, oracledbacr.blogspot.com

130

Indices virtuales
SQL>
SQL> set timing on;
SQL>
SQL> create index v_movto_h_nofisico2 on
movto_h(to_number(no_fisico)) nosegment;
Index created.
Elapsed: 00:00:00.03

SQL> drop index v_movto_h_nofisico2;


Index dropped.
Elapsed: 00:00:00.02

Ronald Vargas, oracledbacr.blogspot.com

131

Indices virtuales
SQL> create index v_movto_h_nofisico2 on
movto_h(to_number(no_fisico));

Index created.
Elapsed: 00:01:09.56
SQL> explain plan for
2 select count(distinct no_fisico) from movto_h where
no_fisico < 10000;
Explained.
Elapsed: 00:00:00.01

Ronald Vargas, oracledbacr.blogspot.com

132

Indices virtuales
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------Plan hash value: 891170817
-----------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
-----------------------------------------------------------------------------|
0 | SELECT STATEMENT
|
|
1 |
7 | 21547
(3)| 00:04:19 |
|
1 | SORT GROUP BY
|
|
1 |
7 |
|
|
|* 2 |
TABLE ACCESS FULL| movto_h |
322K| 2203K| 21547
(3)| 00:04:19 |
-----------------------------------------------------------------------------Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT

-----------------------------------------------------------------------------2 - filter(TO_NUMBER("NO_FISICO")<10000)
14 rows selected.

Ronald Vargas, oracledbacr.blogspot.com

133

Indices virtuales
SQL> alter session set "_use_nosegment_indexes"=FALSE;
Session altered.
Elapsed: 00:00:00.01
SQL> explain plan for
2 select count(distinct no_fisico) from movto_h where
no_fisico < 10000;
Explained.
Elapsed: 00:00:00.01

SQL> select * from table(dbms_xplan.display);

Ronald Vargas, oracledbacr.blogspot.com

134

Indices virtuales
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------Plan hash value: 891170817
-----------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
-----------------------------------------------------------------------------|
0 | SELECT STATEMENT
|
|
1 |
7 | 21547
(3)| 00:04:19 |
|
1 | SORT GROUP BY
|
|
1 |
7 |
|
|
|* 2 |
TABLE ACCESS FULL| movto_h |
322K| 2203K| 21547
(3)| 00:04:19 |
-----------------------------------------------------------------------------Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------2 - filter(TO_NUMBER("NO_FISICO")<10000)
14 rows selected.

Ronald Vargas, oracledbacr.blogspot.com

135

Indices virtuales

Ronald Vargas, oracledbacr.blogspot.com

136

Indices virtuales

El optimizador de Oracle 10g y superiores trabaja


basado en optimizacin por COSTO.
RBO no esta soportado en Oracle11g

Ronald Vargas, oracledbacr.blogspot.com

137

Ronald Vargas, oracledbacr.blogspot.com

138

Columnas Virtuales
Columnas Virtuales
Frmula / columnas calculadas - sobre la base de datos
Restricciones adicionales - sobre la base de datos
Nueva categora para la particin - sobre la base de datos
Integridad creativa de referencia - en la base de datos

Sin columnas virtuales- inconvenientes


Triggers - caros
Vistas- a veces se olvidan
Re-diseo Mucho trabajo duro!

Ronald Vargas, oracledbacr.blogspot.com

139

Columnas Virtuales
SQL> show user
USER is "DEMO_LAB"
SQL> desc employees
Name
----------------------------------------EMPLOYEE_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID
SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID
SQL>
SQL>

Null?
Type
-------- ---------------------------NUMBER(6)
VARCHAR2(20)
NOT NULL VARCHAR2(25)
NOT NULL VARCHAR2(25)
VARCHAR2(20)
NOT NULL DATE
NOT NULL VARCHAR2(10)
NUMBER(8,2)
NUMBER(2,2)
NUMBER(6)
NUMBER(4)

Ronald Vargas, oracledbacr.blogspot.com

140

Columnas Virtuales
1 insert into employees(employee_id, first_name, last_name, email, hire_date, job_id)
2* values (&empleado_id, '&nombre', '&apellido', '&email', to_date('&nacimiento','dd-mm-yyyy'),
&id_empleado)
SQL> /
Enter value for empleado_id: 1
Enter value for nombre: Ronald
Enter value for apellido: Vargas
Enter value for email: [email protected]
Enter value for nacimiento: 03-09-1968
Enter value for id_empleado: 10
old 2: values (&empleado_id, '&nombre', '&apellido', '&email', to_date('&nacimiento','dd-mm-yyyy'),
&id_empleado)
new 2: values (1, 'Ronald', 'Vargas', '[email protected]', to_date('03-09-1968','dd-mm-yyyy'),
10)
1 row created.
SQL> commit;
Ronald Vargas, oracledbacr.blogspot.com

141

Columnas Virtuales
SQL> select * from employees;
EMPLOYEE_ID FIRST_NAME
LAST_NAME
----------- -------------------- ------------------------EMAIL
PHONE_NUMBER
HIRE_DATE JOB_ID
------------------------- -------------------- --------- ---------- ---------COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
-------------- ---------- ------------1 Ronald
Vargas
[email protected]
03-SEP-68 10

Ronald Vargas, oracledbacr.blogspot.com

SALARY

142

Columnas Virtuales
SQL> update employees set salary=200000;
1 row updated.
SQL> commit;
Commit complete.
SQL> select * from employees;

EMPLOYEE_ID FIRST_NAME
LAST_NAME
----------- -------------------- ------------------------EMAIL
PHONE_NUMBER
HIRE_DATE JOB_ID
SALARY
------------------------- -------------------- --------- ---------- ---------COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
-------------- ---------- ------------1 Ronald
Vargas
[email protected]
03-SEP-68 10
200000
Ronald Vargas, oracledbacr.blogspot.com

143

Columnas Virtuales
SQL> alter table employees add IMPUESTO_RENTA as (nvl(salary,0)*0.10);
Table altered.
SQL> desc employees
Name
----------------------------------------EMPLOYEE_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID
SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID
IMPUESTO_RENTA

Null?
Type
-------- ---------------------------NUMBER(6)
VARCHAR2(20)
NOT NULL VARCHAR2(25)
NOT NULL VARCHAR2(25)
VARCHAR2(20)
NOT NULL DATE
NOT NULL VARCHAR2(10)
NUMBER(8,2)
NUMBER(2,2)
NUMBER(6)
NUMBER(4)
NUMBER

Ronald Vargas, oracledbacr.blogspot.com

144

Columnas Virtuales
SQL> set linesize 200
SQL> select employee_id, first_name, last_name, salary,
impuesto_renta from employees;
EMPLOYEE_ID FIRST_NAME
LAST_NAME
SALARY IMPUESTO_RENTA
----------- -------------------- ------------------------- ---------- -------------1 Ronald
Vargas
200000
20000

SQL> update employees set salary=400000 where employee_id=1;


1 row updated.
SQL> commit;
Commit complete.

Ronald Vargas, oracledbacr.blogspot.com

145

Columnas Virtuales
SQL> select employee_id, first_name, last_name, salary, impuesto_renta from
employees;
EMPLOYEE_ID FIRST_NAME
LAST_NAME
SALARY IMPUESTO_RENTA
----------- -------------------- ------------------------- ---------- -------------1 Ronald
Vargas
400000
40000
SQL>

Ronald Vargas, oracledbacr.blogspot.com

146

Columnas Virtuales
SQL> alter table employees add email_sugerido as
(substr(first_name,1,1)||'.'||last_name||'@'||'laboratorio.com');
Table altered.
SQL> /
FIRST_NAME
LAST_NAME
SALARY IMPUESTO_RENTA EMAIL_SUGERIDO
-------------------- ------------------------- ---------- -------------- ----------------------------Ronald
Vargas
400000
40000 [email protected]

SQL> update employees set first_name='Manuel' where impuesto_renta=40000;


1 row updated.
SQL> commit;
Commit complete.

Ronald Vargas, oracledbacr.blogspot.com

147

Columnas Virtuales
SQL> select first_name, last_name, salary, impuesto_renta, email_sugerido from
employees;
FIRST_NAME
LAST_NAME
SALARY IMPUESTO_RENTA EMAIL_SUGERIDO
-------------------- ------------------------- ---------- -------------- -------------------------Manuel
Vargas
400000
40000 [email protected]

SQL> desc employees


Name
----------------------------------------EMPLOYEE_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID
SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID
IMPUESTO_RENTA
EMAIL_SUGERIDO

Null?
Type
-------- ---------------------------NUMBER(6)
VARCHAR2(20)
NOT NULL VARCHAR2(25)
NOT NULL VARCHAR2(25)
VARCHAR2(20)
NOT NULL DATE
NOT NULL VARCHAR2(10)
NUMBER(8,2)
NUMBER(2,2)
NUMBER(6)
NUMBER(4)
NUMBER
VARCHAR2(41)

Ronald Vargas, oracledbacr.blogspot.com

148

Oracle Database 11gR2 para Desarrolladores

Nuevas caractersticas de la versin

Oracle 11gR2
( Top 5 )

Ronald Vargas, oracledbacr.blogspot.com

149

Nuevas caractersticas de la versin Oracle 11gR2

Top #5
Nuevo Oracle Enterprise Manager
11g

Ronald Vargas, oracledbacr.blogspot.com

150

Nuevo OEM 11g


Oracle Enterprise Manager (OEM) ha introducido un buen nmero de
caractersticas de administracin con un nuevo interfaz GUI OEM.
Interfaz OEM para aplicaciones de terceros
EN 11g, OEM interfaces para Siebel y PeopleSoft Corp. en una nica
plataforma. "
OEM desinstalar instalaciones exitosas o fallidas de Oracle.
OEM cuenta con una interfaces para conectarse directamente con My Oracle
Support.
Una vez que el diagnstico automtico (ADR) ha detectado y reportado un
problema crtico, el DBA puede interrogar al ADR y generar un informe de la
fuente del problema, y en algunos casos, incluso poner en prctica las
reparaciones.

Ronald Vargas, oracledbacr.blogspot.com

151

Nuevas caractersticas de la versin Oracle 11gR2

Top #4
In-Memory Parallel Execution

Ronald Vargas, oracledbacr.blogspot.com

152

In-Memory Parallel Execution


Como su nombre indica, In-memory parallel execution, se basa en la
ejecucin en paralelo en la base de datos, de un proceso de
exploracin o recuperacin de gran cantidad de datos o pedazos de
piezas de una tabla, dividiendo la tarea de exploracin, en varios
procesos para cada una las piezas de una tabla.

Ronald Vargas, oracledbacr.blogspot.com

153

Nuevas caractersticas de la versin Oracle 11gR2

Top #3
Oracle Result Cache

Ronald Vargas, oracledbacr.blogspot.com

154

Oracle Result Cache


Result Cache permite el almacenamiento en cach de consultas SQL y
cdigo PL/SQL, as como los resultados de funciones, en un rea especfica
de memoria.
Oracle ha mejorado el soporte de almacenamiento en cach para tcnicas de
programacin comunes; por ejemplo, tablas temporales de almacenamiento
en cach, sub-consultas escalares y matrices asociativas. En 11g, Oracle ha
extendido su cach de resultados a la arquitectura del servidor y cliente.
Las tres nuevas reas de retencin son:
1. query result cache;
2. PL/SQL function result cache
3. client OCI result cache.

Ronald Vargas, oracledbacr.blogspot.com

155

Nuevas caractersticas de la versin Oracle 11gR2

Top #2
Flashback Data Archive

Ronald Vargas, oracledbacr.blogspot.com

156

Flashback para una rpida recuperacin de un


Error Humano

Flashback
Query

Flashback
Tables

Flashback
Database

Ronald Vargas, oracledbacr.blogspot.com

Flashback
Data Archive
y
Transaction

157

Flashback Data Archive


Forma prctica y fcil de
agregar dimensin tiempo a
sus datos

Select * from orders


AS OF
Midnight 31-Dec-2010

Para seguimiento cambios,


ILM, auditoria, compliance,

Consulte datos AS OF
cualquier momento del
pasado
Almacenamiento y
Recuperacin eficiente de
datos undo

Archive
Tables

ORDERS

User
Tablespaces

Ronald Vargas, oracledbacr.blogspot.com

Flashback Data
Archive

Total Recall

158

Nuevas caractersticas de la versin Oracle 11gR2

Top #1
Real Application Testing

Ronald Vargas, oracledbacr.blogspot.com

159

Real Application Testing


Cumple con las expectativas de niveles de servicio de usuarios

Reduccin del tiempo, los riesgos, y el costo de


los cambios con Real Application Testing

Replay

Capture

Workload

Ronald Vargas, oracledbacr.blogspot.com

160

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

161

Oracle Database 11gR2 para Desarrolladores


Licenciamiento de Productos Oracle
Productos con la palabra Standard, por procesador
(socket fsico )
Productos con la palabra Enterprise sin la palabra
Standard por core
Productos Standard y Enterprise con NUP - Usuarios
nombrados- con base a los mnimos

Licencias requeridas para Productos Enterprise


( Procesadores * cores ) / Factor Conversin
Ronald Vargas, oracledbacr.blogspot.com

162

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

163

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

164

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

165

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

166

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

167

Ronald Vargas, oracledbacr.blogspot.com

168

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

169

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

170

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

171

Oracle Database 11gR2 para Desarrolladores


Wireless / Mobile
Portal

DCPDS

3rd Party
Oracle_DCPDS.JPG

Batch Processing

Data Aggregation/Synch
BAM

Mainframe

Database

Warehouse

Ambientes Heterogneos

Oracle Database 11gR2 para Desarrolladores


Flexible Architecture

Application Stove Piping

PROCESS
receive
SCOPE

getSSN
getRati
ng

FLOW

<*>/
=+| -

<S>%
=* |/

<*>/
=+| -

<S>%
=+ |-

SOA

invoke

invoke
receive

receive

select

review
end

Dos conceptos bsicos:


Services: Tambin conocidos como componentes, funciones de negocio, o web services
Ejemplos:
Crear un pedido
Borrar una cuenta
Orchestration: Combinacin de los servicios dentro de los procesos de negocio
Ventajas:
Build and integrate quickly Sin desarrollo o creacin de cdigo de
software
Fcil manipulacin de errores y presentacin

IT Solution: Service Oriented Architecture


Construyendo aplicaciones efectivamente

Oracle Database 11gR2 para Desarrolladores


Fusion Effect

Richer Experience

More Adaptable

More Interoperable

ERP/
Legacy Apps

Portal

Web Application
PKI
Dashboards

Process Flow
Logic

Security
Reliability
Logging
Failover
Dynamic Routing

Custom Apps
& Services

WS
API
MONITORING

USER INTERFACE

Web services
PROCESS ORCHESTRATION

SERVICE BUS

BUSINESS SERVICES

BAM

PORTAL JSR-168

BPEL

WS-Security

XML/XML Schema

JMX

Struts/JSF

XSLT/XQuery

WS-Policy, SAML

WSDL/WSIF

Web Services Mgmt

SOAP

JCA

JMS

SOA Today Leverages Open Standards Rooted from XML

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

175

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

176

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

177

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

178

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

179

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

180

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

181

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

182

Quines son: ?
Izquierda a derecha: Ed Oates, Bruce Scott, Bob Miner y Larry Ellison
celebrando el 1er Aniversario de la compaa.

Bruce Scott -el del queque- fu el empleado #4 de


la compaa y fue co-autor y co-arquitecto de las
versiones, Oracle V1, V2 y V3.
El esquema SCOTT (tablas EMP y DEPT), con el
password TIGER, fueron creadas por l.

Ronald Vargas, oracledbacr.blogspot.com

Edward
Oates,
dej
la
compaa en 1996, actualmente
forma parte del cuerpo de
directores del Zoolgico de San
Francisco.
Bob Miner, fue diagnsticado
con cncer en 1992 y muri en
noviembre de 1994.
183

Oracle Database 11gR2 para Desarrolladores

Ronald Vargas, oracledbacr.blogspot.com

184

También podría gustarte