Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Fecha de envío al profesor de su Prueba: 01/05/2009 – Tiempo total empleado estimado: 40 horas Nota: BBDD de trabajo ORCL0506 Todos los usuarios tienen la misma contraseña 123456, excepto: sys:manager, bdatos:bdatos, bdatos1:bdatos1, OPS$PC1\JAVCASTA (contraseña privada) Instalación Oracle 11g para Windows Creando una base de datos Oracle Asistente Administración para Windows (AAW) Servidor de Aplicaciones Creación usuario Externo Creación Usuario Ejercicios o Ejercicio 5.1 o Ejercicio 5.2 o Ejercicio 5.3 o Ejercicio 5.4 o Ejercicio 5.5 o Ejercicio 5.6 o Ejercicio 5.7 o Ejercicio 5.8 Exporto la BBDD ORCL0506 --------------------------------------------------------------------- Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 1 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Instalación Oracle 11g para Windows Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 2 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Sigo la instalación por defecto … … Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 3 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 4 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 5 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 6 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 * Creando una base de datos Oracle Para nuestros propósitos es conveniente tener una base de datos de repuesto, ya que la que hemos creado en la instalación puede corromperse dándonos no pocos quebraderos de cabeza. Así pues, además de la base de datos inicial crearemos una base nueva. Para ello seleccionaremos en el menú de inicio Oracle-OraDb11g_home1::Configuration and Migration Tools::Database Configuration Assistant. El asistente de configuración nos ofrece la siguiente vista Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 7 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 8 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Contraseña: manager Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 9 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 10 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 11 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 12 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 13 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 14 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 SCOTT: tiger AAW ( Asistente Administración para Windows): Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 15 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Creacion Usuario Externo …………. Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 16 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Servidor de aplicaciones: https://pc1:5500/em Al intentar conectarme tengo un error en el listener ( LISTENER en el socket tcp1521). Por lo que lo vuelvo a configurar Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 17 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Tras reiniciar servicios. Me conecto al Enterprise Manager Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 18 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 User: sys - pass: manager – Privilegio sysdba Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 19 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Creación del usuario bdatos:bdatos de tipo normal en la bbdd ORCL0506 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 20 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 PROMPT CREACION USUARIO BDATOS/BDATOS CREATE USER BDATOS IDENTIFIED BY bdatos ACCOUNT UNLOCK DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 500K ON USERS; Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 21 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Ejercicios: Ejercicio 5.1 Realizar, mediante el AAW el ejercicio Crear el usuario AAW indicado en la guía didáctica. Se creará pues un usuario validado por el sistema operativo, con la misma cuenta que ud. posee en su ordenador. Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 22 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 23 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Ejercicicio 5.2 Realizar el ejercicio SA indicado en la guía didáctica. Se creará pues el usuario bdatos/bdatos, mediante el Servidor de Aplicaciones. Este será un usario normal, no tendrá pues privilegios salvo sobre sus propias tablas. Creación del usuario bdatos:bdatos de tipo normal en la bbdd ORCL0506 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 24 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 PROMPT CREACION USUARIO BDATOS/BDATOS CREATE USER BDATOS IDENTIFIED BY bdatos ACCOUNT UNLOCK DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 500K ON USERS; Ejercicio 5.3 Crear un usario bdatos1 con password bdatos1 mediante SQL Plus. Guardar los comandos SQL en un fichero cuyo nombre seguirá las normas especificadas en la introducción Consulto los usuarios que existen que empiecen por B SQL> select username from DBA_USERS where username like 'B%'; USERNAME -----------------------------BDATOS BI Consulto todos los usuarios SQL> SELECT USERNAME FROM DBA_USERS; USERNAME -----------------------------MGMT_VIEW SYS … SCOTT BDATOS Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 25 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 OPS$PC1\JAVCASTA … SPATIAL_CSW_ADMIN_USR SPATIAL_WFS_ADMIN_USR 39 filas seleccionadas. SQL> Creamos el usuario bdatos1/bdatos1 SQL>CREATE USER BDATOS1 IDENTIFIED BY bdatos1 ACCOUNT UNLOCK DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 500K ON USERS; Usuario creado. Lo compruebo SQL> select username from DBA_USERS where username like 'B%' or username like 'OPS%'; USERNAME -----------------------------BDATOS1 BDATOS OPS$PC1\JAVCASTA BI Ejercicio 5.4 Dar permisos a los tres usuarios creados en los ejercicios anteriores, para que puedan leer y escribir datos en las mismas tablas. Usuarios: BDATOS, BDATOS1, OPS$PC1\JAVCASTA Miro sus privilegios: SQL> select * from dba_role_privs where grantee like 'B%' or grantee like 'OPS%'; GRANTEE GRANTED_ROLE ADM DEF ------------------------------ ------------------------------ --- --BDATOS CONNECT NO YES OPS$PC1\JAVCASTA DBA YES YES OPS$PC1\JAVCASTA CONNECT YES YES BI RESOURCE NO YES SQL> select * from dba_tab_privs where grantee='BDATOS' or grantee='BDATOS1' or grantee like 'OPS%'; ninguna fila seleccionada Miro sus tablespaces (los 3 tienen el tablespaces por defecto USERS y el temporal TEMP) select substr(username,1,15) usuario, DEFAULT_TABLESPACE , 2 TEMPORARY_TABLESPACE 3 from dba_users 4 where username in ('SYS','SYSTEM','BDATOS','BDATOS1','OPS$PC1\JAVCASTA'); SQL> Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 26 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 USUARIO DEFAULT_TABLESPACE TEMPORARY_TABLESPACE --------------- ------------------------------ -----------------------------BDATOS1 USERS TEMP BDATOS USERS TEMP OPS$PC1\JAVCAST USERS TEMP SYS SYSTEM TEMP SYSTEM SYSTEM TEMP Asigno privilegios de crear tablas y borrarlas y modificarlas , de lectura y escritura (select, insert, update, delete) de las tablas a los 3 usuarios en las tablas. Y también les doy permiso de sesión. SQL> GRANT CREATE SESSION TO BDATOS, BDATOS1; Concesi¾n terminada correctamente. SQL> GRANT RESOURCE TO BDATOS, BDATOS1; Concesi¾n terminada correctamente. SQL> GRANT CREATE ANY TABLE, ALTER ANY TABLE, DELETE ANY TABLE, DROP ANY TABLE, INSERT ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE TO BDATOS, BDATOS1; Concesi¾n terminada correctamente. Respecto al usuario externo: JAVCASTA DEFINO EL CARACTER DE ESCAPE CON | SQL> set escape | -- OPS$PC1\JAVCASTA ALTER USER “OPS$PC1|\JAVCASTA” DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK ; -- ROLES SQL> ALTER USER "OPS$PC1|\JAVCASTA" DEFAULT ROLE "CONNECT","DBA"; Usuario modificado. -- SYSTEM PRIVILEGES GRANT UPDATE ANY TABLE TO "OPS$PC1|\JAVCASTA"; GRANT INSERT ANY TABLE TO "OPS$PC1|\JAVCASTA"; GRANT DELETE ANY TABLE TO "OPS$PC1|\JAVCASTA"; GRANT SELECT ANY TABLE TO "OPS$PC1|\JAVCASTA"; GRANT DROP ANY TABLE TO "OPS$PC1|\JAVCASTA"; GRANT CREATE ANY TABLE TO "OPS$PC1|\JAVCASTA" ; -- GRANT CREATE TABLE TO "OPS$PC1|\JAVCASTA"; GRANT ALTER ANY TABLE TO "OPS$PC1|\JAVCASTA"; -- QUE PUEDA EXPORTAR LA BBDD GRANT EXPORT FULL DATABASE TO "OPS$PC1|\JAVCASTA"; Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 27 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Una alternativa con GUI seria a través del SQL Developer Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 28 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Ejercicio 5.5 A continuación crearemos varias tablas bajo el usuario bdatos. Las tablas que crearemos simulan parcialmente una base de datos de un hospital yson las siguientes: Nombre de la tabla Descripción PERSONAL Todo tipo de personal en nómina MPERSONA Movimientos de personal ENFERMOS Pacientes tanto ingresados como no ingresados MENFERMO Movimientos de enfermo FARMACIA Material de farmacia APARATOS Todos los sistemas del hospital MAPARATO Movimientos de aparatos Las tablas de movimiento reflejan los cambios en el estado de la entidad a quien afectan. Así por ejemplo MPERSONA reflejan los hitos por los que va pasando cada uno de los empleados del hospital. Lógicamente en este ejemplo faltan algunas tablas para que se pueda reflejar la gestión real de un hospital, pero consideramos que son suficientes para nuestros objetivos. Campos de cada tabla Definiremos los siguientes campos. El alumno puede añadir, por supuesto, sus propios campos si lo desea ya que la lista de campos que aquí se da es deliberadamente corta. El tipo y longitud de los campos queda a elección del alumno. El tipo de dato queda a cargo del alumno. Tabla PERSONAL. Campos CODIGO, NOMBRE, APELLIDOS, CATEGORIA, FECHENTRADA, FECHSALIDA Tabla MPERSONA. Campos CODIGO Código del movimiento DESCRIPCION Descripción del movimiento LUGAR Lugar asociado al movimiento (si lo hubiera) CODIGOPER Código de empleado FECHA Fecha del movimiento Tabla ENFERMOS. Campos CODIGO, NOMBRE, APELLIDOS Tabla MENFERMO. Campos CODIGO Código del movimiento DESCRIPCION Descripción del movimiento LUGAR Lugar asociado al movimiento (si lo hubiera) CODIGOENF Código de enfermo FECHA Fecha del movimiento Tabla FARMACIA. Campos CODIGO, DESCRIPCION, UNIDADES, PRECIO, DESTINO, OBSERVACIONES En esta tabla puede haber varios registros con el mismo código. Tabla APARATOS. Campos CODIGO, DESCRIPCION, UNIDADES, PRECIO, DESTINO, OBSERVACIONES En esta tabla puede haber varios registros con el mismo código. Tabla MAPARATO. Campos CODIGO Código del movimiento DESCRIPCION Descripción del movimiento Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 29 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 CODIGOAPAR Código del aparato LUGAR Lugar asociado al movimiento (si lo hubiera) FECHA Fecha del movimiento La tabla PERSONAL, debe ser creada mediante SQL Plus, y el comando SQL utilizado, debe ser entregado en el fichero Ejercicio55.sql, el resto de las tablas deben ser creadas mediante la herramienta que el alumno desee. Una vez creadas estas tablas se introducirán datos (de 3 a 5 registros por tabla). Se procurará que dichos datos tengan cierta consistencia. Los datos de la tabla PERSONAL se introducirán (solo el primer registro), con SQL Plus y el comando SQL necesario se guardará en el fichero Ejercicio551.sql. --/****************************************************************** --** CREACIÓN DE TABLAS EJERCICIO 5.5 - UD5 ORACLE ** --******************************************************************/ -- EJECUCIÓN: SQL> @C:/app/javcasta/OraHome_1/BIN/scripts_sql/Ejercicio55.sql set linesize 80 prompt tamaño linea 80 set pagesize 24 prompt tamaño pagina 24 set ESCAPE \ prompt Escape = \\ prompt SPOOL BD08001_CREA_TABLAS_EJERCICIO55.LOG prompt SPOOL BD08001_CREA_TABLAS_EJERCICIO55.LOG prompt PROMPT EJERCICIO 5.5 -PROMPT =============== Prompt Borrando tablas Prompt =============== DROP TABLE PERSONAL CASCADE CONSTRAINTS; DROP TABLE MPERSONA CASCADE CONSTRAINTS; DROP TABLE ENFERMOS CASCADE CONSTRAINTS; DROP TABLE MENFERMO CASCADE CONSTRAINTS; DROP TABLE FARMACIA CASCADE CONSTRAINTS; DROP TABLE APARATOS CASCADE CONSTRAINTS; DROP TABLE MAPARATO CASCADE CONSTRAINTS; PROMPT TABLAS BORRADAS PROMPT -Prompt ============== Prompt Creando tablas Prompt ============== Prompt PROMPT ============================================================= Prompt TABLA PERSONAL PROMPT ************** -- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9) -- CATEGORIA: MEDICO, ENFERMERO, AUXILIAR, ... -- FECENTRADA: SERA LA FECHA DEL SISTEMA SYSDATE -- FECHSALIDA: SERÁ LA FECHA 23/12/2012 FIN DEL MUNDO SEGUN LOS MAYAS :-) CREATE TABLE PERSONAL (CODIGO NUMBER(9) NOT NULL, NOMBRE VARCHAR2(100) NOT NULL, APELLIDOS VARCHAR2(100) NOT NULL, CATEGORIA VARCHAR2(20) NOT NULL, FECHENTRADA DATE DEFAULT SYSDATE, Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 30 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 FECHSALIDA DATE DEFAULT '23-12-2012', CONSTRAINT PK_PERSONAL PRIMARY KEY (CODIGO) USING INDEX); PROMPT TABLA PERSONAL CREADA PROMPT PROMPT INSERTAMOS REGISTROS EN PERSONAL PROMPT INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA ) VALUES ( 1,'ANTONIO', 'SANTOS FLORES', 'MEDICO'); INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA ) VALUES ( 2,'BARTOLO', 'ALVAREZ CASTRO', 'ENFERMERO'); INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA ) VALUES ( 3,'CARLOS', 'GOROSTIAGA GONZALEZ', 'AUXILIAR'); INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA, FECHENTRADA ) VALUES ( 4,'NOMBRE_4', 'APE1_4 APE2_4', 'MEDICO', '01-01-2009'); INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA, FECHENTRADA ) VALUES ( 5,'NOMBRE_5', 'APE1_5 APE2_5', 'ENFERMERO', '01-02-2009'); INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA, FECHENTRADA ) VALUES ( 6,'NOMBRE_6', 'APE1_6 APE2_6', 'AUXILIAR', '01-03-2009'); PROMPT ============================================================= Prompt TABLA MPERSONA PROMPT ************** -- CODIGO Y CODIGOPER INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9) -- LUGAR: TRAUMATOLOGIA, UBI, PLANTA1, PLANTA2 -- CODIGOPER: RELACIONADO CON PERSONA.CODIGO -- FECHA: SERÁ LA FECHA 23/12/2012, FIN DEL MUNDO SEGUN LOS MAYAS :-) CREATE TABLE MPERSONA (CODIGO NUMBER(9) NOT NULL, DESCRIPCION VARCHAR2(100) NOT NULL, LUGAR VARCHAR2(100) NOT NULL, CODIGOPER NUMBER(9) NOT NULL, FECHA DATE DEFAULT SYSDATE, CONSTRAINT PK_MPERSONA PRIMARY KEY (CODIGO) USING INDEX); PROMPT TABLA MPERSONA CREADA PROMPT PROMPT CREANDO RELACION ENTRE MPERSONA Y PERSONAL PROMPT ****************************************** ALTER TABLE MPERSONA ADD ( CONSTRAINT FK_PER_MPE FOREIGN KEY (CODIGOPER) REFERENCES PERSONAL (CODIGO)); PROMPT --SELECT COUNT(*) FROM MPERSONA; NUMERO DE REGISTROS PROMPT INSERTAMOS REGISTROS EN MPERSONA PROMPT INSERT INTO MPERSONA ( CODIGO, DESCRIPCION, LUGAR, CODIGOPER, FECHA ) VALUES ((SELECT COUNT(*)+1 FROM MPERSONA),'ATENCION EN TRAUMATOLOGIA', 'TRAUMATOLOGIA', 4, DEFAULT); INSERT INTO MPERSONA ( CODIGO, DESCRIPCION, LUGAR, CODIGOPER, FECHA ) VALUES ((SELECT COUNT(*)+1 FROM MPERSONA),'GUARDIA EN UBI', 'UBI', 5, DEFAULT); INSERT INTO MPERSONA ( CODIGO, DESCRIPCION, LUGAR, CODIGOPER, FECHA ) VALUES ((SELECT COUNT(*)+1 FROM MPERSONA),'TURNO EN PLANTA1', 'PLANTA1', 6, DEFAULT); Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 31 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 PROMPT ========================================================================== Prompt TABLA ENFERMOS PROMPT ************** -- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9) -CREATE TABLE ENFERMOS (CODIGO NUMBER(9) NOT NULL, NOMBRE VARCHAR2(100) NOT NULL, APELLIDOS VARCHAR2(100) NOT NULL, CONSTRAINT PK_ENF PRIMARY KEY (CODIGO) USING INDEX); PROMPT TABLA ENFERMOS CREADA PROMPT --SELECT COUNT(*) FROM ENFERMOS; NUMERO DE REGISTROS PROMPT INSERTAMOS REGISTROS EN ENFERMOS PROMPT INSERT INTO ENFERMOS ( CODIGO, NOMBRE, APELLIDOS) VALUES ((SELECT COUNT(*)+1 FROM ENFERMOS),'NOM_ENF_1', 'APE1_ENF_1 APE2_ENF_2'); INSERT INTO ENFERMOS ( CODIGO, NOMBRE, APELLIDOS) VALUES ((SELECT COUNT(*)+1 FROM ENFERMOS),'NOM_ENF_2', 'APE1_ENF_2 APE2_ENF_2'); INSERT INTO ENFERMOS ( CODIGO, NOMBRE, APELLIDOS) VALUES ((SELECT COUNT(*)+1 FROM ENFERMOS),'NOM_ENF_3', 'APE1_ENF_3 APE2_ENF_3'); PROMPT ========================================================================== Prompt TABLA MENFERMO PROMPT ************** -- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9) -CREATE TABLE MENFERMO (CODIGO NUMBER(9) NOT NULL, DESCRIPCION VARCHAR2(100) NOT NULL, LUGAR VARCHAR2(100) NOT NULL, CODIGOENF NUMBER(9) NOT NULL, CONSTRAINT PK_MENF PRIMARY KEY (CODIGO) USING INDEX); PROMPT TABLA MENFERMO CREADA PROMPT --SELECT COUNT(*) FROM MENFERMO; NUMERO DE REGISTROS PROMPT INSERTAMOS REGISTROS EN MENFERMO PROMPT -- HAY QUE PONER CORRECTAMENTE EL CODIGOENF QUE CORRESPONDA AL ENFERMOS.CODIGO INSERT INTO MENFERMO ( CODIGO, DESCRIPCION, LUGAR, CODIGOENF) VALUES ((SELECT COUNT(*)+1 FROM MENFERMO),'NOM_ENF_1 APE1_ENF_1 APE2_ENF_2: METACARPO ROTO', 'TRAUMATOLOGIA',1); INSERT INTO MENFERMO ( CODIGO, DESCRIPCION, LUGAR, CODIGOENF) VALUES ((SELECT COUNT(*)+1 FROM MENFERMO),'NOM_ENF_2 APE1_ENF_2 APE2_ENF_2: UBI', 'UBI',2); INSERT INTO MENFERMO ( CODIGO, DESCRIPCION, LUGAR, CODIGOENF) VALUES ((SELECT COUNT(*)+1 FROM MENFERMO),'NOM_ENF_3 APE1_ENF_3 APE2_ENF_3: PLANTA1', 'PLANTA1',3); Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 32 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 PROMPT CREANDO RELACION ENTRE ENFERMOS Y MENFERMOS PROMPT ******************************************* ALTER TABLE MENFERMO ADD ( CONSTRAINT FK_ENF_MEN FOREIGN KEY (CODIGOENF) REFERENCES ENFERMOS (CODIGO)); PROMPT PROMPT ========================================================================== Prompt TABLA FARMACIA PROMPT ************** -- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9) -CREATE TABLE FARMACIA (CODIGO NUMBER(9) NOT NULL, DESCRIPCION VARCHAR2(100) NOT NULL, UDS NUMBER(9) NOT NULL, PRECIO NUMBER(9,3) DEFAULT 0, DESTINO VARCHAR2(100), OBSERVACIONES VARCHAR2(100), CONSTRAINT PK_FAR PRIMARY KEY (CODIGO,PRECIO,DESTINO) USING INDEX); PROMPT TABLA FARMACIA CREADA PROMPT PROMPT INSERTAMOS REGISTROS EN FARMACIA PROMPT INSERT INTO FARMACIA ( CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES) VALUES (1,'PARACETAMOL', 100, 5.25, 'TRAUMATOLOGIA', 'CADUCA EL 1-1-2015'); INSERT INTO FARMACIA ( CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES) VALUES (1,'PARACETAMOL', 50, 7.33, 'PLANTA1', 'CADUCA EL 1-1-2017'); INSERT INTO FARMACIA ( CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES) VALUES (2,'VITAMINA_C', 55, 15.33, 'UBI', 'CADUCA EL 1-1-2014'); PROMPT ========================================================================== Prompt TABLA APARATOS PROMPT ************** -- ID INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9) -- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9) CREATE TABLE APARATOS (ID NUMBER(9) NOT NULL, CODIGO NUMBER(9) NOT NULL, DESCRIPCION VARCHAR2(100) NOT NULL, UDS NUMBER(9) NOT NULL, PRECIO NUMBER(9,3) DEFAULT 0, DESTINO VARCHAR2(100), OBSERVACIONES VARCHAR2(100), CONSTRAINT PK_APA PRIMARY KEY (ID) USING INDEX); PROMPT TABLA APARATOS CREADA PROMPT PROMPT INSERTAMOS REGISTROS EN APARATOS PROMPT INSERT INTO APARATOS ( ID, CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES) VALUES ((SELECT COUNT(*)+1 FROM APARATOS), 1,'RAYOS_X', 2, 25103.25, 'TRAUMATOLOGIA', 'REVISION ANUAL EN AGOSTO'); Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 33 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 INSERT INTO APARATOS ( ID, CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES) VALUES ((SELECT COUNT(*)+1 FROM APARATOS), 1,'RAYOS_X', 1, 19744.33, 'PLANTA1', 'SECCION PEDIATRIA'); INSERT INTO APARATOS ( ID, CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES) VALUES ((SELECT COUNT(*)+1 FROM APARATOS), 2,'DESFIBRILADOR', 3, 2400.33, 'UBI', 'REVISION MENSUAL'); PROMPT ========================================================================== Prompt TABLA MAPARATO PROMPT ************** -- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9) -CREATE TABLE MAPARATO (CODIGO NUMBER(9) NOT NULL, DESCRIPCION VARCHAR2(100) NOT NULL, CODIGOAPAR NUMBER(9) NOT NULL, LUGAR VARCHAR2(100) NOT NULL, FECHA DATE DEFAULT SYSDATE, CONSTRAINT PK_MAP PRIMARY KEY (CODIGOAPAR) USING INDEX); PROMPT TABLA MAPARATO CREADA PROMPT PROMPT INSERTAMOS REGISTROS EN MAPARATO PROMPT -- HAY QUE PONER CORRECTAMENTE EL CODIGOAPAR QUE CORRESPONDA AL APARATOS.ID INSERT INTO MAPARATO ( CODIGO, DESCRIPCION, CODIGOAPAR, LUGAR, FECHA) VALUES (1,'RAYOS_X DE TRAUMATOLOGIA A UBI', 1,'UBI', '01-01-2009'); INSERT INTO MAPARATO ( CODIGO, DESCRIPCION, CODIGOAPAR, LUGAR, FECHA) VALUES (2,'RAYOS_X DE PLANTA1 A TRAUMATOLOGIA', 2, 'TRAUMATOLOGIA','01-03-2009'); INSERT INTO MAPARATO ( CODIGO, DESCRIPCION, CODIGOAPAR, LUGAR, FECHA) VALUES (3,'DESFIBRILADOR DE UBI A PLANTA1', 3, 'PLANTA1','01-01-2009'); PROMPT CREANDO RELACION ENTRE APARATOS Y MAPARATO PROMPT ******************************************* ALTER TABLE MAPARATO ADD ( CONSTRAINT FK_APA_MAP FOREIGN KEY (CODIGOAPAR) REFERENCES APARATOS (ID)); PROMPT PROMPT ========================================================================== PROMPT PROMPT ESTRUCTURA DE TABLAS Y DATOS CREADAS PROMPT FIN DEL PROCESO - by JAVIER CASTAÑÓN - BD08001 - CURSO EXPERTO UNIVERSITARIO EN BBDD - UNED - 2.009 SPOOL OFF RESULTADO: SQL> @C:/app/javcasta/OraHome_1/BIN/scripts_sql/55A.sql tama±o linea 80 tama±o pagina 24 SP2-0311: cadena esperada pero no encontrada Escape = \ SPOOL BD08001_CREA_TABLAS_EJERCICIO55.LOG EJERCICIO 5.5 =============== Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 34 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Borrando tablas =============== Tabla borrada. Tabla borrada. Tabla borrada. Tabla borrada. Tabla borrada. Tabla borrada. Tabla borrada. TABLAS BORRADAS ============== Creando tablas ============== ============================================================= TABLA PERSONAL ************** Tabla creada. TABLA PERSONAL CREADA INSERTAMOS REGISTROS EN PERSONAL 1 fila creada. 1 fila creada. 1 fila creada. 1 fila creada. 1 fila creada. 1 fila creada. ============================================================= TABLA MPERSONA ************** Tabla creada. TABLA MPERSONA CREADA CREANDO RELACION ENTRE MPERSONA Y PERSONAL ****************************************** Tabla modificada. Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 35 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 INSERTAMOS REGISTROS EN MPERSONA 1 fila creada. 1 fila creada. 1 fila creada. ========================================================================== TABLA ENFERMOS ************** Tabla creada. TABLA ENFERMOS CREADA INSERTAMOS REGISTROS EN ENFERMOS 1 fila creada. 1 fila creada. 1 fila creada. ========================================================================== TABLA MENFERMO ************** Tabla creada. TABLA MENFERMO CREADA INSERTAMOS REGISTROS EN MENFERMO 1 fila creada. 1 fila creada. 1 fila creada. CREANDO RELACION ENTRE ENFERMOS Y MENFERMOS ******************************************* Tabla modificada. ========================================================================== TABLA FARMACIA ************** Tabla creada. TABLA FARMACIA CREADA INSERTAMOS REGISTROS EN FARMACIA 1 fila creada. Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 36 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 1 fila creada. 1 fila creada. ========================================================================== TABLA APARATOS ************** Tabla creada. TABLA APARATOS CREADA INSERTAMOS REGISTROS EN APARATOS 1 fila creada. 1 fila creada. 1 fila creada. ========================================================================== TABLA MAPARATO ************** Tabla creada. TABLA MAPARATO CREADA INSERTAMOS REGISTROS EN MAPARATO 1 fila creada. 1 fila creada. 1 fila creada. CREANDO RELACION ENTRE APARATOS Y MAPARATO ******************************************* Tabla modificada. ========================================================================== ESTRUCTURA DE TABLAS Y DATOS CREADAS FIN DEL PROCESO - by JAVIER CASTAÐËN - BD08001 - CURSO EXPERTO UNIVERSITARIO EN BBDD - UNED - 2.009 SQL> Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 37 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Ejercicio 5.6 Crear una vista que muestra los registros de las tablas PERSONAL y MPERSONAL, ligados por el código de la persona. SET LINESIZE 60 prompt EJERCICIO 5.6 CREATE VIEW PERSONAL_Y_MOVIMIENTOS (CODIGOPERSONA, CODIGO_MOVIMIENTO, NOMBRE, APELLIDOS, CATEGORIA, FECHA_ENTRADA, FECHA_SALIDA, FECHA_MOVIMIENTO, DESCRIPCION_MOVIMIENTO, LUGAR_MOVIMIENTO) AS SELECT P.CODIGO, M.CODIGO, P.NOMBRE, P.APELLIDOS, P.CATEGORIA, P.FECHENTRADA, P.FECHSALIDA, M.FECHA, M.DESCRIPCION, M.LUGAR FROM PERSONAL P, MPERSONA M WHERE M.CODIGOPER=P.CODIGO; PROMPT .............................. SELECT * FROM PERSONAL_Y_MOVIMIENTOS; Ejercicio 5.7 Con SQL Plus, escribir el comando select * from PERSONAL y observar que se nos ofrece el contenido de los registros de la tabla PERSONAL. Comprobar el efecto de este comando sobre otras tablas. SQL> SELECT * FROM PERSONAL; CODIGO ---------NOMBRE -----------------------------------------------------------APELLIDOS -----------------------------------------------------------CATEGORIA FECHENTR FECHSALI -------------------- -------- -------1 ANTONIO SANTOS FLORES MEDICO 12/04/09 23/12/12 2 BARTOLO ALVAREZ CASTRO ENFERMERO 12/04/09 23/12/12 3 CARLOS GOROSTIAGA GONZALEZ AUXILIAR 12/04/09 23/12/12 CODIGO ---------NOMBRE -----------------------------------------------------------APELLIDOS -----------------------------------------------------------CATEGORIA FECHENTR FECHSALI -------------------- -------- -------4 NOMBRE_4 APE1_4 APE2_4 MEDICO 01/01/09 23/12/12 5 NOMBRE_5 APE1_5 APE2_5 ENFERMERO 01/02/09 23/12/12 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 38 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 6 NOMBRE_6 APE1_6 APE2_6 AUXILIAR 01/03/09 23/12/12 6 filas seleccionadas. Con el SQL Developer: Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 39 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 40 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Ejercicio 5.8 Realizar un programa en Java que muestra los registros de las diferentes tablas de la base de datos creada en los ejercicios anteriores. Para ello el programa cargará un recorset con el resultado de la consulta correspondiente y lo mostrará. No es necesario que se pueda modificar desde el programa el contenido de los registros. El programa se realizará a partir del proyecto DbFactoria de la unidad didáctica 4. Descargo e instalo el driver jdbc para Oracle. Ojdbc5.jar, ojdbc6.jar y los guardo en C:\Archivos de programa\Java\jdk1.6.0_11\jre\lib\ext Inserto un JOptionPane … import javax.swing.JOptionPane; //.... public class DirectConnExample extends javax.swing.JFrame { public String latabla=""; /** * Creates new form DirectConnExample */ public DirectConnExample() { latabla=JOptionPane.showInputDialog("Elige tabla: personal, mpersona, enfermos, menfermo, farmacia, aparatos, maparato"); //String url = "jdbc:mysql://localhost:3306/baseDeDatos"; //String url = "jdbc:mysql://ieec7.ieec.uned.es:3306/test"; String url = "jdbc:oracle:thin:@pc1:1521:ORCL0506"; String driverName = "oracle.jdbc.driver.OracleDriver"; //String user = "usuario"; String user = "sys as sysdba"; //String passwd = "password"; String passwd = "manager"; String query = "select * from " + latabla; Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 41 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 42 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 * Exporto la bbdd ORCL0506 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 43 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 44 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Tras varios intentos con error. Opto por exporter con SQL Developer. Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 45 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Errores … Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 46 de 47 Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001 Otro método, dede la shell de Windows: C:\ >exp sys/manager@ORCL0506 file=exportORCL0506.dmp full=y log=export.log Errores del listener? (he redefinido el listener y definido otro listener y nada).… Bueno, no lo considero preocupante, ya que la bbdd es operativa (funcionalmente hablando). Y también ya que en el script Ejercicio55.sql se crean las tablas y sus datos. Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos Página 47 de 47