Sie sind auf Seite 1von 96

Pgina 1 de 96

Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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: MAUICO FLORES, ROLY. 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 >>




Pgina 2 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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





















Pgina 3 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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

Pgina 4 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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
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

Pgina 5 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
from dba_data_files;

Pgina 6 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
TEMA 3

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.

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




Primero Pasos
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
Herramienta Grafica SQLDeveloper

Pgina 7 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



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.
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
cuando necesitemos usarlos. SOLO UN
USUARIO CON PERMISOS DE SYSTEM
puede gestionar todos los objetos mostrados

Pgina 8 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.



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
SYSTEM. Luego te pide introducir la contrasea (la 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 =)
Herramienta de Oracle LINEA DE COMANDO

Pgina 9 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

TEMA 3 Desarrollo de esquema Cyberplaza



Diseo de Tablas del esquema Cyberplaza

Pgina 10 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


Pgina 11 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864























Pgina 12 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864













Pgina 13 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
Actividad N1






Tablas de Auditoria del esquema Cyberplaza

Pgina 14 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
TEMA 3
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.


CREATE TABLESPACE Pandal
LOGGING
DATAFILE ' D:\PANDAL\DAT\Pandal.dbf '
SIZE 300M;


CREATE USER Jhonny
PROFILE DEFAULT
IDENTIFIED BY TuPirata
DEFAULT TABLESPACE Pandal
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;


GRANT CONNECT TO Jhonny;
GRANT RESOURCE TO Jhonny;



Qu funcin cumple esta consulta?
select * from dba_data_files;


select tablespace_name, file_name, bytes /1024/1024
from dba_data_files;



Aqu estamos creando una particin
lgica de 128mb. Este ts de nombre
Pandal. Previamente debes contar con
las carpetas de destino
CREACION DE TABLESPACE
Aqu estamos creando un usuario de
nombre: Jhonny donde la
Contrasea es: TuPirata Es
importante tener estos datos de
acceso
CREACION DE USUARIOS
ASIGNANDO PERMISOS DE ACCESO A LA DATA Y CREACION DE OBJETOS
Despus de haber asignado estos
dos permisos. Debemos acceder al
sistema con el usuario Jhonny y
crear los sgtes. objetos
Creando TABLESPACE

Pgina 15 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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

.







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.
Entendiendo un TABLESPACE
Aqu estamos creando 3 archivos dbf
que nos permiten ampliar el tamao de
un tablespace. Es importante recordar
que debemos ser SYSTEM

Pgina 16 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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?



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



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.


Probar tus scripst y luego completar
FACIL Y RAPIDO

Antes de eliminar un tablespace debes
asegurarte que no est en actividad. O
que alguien est usando la base de datos.
a) Deshabilitar el Tablespace
b) Eliminar el Tablespace

Pgina 17 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
TEMA 4
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 Manu.dbf. Por ultimo gestionado por el usuario Huber que tiene la
contrasea Campeon
Importando y exportando un ESQUEMA

Pgina 18 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



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


EXPORTANDO ESQUEMA

Pgina 19 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
NOTA: LAS CARPETAS DE DESTINO YA DEBEN DE EXISTIR

10.- seguidamente debemos completar los siguientes pasos
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:


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


IMPORTANDO ESQUEMA

Pgina 20 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

3.- Ingresar Usuario Huber Contrasea Campeon


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
Importar permisos s
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
a las preguntas del importador responde
con la letra s en las ultimas 4 preguntas

Pgina 21 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
Si registros y los tipos de datos adecuados
TEMA 5
1.- CHAR(n)
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 decimales.No 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 vlida.Desde 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.
Tipos de Datos - Tablas

Pgina 22 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

TEMA 6
1.- Restriccin UNIQUE
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
UniqueNomProv.Se 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 datos.Tambin 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:
Uso y manejo de Restricciones

Pgina 23 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

