0% encontró este documento útil (0 votos)
122 vistas94 páginas

Manual de Oracle

El documento describe los pasos para instalar Oracle XE, incluyendo aceptar los términos de licencia, verificar el espacio en disco y el puerto, e ingresar las contraseñas durante la instalación. Luego explica dos formas de ingresar a Oracle XE después de la instalación y brinda una introducción a los datafiles y su creación y manipulación. Finalmente, presenta los primeros pasos para usar la herramienta gráfica SQL Developer, como conectarse a la base de datos y navegar sus objetos.

Cargado por

Andrés Vega
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 DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
122 vistas94 páginas

Manual de Oracle

El documento describe los pasos para instalar Oracle XE, incluyendo aceptar los términos de licencia, verificar el espacio en disco y el puerto, e ingresar las contraseñas durante la instalación. Luego explica dos formas de ingresar a Oracle XE después de la instalación y brinda una introducción a los datafiles y su creación y manipulación. Finalmente, presenta los primeros pasos para usar la herramienta gráfica SQL Developer, como conectarse a la base de datos y navegar sus objetos.

Cargado por

Andrés Vega
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 DOC, PDF, TXT o lee en línea desde Scribd

Implementacion

TEMA 1
Instalacin de Oracle XE
Para comenzar la instalacin. Debemos contar con el instalador de Oracle XE (que te facilitara
el Instructor de Sistema: JHONNY PANDAL P. ya que eso incluye el material). Que es una
edicin gratuita de ORACLE. La cual usaremos como herramienta de trabajo. Debes bajarlos
de la pgina web de Oracle o pedirle una copia pagada a su instructor de sistemas.

Primer Paso Segundo Paso

Doble clic sobre

Ahora debes pulsar el botn siguiente

Tercer Paso
Acepta los trminos de licencia. Luego pulsar el botn SIGUIENTE >>

Cuarto Paso
Es Importante verificar es espacio
De tu disco. Para no tener
problemas
En la instalacin.
Presionar botn SIGUIENTE >>

Quinto Paso
Verificar que el puerto de comunicacin
no est siendo utilizado por
servicio
Si fuese as podras optar por
otro nmero de puerto el 8085
Clic en SIGUIENTE >>

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 1 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Sexto Paso

Debes ingresar las contraseas para poder


acceder a nuestro servidor como
administradores de la base de datos.

Para nuestro servidor actual su contrasea


ser.

MEGADETH

Reptalo dos veces

Clic en SIGUIENTE >> Ultimo Paso

ES IMPORTANTE ANOTAR ESTOS DATOS YA QUE CUANDO


VOLVAMOS A LEVANTAR EL SERVIDOR PODRIA SER QUE NOS
PIDA ALGUNO DE ESTOS DATOS

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 2 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 2
Ingresando a Oracle Express Edition

Primera forma:
1.- INICIO + Todos los Programas + Base de datos Oracle 10g Express Edition
+ Ir a Pgina inicial de Base de datos
2.- Ingresa las credenciales de seguridad

La contrasea la cual ingresaste


al momento de instalar la cual es
MEGADETH y presionar
CONECTAR

Datafiles Introduccin

Los datafiles son los ficheros fsicos en los que se almacenan los objetos que forman parte de
un tablespace. Un datafile pertenece solamente a un tablespace y a una instancia de base de
datos. Un tablespace puede estar formado por uno o varios datafiles.

Cuando se crea un datafile, se debe indicar su nombre, su ubicacin o directorio, el tamao


que va a tener y el tablespace al que va a pertenecer. Adems, al crearlos, ocupan ya ese
espacio aunque se encuentran totalmente vacos, es decir, Oracle reserva el espacio para poder
ir llenndolo poco a poco con posterioridad. Por supuesto, si no hay sitio suficiente para crear
un fichero fsico del tamao indicado, se producir un error y no se crear dicho fichero.

Cuando se van creando objetos en un tablespace, stos fsicamente se van almacenando en los
datafiles asignados a dicho tablespace, es decir, cuando creamos una tabla y vamos insertando
datos en ella, estos datos realmente se reparten por los ficheros fsicos o datafiles que forman
parte del tablespace.

No se puede controlar en qu fichero fsico se almacenan los datos de un tablespace. Si un


tablespace est formado por 2 datafiles y tenemos una tabla en ese tablespace, a medida que
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 3 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

vamos insertando filas stas se almacenarn en cualquiera de los dos datafiles indistintamente,
es decir, unas pueden estar en un datafile y otras en otro.

El espacio total disponible en un tablespace es lgicamente la suma de los tamaos que ocupan
los ficheros fsicos o datafiles que lo forman. Como hemos indicado estos datafiles, al crearlos,
estn totalmente vacos, simplemente es un espacio reservado y formateado por Oracle para su
uso. A medida que se van creando objetos en ellos como tablas, ndices, etc y se van
insertando registros en estas tablas, los datafiles se van llenando o, lo que es lo mismo, el
tablespace se va llenando.

Creacin y Manipulacin
La creacin de datafiles est estrechamente relacionada con el tablespace al que va a
pertenecer. Tenemos varias formas de crear datafiles. Cada vez que se crea un tablespace
nuevo, hay que indicar obligatoriamente cual es el datafile que va a pertenecer a dicho
tablespace y, en ese momento, se crea tanto el tablespace como su datafile. Tambin se
pueden aadir datafiles nuevos a un tablespace que ya existe.

Creacin de un nuevo datafile de 50 megabytes junto con un nuevo tablespace:

Create tablespace nombre_tablespace


datafile '/users/oracle/orcl/nombre_datafile.dbf' size 50M;

Una vez creado este tablespace, si con el tiempo queremos aadirle espacio, lo podemos hacer
creando un nuevo datafile y asignndoselo al tablespace:

Alter tablespace nombre_tablespace


add datafile '/users/oracle/orcl/nombre_datafile2.dbf'
size 100M;

Con estas dos instrucciones hemos creado un tablespace nuevo en nuestra base de datos en el
que caben 150 megabytes de informacin. Este espacio est formado fsicamente por dos
ficheros llamados nombre_datafile.dbf y nombre_datafile2.dbf que se encuentran en el
directorio /users/oracle/orcl de nuestra mquina y que ocupan 50 y 100 Mbytes
respectivamente.
Para conocer los datafiles que forman parte de nuestra base de datos, podemos consultar la
vista dba_data_files en la que se nos indica por cada datafile o fichero de datos, a qu
tablespace pertenece y cuanto espacio total tiene reservado.

select * from dba_data_files;

Es importante recalcar que el espacio que aparece en esta vista es el espacio total que ocupa el
fichero fsico y no el espacio utilizado de ese fichero, es decir, que si creamos un datafile de
50Mbytes y acto seguido consultamos esta vista, veremos que ocupa 50Mbytes a pesar de estar
totalmente vaco. Este dato indica la cantidad de espacio que ocupa el fichero fsico, la cantidad
de informacin que podremos introducir en l.

select tablespace_name, file_name, bytes /1024/1024


from dba_data_files;

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 4 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 3
Herramienta Grafica SQLDeveloper

SQL Developer es una muy buena herramienta para trabajar con bases de datos Oracle, pero
careca de una funcin muy importante: la de disear o modelar diagramas Entidad/Relacin de
nuestras bases de datos. Esto ahora se ha solucionado con una nueva tool llamada SQL
Developer Data Modeling que se encuentra actualmente en fase de testeo y que podemos
descargarnos desde el sitio de Oracle.

Primero Pasos

Primer debemos buscar al instructor de sistemas del curso que llevamos y exigirle que nos
proporcione dicha herramienta (solo si pagaste por la autora de este material). Caso contrario
ya debers buscarlos en internet y descargarlo. Pero bueno comenzamos.

1.- Abrimos la carpeta SqlDeveloper y hacemos clic sobre el archivo

2.- presionamos el botn Nueva Conexion

Desde esta ventana. Debers a acceder al servidor de base de datos xe


de oracle. En nombre de Conexion: LOCALHOST, en nombre del
Usuario: SYSTEM y la contrasea que usaremos ser la que usamos
en la instalacin. Presionamos el botn PROBAR + CONECTAR

Elementos de SQLDeveloper

Aqu podemos encontrar todos los objetos de


un esquema como: tablas, ndices, funciones,
etc. Como puede apreciar cada objeto tiene su
lugar de reposo. Donde se encontraran para
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 5 de 94
cuando necesitemos usarlos. SOLO UN
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
USUARIO CON PERMISOS DE SYSTEM
puede gestionar todos los objetos mostrados
Implementacion

Acceso al sistema informtico


En informtica un acceso es el resultado positivo de una autentificacin, para que el acceso
dure un tiempo predeterminado, el servidor guarda en el cliente una cookie, esta permitir que
el usuario pueda entrar a su cuenta en el servidor hasta que esta caduque.
Acceso autorizado
Un acceso autorizado es el resultado de una
autentificacin correcta, un ejemplo es el ingreso de
usuario y contrasea:
El servidor comparara los datos ingresados con los de
la base de datos generalmente con el lenguaje SQL, si los
datos coinciden, el servidor guardara una cookie
de sesin en el cliente y permitir que este pueda ver y
editar informacin dependiendo de los privilegios que este usuario tenga.
Primero chequea si existe o no el usuario, si existe el usuario compara la contrasea, si la
contrasea coincide con la de la base de datos, el usuario logra acceder, si la contrasea no
coincide con la de la base de datos, se le informa al usuario que la contrasea es incorrecta, si
el usuario directamente no se encuentra en la base de datos, se informa que el usuario es
incorrecto.
Acceso no autorizado
Un acceso no autorizado es producto de la explotacin de una vulnerabilidad en el sistema del
servidor o en alguna de sus aplicaciones o la utilizacin de algn otro mtodo para subir
privilegios como fuerza bruta, malware, sniffers o ingeniera social, entre otros.
En este caso el atacante exploto una vulnerabilidad para lograr obtener un acceso no
autorizado y poder subir su archivo.
Permisos
Los permisos o privilegios determinan los lmites del usuario sobre un servidor o red, si este
usuario posee permisos bajos solo podr ver y editar una pequea parte de informacin, en
cambio si el usuario tiene permisos altos, podr ver y editar toda la informacin sin ningn tipo
de restricciones, a este usuario con permisos altos se lo denomina administrador.

Firewall
Un firewall es una herramienta til para impedir acceso a usuarios no autorizados, este bloquea
los puertos TCP y UDP para que una autentificacin no pueda lograrse aunque el usuario
tenga los datos necesarios para autentificarse.
Monitoreo
Un administrador las 24 horas en un servidor o red puede controlar todos los accesos en todas
las zonas y tiene los permisos suficientes para desconectar y banear a cualquier intruso.
Ban
Un ban es una poltica muy til para impedir accesos no autorizados, este bloquea el acceso de
un usuario parcialmente o totalmente por un periodo de tiempo definido o indefinido este puede
aplicarse manualmente (por un administrador) o automticamente (por un bot o el
mismo sistema operativo).
Bans manuales
Son aquellos dados por administrador cundo este ve un comportamiento extrao en
el usuario autentificado.
Bans automticos
Son aquellos dados por un bot o el sistema operativo cundo detectan (basndose en
inteligencia artificial) un comportamiento extrao en el usuario autentificado o hay una cantidad
determinada de intentos fallidos en una autentificacin.

Herramienta de Oracle LINEA DE COMANDO

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 6 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
Otra forma de acceder al sistema Oracle es haciendo uso de una herramienta de consola
(pantalla negra)la cual nos permitir realizar todas las tareas que se realizan con cualquiera
herramienta visual de Oracle.

1.- Inicio + Todos los Programas + Base de datos Oracle 10g Express Edition
+ Ejecutar lneas de comando SQL (CLIC AQUI)

2.- en comando Conn nos pide que ingresemos el nombre del usuario actual. Para el ejemplo
Diseo
SYSTEM. Luego te pide introducir la de Tablas del(laesquema
contrasea Cyberplaza
cual no se mostrara cuando lo digites)
presionar ENTER

Por medio de lenguaje PS/SQL ahora podras crear todos los objetos de un esquema. Todo a
full cdigo. Vamos no te duermas !!! y a crear los objetos =)

TEMA 3 Desarrollo de esquema Cyberplaza

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 7 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 8 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Actividad N1

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 9 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Tablas de Auditoria del esquema Cyberplaza

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 10 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 3 Creando TABLESPACE

Una de las tareas habituales en la administracin de una base de datos Oracle es la


de crear un nuevo tablespace para contener nuevos objetos como tablas, ndices, etc.
Un tablespace en Oracle es una unidad de almacenamiento lgica y utiliza datafiles para la
parte fsica donde se guardarn las tablas, ndices, etc.

1.- Creando un tablespace


En este tema vamos a crear un nuevo tablespace para ubicar, por ejemplo, los objetos de una
nueva aplicacin llamada PANDAL, antes de crearlo tenemos que realizar un anlisis de los
requerimientos de espacio y ubicacin, por ejemplo, el tablespace se debe llamar PANDAL_01,
vamos a necesitar 300MB para nuestro nuevo tablespace y el datafile lo vamos a ubicar en
/APP_PANDAL/DAT/, tenemos que verificar que tenemos ese espacio libre.

TABLESPACE - A LA PRCTICA
En esta demostracin le enseamos como crear una particin lgica dentro de nuestra base de
datos actual. Donde creamos los objetos fsicos que almacenan los tablespace y
respectivamente los objetos creados dentro de este espacio de 300mb.

CREACION DE TABLESPACE
Aqu estamos creando una particin
CREATE TABLESPACE Pandal lgica de 128mb. Este ts de nombre
LOGGING Pandal. Previamente debes contar con
DATAFILE ' D:\PANDAL\DAT\[Link] ' las carpetas de destino
SIZE 300M;

CREACION DE USUARIOS
Aqu estamos creando un usuario de
CREATE USER Jhonny
nombre: Jhonny donde la
PROFILE DEFAULT Contrasea es: TuPirata Es
IDENTIFIED BY TuPirata importante tener estos datos de
DEFAULT TABLESPACE Pandal acceso
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;

ASIGNANDO PERMISOS DE ACCESO A LA DATA Y CREACION DE OBJETOS

GRANT CONNECT TO Jhonny;


GRANT RESOURCE TO Jhonny;
Despus de haber asignado estos
dos permisos. Debemos acceder al
sistema con el usuario Jhonny y
crear los sgtes. objetos

