May 29, 2016 | Author: Roberto Martinez | Category: N/A
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 información disponible de manera abierta en la web, se aclara, que no existe autoría que deba ser adjudica de forma directa o indirecta al presentador de esta exposición, la cuál debe ser utilizada, sólo con fines didácticos.
Ronald Vargas, oracledbacr.blogspot.com
1
Ronald Vargas, oracledbacr.blogspot.com
2
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 años Instructor de Oracle University, Top 10 Latinoamérica 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
3
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 programación Ensamblador, corre en un PDP-11 de RSX, con 128K de memoria. Implementación separada en el código para la base de datos y en el código del usuario. Oracle V1 nunca fue oficialmente liberada.
Ronald Vargas, oracledbacr.blogspot.com
4
Oracle Database 11gR2 para Desarrolladores
Ronald Vargas, oracledbacr.blogspot.com
5
Oracle Database 11gR2 para Desarrolladores
Ronald Vargas, oracledbacr.blogspot.com
6
Oracle Database 11gR2 para Desarrolladores
Ronald Vargas, oracledbacr.blogspot.com
7
Oracle Database 11gR2 para Desarrolladores • • • • • • • •
Escalabilidad Alta Disponibilidad Seguridad Contingencia Rendimiento Respaldos y Recuperación Administración Migración
Ronald Vargas, oracledbacr.blogspot.com
8
Oracle Database 11gR2 para Desarrolladores
Ronald Vargas, oracledbacr.blogspot.com
9
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 cibernético Eliminar el riesgo de robo de información Maquillar la data en ambientes de desarrollo – Control de manejo de políticas de acceso a los datos – Implementar manejo seguro de datos históricos
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 relación crítica 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 disminución del 11% en el número de incidentes de soporte. La mayoría dijo que la principal razón, se debió a una infraestructura más 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 análisis costo-beneficio o incluso determinar retorno de inversión, lo que hace difícil 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 aplicación o dato crítico puede implicar un costo significativo para las empresas en términos de: – Pérdida de productividad e ingresos – Clientes insatisfechos – Mala imagen corporativa
99,9% = 43.8 minutos/mes u 8,76 horas/año ("tres nueves") 99,99% = 4.38 minutos/mes o 52.6 minutos/año ("cuatro nueves") 99,999% = 0.44 minutos/mes o 5.26 minutos/año ("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 crítico para las empresas de la economía 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 tecnología Tecnología para: Ahorrar, Confiar y Diferenciar – ACD Las estrategias deben estar basadas en: – Sentido común – Información actual y histórica ( 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 Lógicas y Físicas – RDBMS Oracle
La unidad mínima 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
Cómo 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 cuál, el optimizador de consultas del motor de la base de datos Oracle establece: – – – –
Revisión de la sintaxis de la instrucción SQL Obtención de privilegios para ejecutar la sentencia Modo de recuperación de los datos ( explain plan ) Presentación de la salida de ejecución ( 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 Optimización basada en regla ( RULE ) • Oracle > 7.0 Optimización basada en regla y optimización basada en costo ( RULE / COST ) • Oracle 11g superior Optimización 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 optimización
Ronald Vargas, oracledbacr.blogspot.com
60
Oracle optimización
Ronald Vargas, oracledbacr.blogspot.com
61
Oracle optimización Cualquier consulta en Oracle Database, que devuelva más
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 evolución del reporte STATSPACK a partir de las bases de datos versión 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 línea 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 características 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 características de afinamiento: • • • •
SQL Performance Analyzer 11g Compression SQL optimization improvements Automatic Memory Tuning El afinamiento
del PGA fue introducido en Oracle 9i. El afinamiento automático del SGA por primera vez en Oracle 10g. In 11g, toda la memoria puede ser automáticamente ajustada, al setearse un único parámetro.
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 básica: SELECT * FROM scott.employees;
95% Sentencias son a dos o más tablas Cuando se hace una consulta a más 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 relación 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 cláusula 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 demás tablas lo hacen de izquierda a derecha ( orden dispuesto en la cláusula 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 cláusula 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 intercepción entre las tablas. La tabla que tiene elementos de todas las tablas involucradas para poder hacer la relación.
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 ecuación:
CPU + MEMORIA + I/0 Recuperación 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 través de un conjunto rico de instrucciones, que necesitan menos pasos para completar una tarea. Microprocesadores RISC: requieren más instrucciones para completar una determinada tarea, pero se centran en la reducción del número 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 ) • Multipropósito – transaccional y reportería
Ronald Vargas, oracledbacr.blogspot.com
94
Oracle Database 11gR2 para Desarrolladores
Ronald Vargas, oracledbacr.blogspot.com
95
Oracle Database 11gR2 para Desarrolladores Rendimiento RDBMS Fórmula= 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 física ) 3. Memoria de procesos background ( 90MB a 145MB ) 4. Memoria usuarios conectados a la base de datos ( Cliente/Servidor, Web – 3 capas, múlti-hilo ( JAVA ) 5. Procesos de respaldo y monitoreo 6. Instancia ASM ( 280MB a 350MB ) APLICATIVO
CONSUMO
Java
12-15MB
Página 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
Declaración para Múltiples 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 múltitablas 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 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") 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") 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") 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") 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") 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") 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 características de la versión
Oracle 11gR2 ( Top 5 )
Ronald Vargas, oracledbacr.blogspot.com
149
Nuevas características de la versión 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 número de características de administración 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 diagnóstico automático (ADR) ha detectado y reportado un problema crítico, el DBA puede interrogar al ADR y generar un informe de la fuente del problema, y en algunos casos, incluso poner en práctica las reparaciones.
Ronald Vargas, oracledbacr.blogspot.com
151
Nuevas características de la versión 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 ejecución en paralelo en la base de datos, de un proceso de exploración o recuperación de gran cantidad de datos o pedazos de piezas de una tabla, dividiendo la tarea de exploración, en varios procesos para cada una las piezas de una tabla.
Ronald Vargas, oracledbacr.blogspot.com
153
Nuevas características de la versión 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 código PL/SQL, así como los resultados de funciones, en un área específica de memoria. Oracle ha mejorado el soporte de almacenamiento en caché para técnicas de programación 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 retención son: 1. query result cache; 2. PL/SQL function result cache 3. client OCI result cache.
Ronald Vargas, oracledbacr.blogspot.com
155
Nuevas características de la versión Oracle 11gR2
Top #2 Flashback Data Archive
Ronald Vargas, oracledbacr.blogspot.com
156
Flashback para una rápida recuperación 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 práctica y fácil de agregar “dimensión 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 Recuperación eficiente de datos undo
Archive Tables
ORDERS
User Tablespaces
Ronald Vargas, oracledbacr.blogspot.com
Flashback Data Archive
Total Recall
158
Nuevas características de la versión 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
Reducción 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 físico ) – Productos con la palabra “Enterprise” ó sin la palabra “Standard” por core – Productos Standard y Enterprise con NUP - Usuarios nombrados- con base a los mínimos
Licencias requeridas para Productos Enterprise ( Procesadores * cores ) / Factor Conversión 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 Heterogéneos
Oracle Database 11gR2 para Desarrolladores Flexible Architecture
Application Stove Piping
PROCESS receive SCOPE
getSSN getRati ng
FLOW
/ =+| -
% =* |/
/ =+| -
% =+ |-
SOA
invoke
invoke receive
receive
select
review end
Dos conceptos básicos: Services: También conocidos como componentes, funciones de negocio, o “web services” Ejemplos: Crear un pedido Borrar una cuenta Orchestration: Combinación de los servicios dentro de los procesos de negocio Ventajas: Build and integrate quickly – Sin desarrollo o creación de código de software Fácil manipulación de errores y presentación
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
Quiénes son: ? Izquierda a derecha: Ed Oates, Bruce Scott, Bob Miner y Larry Ellison celebrando el 1er Aniversario de la compañía.
Bruce Scott -el del queque- fué el empleado #4 de la compañía 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 compañía en 1996, actualmente forma parte del cuerpo de directores del Zoológico de San Francisco. Bob Miner, fue diagnósticado con cáncer en 1992 y murió en noviembre de 1994. 183
Oracle Database 11gR2 para Desarrolladores
Ronald Vargas, oracledbacr.blogspot.com
184