1.3.- Desactivar una restriccin de unicidad
La sintaxis para deshabilitar una restriccin nica es la siguiente:



1.4.- Permitir una restriccin de unicidad
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








Pgina 24 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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.
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











Pgina 25 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

Relacin de Datos entre ambas tablas




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:















Pgina 26 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

TEMA 7
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 (p.ej. 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.

S.Q.L. La sentencia SELECT















S.Q.L. Sentencia Bsica







Ejemplos:









El Lenguaje SQL

Pgina 27 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



S.Q.L.Etiquetas 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.

S.Q.L.Alias 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.




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.

Pgina 28 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
NULL no representa ni un cero ni un blanco.
Las expresiones aritmticas que contengan NULL se evalan a NULL (<> cero).

S.Q.L.Operador 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:











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



Pgina 29 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



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
_ 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

S.Q.L.Recuperaciones 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.







Pgina 30 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



TEMA 8
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









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




Consultas SQL

Pgina 31 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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








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









Pgina 32 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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





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






Pgina 33 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



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');









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,l.city from countries c, locations l where
(c.country_id=l.country_id(+))and(c.country_name like 'a%');
Resultado


Pgina 34 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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




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






Pgina 35 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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









14: Cantidad de empleados por departamentos con alias
select department_id as departamento,count(*)as empleados
from employees group by department_id
Resultado












Pgina 36 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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




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

Pgina 37 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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




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%'






Pgina 38 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



TEMA 9
1.- S.Q.L. Funciones SQL
Existen dos tipos de funciones:
o Funciones a nivel de fila
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.
5.- S.Q.L. Funciones Numricas
ROUND (columna | expresin, n)
Funciones SQL

Pgina 39 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.

Pgina 40 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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)

Pgina 41 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.- S.Q.L.Uso 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.- S.Q.L.Consultas 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.- S.Q.L.Clusula 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@hotmail.com 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.










Pgina 42 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864












TEMA 10
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

S.Q.L.Concepto 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
Inner Join + y + Tablas

Pgina 43 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
Ejemplo:
S.Q.L.Tipos 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.

Pgina 44 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
Si se le aade: AND emp.deptno 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
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.
Subconsultas

Pgina 45 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
Utilice operadores a nivel de fila para subconsultas que devuelvan solo una fila
MONOREGISTRO.
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


Pgina 46 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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
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.
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.
DML

Pgina 47 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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

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
P.ej.: Modificar el oficio y departamento del empleado 7698, con los valores
correspondientes actualmente al empleado 7499:


Pgina 48 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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
S.Q.L.Definicin de Datos (DDL)
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.
DDL

Pgina 49 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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
DATE
Valores de fecha y hora. Entre el 1 Enero 4712 A.C. Y el 31
Diciembre del 4712 D.C.
LONG Dato carcter de long.variable hasta 2 Gb.
CLOB Dato carcter single-byte de hasta 4 Gb.
RAW(tamao) y LONG
RAW
Datos Binarios segn tamao especificado y Datos Binarios de
long.variable 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
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.

Pgina 50 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.
S.Q.L.Sentencia 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.








TEMA 12
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.
VISTASL

Pgina 51 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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
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.

Pgina 52 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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@hotmail.com con el asunto: DDL













TEMA 13
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.
CURSORES

Pgina 53 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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


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 cuntas 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;


Pgina 54 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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







2.- Abrir Oracle por LINEA DE COMANDO SQL (pantalla negra)


3.- Ingresar EDIT Lista

Aparecer una ventana de bloc de
notas. Debes guardar el archivo con el
nombre Lista.sql en el disco local D:

Pgina 55 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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 ListaContar.sql, en su interior le agregamos el siguiente
cursor y luego lo ejecutamos.





01 Ejemplo
Qu te muestra
dicho cursor y
porque?


Pgina 56 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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:










ALGUNOS OTROS EJEMPLOS SOBRE CURSORES (auspiciadores externos)









Pgina 57 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864





