Qu funcin cumple esta consulta?

select * from dba_data_files;

select tablespace_name, file_name, bytes /1024/1024


from dba_data_files;

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 11 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Entendiendo un TABLESPACE

La creacin de tablespace es muy importante antes de crear un Nuevo esquema. Adems que
nos permite agrupar los objetos en un repositorio lgico. La creacin de usuario, as como la
creacin del tablespace SOLO SE REALIZAN COMO USUARIO SYSTEM. Este usuario tiene
todos los privilegios de un dba y puede gestionar el servidor segn sus necesidades.

2.- Ampliando la capacidad de almacenamiento de un tablespace

Qu sucede si el rea de sistema requiere ms espacio para el


almacenamiento de datos?. Para resolver este problema debemos
ampliar el tamao del tablespace creado anteriormente Despus de
haber creado el tablespace. Ahora debemos desconectarnos e
ingresar con los datos de autenticacin de del nuevo usuario creado

Aqu estamos creando 3 archivos dbf


que nos permiten ampliar el tamao de
un tablespace. Es importante recordar
que debemos ser SYSTEM

Los Archivos Fsicos


Al culminar esta tarea de ampliacin. Puedes apreciar los archivos generados despus de
haber ejecutado los scripts de ampliacin. Debes saber que estos son los archivos DATAFILE.
Los cuales representan fsicamente lo que es un tablespace. El tablespace Pandal. Ahora tiene
cuenta con 500mb de capacidad.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 12 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
En ciertas ocasiones vas a necesitar modificar el tamao de un datafile. Cuando los creastes
demasiado grande o alguna otra razn. Aqu te dejo un ejemplo

3.- modificando el tamao de un Datafile

Cmo modificar un datafile para que crezca automticamente sin la intervencin del dba?

Probar tus scripst y luego completar

Cmo detener el crecimiento automtico de un datafile?

4.- Mantenimiento de un Tablespace

Para el mantenimiento de los componentes de la base de datos es recomendable realizar un


estudio previo de la empresa, para as verificar el funcionamiento de estos componentes y para
determinar si existe sobresaturacin de la informacin, esto con el fin de tener una idea ms
clara de lo que puede hacerse sobre la base de datos para que esta este optimizada.
Es muy importante que antes de realizar cualquier cambio en la base de datos
esta se debe respaldar, para as evitar cualquier inconveniente.

Dentro de los procesos de mantenimiento de una base de datos se encuentran:

Mantenimiento de Tablespace
Modo Seguro de Transacciones

4.1.- Eliminado un Tablespace FACIL Y RAPIDO

Antes de eliminar un tablespace debes


asegurarte que no est en actividad. O que
alguien est usando la base de datos.
Deshabilitar el Tablespace
Eliminar el Tablespace

ES IMPORTANTE SABER QUE DESPUES DE ELIMINAR UN TABLESPACE DEBES CREAR TU INFORME DE


ELIMINACION. DESCRIBIENDO EL NOMBRE, TAMAO, UBICACIN, USUARIO Y FECHA. ESTOS DETALLES DEL
TABLESPACE YA ELIMINADO. ES IMPORTANTE RECORDAR QUE LOS ARCHIVOS FISICOS DEBEN SER
BORRADOS Y EL USUARIO.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 13 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 4 Importando y exportando un ESQUEMA

En este captulo veremos una alternativa de transferir nuestros objetos de un esquema hacia
otro servidor de base de datos. para este captulo necesitamos conocer sobre tablespace y
creacin de usuarios. Bueno empecemos

1.- creamos los objetos

2.- Desconctate de SYSTEM y conctate como HUBER

3.- Vamos a poblar de 3 tablas y registros para el ejemplo. Pide todo es script a tu
instructor de sistemas. SOLO si tienes la licencia de usar este material ORIGINAL no
copias.

Tenemos la tabla
cargo y distrito la cual se encuentra en el tablespace Manchester_United. Que a su vez en
su Datafile [Link]. Por ultimo gestionado por el usuario Huber que tiene la contrasea
Campeon

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 14 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

EXPORTANDO ESQUEMA

4.- Clic en Inicio + Todos los programas + Accesorios + Smbolo del sistema

Aqu te aparece la unidad y el usuario del computador.

5.- ingresa el comando EXP y presiona la tecla ENTER

6.-aqu te pedir el usuario. Asgnale el usuario Huber y presiona la tecla ENTER

7.- Ingresa la contrasea Campeon

8.- Introduce el tamao del buffer 1024 y presiona la tecla ENTER

9.- ingresa Exportar archivo: D:\JHONNY\RESPALDO\RspEmpresa.h y presiona


la tecla ENTER

NOTA: LAS CARPETAS DE DESTINO YA DEBEN DE EXISTIR

10.- seguidamente debemos completar los siguientes pasos

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 15 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
A. Usuario o Tabla: 2
B. Exportar Permisos: s
C. Exportar Datos de la tabla: s
D. Comprimir extensiones: n

11.- al finalizar empieza a exportarse todos los objetos del usuario Huber y se a creado
un archivo de exportacin en la siguiente ruta:

IMPORTANDO ESQUEMA

Importar un archivo de datos Oracle nos indica que este archivo con tiene todos los objetos de
un esquema. Incluyendo tablas, registros, etc. Para poder montar estos objetos en un nuevo
servidor Oracle (Otra computadora) previamente debemos crear el Tablespace
Manchester_United y el usuario Huber. Como lo aprendisteis en captulos anteriores..

Adems debemos contar con el archivo de exportacin que fue creado en los
pasos anteriores. Para este ejemplo mi archivo RspEmpresa se encuentra en el disco D: sea
su ruta de acceso es D:\RspEmpresa.h ahora si a montar nuestros datos.

1.- Clic en Inicio + Todos los programas + Accesorios + Smbolo del sistema.

2.- ingresa el comando IMP y presiona la tecla ENTER

3.- Ingresar Usuario Huber Contrasea Campeon

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 16 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

4.- Importar archivo (apuntar la ruta) D:\RspEmpresa.h

5.- Introduzca el buffer de 10000

6.- Mostrar solo el solo el contenido de archivo de importacin n

7.- seguir las siguientes indicaciones:

Ignorar erro de creacion .. s


a las preguntas del importador responde
Importar permisos s
con la letra s en las ultimas 4 preguntas
Importar datos de la tabla s
importar todo el archivo . s

RESULTADO:

Ahora ingresamos a Oracle como el usuario Huber y podremos verificar que contamos con las
tablas y registros creados anteriormente

Actividad 2

Disear un esquema que tengas las siguientes tablas. No requiere relaciones pero
Si registros y los tipos de datos adecuados

TEMA 5 Tipos de Datos - Tablas

1.- CHAR(n)
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 17 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
Cadena de caracteres de longitud fija, tiene un tamao n bytes.
Si no se especifica n la ORACLE le da un tamao de 255 bytes.
El tamao mximo en BD es 2000 bytes y el mnimo 1 byte.
El tamao mximo en PL/SQL es 32767 bytes y el minimo 1 byte.
CHARACTER es sinonimo de CHAR. Ver NCHAR.
2.- VARCHAR2(n)
Cadena de caracteres de longitud variable, tiene un tamao mximo de n bytes.
Es obligatorio especificar el tamao.
El tamao mximo en BD es 4000 bytes y el mnimo 1 byte.
El tamao mximo en PL/SQL es 32767 bytes y el minimo 1 byte.
STRING y VARCHAR son sinonimos de VARCHAR2. Ver NVARCHAR2.
Usando VARCHAR2 en lugar de CHAR ahorramos espacio de almamcenamiento.
En contra tiene que si se escriben muchas veces hay que hacer un mayor esfuerzo de
Mantenimiento del sistema para mantener la eficiencia (compactar).
3.- NUMBER(p,s)
Nmero de p digitos de los cuales s son [Link] es obligatorio especificar el tamao.
El tamao de p va de 1 a 38 y el s desde -84 a 127.
El tamao en PL/SQL 1E-130 .. 10E125.
Sinonimos:
numeros de coma fija: DEC,DECIMAL,NUMERIC
enteros:INTEGER (sinonimo de NUMBER(38)),INT,SMALLINT
coma flotante:DOUBLE PRECISION FLOAT REAL.
Ver tambien: PLS_INTEGER, BINARY_INTEGER
El valor 7,456,123.89 se almacenar como:
NUMBER(9) 7456124
NUMBER(9,1) 7456123.9
NUMBER(*,1) 7456123.9
NUMBER(9,2) 7456123.89
NUMBER(6) [error]
NUMBER(7,-2) 7456100
NUMBER 7456123.89
FLOAT 7456123.89
FLOAT(12) 7456000.0
4.- DATE
Fecha [Link] el 1 de enero del 4712 AC hasta el 31 de diciembre del 9999 DC. (en
Oracle10 = 4712 DC)
5.- LONG
Cadena de caracteres de longitud variable. Es una versin ms grande de VARCHAR2.
El tamao mximo en BD es 2 Gigabytes.
6.- CLOB
Cadena de caracteres de longitud variable. Es una versin ms grande de VARCHAR2.
El tamao mximo en BD es 4 Gigabytes. Ver NCLOB.
Es recomendable usar CLOB o BLOB en lugar de LONG.
7.- BLOB
Objeto binario de longitud variable. Es una versin ms grande de RAW.
El tamao mximo en BD es 4 Gigabytes.
8.- BFILE
Puntero a un fichero en disco.
El tamao mximo en BD es 4 Gigabytes.
9.- TIMESTAMP (f)
El timestamp es un fecha que contiene un granularidad superior al tipo DATE, eso significa que
contiene fracciones de segundo.
Con f definimos el nmero de dgitos que queremos en la fraccin de segundo. As, f puedes
valer desde 0 hasta 9, el valor por defecto es 6.

TEMA 6 Uso y manejo de Restricciones

1.- Restriccin UNIQUE

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 18 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
La sentencia unique nos permite obligar el valor de unicidad dentro de una o mas columnas de
una tabla. Con el objetivo de evitar datos redundantes. Las restricciones tiene su nombre y
adems pueden ser desactivados

CREAR TABLE nombre_tabla


(column1 tipo de datos not / null,
columna2 tipo de datos null / not null,
...
constraint_name Restriccin UNIQUE (columna1, column2, column_n).
)

Por ejemplo:

En este ejemplo,
hemos creado una
restriccin nica en
la tabla de
proveedores llamado
[Link] compone de un solo campo - el campo NombreProveedor.
Si intentamos agregar 2 proveedores con el mismo nombre Oracle nos enviara un error de
violacin de [Link] puede crear una restriccin nica con ms de un campo como en el
ejemplo siguiente:

Ahora si la tabla ya est creada podemos asignar esta restriccin Mediante una instruccin
ALTER TABLE La sintaxis para crear una restriccin de unicidad en una sentencia ALTER
TABLE es la siguiente:

Por ejemplo:

Tambin puede crear una restriccin nica con ms de un campo como en el ejemplo siguiente:
1.2.- Drop de una restriccin de unicidad

Por ejemplo:

1.3.- Desactivar una restriccin de unicidad


La sintaxis para deshabilitar una restriccin nica es la siguiente:

1.4.- Permitir una restriccin de unicidad

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 19 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
La sintaxis para permitir una nica restriccin es la siguiente:

2.-Restriccin Check.- es una restriccin que nos permite validar los datos de entrada de un
campo. Por ejemplos un campo Sueldo podramos obligar a que no admita sueldos se
encuentren entre 100 y 500 soles, en otro caso que los nombre y apellidos sean ingresados en
maysculas, tambin podramos nombrar el campo sexo. Vemos los ejemplos

2.1 Verificando Restricciones

Obligar el Sexo de diferente manera en otra tabla clientes

2.2 Eliminar una restriccin

3.- Restriccin Foreign Key

Una clave externa (FK) es una columna o combinacin de columnas que se utiliza para
establecer y exigir un vnculo entre los datos de dos tablas. Puede crear una clave externa
mediante la definicin de una restriccin FOREIGN KEY cuando cree o modifique una tabla.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 20 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
En una referencia de clave externa, se crea un vnculo entre dos tablas cuando las columnas
de una de ellas hacen referencia a las columnas de la otra que contienen el valor de clave
principal. Esta columna se convierte en una clave externa para la segunda tabla.

Por ejemplo, la tabla Docente del esquema Instituto tiene un vnculo a la tabla Curso porque
existe una relacin lgica entre Cursos del instituto y Docente que dictan dicho curso. La
columna idCurso de la tabla Docente coincide con la columna de clave principal de la
tabla Curso. La columna idCurso de la tabla Docente es la clave externa para la tabla Curso.

Tabla Curso

Tabla Docente

Relacin de Datos entre


ambas tablas

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 21 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Trabajo de Restricciones
Determinar un tipo de datos adecuado para cada
tabla. Adems de las restricciones aprendidas en
clases. Mnimo 10 restricciones en todo el esquema.
Agregarle registros de prueba. Recordar que si quieres ver las restricciones de una tabla puede
usar las instrucciones:

TEMA 7 El Lenguaje SQL

1.- EL LENGUAJE S.Q.L.


Qu es S.Q.L.
Structured Query Language
Establecido como el lenguaje de base de datos relacional estndar.
Existen numerosos productos que soportan SQL, cada uno de ellos con pequeas
diferencias sin apenas importancia ([Link]. Oracle).

El SQL estndar es el publicado por ANSI e ISO.


Caractersticas de S.Q.L.
Lenguaje de definicin de datos (DDL)
Create, Alter, Drop.
Lenguaje de manipulacin de datos (DML)
Insert, Update, Delete.
Lenguaje de control de datos (DCL)
Grant, Revoke.
Control de transacciones
Commit, Rollback, Savepoint
Restricciones de integridad
Referencial, datos.
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 22 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

S.Q.L. La sentencia SELECT

S.Q.L. Sentencia Bsica

Ejemplos:

[Link] de Columnas por defecto


Justificacin de etiquetas y datos por defecto:
Izquierda fechas y caracteres
Derecha datos numricos
Etiquetas y datos, por defecto, se muestran en maysculas.
Posibilidad del uso de alias de columnas.