TEMA 14
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

Pgina 58 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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).









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.

Pgina 59 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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








































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:



Pgina 60 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864





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


















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


Pgina 61 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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








Ejemplo 04

Pgina 62 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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

















Seguramente al ingresar unos nuevos registros tendrs problemas de valores y claves
duplicadas. Como t ya eres grandecito. Bscale una solucin a esto ok.








Pgina 63 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
TEMA 15
No permite aplicar a un sistema de informacin rendimiento y seguridad. En este material le
entregamos todo para ser trabajado desde SQLDEVELOPER


























































PROCEDIMIENTOS DE GESTION
Creando tabla y registros
Creando Usp_Buscar_Usuario
Ejecutando Usp_Buscar_Usuario

Pgina 64 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864





























































Creando Usp_Guardar_Usuario
Ejecutando Usp_Guardar_Usuario
Creando Usp_Editar_Usuario
Ejecutando Usp_Editar_Usuario

Pgina 65 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864




































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.







Creando Usp_Eliminar_Usuario
Ejecutando Usp_Eliminar_Usuario
Creando y Ejecutando Usp_Listar_Creadores

Pgina 66 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.
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.




Pgina 67 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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:













Pgina 68 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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.


















Pgina 69 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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:









Pgina 70 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

Flujo de IF-THEN-ELSE



Flujo de IF-THEN-ELSIF




Condiciones Booleanas








Pgina 71 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.
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:













Pgina 72 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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:


















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.

Pgina 73 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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:













Pgina 74 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
Ejemplos de Case








probando



























Pgina 75 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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.






EL DISEO DEL FORMULARIO DEBE SER A TU CRITERIO
CAPA DE DATOS
CAPA DE PRESENTACION

Pgina 76 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



Imports System.Data.OracleClient
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='" & TXTCODCLI.Text & "'"
Dim cmd As New OracleCommand(orden, cn)
Dim dr As OracleDataReader
cn.Open()
dr = cmd.ExecuteReader
If dr.Read Then
TXTNOMCLI.Text = dr(1)
TXTDNICLI.Text = dr(2)
Else
MsgBox("no existe ...")
End If
cn.Close()

End Sub

Sub BUSCAR_PRODUCTO()

orden = "select*from producto where codprod='" & TXTCODPROD.Text & "'"
Dim cmd As New OracleCommand(orden, cn)
Dim dr As OracleDataReader
cn.Open()
dr = cmd.ExecuteReader
If dr.Read Then
TXTNOMPROD.Text = dr(1)
TXTPRECIO.Text = dr(2)
TXTCANT.Focus()
Else
MsgBox("no existe ...")
End If
cn.Close()

End Sub

Sub BUSCAR_EMPLEADO()

orden = "select*from EMPLEADO where codEMP='" & txtcodemp.Text & "'"
Dim cmd As New OracleCommand(orden, cn)
Dim dr As OracleDataReader
cn.Open()
dr = cmd.ExecuteReader
If dr.Read Then
txtnomemp.Text = dr(1)
Else
MsgBox("no existe ...")
End If
cn.Close()

CODIGO DEL FORM

Pgina 77 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
End Sub

Sub TOTALES()
Dim SUMA, IGV, NETO As Decimal
For K As Integer = 0 To LSTCOD.Items.Count - 1
SUMA = SUMA + Val(LSTSUB.Items(K))
Next
IGV = SUMA * 0.18
NETO = SUMA + IGV

TXTTOTAL.Text = SUMA
TXTIGV.Text = IGV
TXTNETO.Text = NETO
End Sub

Programando sobre los botones

Private Sub TXTCODCLI_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TXTCODCLI.KeyPress
If Asc(e.KeyChar) = 13 Then
Call buscar_cliente()
End If
End Sub

Private Sub TXTCODPROD_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TXTCODPROD.KeyPress
If Asc(e.KeyChar) = 13 Then
Call BUSCAR_PRODUCTO()
End If
End Sub