[Link] de columna
Un alias de columna renombra un encabezamiento de columna. til, especialmente, en
clculos. Sigue inmediatamente al nombre de la columna mediante la palabra clave AS entre
ellos. Se requiere encerrar un alias entre comillas dobles si contiene espacios en blanco,
caracteres especiales o es case sensitive.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 23 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

S.Q.L.

Demostracin:

Expresiones aritmticas - Operadores:


Suma (+)
Resta (-)
Multiplicacin (*)
Divisin (/)

Cualquier sentencia SQL


Precedencia de operadores: * / + -
Operadores misma prioridad se evalan de izq. a derecha.
Parntesis sobre escriben reglas de precedencia.

S.Q.L. Valor NULL


NULL es un valor inaccesible, sin valor desconocido o inaplicable.
NULL no representa ni un cero ni un blanco.
Las expresiones aritmticas que contengan NULL se evalan a NULL (<> cero).

[Link] de concatenacin
Representado por dos barras verticales: ||
Vincula columnas o cadenas de caracteres.
Crea una columna resultado que es una expresin de tipo carcter.

Ejemplo:

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 24 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

S.Q.L. Filas duplicadas


Las consultas, por defecto, muestran todas las filas, incluyendo las duplicadas.
Las duplicadas se eliminan usando DISTINCT en la clusula SELECT:

S.Q.L. Uso de la clusula WHERE


Establece un criterio de seleccin aplicable a la tabla de la que se quiere recuperar datos.
Se especifica a continuacin de FROM. La condicin de WHERE permite comparar columnas
con otras columnas, valores, literales, expresiones aritmticas o funciones.
S.Q.L. Sintaxis de WHERE

Ejemplo:

S.Q.L. Operadores de comparacin


Aplicables en las condiciones de la clusula WHERE:
= Igual que
>Mayor que
>= Mayor que o igual a
< Menor que
<= Menor que o igual a
Distinto
BETWEEN m AND n Entre m y n (inclusive)
IN(lista) Se encuentra en la lista
LIKE Se ajusta a un patrn
IS NULL Es valor nulo

S.Q.L. Ejemplos de comparacin

SELECT ename, saL FROM emp


WHERE sal BETWEEN 1000 AND 1500;

SELECT empno, ename, sal, mgr FROM EMP


WHERE mgr IN (7902, 7566, 7788);

SELECT ename FROM emp


WHERE ename LIKE _A%;

Sintaxis de LIKE:
% representa cero o varios caracteres
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 25 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
_ representa un solo carcter

SELECT ename, mgr FROM emp


WHERE mgr IS NULL;

S.Q.L. Operadores lgicos


AND devuelve TRUE si ambas condiciones son TRUE.
OR devuelve TRUE si alguna de las condiciones es TRUE.
NOT devuelve TRUE si la siguiente condicin es FALSE.

S.Q.L. Ejemplos con operadores lgicos

SELECT empno, ename, job, sal FROM emp


WHERE sal >= 1100
AND job = CLERK;

SELECT empno, ename, job, sal FROM emp


WHERE sal >= 2000
OR job = MANAGER;

SELECT ename, job FROM emp


WHERE job NOT IN (CLERK, MANAGER, ANALYST);

S.Q.L. Reglas de precedencia


Siempre es aconsejable, para facilitar la lectura de la sentencia SQL, utilizar parntesis que
fuercen la prioridad de los operadores lgicos.
Sin parntesis, el orden de evaluacin es:
Todos los operadores de comparacin
NOT
AND
OR

[Link] ordenadas
Las filas recuperadas en la sentencia SELECT, si no se especifica nada, no tienen ningn
orden determinado. Se pueden ordenar con la clusula ORDER BY siempre al final de una
sentencia SELECT.
ASC Orden ascendente. Por defecto.
DESC Orden descendente.

TEMA 8 Consultas SQL

Para desarrollar esta clase necesitas habilitar el esquema HR que es una base de datos de
ejemplo que viene el Oracle XE. Pero ahora te presentamos su diagrama y explicaremos su
composicin:

1.- Esquema HR

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 26 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

2.- Consultas: Estas consultan merecen un total anlisis para las futuras consultas que
debers de asumir en otras herramientas de informacin. Las consultas SQL son el 80% de
todo lo que es manejo de informacin. As que tmale una importancia real. Bueno mucho bla
bla bla a comenzar.

Consultas HR
2.1: seleccionar los nombres, fecha de nacimiento, salario, nmero telefnico y email de los
empleados con salario mayor o igual a 17000.

Select first_name, last_name, hire_date,phone_number

Resultado

2.2: mostrar el cdigo del empleado, nombre del empleado y el nombre del departamento al
q corresponde

select employees.employee_id, employees.first_name, department_name


from employees, departments
where employees.department_id = departments.department_id;

Resultado

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 27 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

2.3: Muestra el nombre, apellido de los empleados con respecto al salario mayor al de
Jennifer

select first_name , last_name


from employees
where salary >
(select salary
from employees
where employee_id = 200 );
Resultado

4: Muestra los empleados que cobran menos de cada departamento. incluso menos que los
del departamento 20?

select department_id, min(salary)