Private Sub btnbuscaremp_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnbuscaremp.Click
Call BUSCAR_EMPLEADO()
End Sub

Private Sub BTNAGREGAR_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BTNAGREGAR.Click

Dim subt As Decimal

LSTCOD.Items.Add(Me.TXTCODPROD.Text)
LSTDES.Items.Add(Me.TXTNOMPROD.Text)
LSTPRE.Items.Add(Me.TXTPRECIO.Text)
LSTCAN.Items.Add(Me.TXTCANT.Text)

subt = Val(TXTPRECIO.Text) * Val(TXTCANT.Text)
LSTSUB.Items.Add(subt)

TXTCODPROD.Clear()
TXTNOMPROD.Clear()
TXTPRECIO.Clear()
TXTCANT.Clear()

TXTCODPROD.Clear()

Call TOTALES()
End Sub



Pgina 78 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ToolStripMenuItem1.Click
If LSTCOD.SelectedIndex <> -1 Then
Dim Idx As Integer
Idx = LSTCOD.SelectedIndex

LSTCAN.Items.RemoveAt(Idx)
LSTCOD.Items.RemoveAt(Idx)
LSTDES.Items.RemoveAt(Idx)
LSTPRE.Items.RemoveAt(Idx)
LSTSUB.Items.RemoveAt(Idx)
Call TOTALES()
Else
MsgBox("SELECCIONE CODIGO DE PRODUCTO A ELIMINAR .... ")
End If
End Sub


Sub GRABAR_FACTURA()
Orden = "INSERT INTO FACTURA VALUES('" & txtcodfact.Text & "',
'" & TXTFECHA.Text & "','" & TXTCODCLI.Text & "',
'" & txtcodemp.Text & "'," & TXTTOTAL.Text & ",
" & TXTIGV.Text & "," & TXTNETO.Text & ")"
Dim CMD As New OracleCommand(orden, cn)
cn.Open()
CMD.ExecuteNonQuery()
cn.Close()
MsgBox("PROCESANDO AL 50% .......")

End Sub

Sub GRABAR_DETALLES()
For K As Integer = 0 To LSTSUB.Items.Count - 1
Dim COD, NOM As String
Dim PRE, CAN, SUBT As Decimal
COD = LSTCOD.Items(K)
NOM = LSTDES.Items(K)
PRE = Val(LSTPRE.Items(K))
CAN = Val(LSTCAN.Items(K))
SUBT = (Val(LSTSUB.Items(K)))

orden = "INSERT INTO DETALLE VALUES('" & txtcodfact.Text & "',
'" & COD & "','" & NOM & "'," & PRE & "," & CAN & "," & SUBT & ")"
Dim CMD As New OracleCommand(orden, cn)
cn.Open()
CMD.ExecuteNonQuery()
cn.Close()
Next
MsgBox("PROCESANDO AL 99% .......")
MsgBox(" ----- FACTURA GRABADA AL 100% -----")
End Sub







Pgina 79 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864



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.

Pgina 80 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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 ejecutar.Los 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

Pgina 81 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.
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:








Pgina 82 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864





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.
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,Ob
servacion,Fecha_Modif,Equipo_Modif,Usuario_Modif,Tipo_Modif)
Values(:New.Cod_Hard,:New.Cod_Fabr,:New.Nombre,:New.Modelo,:New.Serie,:New.
Frecuencia,:New.Capacidad,:New.Interfaz,:New.Estado,:New.Observacion,Fecha_Ahor
a,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,Ob
servacion,Fecha_Modif,Equipo_Modif,Usuario_Modif,Tipo_Modif)
Values(:Old.Cod_Hard,:New.Cod_Fabr,:New.Nombre,:New.Modelo,:New.Serie,:New.Fr
ecuencia,:New.Capacidad,:New.Interfaz,:New.Estado,:New.Observacion,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,Ob
servacion,Fecha_Modif,Equipo_Modif,Usuario_Modif,Tipo_Modif)
Values(:Old.Cod_Hard,:Old.Cod_Fabr,:Old.Nombre,:Old.Modelo,:Old.Serie,:Old.Frecue
ncia,:Old.Capacidad,:Old.Interfaz,:Old.Estado,:Old.Observacion,Fecha_Ahora,Equipo_
Ahora,Usuario_Ahora,'E');
End If;
End;



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;
Ejemplo 01