from employees
group by department_id
having min(salary) >
(select min(salary)
from employees
Resultado

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 28 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

5: Muestra el nombre apellido y puesto de trabajo del empleado con mayor sueldo

select first_name , last_name, job_title


from employees, jobs
where employees.job_id = jobs.job_id
and salary > all
(select avg(salary)
from employees
group by department_id );
Resultado

6: consultar los pases por region

select regions.region_id,region_name,country_name from


regions,countries where regions.region_id=countries.region_id;

Resultado

7: consultar los departamentos que se encuentran fuera de eeuu, Y SU respectiva ciudad

select locations.location_id, city, department_name from locations,


departments where (locations.location_id=departments.location_id) and
(country_id='us');

select r.region_id, r.region_name,c.country_name from regions r,


countries c where (r.region_id=c.region_id) and (r.region_name='asia');
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 29 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

8: muestra los paises de Asia

select r.region_id, r.region_name,c.country_name from regions r,


countries c where (r.region_id=c.region_id) and (r.region_name='asia');
Resultado

9: Mostrar los pases de la tabla countries que empiezan con a

select c.country_name,[Link] from countries c, locations l where


(c.country_id=l.country_id(+))and(c.country_name like 'a%');

Resultado

10: muestra los paises de America

select r.region_id, r.region_name,c.country_name from regions r,


countries c where (r.region_id=c.region_id) and
(r.region_name='americas');

Resultado

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 30 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

11: muestra la lista de los empleados y sus respectivos jefes

select e.last_name employee,m.last_name manager from employees e


inner join employees m on m.employee_id=e.manager_id;

Resultado

12: mostrar el cdigo, nombres, apellidos y sueldo de la tabla empleado

Select employee_id as codigo, first_name as nombre, last_name as


apellidos, salary as sueldo from employees

Resultado

13: mostrar la el campo nombre, apellido, sueldo y cargo del empleado

Select first_name as nombre,last_name as apellidos,salary as


sueldo,job_title as cargo from employees inner join jobs on
employees.job_id=jobs.job_id

Resultado

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 31 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

14: Cantidad de empleados por departamentos con alias

select department_id as departamento,count(*)as empleados


from employees group by department_id
Resultado

15: mostrar los campos cdigo, nombre, apellidos, sueldo, rea sueldo menor a 5000 y que el
nombre empiece con l

Select employee_id as codigo,first_name as nombre,last_name as


apellidos,salary as sueldo,department_name as area from employees
inner join departments on
employees.department_id=departments.department_id where last_name
like 'l%' and salary<5000
Resultado

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 32 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

16: cantidad de empleados que han ingresado por ao con alias

select extract(year from hire_date) as ao,count(*)as empleados from


employees
group by extract(year from hire_date)

Resultado

17: Muestra los salarios que cobran ms de cada departamento. Incluso ms que los del
departamento 100

select department_id,max(salary)
from employees
group by department_id
having max(salary)<
(select max(salary)
from employees
where department_id=100);

Resultado

18: mostrar la cantidad de los president y de los administration vice president

Select first_name as nombre,last_name as apellidos,salary as sueldo,job_title


as cargo from employees inner join jobs on employees.job_id=jobs.job_id
where job_title='president' or job_title='administration vice president'

Resultado

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 33 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

19: mostrar la cantidad de stock manager

Select first_name as nombre,last_name as apellidos,salary as sueldo,job_title


as cargo from employees inner join jobs on employees.job_id=jobs.job_id
where job_title='stock manager'

Resultado

20: Mostrar la cantidad de empleados que su nombre comience con p

Resultado

Select employee_id as codigo, first_name as nombre, last_name as


apellidos,salary as sueldo from employees where last_name like 'p%'

TEMA 9 Funciones SQL

1.- S.Q.L. Funciones SQL

Existen dos tipos de funciones:


o Funciones a nivel de fila

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 34 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
o Funciones a nivel de mltiples filas

Funciones a nivel de fila. Tipos:

o Carcter

o Nmero

o Fecha

o Conversin

Funciones a nivel de grupo. Tipos:

o Manipulan grupos de filas y devuelven un resultado por cada uno de ellos.

2.- S.Q.L. Funciones de Caracteres


Pueden ser de dos tipos:
o Funciones de conversin

o Funciones de manipulacin de caracteres

De manipulacin de caracteres:

o CONCAT

o SUBSTR

o LENGTH

o INSTR

o LPAD Y RPAD

De conversin:

o LOWER , UPPER e INITCAP

3.- S.Q.L. Funciones de conversin caracteres


LOWER: Convierte a minsculas.
UPPER: Convierte a maysculas.

INITCAP: Convierte la primera letra de cada palabra en maysculas, y el resto en


minscula.

Atencin: Usar una funcin de conversin dentro de la clusula WHERE puede ser
altamente ineficiente porque si la columna afectada forma parte de un ndice ste lo
desactiva, provocando un bajo rendimiento.

4.- S.Q.L. Funciones manipulacin caracteres


CONCAT: Concatena dos valores.
SUBSTR: Extrae una subcadena.
LENGTH: Devuelve la longitud de la cadena.

INSTR: Devuelve la posicin de un carcter o subcadena.

LPAD: Justifica a la derecha la cadena.

RPAD: Justifica a la izquierda la cadena.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 35 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
5.- S.Q.L. Funciones Numricas
ROUND (columna | expresin, n)
o Redondea a n posiciones decimales. Si se omite n, no se redondea con
decimales. Si n es negativo, los nmeros a la izquierda del punto decimal se
redondean a decenas, centenas, ...
TRUNC (columna | expresin, n)

o Trunca en la ensima posicin decimal. Si se omite n, sin lugares decimales. Si


n es negativo, los nmeros a la izquierda del punto decimal se truncan a cero.

MOD (m, n)

o Devuelve el resto de la divisin de m por n.

Ejemplos sobre funciones

1.- S.Q.L. Ejemplos de funciones numricas

2.- S.Q.L. Trabajando con fechas

DUAL es una tabla virtual de la bd., que puede ser


Usada para inspeccionar SYSDATE.

3.- S.Q.L. Operadores aritmticos de fechas

Sumar o restar un nmero a/o de una fecha da por resultado una fecha.
Restar dos fechas para encontrar la cantidad de das entre esas fechas.

Sumar horas a una fecha dividiendo la cantidad de horas por 24.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 36 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
RESOLVER: Qu retorna de cada consulta?

FUNCIONES DE GRUPO

1.- S.Q.L. Funciones de Grupo (I)


AVG ([DISTINCT | ALL] n)
o Valor promedio de n.
COUNT ({* | [DISTINCT | ALL |] expr})
o Cantidad de filas con expr no nulo. Con * se cuentan todas las filas incluyendo
duplicadas y valores nulos.
MAX ([DISTINCT | ALL] expr)
o Valor mximo de expr.
MIN ([DISTINCT | ALL] expr)
o Valor mnimo de expr., ignorando los valores nulos.
2.- S.Q.L. Funciones de Grupo (II)
STDDEV ([DISTINCT | ALL] n)
o Desviacin estndar de n, ignorando los valores nulos.
SUM ([DISTINCT | ALL] n)
o Suma los valores de n, ignorando los valores nulos.
VARIANCE ([DISTINCT | ALL] n)
o Varianza de n, ignorando los valores nulos
Estas funciones no se pueden usar en la clusula WHERE.
3.- S.Q.L. Funciones de grupo y Nulos
Las funciones de grupo IGNORAN los valores nulos de las columnas.
Qu resultado obtendramos se calculamos la media de la comisin de los
empleados?

4.- S.Q.L. NVL y funciones de grupo


Esta media no es correcta porque se han ignorado las filas cuya comisin es nula.
Solucin: Uso de la funcin NVL para forzar a las funciones de grupo que admitan los
valores nulos.

5.- S.Q.L. Sintaxis de GROUP BY


Crea grupo de datos, por lo tanto se pueden usar funciones de grupo para devolver
informacin resumida para cada grupo.
6.- S.Q.L. Uso de GROUP BY (I)

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 37 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Si se incluye una funcin de grupo en una clusula SELECT, no se puede seleccionar


resultados individuales a menos que la columna aparezca en la clusula GROUP BY.
No se pueden usar alias en GROUP BY.
Por defecto, tras un GROUP BY, las filas se ordenan de forma ascendente
Ejemplo:

SELECT deptno, AVG(sal) FROM emp GROUP BY deptno;

7.- [Link] de GROUP BY (II)


La columna referenciada por GROUP BY no es necesario seleccionarla.
Todas las columnas mencionadas en la SELECT que no son funciones de grupo, tienen
que estar en la clusula GROUP BY.
Se pueden formar agrupaciones sobre mltiples columnas:

SELECT deptno, job, sum(sal) FROM emp GROUP BY deptno, job;

8.- [Link] no vlidas


Cualquier columna o expresin en la SELECT que no sea una funcin agregada, tiene
que ser especificada en la clusula GROUP BY

SELECT deptno, COUNT(ename) FROM emp;

No puede usar una clusula WHERE para restringir grupos. Utilice la clusula HAVING
para restringir grupos.

SELECT deptno, AVG(sal) FROM emp WHERE AVG(sal) > 2000


GROUP BY deptno;

9.- [Link] HAVING


Use la clusula HAVING para restringir grupos:
o Los registros son agrupados
o Se aplica la funcin de grupo
o Los grupos que se corresponden con la clusula HAVING se visualizan
(condicin TRUE).
HAVING puede preceder a GROUP BY, pero se recomienda que se ponga en primer
lugar GROUP BY porque es ms lgico. (1 se calculan grupos y posteriormente se
calcula HAVING sobre esos gpos.).

Actividad 1
Para la sgte clase un. Debe de entregar 3 ejemplos de cada funcin
que Ud. Aprendi. Los ejemplos deben estar impresos en su folder y
adems deben enviar al correo Jhonnyupc@[Link] con el
asunto: QUERYS DE FUNCIONES.
Para una evaluacin. Para el desarrollo de este trabajo debe usar el
esquema HR y adems la tabla DUAL si fuera necesario.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 38 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 10 Inner Join + y + Tablas

Para ingresar a este tema pdale al instructor de sistema Jhonny Pandal. sea yo jejeje el
esquema TIGER que se usara en estos ejemplos y seguro otros tambin

[Link] de JOIN

Un JOIN se utiliza para consultar datos de ms de una tabla


La condicin de JOIN se escribe en la clusula WHERE.

Si existen columnas con el mismo nombre en las tablas seleccionadas, se debern


nombrar los campos
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 39 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Ejemplo:

[Link] de JOIN

Existen dos tipos principales de JOIN:


o EQUIJOIN Join sobre dos o ms tablas, por igualdad de campos.

o NON-EQUIJOIN Por desigualdad, sin correspondencia directa entre campos de


tablas. La relacin se puede establecer mediante criterios de
rango (<, >, BETWEEN, ...)

Y dos ms adicionales:

o OUTER JOIN Para ver, tambin, las filas que no complen la condicin de
Join. El operador de un Outer Join es el signo ms (+), en el lado del join que
es deficiente en informacin.

o SELF JOIN Combinacin de una tabla consigo misma.

S.Q.L. Ejemplo de Equijoin

Ya que la columna
DEPTNO es igual en ambas tablas, sta debe ir prefijada por el nombre de la tabla
para evitar la ambigedad.

S.Q.L. Ejemplo de Non-Equijoins

En este ejemplo se han usado alias de tablas (e para la tabla emp y s para la tabla
salgrade).

S.Q.L.
Ejemplo de Outer Join

En este ejemplo se muestran los nmeros y nombres de todos los departamentos,


incluidos aquellos que no tienen empleado.
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 40 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Si se le aade: AND [Link] is null, slo se mostraran las no


coincidencias.

S.Q.L.
Ejemplo de Self Join

En este ejemplo la clusula WHERE contiene la combinacin "dnde un jefe de


un trabajador coincide con el nmero de empleado para el jefe".

TEMA 11 Subconsultas

S.Q.L. Cundo subconsultas?

Quin tiene un salario superior al de Jones

S.Q.L. Sintaxis de una subconsulta

La subconsulta se ejecuta una vez y antes de la consulta principal.


El resultado de ella es usado por la consulta principal externa.

S.Q.L. Gua Uso de Subconsultas

Encierre las subconsultas entre parntesis.


No aada una clusula ORDER BY a una subconsulta.

Utilice operadores a nivel de fila para subconsultas que devuelvan solo una fila
MONOREGISTRO.
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 41 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Utilice operadores que actan sobre varios registros para subconsultas que devuelven
ms de una fila MULTIREGISTRO.

S.Q.L. Subconsultas Mono-registro

Devuelven un nico registro.


Se utilizan operadores de comparacin (=, >, >=, <, <= y <>).

Ejemplo:

S.Q.L. Subconsultas Multi-registro

Devuelven ms de un registro
Se utilizan comparadores multiregistro:

o IN TRUE si se encuentra en la lista.

o ANY (y sinnimo SOME) TRUE si la condicin se cumple con algn


registro de la lista devuelta por la subconsulta.

o ALL TRUE si la condicin se cumple con todos los registros de la lista


devuelta por la subconsulta.

El operador NOT puede ser utilizado con los operadores IN, ANY y ALL.

S.Q.L. Ejemplo subc. Multi-registro

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 42 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

S.Q.L. Subcons. en clusula FROM

Puede utilizar una subconsulta en una clusula FROM de una sentencia SELECT:

Este ejemplo muestra los nombres, salarios, nm. Departamentos y media de salarios,
de todos los empleados que cobran ms que la media de salarios de su departamento.

TEMA 10 DML

S.Q.L. Manipulacin de Datos (DML)

Sentencias DML son:


o INSERT Aade registros a una tabla.

o UPDATE Modifica registros existentes de una tabla.

o DELETE Elimina registros existentes de una tabla.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 43 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
S.Q.L. Control de Datos (DCL)

Estas sentencias se completan con los comandos de control de transaccin (DCL), las
cuales aseguran la consistencia de los datos.
o COMMIT Finaliza la transaccin actual haciendo que todos los cambios
pendientes pasen a ser permanentes.

o ROLLBACK Finaliza la transaccin en curso descartando todos los


cambios pendientes.

o SAVEPOINT Establece una "marca" dentro de la transaccin en curso,


usada por COMMIT o ROLLBACK.

S.Q.L. La Sentencia INSERT


Mediante esta sentencia slo se inserta un registro cada vez.
El nombre de las columnas es opcional. Si se omiten se deben colocar los valores en el
orden que las columnas tienen en la tabla.

Caracteres y fechas entre comillas simples.

S.Q.L. Insercin de Valores Nulos

Mtodo Implcito: Omitir la columna en la lista:

Mtodo Explcito: Especificar NULL o el string vaco (), para cadenas y fechas, en la
lista de VALUES:

S.Q.L. Insercin Valores Especiales

SYSDATE registra la fecha y hora actual:

USERID inserta el nombre del usuario actual

S.Q.L. Insercin reg. de otra tabla

Se escribe el comando INSERT con una subconsulta.


No usar la clusula VALUES.

Deben coincidir el nmero de columnas de INSERT con el de la subconsulta

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 44 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

S.Q.L. La Sentencia UPDATE


Los registros a modificar se especifican por medio de la clusula WHERE.
Si se omite WHERE se modificaran todos los registros de la tabla.

S.Q.L. Modificacin con subconsultas

[Link].: Modificar el oficio y departamento del empleado 7698, con los valores
correspondientes actualmente al empleado 7499:

S.Q.L. La Sentencia DELETE

Los registros a eliminar se especifican en la clusula WHERE.


Si se omite WHERE se borrarn todos los registros de la tabla.

S.Q.L. Eliminacin con subconsulta

Utilice subconsultas en sentencias DELETE, para eliminar registros de una tabla,


basados en valores de otra tabla:

TEMA 11 DDL

[Link] de Datos (DDL)


Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 45 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Sentencias DDL son:


o CREATE TABLE Crea una tabla. Para ello el usuario debe de tener el
privilegio CREATE TABLE.

o ALTER TABLE Permite modificar la estructura definida para una tabla.

o DROP TABLE Elimina una tabla (datos y estructura) y sus ndices. No se


puede hacer Rollback de esta sentencia.

o RENAME Cambia el nombre de una tabla, vista, secuencia o sinnimo.

S.Q.L. Sentencia CREATE TABLE


Necesario tener privilegio CREATE TABLE.
Ha de especificar:

o Nombre de tabla

o Para las columnas: nombre, tipo de dato y tamao.

S.Q.L. Reglas para los nombres


Deben de comenzar con una letra.
Pueden tener una longitud de 1 30 caracteres de largo.
Deben contener solamente A-Z, a-z, 0-9, _, $ y #.

No deben duplicar el nombre de otro objeto que sea propiedad del mismo usuario o
schema.

No debe ser una palabra reservada del servidor Oracle8.

S.Q.L. Tipos de Datos

VARCHAR2(tamao) Dato carcter de longitud variable. Mx. 4000.


CHAR(tamao) Dato carcter de longitud fija. Mx. 255.
NUMBER(p,s) Dato numrico de longitud variable.p entre 1..38; s entre 84..127
Valores de fecha y hora. Entre el 1 Enero 4712 A.C. Y el 31
DATE
Diciembre del 4712 D.C.
LONG Dato carcter de [Link] hasta 2 Gb.
CLOB Dato carcter single-byte de hasta 4 Gb.
RAW(tamao) y LONG Datos Binarios segn tamao especificado y Datos Binarios de
RAW [Link] hasta 2 Gb.
BLOB Datos Binarios hasta 4 Gb.
BFILE Datos binarios almacenados en fich. Externo. Hasta 4 Gb.

S.Q.L. Creacin de tabla por subconsulta

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 46 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Se puede crear una tabla e insertar filas combinando el comando CREATE TABLE con
la opcin AS subconsulta.
Es necesario hacer coincidir la cantidad de columnas especificadas con las de la
subconsulta.

Si no se indican nombres de columnas, stas sern los mismos que los de la


subconsulta.

S.Q.L. Creacin de tabla por subconsultA

Ejemplo:

S.Q.L.

Sentencia ALTER TABLE


Permite aadir nuevas columnas o modificar una ya existente.

S.Q.L. Aadir una Columna

La nueva columna aparecer en el ltimo lugar de la tabla. No se puede especificar el


orden.
Puede aadir o modificar columnas, pero no eliminarlas de una tabla.

Si la tabla ya contiene registros al aadir una nueva columna, sta se inicializar con
valores nulos para todos los registros.

Puede definir una columna NOT NULL slo si la tabla est vaca.

S.Q.L. Modificar una Columna

Puede cambiar el tipo de datos de una columna, su tamao y valor por defecto
Si cambia el valor por defecto, afectar slo a sucesivas inserciones en la tabla.

[Link] DROP TABLE

Se borra estructura, datos e ndices de la tabla. Borrado Fsico.


No se puede hacer Rollback de la sentencia.

Slo el propietario de la tabla u otro usuario con el permiso DROP ANY TABLE puede
eliminar una tabla.

S.Q.L. Sentencia RENAME

Permite cambiar el nombre de una tabla, vista, secuencia o sinnimo.


Debe ser el propietario del objeto.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 47 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 12 VISTASL

S.Q.L. Concepto de Vista

Una vista es una tabla lgica basada en una tabla u otra vista.
No contiene datos en s misma, pero es como una ventana a travs de la cual se
pueden ver o cambiar los datos de las tablas.

Podemos representar con ellas subconjuntos lgicos o combinaciones de datos.

Las tablas sobre las cuales se basa una vista se llaman tablas base.

Se almacenan en el Diccionario de Datos, USER_VIEWS.

S.Q.L. Por qu usar Vistas?

Para restringir el acceso a la B.D.


Para realizar consultas complejas de manera fcil.

Para obtener una independencia de los datos

Para presentar diferentes vistas de los mismos datos.

S.Q.L. Creacin de una Vista

FORCE: Crea la vista sin importar que la tabla base exista o no.
WITH CHECK OPTION: Especifica que solamente las filas accesibles a la vista pueden
ser insertadas o actualizadas.

CONSTRAINT: Nombre asignado a la restriccin CHECK OPTION.

WITH READ ONLY: Asegura que ninguna operacin DML pueda realizarse sobre esta
vista.

S.Q.L.
Ejemplo creacin de Vista

S.Q.L. Eliminacin de una Vista

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 48 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Al borrar una vista no perder los datos, porque la vista est basada en tablas
subyacentes de la B.D.
nicamente el creador o un usuario con el privilegio DROP ANY VIEW puede eliminar
una vista.

S.Q.L. Limitaciones DML en Vistas

Se pueden realizar operaciones DML sobre vistas simples.


No se puede eliminar una fila si la vista contiene Funciones de grupo, una clusula
GROUP BY o el comando DISTINCT.

No es posible modificar datos en la vista si contiene cualquiera de las condiciones


anteriores, columnas definidas por expresiones o la pseudocolumna ROWNUM

No se puede agregar datos si la vista contiene cualquiera de las condiciones anteriores


o cualquier columna NOT NULL no incluida por la vista (tabla base).

S.Q.L. Creacin de Sinnimos

Simplifican el acceso a los objetos al crear otro nombre para un objeto (sinnimo).
Hacen referencia a una tabla propia o de otro usuario.

Permite acortar la longitud de los nombre de los objetos a la vez que elimina la
necesidad de cualificar el objeto con un esquema.

El DBA puede crear un sinnimo pblico accesible a todos los usuarios.

S.Q.L. Eliminacin de Sinnimos

Slo el DBA puede eliminar un sinnimo pblico.

Actividad 1
Crear 15 vistas haciando uso del esquema TIGER
Crear 2 tablas por Consulta
Agregarle 3 Columnas segn a su criterio

Estoy trabajos se presentan en el folder y archivos .sql para validar la


nota. Enviar al correo Jhonnyupc@[Link] con el asunto: DDL

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 49 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 13 CURSORES

Creacin y manejo de Cursores

En general PL/SQL utiliza cursos para todos los comandos de acceso a la base de datos. En
este caso el lenguaje permite los cursores implcitos y explcitos. Los cursos implcitos son
aquellos establecidos para los comandos que no cuentan con un cursor explcito declarado.
Usted deber utilizar cursores explcitos para aquellas consultas que retornen ms de una fila.

Declaracin de Cursores
Se debe definir el curso en el rea de definicin de variables, pero se utilizan las palabras
reservadas CURSOR nombre_cursor IS, como se muestra a continuacin:

CURSOR c_line_item IS
(comando sql)
El comando SQL puede ser cualquier consulta vlida. Una vez creada la definicin del cursor,
usted puede ser capaz de controlar el flujo del mismo por medio del OPEN, FETCH y el
CLOSE.

Control del Cursor


Para manipular los datos del cursor, usted debe usar primero el comando OPEN seguido del
nombre del cursor. Posterior a esto debe utilizar el comando FETCH para extraer las filas del
cursor, segn el criterio seguido por el select. Por ltimo, una vez que ha sido procesado por
completo, debe utilizarse el comando CLOSE seguido del nombre del cursor, para esta forma
terminar cualquier actividad asociada con el cursor abierto. Veamos un ejemplo:

OPEN c_line_item;
...
FETCH c_line_item INTO li_info;
...
(retrieved row processing)
...
CLOSE c_line_item;
En este caso el cdigo abre el cursor c_line_item y procesa las filas extradas. Luego de
procesar toda la informacin cierra el cursor.

Atributos del cursor explcito


Existen cuatro atributos asociados con los cursores de PL/SQL:

%NOTFOUND
%FOUND
%ROWCOUNT
%ISOPEN

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 50 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

El %NOTFOUND devuelve FALSE cuando es extrada una fila, TRUE si el ltimo FETCH no
extrajo fila alguna y NULL si el SELECT del cursor no ha retornado datos.

El %FOUND es lgicamente opuesto al %FOUND en cuanto al TRUE y FALSE, pero sigue


retornando NULL si el cursor no ha retornado datos.

El %ROWCOUNT se utiliza para determinar cuantas filas han sido extradas en un punto. Este
valor se incrementa con cada fila extrada y tiene valor cero cuando apenas ha sido abierto el
cursor.

Por ltimo, el %ISOPEN, tiene valores TRUE o FALSE, dependiendo de si el cursor asociado
ha sido abierto o no.

Parmetros de Cursores
Se pueden especificar parmetros para los cursores de la misma forma que se pasan a
procedimientos y/o funciones. Veamos el siguiente ejemplo:
CURSOR c_line_item (p_order_num IN NUMBER) IS
SELECT merch_gross, recipient_num
FROM line_item
WHERE order_num = p_order_num;
Vase que los parmetros son siempre de tipo IN (solo de entrada), pero el tipo de datos es
cualquier tipo de datos vlido. La idea es referenciar el parmetro dentro de la consulta, y este
se pasa a la hora de abrir el cursor.

Es posible tambin definir los parmetros con default, de forma tal que se puede variar la
cantidad de parmetros a utilizar en el cursor.
DECLARE
CURSOR c_line_item ( order_num NUMBER DEFAULT 100,
line_num NUMBER DEFAULT 1 ) IS .... . .
BEGIN
...
OPEN c_line_item ( 19 ); -- valores 19, 1
...
OPEN c_line_item ( 20, 4 ); -- valores 20, 4
...
OPEN c_line_item; -- valores 100, 1
...
END;
CASO PRCTICO
De esta forma se pueden pasar todos, uno o ningn parmetro a la hora de abrir el cursor.
Para un cursor. Para este ejemplo vamos a disear un tabla y pasarle un cursos. A trabajar

1.- Diseo la siguiente tabla y le lleno los registros

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 51 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Aparecer una ventana de bloc de


2.- Abrir Oracle por LINEA DE COMANDO SQL (pantalla negra)
notas. Debes guardar el archivo con el
nombre [Link] en el disco local D:

3.- Ingresar EDIT Lista

4.- una vez guardado este archivo SQL ahora agregaremos el siguiente cdigo

5.- una vez ingresado el cdigo a este archivo SQL debes cerrar dicha ventana y ejecutar este
archivo SQL desde Lnea de Comandos SQL haciendo uso del comando START y seguido de
nombre y ruta del archivo SQL

Veamos ahora un ejemplo de utilizacin de %ROWCOUNT:

1.- creamos un archivo SQL de nombre [Link], en su interior le agregamos el siguiente


cursor y luego lo ejecutamos.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 52 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

01 Ejemplo

Qu te muestra dicho cursor y porque?

02 Ejemplos USANDO CURSORES EL PROCEDIMIENTOS ALMACENADOS

En este ejemplo ya hemos creado un procedimiento almacenado que nos ayuda a tener un
cursor ms dinmico. Con una manera de consultar mucho mejor sus registros. El
procedimiento almacenado se llama usp_alumnosXEsp y tiene un parmetro de entrada de
nombre espec la cual nos facilitara el manejo de las consultas.

Ejecucin:

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 53 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

ALGUNOS OTROS EJEMPLOS SOBRE CURSORES (auspiciadores externos)

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 54 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 14 PROCEDIMIENTOS Y FUNCIONES

PROCEDIMIENTOS y FUNCIONES

Los procedimientos PL/SQL son subprogramas compuestos por un conjunto de sentencias


SQL. Funciones y procedimientos PL/SQL no son muy diferentes. Un procedimiento o funcin
est constituido por un conjunto de sentencias SQL y PL/SQL lgicamente agrupados para
realizar una tarea especfica. Los procedimientos y funciones almacenados constituyen
un bloque de cdigo PLSQL que ha sido compilado y almacenado en las tablas del sistema de
la base de datos Oracle.

Los procedimientos o funciones PLSQL son dinmicos ya que admiten parmetros que les
pueden ser pasados antes de su ejecucin. Por lo tanto, un procedimiento o funcin puede
realizar diferentes tareas dependiendo de los parmetros que le hayan pasado.

Los procedimientos y funciones Oracle estn compuestos por una parte en la que se definen de
variables y cursores, otra parte ejecutable compuesta por sentencias SQL y PLSQL, y otra
parte opcional enfocada a manejar las excepciones y errores ocurridos durante la ejecucin.

Los pasos que sigue Oracle para ejecutar un procedimiento o funcin son los
siguientes:
1.- Verificar si el usuario tiene permiso de ejecucin.
2.- Verificar la validez del procedimiento o funcin.
3.- Y finalmente ejecutarlo.

Las ventajas de usar procedimientos y funciones en lugar de scripts SQL son:


1.- Facilidad para gestionar la seguridad.
2.- Mejor rendimiento al estar compilados y almacenados en la base de datos.
3.- Mejor gestin de la memoria.
4.- Mayor productividad e integridad.

La diferencia ms importante entre los procedimientos y las funciones es que una funcin, al
final de su ejecucin, devuelve un valor al bloque PL/SQL que la llam. Sin embargo, en los
procedimientos esto no es posible, aunque si que podemos definir mltiples parmetros de
salida que se devolveran al bloque PL/SQL desde el que se ejecut el procedimiento (esto
ltimo tambin es posible en las funciones).

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 55 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Nombre-parmetro: es el nombre que nosotros queramos dar al parmetro. Podemos utilizar


mltiples parmetros. En caso de no necesitarlos podemos omitir los parntesis.

IN: especifica que el parmetro es de entrada y que por tanto dicho parmetro tiene que tener
un valor en el momento de llamar a la funcin o procedimiento. Si no se especifica nada, los
parmetros son por defecto de tipo entrada.

OUT: especifica que se trata de un parmetro de salida. Son parmetros cuyo valor es devuelto
despus de la ejecucin el procedimiento al bloque PL/SQL que lo llam. Las funciones PLSQL
no admiten parmetros de salida.

IN OUT: Son parmetros de entrada y salida a la vez.

Tipo-de-dato: Indica el tipo de dato PLSQL que corresponde al parmetro (NUMBER,


VARCHAR2, etc).

Ejemplos 01

Previos objetos

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 56 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Ejemplos 01:
Este procedimiento almacenado muestra la descripcin del producto cuyo precio es el ms
elevado. Sea del producto cuyo estado es activo o inactivo (si o no)

Creacin:

Ejecucin:

Ejemplo 02
La solicitud del rea de sistemas es que ud. Genere un procedimiento almacenado que permita
incrementar en un 10% el precio de los productos que su estado de produccin sea SI

Importante sabes que cada vez que


ejecutas este USP Ud. Estar
realizando ese proceso

Hablan las imgenes

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 57 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Ejemplo 03
El rea de sistemas le pide un procedimiento almacenado que le permita consultas por el
estado (si o no). Adems por el precio que sea mayor a una determinada cantidad. A resolverlo

Para este tipo de ups se necesita obligadamente un cursor. Para recorrer las filas y realizar la
entrega de los resultados. As que es importante conocer el manejo de cursores. Analice estos
datos y practquelo 3 veces y veras que no es tan difcil como parece. Ahora ejecutemos
nuestro usp.

Ejecucin

Resultado

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 58 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Ejemplo 04

Nos piden disear un ups que nos permita registrar a los nuevos productos que llegan a
almacn. Para esto se necesita conocer los tipos de datos de todos los campos de la tabla
productos

luego lo ejecutamos entregndole los valores a los parmetros de forma ordenada

Ejemplo 04

Nos piden disear un ups que nos permita registrar a los nuevos productos que llegan a
almacn PERO QUE TENGAN VALORES POR DEFECTO. Para esto se necesita conocer los
tipos de datos de todos los campos de la tabla productos

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 59 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
Seguramente al ingresar unos nuevos registros tendrs problemas de valores y claves
duplicadas. Como t ya eres grandecito. Bscale una solucin a esto ok.

TEMA 15 PROCEDIMIENTOS DE GESTION

No permite aplicar a un sistema de informacin rendimiento y seguridad. En este material le


entregamos todo para ser trabajado desde SQLDEVELOPER

Creando tabla y registros

Creando Usp_Buscar_Usuario

Ejecutando Usp_Buscar_Usuario

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 60 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Creando Usp_Guardar_Usuario

Ejecutando Usp_Guardar_Usuario

Creando Usp_Editar_Usuario

Ejecutando Usp_Editar_Usuario

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 61 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Creando Usp_Eliminar_Usuario

Ejecutando Usp_Eliminar_Usuario

Creando y Ejecutando Usp_Listar_Creadores

Seguramente al crear este ltimo procedimiento almacenado. Tendrs problemas de creacin y


lgicamente ejecucin. Me pregunto Qu solucin le daras? No piense mucho asi que vamos
que de esto depende tu contrato.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 62 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

TEMA 16

GENERALIDADES DE PL/SQL

1.- Generalidades de PL/SQL (I)


Comentarios en PL/SQL: Anteponga a los comentarios de una sola lnea dos guiones (--) a modo
de prefijo. Coloque comentarios de varias lneas entre /* y */.

Operadores de PL/SQL:
**, NOT Exponenciacin, negacin lgica
+, - Identidad, negacin
*, / Multiplicacin, divisin
+, -, || Suma, resta, concatenacin
=, !=, <, >, <=, >=, IS NULL, LIKE, BETWEEN, IN Comparacin
AND Conjuncin
OR Inclusin

2.- Generalidades de PL/SQL (II)


Bloques Anidados y mbito de la Variable:

3.- Generalidades de PL/SQL (III)


Para hacer referencia a una variable de sustitucin en PL/SQL debe anteponer a su nombre dos
puntos (:) a modo de prefijo:

4.- Generalidades de PL/SQL (IV)


Directrices de Programacin para facilitar el mantenimiento del cdigo:
Documente el cdigo con comentarios.
Desarrolle una convencin de maysculas/minsculas para el cdigo.
Desarrolle convenciones de nomenclatura para identificadores y otros objetos.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 63 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Sangre el cdigo para facilitar la lectura.


Evite la ambigedad entre variables locales, parmetros formales y nombres de
columnas de las tablas de la B.D.

5.-Generalidades de PL/SQL (V)


Cuando trabaje con valores nulos puede evitar algunos de los errores ms habituales si recuerda
las siguientes reglas:

Las comparaciones en las que se incluyen valores nulos siempre resultan NULL.
Si se aplica el operador lgico NOT a un valor nulo resulta NULL.
En las sentencias de control condicionales, si la condicin resulta NULL, no se ejecutarn las
sentencias asociadas.

Sentencias SQL en PL/SQL


SELECT recupera exactamente UNA fila.
INSERT aade una fila.
UPDATE modifica una o ms filas existentes.
DELETE suprime una o ms filas existentes.
COMMIT hace permanentes todas las modificaciones pendientes.
ROLLBACK elimina todas las modificaciones pendientes.
SAVEPOINT marca un punto intermedio en el procesamiento de las transacciones.

Sentencia SELECT
Sintaxis:

Recuerde, slo se debe de recuperar una fila. Ms de una fila provocar errores.

Ejemplo de SELECT
Recupere la suma de los salarios de todos los empleados de un departamento especfico:

Insercin de Datos
Aada nueva informacin sobre los empleados en la tabla emp:

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 64 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Actualizacin de Datos
Aumente el salario de todos los empleados de la tabla emp que son Analistas:

Supresin de Datos
Suprima filas pertenecientes al departamento 10 de la tabla emp:

Control de Transacciones

COMMIT finaliza la transaccin actual realizando todos los cambios pendientes en la B.D.

ROLLBACK finaliza la Transaccin actual desechando todos los cambios pendientes.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 65 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Control de Transacciones

Control Flujo de Ejecucin


Puede modificar el flujo lgico de sentencias utilizando sentencias IF condicionales y

Estructuras de control de bucles.


Sentencias IF condicionales:
IF-THEN
IF-THEN-ELSE
IF-THEN-ELSIF

Control de bucles:
Bucle bsico LOOP
Bucle FOR
Bucle WHILE

Sentencia IF
Sintaxis:

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 66 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Flujo de IF-THEN-ELSE

Flujo de IF-THEN-ELSIF

Condiciones Booleanas

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 67 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Bucle Bsico: LOOP


Sintaxis:

Donde condicin es una expresin o variable booleana (TRUE, FALSE o NULL).

Bucle FOR
Sintaxis:

No declare el ndice; se declara implcitamente como un BINARY_INTEGER. Fuera del bucle el


ndice no est definido. Los lmites desde. Hasta deben de ser literales numricos. Pueden ser
expresiones que se convierten en valores numricos.

Bucle WHILE
Sintaxis:

La condicin se evala al inicio de cada iteracin

Etiquetas y Loops Anidados


Puede anidar bucles a varios niveles.
Utilice etiquetas para distinguir entre los bloques y los bucles.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 68 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Salga al bucle externo con la sentencia EXIT que hace referencia a la etiqueta.
Los nombres de etiquetas deben ir antes de la palabra LOOP y entre
los delimitadores << >>.

Etiquetas y Loops Anidados


Ejemplo:

Ejemplos y demostraciones

Ejemplo #1: Supone que debes calcular un bono por las ventas que ha realizado cada empleado
dependiendo de ciertas condiciones, veamos cmo se hace:

En este ejemplo se muestra la forma ms simple la sentencia IF, donde se pregunta si las ventas
fueron mayores que 10000, si la condicin es verdadera se asigna un bono de 500, fjate que en
los PL-SQL Packages en Oracle siempre debes incluir la clusula THEN y cerrar el bloque con
END IF; (no es ENDIF;).

Ejemplo #2: Agreguemos ahora la clusula ELSE al ejemplo anterior, veamos cmo se hace:

En este ejemplo se muestra la segunda forma de usar la sentencia IF incluyendo la clusula


ELSE para generar un caso contrario en tus PL-SQL Packages en Oracle, es decir, si la primera
condicin no es verdadera se asigna un bono de 200 y luego el control pasa a la instruccin
UPDATE. Tambin puedes anidar sentencias IF de la siguiente forma:

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 69 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

En este ejemplo se agrega otra sentencia IF para obtener un bono de 100 si las ventas son
menores que 5000, de esta forma se pueden anidar todas las sentencias IF que sean
necesarias.
Ejemplo #3: Veamos ahora como usar la clusula ELSIF (no es ELSEIF) modificando el mismo
ejemplo anterior:

La clusula ELSIF permite anidar condiciones mutuamente excluyentes, si la primera condicin


es falsa se evala la segunda condicin y as sucesivamente. En este ejemplo dePL-SQL
Packages en Oracle si las ventas son menores que 5000 se cumple la segunda condicin y se
asigna un bono de 100 y el control pasa a la instruccin UPDATE.
Te recomiendo que siempre se use el ELSIF en lugar de IF anidados, de esta manera el cdigo
de tus PL-SQL Packages en Oracle queda ms fcil de leer y de entender para modificaciones
posteriores.

CASE

La instruccin CASE puede evaluar mltiples expresiones y devolver para cada una de ellas un
valor/bloque de instrucciones. El resultado de cada WHEN puede ser un valor o una sentencia,
en el primer caso el resultado de una sentencia CASE se puede guardar en una variable.

Su sintaxis:

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 70 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Ejemplos de Case

probando

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 71 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Oracle & Visual Basic I


EL DESARROLLO DE ESTA PEQUEA APLICACIN BASADA EN UNA FACTURA NOS PERMITE
APRENDER LAS CONEXIONES Y LOS OBJETOS DE ADO NET. PERO BASADOS EN ORACLE.

CAPA DE DATOS

CAPA DE PRESENTACION

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 72 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
EL DISEO DEL FORMULARIO DEBE SER A TU CRITERIO

CODIGO DEL FORM

Imports [Link]
Public Class frmfactura
Dim cn As New OracleConnection("datasource=xe;userid=MERCADO;
password=MERCADO;integrated security=no;")
Dim orden As String
Sub buscar_cliente()

Orden = "select*from cliente where codcli='" & [Link] & "'"


Dim cmd As New OracleCommand(orden, cn)
Dim dr As OracleDataReader
[Link]()
dr = [Link]
If [Link] Then
[Link] = dr(1)
[Link] = dr(2)
Else
MsgBox("no existe ...")
End If
[Link]()

End Sub

Sub BUSCAR_PRODUCTO()

orden = "select*from producto where codprod='" & [Link] & "'"


Dim cmd As New OracleCommand(orden, cn)
Dim dr As OracleDataReader
[Link]()
dr = [Link]
If [Link] Then
[Link] = dr(1)
[Link] = dr(2)
[Link]()
Else
MsgBox("no existe ...")
End If
[Link]()

End Sub

Sub BUSCAR_EMPLEADO()

orden = "select*from EMPLEADO where codEMP='" & [Link] & "'"


Dim cmd As New OracleCommand(orden, cn)
Dim dr As OracleDataReader
[Link]()
dr = [Link]
If [Link] Then
[Link] = dr(1)
Else
MsgBox("no existe ...")
End If
[Link]()

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 73 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
End Sub

Sub TOTALES()
Dim SUMA, IGV, NETO As Decimal
For K As Integer = 0 To [Link] - 1
SUMA = SUMA + Val([Link](K))
Next
IGV = SUMA * 0.18
NETO = SUMA + IGV

[Link] = SUMA
[Link] = IGV
[Link] = NETO
End Sub

Programando sobre los botones

Private Sub TXTCODCLI_KeyPress(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
If Asc([Link]) = 13 Then
Call buscar_cliente()
End If
End Sub

Private Sub TXTCODPROD_KeyPress(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
If Asc([Link]) = 13 Then
Call BUSCAR_PRODUCTO()
End If
End Sub

Private Sub btnbuscaremp_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Call BUSCAR_EMPLEADO()
End Sub

Private Sub BTNAGREGAR_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]

Dim subt As Decimal

[Link]([Link])
[Link]([Link])
[Link]([Link])
[Link]([Link])

subt = Val([Link]) * Val([Link])


[Link](subt)

[Link]()
[Link]()
[Link]()
[Link]()

[Link]()

Call TOTALES()
End Sub

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 74 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Private Sub ToolStripMenuItem1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
If [Link] <> -1 Then
Dim Idx As Integer
Idx = [Link]

[Link](Idx)
[Link](Idx)
[Link](Idx)
[Link](Idx)
[Link](Idx)
Call TOTALES()
Else
MsgBox("SELECCIONE CODIGO DE PRODUCTO A ELIMINAR .... ")
End If
End Sub

Sub GRABAR_FACTURA()
Orden = "INSERT INTO FACTURA VALUES('" & [Link] & "',
'" & [Link] & "','" & [Link] & "',
'" & [Link] & "'," & [Link] & ",
" & [Link] & "," & [Link] & ")"
Dim CMD As New OracleCommand(orden, cn)
[Link]()
[Link]()
[Link]()
MsgBox("PROCESANDO AL 50% .......")

End Sub

Sub GRABAR_DETALLES()
For K As Integer = 0 To [Link] - 1
Dim COD, NOM As String
Dim PRE, CAN, SUBT As Decimal
COD = [Link](K)
NOM = [Link](K)
PRE = Val([Link](K))
CAN = Val([Link](K))
SUBT = (Val([Link](K)))

orden = "INSERT INTO DETALLE VALUES('" & [Link] & "',


'" & COD & "','" & NOM & "'," & PRE & "," & CAN & "," & SUBT & ")"
Dim CMD As New OracleCommand(orden, cn)
[Link]()
[Link]()
[Link]()
Next
MsgBox("PROCESANDO AL 99% .......")
MsgBox(" ----- FACTURA GRABADA AL 100% -----")
End Sub

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 75 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Desencadenadores (TRIGGERS)
Un trigger es un bloque PL/SQL asociado a una tabla, que se
ejecuta como consecuencia de una determinada instruccin
SQL (una operacin DML: INSERT, UPDATE o DELETE) sobre
dicha tabla.

La sintaxis para crear un trigger es la siguiente:

El uso de OR REPLACE permite sobreescribir un trigger existente. Si se omite, y el trigger


existe, se producir, un error.

Los triggers pueden definirse para las operaciones INSERT, UPDATE o DELETE, y
pueden ejecutarse antes o despus de la operacin. El modificador BEFORE AFTER indica
que el trigger se ejecutar antes o despues de ejecutarse la sentencia SQL definida por
DELETE INSERT UPDATE. Si incluimos el modificador OF el trigger solo se ejecutar cuando
la sentencia SQL afecte a los campos incluidos en la lista.

El alcance de los disparadores puede ser la fila o de orden. El modificador FOR EACH ROW
indica que el trigger se disparar cada vez que se realizan operaciones sobre una fila de la
tabla. Si se acompaa del modificador WHEN, se establece una restriccin; el trigger solo
actuar, sobre las filas que satisfagan la restriccin.

La siguiente tabla resume los contenidos anteriores.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 76 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
La clusula WHEN slo es vlida para los disparadores con nivel de fila.

Dentro del ambito de un trigger disponemos de las variables OLD y NEW . Estas variables se
utilizan del mismo modo que cualquier otra variable PL/SQL, con la salvedad de que no
es necesario declararlas, son de tipo %ROWTYPE y contienen una copia del registro antes
(OLD) y despues(NEW) de la accin SQL (INSERT, UPDATE, DELTE) que ha ejecutado el
trigger. Utilizando esta variable podemos acceder a los datos que se estn insertando,
actualizando o borrando.

El siguiente ejemplo muestra un trigger que inserta un registro en la tabla


PRECIOS_PRODUCTOS cada vez que insertamos un nuevo registro en la tabla
PRODUTOS:

El trigger se ejecutar cuando sobre la tabla PRODUCTOS se ejecute una sentencia INSERT.

Orden de ejecucin de los triggers


Una misma tabla puede tener varios triggers. En tal caso es necesario conocer el orden en el
Que se van a [Link] disparadores se activan al ejecutarse la sentencia SQL.

Si existe, se ejecuta el disparador de tipo BEFORE (disparador previo) con nivel de orden.
Para cada fila a la que afecte la orden:
o Se ejecuta si existe, el disparador de tipo BEFORE con nivel de fila.
o Se ejecuta la propia orden.
o Se ejecuta si existe, el disparador de tipo AFTER (disparador posterior) con nivel
de fila.
Se ejecuta, si existe, el disparador de tipo AFTER con nivel de orden.

Restricciones de los triggers


El cuerpo de un trigger es un bloque PL/SQL. Cualquier orden que sea legal en un bloque
PL/SQL, es legal en el cuerpo de un disparador, con las siguientes restricciones:

Un disparador no puede emitir ninguna orden de control de


transacciones: COMMIT, ROLLBACK o SAVEPOINT. El disparador se activa como
parte de la ejecucin de la orden que provoc el disparo, y forma parte de la misma
transaccin que dicha orden. Cuando la orden que provoca el disparo es confirmada o
cancelada, se confirma o cancela tambin el trabajo realizado por el disparador.
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 77 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
Por razones idnticas, ningn procedimiento o funcin llamado por el disparador puede
emitir rdenes de control de transacciones.
El cuerpo del disparador no puede contener ninguna declaracin de variables LONG o
LONG RAW

Utilizacin de :OLD y :NEW


Dentro del ambito de un trigger disponemos de las variables OLD y NEW . Estas variables se
utilizan del mismo modo que cualquier otra variable PL/SQL, con la salvedad de que no
es necesario declararlas, son de tipo %ROWTYPE y contienen una copia del registro antes
(OLD) y despues(NEW) de la accin SQL (INSERT, UPDATE, DELTE) que ha ejecutado el
trigger. Utilizando esta variable podemos acceder a los datos que se estn insertando,
actualizando o borrando.

La siguiente tabla muestra los valores de OLD y NEW.

Los registros OLD y NEW son slo vlidos dentro de los disparadores con nivel de fila.
Podemos usar OLD y NEW como cualquier otra variable PL/SQL.

Utilizacin de predicados de los triggers:


INSERTING, UPDATING y DELETING
Dentro de un disparador en el que se disparan distintos tipos de rdenes DML (INSERT,
UPDATE y DELETE), hay tres funciones booleanas que pueden emplearse para determinar de
qu operacin se trata. Estos predicados son INSERTING, UPDATING y DELETING.

Su comportamiento es el siguiente:

Ejemplo 01

Este disparador cumple la siguiente funcin. Su tarea es de insertar en una tabla historias los
nuevos registros de la tabla oficial, los registros eliminados o los registros antes de ser
actualizados.
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 78 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
Create Or Replace Trigger Tr_Historial_Hardware

After Insert Or Update Or Delete On Hardware


For Each Row
Declare
Fecha_Ahora Date;
Equipo_Ahora Varchar2(50);
Usuario_Ahora Varchar2(50);
Begin
Fecha_Ahora := Sysdate;
Equipo_Ahora := Sys_Context('Userenv', 'Host');
Select User Into Usuario_Ahora From Dual;
If Inserting Then
Insert Into Historial_Hardware
(Cod_Hard,Cod_Fabr,Nombre,Modelo,Serie,Frecuencia,Capacidad,Interfaz,Estado,Obs
ervacion,Fecha_Modif,Equipo_Modif,Usuario_Modif,Tipo_Modif)
Values(:New.Cod_Hard,:New.Cod_Fabr,:[Link],:[Link],:[Link],:[Link]
ecuencia,:[Link],:[Link],:[Link],:[Link],Fecha_Ahora,
Equipo_Ahora,Usuario_Ahora,'I');
End If;
If Updating Then
Insert Into Historial_Hardware
(Cod_Hard,Cod_Fabr,Nombre,Modelo,Serie,Frecuencia,Capacidad,Interfaz,Estado,Obs
ervacion,Fecha_Modif,Equipo_Modif,Usuario_Modif,Tipo_Modif)
Values(:Old.Cod_Hard,:New.Cod_Fabr,:[Link],:[Link],:[Link],:[Link]
ecuencia,:[Link],:[Link],:[Link],:[Link],Fecha_Ahora,
Equipo_Ahora,Usuario_Ahora,'A');
End If;
If Deleting Then
Insert Into Historial_Hardware
(Cod_Hard,Cod_Fabr,Nombre,Modelo,Serie,Frecuencia,Capacidad,Interfaz,Estado,Obs
ervacion,Fecha_Modif,Equipo_Modif,Usuario_Modif,Tipo_Modif)
Values(:Old.Cod_Hard,:Old.Cod_Fabr,:[Link],:[Link],:[Link],:[Link]
ncia,:[Link],:[Link],:[Link],:[Link],Fecha_Ahora,Equipo_
Ahora,Usuario_Ahora,'E');
End If;
End;

Ejemplo 02

Create Or Replace Trigger Tr_Historial_Software


After Insert Or Update Or Delete On Software
For Each Row
Declare
Fecha_Ahora Date;
Equipo_Ahora Varchar2(50);
Usuario_Ahora Varchar2(50);
Begin
Fecha_Ahora := Sysdate;
Equipo_Ahora := Sys_Context('Userenv', 'Host');
Select User Into Usuario_Ahora From Dual;

If Inserting Then
Insert Into Historial_Software
(Cod_Soft,Cod_Fabr,Nombre,Version_S,Serie,Obervacion,Fecha_Modif,Equipo_Modif,
Usuario_Modif,Tipo_Modif)

Values(:New.Cod_Soft,:New.Cod_Fabr,:[Link],:New.Version_S,:[Link],:New.
Obervacion,Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'I');
End If;
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 79 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
If Updating Then
Insert Into Historial_Software
(Cod_Soft,Cod_Fabr,Nombre,Version_S,Serie,Obervacion,Fecha_Modif,Equipo_Modif,
Usuario_Modif,Tipo_Modif)

Values(:Old.Cod_Soft,:New.Cod_Fabr,:[Link],:New.Version_S,:[Link],:New.
Obervacion,Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'A');
End If;
If Deleting Then
Insert Into Historial_Software
(Cod_Soft,Cod_Fabr,Nombre,Version_S,Serie,Obervacion,Fecha_Modif,Equipo_Modif,
Usuario_Modif,Tipo_Modif)

Values(:Old.Cod_Soft,:Old.Cod_Fabr,:[Link],:Old.Version_S,:[Link],:[Link]
vacion,Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'E');

End If;
End;

Ejemplo 03

Create Or Replace Trigger Tr_Historial_Licencia


After Insert Or Update Or Delete On Licencias
For Each Row
Declare
Fecha_Ahora Date;
Equipo_Ahora Varchar2(50);
Usuario_Ahora Varchar2(50);
Begin
Fecha_Ahora := Sysdate;
Equipo_Ahora := Sys_Context('Userenv', 'Host');
Select User Into Usuario_Ahora From Dual;

If Inserting Then
Insert Into Historial_Licencias
(Cod_Lice,Cod_Soft,Cantidad,Tipo,Fecha_Modif,Equipo_Modif,Usuario_Modif,
Tipo_Modif)
Values(:New.Cod_Lice,:New.Cod_Soft,:[Link],:[Link],Fecha_Ahora,
Equipo_Ahora,Usuario_Ahora,'I');
End If;
If Updating Then
Insert Into Historial_Licencias
(Cod_Lice,Cod_Soft,Cantidad,Tipo,Fecha_Modif,Equipo_Modif,Usuario_Modif,Tipo_Mo
dif)Values(:Old.Cod_Lice,:New.Cod_Soft,:[Link],:[Link],Fecha_Ahora,Equip
o_Ahora,Usuario_Ahora,'A');
End If;

If Deleting Then
Insert Into Historial_Licencias
(Cod_Lice,Cod_Soft,Cantidad,Tipo,Fecha_Modif,Equipo_Modif,Usuario_Modif,Tipo_Mo
dif)Values(:Old.Cod_Lice,:Old.Cod_Soft,:[Link],:[Link],Fecha_Ahora,Equipo_
Ahora,Usuario_Ahora,'E');
End If;
End;

Ejemplo 04
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 80 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Create Or Replace Trigger Tr_Historial_Computador


After Insert Or Update Or Delete On Computador
For Each Row
Declare
Fecha_Ahora Date;
Equipo_Ahora Varchar2(50);
Usuario_Ahora Varchar2(50);
Begin
Fecha_Ahora := Sysdate;
Equipo_Ahora := Sys_Context('Userenv', 'Host');
Select User Into Usuario_Ahora From Dual;

If Inserting Then
Insert Into Historial_Computador
(Cod_Comp,Cod_Tipo,Ip,Nombre,Usuario,Clave,Estado,Observacion,Fecha_Modif,Equ
ipo_Modif,Usuario_Modif,Tipo_Modif)
Values(:New.Cod_Comp,:New.Cod_Tipo,:[Link],:[Link],:[Link],:[Link]
e,:[Link],:[Link],Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'I');
End If;
If Updating Then
Insert Into Historial_Computador
(Cod_Comp,Cod_Tipo,Ip,Nombre,Usuario,Clave,Estado,Observacion,Fecha_Modif,Equ
ipo_Modif,Usuario_Modif,Tipo_Modif)Values(:Old.Cod_Comp,:New.Cod_Tipo,:[Link],:
[Link],:[Link],:[Link],:[Link],:[Link],Fecha_Ahora,E
quipo_Ahora,Usuario_Ahora,'A');
End If;
If Deleting Then
Insert Into Historial_Computador
(Cod_Comp,Cod_Tipo,Ip,Nombre,Usuario,Clave,Estado,Observacion,Fecha_Modif,Equ
ipo_Modif,Usuario_Modif,Tipo_Modif)
Values(:Old.Cod_Comp,:Old.Cod_Tipo,:[Link],:[Link],:[Link],:[Link],:Ol
[Link],:[Link],Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'E');
End If;
End;

Ejemplo 05

Create Or Replace Trigger Tr_Historial_Cotizacion


After Insert Or Update Or Delete On Cotizacion
For Each Row
Declare
Fecha_Ahora Date;
Equipo_Ahora Varchar2(50);
Usuario_Ahora Varchar2(50);
Begin
Fecha_Ahora := Sysdate;
Equipo_Ahora := Sys_Context('Userenv', 'Host');
Select User Into Usuario_Ahora From Dual;

If Inserting Then
Insert Into Historial_Cotizacion
(Cod_Coti,Cod_Prov,Fecha,Tipo,Detalle,Precio,Fecha_Modif,Equipo_Modif,Usuario_M
odif,Tipo_Modif)Values(:New.Cod_Coti,:New.Cod_Prov,:[Link],:[Link],:[Link]
alle,:[Link],Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'I');
End If;
If Updating Then
Insert Into Historial_Cotizacion
(Cod_Coti,Cod_Prov,Fecha,Tipo,Detalle,Precio,Fecha_Modif,Equipo_Modif,Usuario_M

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 81 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion
odif,Tipo_Modif)Values(:Old.Cod_Coti,:New.Cod_Prov,:[Link],:[Link],:[Link]
alle,:[Link],Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'A');
End If;
If Deleting Then
Insert Into Historial_Cotizacion
(Cod_Coti,Cod_Prov,Fecha,Tipo,Detalle,Precio,Fecha_Modif,Equipo_Modif,Usuario_M
odif,Tipo_Modif)Values(:Old.Cod_Coti,:Old.Cod_Prov,:[Link],:[Link],:[Link],
:[Link],Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'E');
End If;
End;

Ejemplo 06

Create Or Replace Trigger Tr_Historial_Movimientos


After Insert Or Update Or Delete On Movimientos
For Each Row
Declare
Fecha_Ahora Date;
Equipo_Ahora Varchar2(50);
Usuario_Ahora Varchar2(50);
Begin
Fecha_Ahora := Sysdate;
Equipo_Ahora := Sys_Context('Userenv', 'Host');
Select User Into Usuario_Ahora From Dual;

If Inserting Then
Insert Into Historial_Movimientos
(Cod_Movi,Fecha,Cod_Comp,Cod_Empl,Motivo,Observacion,Fecha_Modif,Equipo_Mo
dif,Usuario_Modif,Tipo_Modif)Values(:New.Cod_Movi,:[Link],:New.Cod_Comp,:Ne
w.Cod_Empl,:[Link],:[Link],Fecha_Ahora,Equipo_Ahora,Usuario_Aho
ra,'I');
End If;
If Updating Then
Insert Into Historial_Movimientos
(Cod_Movi,Fecha,Cod_Comp,Cod_Empl,Motivo,Observacion,Fecha_Modif,Equipo_Mo
dif,Usuario_Modif,Tipo_Modif)Values(:Old.Cod_Movi,:[Link],:New.Cod_Comp,:Ne
w.Cod_Empl,:[Link],:[Link],Fecha_Ahora,Equipo_Ahora,Usuario_Aho
ra,'A');
End If;
If Deleting Then
Insert Into Historial_Movimientos
(Cod_Movi,Fecha,Cod_Comp,Cod_Empl,Motivo,Observacion,Fecha_Modif,Equipo_Mo
dif,Usuario_Modif,Tipo_Modif)Values(:Old.Cod_Movi,:[Link],:Old.Cod_Comp,:Old.C
od_Empl,:[Link],:[Link],Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'E')
;
End If;
END;

1. Creacin de usuarios

Una de las ms bsicas tareas de un administrador de base de datos es identificar los usuarios. Cada
usuario que conecta en la base de datos debe de tener una cuenta. En las cuentas compartidas son
difciles de aplicar una auditoria.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 82 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Para crear un usuario utilizamos la sentencia CREATE USER. Cuando creas una cuenta como mnimo
tienes que asignar un nico nombre (username) y una contrasea para poder autenticarse.

Para cambiar alguno de los atributos que se le ha aadido al usuario creado se utiliza la sentencia ALTER
USER.

2. Autenticacin Oracle

Cuando uno se conecta con una instancia de una base de datos la cuenta de usuario debe de estar
autenticada. ORACLE provee tres mtodos de autenticacin para nuestra cuenta de usuario.

AUTENTICACIN MEDIANTE PASSWORD:

Cuando un usuario conecta con una base de datos verifica que este usuario y la contrasea introducida
almacenada en la base de datos, sea correcta. Las contraseas se guardan encriptadas en la base de
datos (en el data dictionary).

SQL > CREATE USER david IDENTIFIED BY tititus;

En este caso tititus es la contrasea de david que ser guardada encriptada en la base de datos.

AUTENTICACIN EXTERNA:

Cuando un usuario conecta con la base de datos se verifica que el nombre de usuario es el mismo que el
nombre de usuario del sistema operativo para permitir la validacin.

No se almacenan las cuentas en la base de datos de ninguna forma. Estas cuentas estn siempre referidas
con OPS$ .A partir de la versin 10g puedes configurar OS_AUTHENT_PREFIX en el spfile

SQL > CREATE USER ops$david IDENTIFIED BY tititus;

Mediante IDENTIFIED EXTERNALLY decimos a la base de datos que nuestra cuenta es externa y tiene
que ser validada con el sistema operativo.

AUTENTICACIN GLOBAL:

Cuando un usuario se conecta con la base de datos se verifica globalmente cuando la informacin pasa
por una opcin avanzada de seguridad ( ADVANCED SECURITY OPTION ) para la autenticacin tal
como Kerberos, RADIUS ....

Para las cuentas globales no se almacena tampoco nada en la base de datos.

SQL > CREATE USER david IDENTIFIED GLOBALLY AS CN=alumnos,OU=campus .......

Mediante IDENTIFIED GLOBALLY decimos a la base de datos que nuestra cuenta se autentica
globalmente, mediante otra opcin de seguridad avanzada.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 83 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

3. Asignaciones a los usuarios

ASIGNACIN DE UN USUARIO A UN TABLESPACE ( DEFAULT TABLESPACE )

Mediante esta sentencia asignamos un usuario a un tablespace, este ser su tablespace por defecto
cuando creamos un usuario.

SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users;

Mediante esta sentencia, en caso de tener creado ya el usuario le asignamos un tablespace.

SQL > ALTER USER david DEFAULT TABLESPACE users;

La base de datos toma un tablespace por defecto, en caso de querer cambiar este tablespace utilizamos la
siguiente sentencia

SQL > ALTER DATABASE DEFAULT TABLESPACE users;

ASIGNACIN DE UN USUARIO A UN TABLESPACE TEMPORAL

Un tablespace temporal se utiliza para almacenar segmentos temporales que son creados durante
operaciones como ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX. A veces a los
usuarios se les asocia un tablespace temporal para realizar este tipo de operaciones, cuando estas
operaciones finalizan este segmento temporal que se ha creado exclusivamente para la operacin
desaparece.

SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

Mediante TEMPORARY TABLESPACE asignamos como tablespace temporal temp al usuario david. En
caso de que el usuario est creado si queremos asignarle un tablespace temporal utilizamos ALTER USER

SQL > ALTER USER david TEMPORARY TABLESPACE Temp;

ASIGNACIN DE UN PERFIL A UN USUARIO

Al igual que podemos asignar un tablespace a un usuario, tambin podemos asignarle un perfil (profile). El
principal perfil ( profile ) por defecto se denomina default.

Si el usuario no est lo podemos crear de la siguiente forma:

SQL > CREATE USER david IDENTIFIED BY tititus


DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
PROFILE resource_profile;

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 84 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

En caso de que el usuario ya est creado al igual que en los anteriores casos utilizamos la
sentencia ALTER USER.

SQL > ALTER USER david PROFILE resource_profile;

BORRADO DE UN USUARIO

Para borrar un usuario utilizamos la sentencia DROP USER, podemos opcionalmente incluir la
opcin CASCADE, se utiliza para borrar recursivamente los objetos del usuario que se pretende borrar.

SQL > DROP USER david CASCADE

OTORGANDO PRIVILEGIOS (GRANTING)

A un usuario podemos otorgarle una serie de privilegios. Un privilegio permite a un usuario acceder a
ciertos objetos o realizar ciertas acciones:.
- Privilegios sobre Objetos ( Object privileges ) a permisos sobre vistas, tablas, secuencias,
procedimientos, paquetes.
- Privilegios del Sistema ( System privileges ) a permisos sobre niveles de la base de datos como pueden
ser conexin a la base de datos, creacin de usuarios, limitar cuentas.
- Privilegios sobre Roles ( Role privileges ) a muchos permisos son otorgados mediante roles agrupando un
conjunto de privilegios.

Para otorgar privilegios utilizamos la sentencia GRANT, para quitar un privilegio o permiso a un usuario
utilizamos la sentencia REVOKE

EJEMPLOS:

Privilegio sobre una tabla:

SQL > GRANT ALL ON tabla_alumnos TO david

Siendo tabla_alumnos una tabla de nuestra base de datos y david un usuario de esta, hemos asignado
mediante GRANT ALL,todos los permisos al usuario david sobre esta tabla.

GRANT ALL = permisos SELECT, INSERT, UPDATE, DELETE

Si queremos asignar slo uno de estos permisos utilizamos la misma sentencia pero con el permiso que
queramos otorgar.

SQL > GRANT SELECT ON tabla_alumnos TO david


SQL > GRANT SELECT,INSERT ON tabla_alumnos TO david

Privilegio sobre una vista:

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 85 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Para el caso de las vistas podemos a un usuario otorgar permisos SELECT, INSERT, UPDATE, DELETE,
DEBUG, REFERENCES.
Siendo vista_alumnos una vista de nuestra base de datos y david un usuario de esta:

Otorgamos al usuario david todos los permisos sobre la vista vista_alumnos.

SQL > GRANT ALL ON vista_alumnos TO david

Otorgamos al usuario david algunos permisos sobre la vista_alumnos

SQL > GRANT SELECT ON vista_alumnos TO david

SQL > GRANT SELECT,INSERT ON vista_alumnos TO david

Privilegio sobre una secuencia:

Con las secuencias pasa lo mismo que con los anteriores objetos vistos, para otorgar permisos se
utiliza GRANT. Los permisos que podemos otorgar a una secuencia es SELECT o ALTER.

Privilegio sobre un paquete,funcin o procedimiento:

Los permisos que podemos otorgar a las funciones, paquetes o procedimientos almacenados en nuestra
base de datos son los siguientes: EXECUTE, DEBUG.

QUITANDO PRIVILEGIOS

Si queremos quitar un privilegio a uno de estos objetos haremos lo mismo que con GRANT pero utilizando
la sentencia REVOKE.

SQL > REVOKE ALL ON tabla_usuarios FROM david

Principios Bsicos de Seguridad en Bases de


Datos

1. La seguridad de las bases de datos

La gran mayora de los datos sensibles del mundo estn almacenados en sistemas
gestores de bases de datos comerciales tales como Oracle, Microsoft SQL Server

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 86 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

entre otros, y atacar una bases de datos es uno de los objetivos favoritos para los
criminales.

Esto puede explicar por qu los ataques externos, tales como inyeccin de SQL,
subieron 345% en 2009, Esta tendencia es prueba adicional de que los agresores
tienen xito en hospedar pginas Web maliciosas, y de que las vulnerabilidades y
explotacin en relacin a los navegadores Web estn conformando un beneficio
importante para ellos[*]

Para empeorar las cosas, segn un estudio publicado en febrero de 2009 The
Independent Oracle Users Group (IOUG), casi la mitad de todos los usuarios de
Oracle tienen al menos dos parches sin aplicar en sus manejadores de bases de
datos [1].

Mientras que la atencin generalmente se ha centrado en asegurar los permetros


de las redes por medio de, firewalls, IDS / IPS y antivirus, cada vez ms las
organizaciones se estn enfocando en la seguridad de las bases de datos con datos
crticos, protegindolos de intrusiones y cambios no autorizados.

En las siguientes secciones daremos las siete recomendaciones para proteger una
base de datos en instalaciones tradicionales.

2. Principios bsicos de seguridad de bases de datos

En esta seccin daremos siete recomendaciones sobre seguridad en bases de


datos, instaladas en servidores propios de la organizacin.

2.1 Identifique su sensibilidad

No se puede asegurar lo que no se conoce.

Confeccione un buen catlogo de tablas o datos sensibles [2] de sus instancias de


base de datos. Adems, automatice el proceso de identificacin, ya que estos
datos y su correspondiente ubicacin pueden estar en constante cambio debido a
nuevas aplicaciones o cambios producto de fusiones y adquisiciones.

Desarrolle o adquiera herramientas de identificacin, asegurando stas contra el


malware [3], colocado en su base de datos el resultado de los ataques de
inyeccin SQL [4]; pues aparte de exponer informacin confidencial debido a
vulnerabilidades, como la inyeccin SQL, tambin facilita a los atacantes
incorporar otros ataques en el interior de la base de datos.

2.2 Evaluacin de la vulnerabilidad y la configuracin


Evale su configuracin de bases de datos, para asegurarse que no tiene huecos de
seguridad.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 87 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Esto incluye la verificacin de la forma en que se instal la base de datos y su


sistema operativo (por ejemplo, la comprobacin privilegios de grupos de archivo
-lectura, escritura y ejecucin- de base de datos y bitcoras de transacciones).

Asimismo con archivos con parmetros de configuracin y programas ejecutables.

Adems, es necesario verificar que no se est ejecutando la base de datos con


versiones que incluyen vulnerabilidades conocidas; as como impedir consultas SQL
desde las aplicaciones o capa de usuarios. Para ello se pueden considerar (como
administrador):

Limitar el acceso a los procedimientos a ciertos usuarios.


Delimitar el acceso a los datos para ciertos usuarios, procedimientos y/o
datos.
Declinar la coincidencia de horarios entre usuarios que coincidan.

2.3 Endurecimiento

Como resultado de una evaluacin de la vulnerabilidad a menudo se dan una serie


de recomendaciones especficas. Este es el primer paso en el endurecimiento de la
base de datos. Otros elementos de endurecimiento implican la eliminacin de
todas las funciones y opciones que se no utilicen. Aplique una poltica estricta
sobre que se puede y que no se puede hacer, pero asegrese de desactivar lo que
no necesita.

2.4 Audite

Una vez que haya creado una configuracin y controles de endurecimiento, realice
auto evaluaciones y seguimiento a las recomendaciones de auditora para asegurar
que no se desve de su objetivo (la seguridad).

Automatice el control de la configuracin de tal forma que se registre cualquier


cambio en la misma. Implemente alertas sobre cambios en la configuracin. Cada
vez que un cambio se realice, este podra afectar a la seguridad de la base de
datos.

2.5 Monitoreo

Monitoreo en tiempo real de la actividad de base de datos es clave para limitar su


exposicin, aplique o adquiera agentes inteligentes [5] de monitoreo, deteccin
de intrusiones y uso indebido.

Por ejemplo, alertas sobre patrones inusuales de acceso, que podran indicar la
presencia de un ataque de inyeccin SQL, cambios no autorizados a los datos,

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 88 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

cambios en privilegios de las cuentas, y los cambios de configuracin que se


ejecutan a mediante de comandos de SQL.

Recuerde que el monitoreo usuarios privilegiados, es requisito para la


gobernabilidad de datos y cumplimiento de regulaciones como SOX y regulaciones
de privacidad. Tambin, ayuda a detectar intrusiones, ya que muchos de los
ataques ms comunes se hacen con privilegios de usuario de alto nivel.

El monitoreo dinmico es tambin un elemento esencial de la evaluacin de


vulnerabilidad, le permite ir ms all de evaluaciones estticas o forenses. Un
ejemplo clsico lo vemos cuando mltiples usuarios comparten credenciales con
privilegios o un nmero excesivo de inicios de sesin de base de datos.

2.6 Pistas de Auditora

Aplique pistas de auditora y genere trazabilidad de las actividades que afectan la


integridad de los datos, o la visualizacin los datos sensibles.

Recuerde que es un requisito de auditora, y tambin es importante para las


investigaciones forenses.

La mayora de las organizaciones en la actualidad emplean alguna forma de


manual de auditora de transacciones o aplicaciones nativas de los sistemas
gestores de bases de datos. Sin embargo, estas aplicaciones son a menudo
desactivadas, debido a:

su complejidad
altos costos operativos
problemas de rendimiento
la falta de segregacin de funciones y
la necesidad mayor capacidad de almacenamiento.

Afortunadamente, se han desarrollado soluciones con un mnimo de impacto en el


rendimiento y poco costo operativo, basado en tecnologas de agente inteligentes .

2.7 Autenticacin, control de acceso, y Gestin de derechos

No todos los datos y no todos los usuarios son creados iguales. Usted debe
autenticar a los usuarios, garantizar la rendicin de cuentas por usuario, y
administrar los privilegios para de limitar el acceso a los datos.

Implemente y revise peridicamente los informes sobre de derechos de usuarios,


como parte de un proceso de formal de auditora.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 89 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Utilice el cifrado [6] para hacer ilegibles los datos confidenciales, complique el
trabajo a los atacantes, esto incluye el cifrado de los datos en trnsito, de modo
que un atacante no puede escuchar en la capa de red y tener acceso a los datos
cuando se enva al cliente de base de datos.

Administrador de base de datos


El Administrador de bases de datos (DBA1 ) es el profesional de tecnologas de la
informacin y la comunicacin , responsable de los aspectos tcnicos, tecnolgicos,
cientficos, inteligencia de negocios y legales de bases de datos . Los
administradores de bases de datos, implementan, dan soporte y gestionan, bases
de datos corporativas. Los administradores de bases de datos, crean y configuran
bases de datos relacionales. Los administradores de bases de datos, son
responsables de la integridad de los datos y la disponibilidad. Los administradores
de bases de datos, disean, despliegan y monitorizan servidores de bases de datos.
Los administradores de bases de datos, disean la distribucin de los datos y las
soluciones de almacenamiento. Los DBAs, garantizan la seguridad de las bases de
datos, incluyendo backups y recuperacin de desastres. Los administradores de
bases de datos, planean e implementan el aprovisionamiento de los datos y
aplicaciones. Los administradores de bases de datos, disean planes de
contigencia. Los administradores de bases de datos, disean y crean las bases de
datos corporativas de soluciones avanzadas. Los DBAs, analizan y reportan datos
corporativos que ayuden a la toma de decisiones en la inteligencia de negocios.
Los DBAs, producen diagramas de entidades relacionales y diagramas de flujos de
datos, normalizacin esquemtica, localizacin lgica y fsica de bases de datos y
parmetros de tablas. Los administradores de bases de datos tienen competencias
y capacidades en uno o ms sistemas de gestin de bases de datos, algunos
ejemplos: Microsoft SQL Server, IBM DB2, Oracle MySQL, Oracle database y SQL
Anywhere. En ingeniera estadstica es una de las cualificaciones subyacentes, que
trata la informacin para almacenarla, hacerla altamente explotable y altamente
disponible. Adems, vela por la eficacia tcnolgica del almacenamiento en el
desempeo de investigaciones, buscando inferencias slidas y compactas, para
canalizar resultados manteniendo un equilibrio entre las ciencias involucradas y la
propiamente enunciada, ingeniera estadstica de las ciencias de la computacin.
El control de tecnologas de bases de datos y las matemticas permite al DBA
rendir informes, realizar reportes sobre cualquier proceso industrial y participar
de forma activa en procesos avanzados de desarrollo, consolidando las
capacidades propias de un profesional de tecnologas de la informacin y un
ingeniero especialista. Los factores de xito en la carrera del DBA se versan sobre
las cualificaciones en los avances de las tecnologas de gestin
Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 90 de 94
E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

del almacenamiento , los avances en sistemas gestores de bases de datos y


requerimientos de cualificacin para cada proyecto como garanta de calidad
necesaria en el rol a asignar, incluyendo, tcnicas avanzadas de gestin
de infraestructuras tecnolgicas , la gestin de protocolos y servicios de redes, la
optimizacin de cdigo de programacin, garantizar el procesamiento eficaz de
informacin, la gestin de interfaces integrales para el tratamiento de datos, la
gestin de cambios, la gestin por objetivos y las gestin por resultados. Se
definen algunos aspectos que incluye la profesin del DBA:

Profesional de software de fabricante - Profesionales acreditados en


administracin de bases de datos y tecnologas especficas,
desde, tecnlogos , ingenieros , post-graduados , msteres y doctorados (en
proyectos de investigacin como en biotecnologas y tratamiento de datos
de Genmica , por ejemplo).
Metodologa de desarrollo software - Ofreciendo y compartiendo diseos
concretos sobre el trabajo total, estandarizando sus actividades,
definiendo arquitecturas compartidas en un nico uso desde las fases
desarrollo y las implementaciones necesarias para ejercer el control de los
datos garantizando e inclusive el cumplimiento de los plazos de entrega,
intercambiando requerimientos de calidad en el software y cumpliendo con
todos los acuerdos contractuales alineados al objetivo empresarial, por
ejemplo SOA .

Optimizacin de software - Realizacin de tareas de mejora y solucin de


problemas en los niveles de servicios implicados.

Ingeniera del software y Herramientas CASE - Diseo, Planeacin,


implementacin y gestin de arquitecturas e infraestructuras software.

Ingeniera de requerimientos - Estudios de funcionalidad y compatibilidad


en la analtica del negocio.

Tecnologas de almacenamiento - Coordinacin de Racks, plataformas


hardware & software de sistemas operativos , cabinas de almacenamiento,
sistemas de particionamiento, Centro de procesamiento de datos y
comunicaciones.

Desastres y recuperacin - Implementacin de copias de seguridad y


centros de respaldo .

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 91 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Integridad de datos - Integrar proyectos compatibles de formato


controlando la consistencia de los datos desde los requerimientos del
desarrollo hasta la integracin de los sistemas con las lineas del negocio .

Seguridad tecnolgica - Brindar las soluciones en los estudios de gestin de


riesgos y estudios avanzados (Guerra informtica, guerra digital o
ciberguerra ).

Disponibilidad - Asegurar la continuidad de los servicios de las bases de


datos "full time, 24x7, non stop database, open 369".

Anlisis de sistemas - Analizar ciclos de procesamiento y el retorno


funcional de todas las capas de negocio .

Testing - Realizar pruebas de software y/o de hardware.

Gestin de proyectos .

Auditoras tecnolgicas del DBA

El DBA implementa protocolos y soluciones de seguridad en infraestructuras


tecnolgicas, implementando los planes de seguridad de aplicacin orientadas a
producto, implementando requerimientos deauditora e implementando soluciones
estrictas de seguridad (Gobierno y leyes); Adems, se encarga de disear,
actualizar y ejecutar planes de seguridad integrales desde la inteligencia
productiva de negocios y los requerimientos debidamente expuestos.

Ingeniera de soporte del DBA

Los ingenieros de soporte DBA estn encargados de ofrecer soluciones de


disponibilidad en los planes de continuidad de negocios y en todos los procesos de
aprovisionamiento de datos en entornos de produccin y entornos de desarrollo,
coordinando procesos de entrega con gerentes de servicio y lderes de equipo de
Tecnologas de la Informacin, documentando procesos de mejora y cumpliendo
con los objetivos establecidos por la direccin de TI definidas en
herramientas ITIL .

Testing del DBA

Los ingenieros de testing realizan pruebas de rendimiento, pruebas de impacto,


pruebas funcionales, pruebas de cdigo, pruebas de carga de datos, pruebas de
implementacin y pruebas de integracin en proyectos Investigacin, desarrollo e

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 92 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

innovacin. Para la ejecucin de pruebas es necesario aplicar las metodologas


basadas en Ingeniera del software, sus aplicaciones funcionales y los
requerimientos de calidad, aadiendo las lineas base de la ingeniera
requerimientos en la inteligencia de negocios y las tecnologas de la informacin.

Roles del DBA

Analistas de datos.
Analistas de sistemas.

Analistas de programacin.

Administradores de bases de datos.

Consultores de sistemas.

Consultores de tecnologas de la informacin.

Consultores de aplicaciones.

Consultores de programacin.

Programadores de bases de datos.

Programadores de procesos de negocio.

Integradores de datos.

Ingenieros de datos.

Ingenieros estadsticos.

Jefes de centros de datos.

Coordinadores de rea.

Jefes de aplicaciones.

Ingenieros de bases de datos espaciales .

Minera de datos espaciales.

Jefe de proyectos espaciales.

Ingenieros de software.

Instructores de software.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 93 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc
Implementacion

Profesores de bases de datos.

Gestores de green IT .

Ingenieros de soporte TI.

Jefes de soporte TI.

Administrador de proyectos de minera de datos .

Consultor de proyectos de Minera de datos.

Directores de rea.

Contractors.

Gerentes de producto.

Gerentes de consultora.

Gerentes de soporte TI.

Instructor de Sistemas & Apps to Office: Jhonny Pandal Poma Pgina 94 de 94


E-mail: JhonnyUpc@[Link] Facebook: JPP12 Twitter: @HuberUpc

También podría gustarte