Ejemplo 02


Pgina 83 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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,:New.Nombre,:New.Version_S,:New.Serie,:New
.Obervacion,Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'I');
End If;
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,:New.Nombre,:New.Version_S,:New.Serie,: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,:Old.Nombre,:Old.Version_S,:Old.Serie,:Old.Ober
vacion,Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'E');

End If;
End;




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,:New.Cantidad,:New.Tipo,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,:New.Cantidad,:New.Tipo,Fecha_Ahora,Equip
o_Ahora,Usuario_Ahora,'A');
End If;


Ejemplo 03


Pgina 84 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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,:Old.Cantidad,:Old.Tipo,Fecha_Ahora,Equipo_
Ahora,Usuario_Ahora,'E');
End If;
End;




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,:New.Ip,:New.Nombre,:New.Usuario,:New.Cla
ve,:New.Estado,:New.Observacion,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,:New.Ip,:
New.Nombre,:New.Usuario,:New.Clave,:New.Estado,:New.Observacion,Fecha_Ahora,
Equipo_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,:Old.Ip,:Old.Nombre,:Old.Usuario,:Old.Clave,:Ol
d.Estado,:Old.Observacion,Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'E');
End If;
End;



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');
Ejemplo 04

Ejemplo 05


Pgina 85 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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,:New.Fecha,:New.Tipo,:New.D
etalle,:New.Precio,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
odif,Tipo_Modif)Values(:Old.Cod_Coti,:New.Cod_Prov,:New.Fecha,:New.Tipo,:New.Det
alle,:New.Precio,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,:Old.Fecha,:Old.Tipo,:Old.Detalle,
:Old.Precio,Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'E');
End If;
End;




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,:New.Fecha,:New.Cod_Comp,:N
ew.Cod_Empl,:New.Motivo,:New.Observacion,Fecha_Ahora,Equipo_Ahora,Usuario_Ah
ora,'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,:New.Fecha,:New.Cod_Comp,:Ne
w.Cod_Empl,:New.Motivo,:New.Observacion,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,:Old.Fecha,:Old.Cod_Comp,:Old.
Cod_Empl,:Old.Motivo,:Old.Observacion,Fecha_Ahora,Equipo_Ahora,Usuario_Ahora,'
E');
End If;
END;

Ejemplo 06


Pgina 86 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864


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.

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 ....

Pgina 87 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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.

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


Pgina 88 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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;

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

Pgina 89 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864

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:

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







Pgina 90 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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
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

Pgina 91 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.
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 configuraci n. Cada
vez que un cambio se realice, este podra afectar a la seguridad de la base de
datos.
2.5 Monitoreo

Pgina 92 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
Monitoreo en tiempo real de la actividad de base de datos es clave para limitar su
exposicin, aplique o adquiera agentes inteligentes [5] de moni toreo, 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,
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.

Pgina 93 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
Implemente y revise peridicamente los informes sobre de derechos de usuarios,
como parte de un proceso de formal de auditora.
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

Pgina 94 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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 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.

Pgina 95 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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
innovacin. Para la ejecucin de pruebas es necesario aplicar las metodologas
basadas en Ingeniera del software, sus aplicaciones funcionales y los

Pgina 96 de 96


Implementacion
Instructor de Sistemas & Apps to Office: Mauico Flores, Roly
E-mail: SystemGroup_Peru@Live.Com Movil: 9-6774-3864
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.
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.

Das könnte Ihnen auch gefallen