SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
PRACTICA:
CONCURRENCIA Y TRANSACCIONES
EN ORACLE Y MYSQL
BASE DE DATOS II
ALUMNOS: IVAN LUIS JIMENEZ
FRANCISCO AGUILAR JACOBO
12/DIC/2016
Contenido
Transacciones y Concurrencia en MYSQL................................................................................................... 4
Preparando el espacio de trabajo............................................................................................................ 4
Inicio de las transacciones y concurrencia............................................................................................... 5
Transacciones y Concurrencia en ORACLE............................................................................................... 12
TRANSACCIONES Y CONCURRENCIA EN MYSQL
Preparando el espacio de trabajo
Para este ejemplo crearemos una base de datos llamada banco, con los siguientes atributos:
La creamos en la computadora que ara el papel de Servidor.
Pasamos a agregar usuarios que se conectarán o tendrán permisos a la base de datos con la siguiente regla;
CREATE USER 'nombredeusuario'@'direccion-ip' IDENTIFIED BY 'contraseña';
En nuestro caso particular ejecutamos:
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'chk';
Después de haber creado el usuario, le concedemos los privilegios que nosotros consideremos que de tener
dicho usuario con la siguiente sentencia:
GRANT [permiso] ON [nombre de base de datos].[nombre tabla] TO ‘nombre_usuario’@’direccion_IP’;
En nuestro caso particular ejecutamos:
GRANT SELECT, INSERT, UPDATE, DELETE ON base_datos.* TO 'francisco'@'19 2.168.1.88' REQUIRE
NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Inicio de las transacciones y concurrencia
Hasta este momento ya tenemos el servidor corriendo, y también la base de datos está creada.
Iniciamos desde la computadora que se conectará al servidor, para que desde ahí podamos insertar los
datos a la tabla.
Se conectó correctamente.
Procedemos a iniciar con la transacción:
Realizamos las siguientes instrucciones SQL para insertar los registros a la tabla banco:
Iniciamos la transacción:
BEGIN TRANSACTION;
Insertamos el primer:
INSERT INTO cuentas (accdId, balance) VALUES(101,200);
A pesar de que ya señaló que se insertó un Query, no ha terminado la transacción y el registro no se ha
insertado a la base de datos.
Lo vemos en el Servidor.
Insertamos el segundo registro desde el usuario externo:
INSERT INTO cuentas (accdId, balance) VALUES(102,200);
Como podemos ver, se insertó el segundo registro, pero aún no ha terminado la transacción, se hizo un
select y muestra la tabla con los registros previamente insertados. Si lo vemos desde el servidor obtenemos
lo siguiente:
No muestra los registros, es decir aún no se han agregado a la base de datos, ahora hacemos COMMIT,
desde la computadora conectada al servidor para terminar la transacción:
Como ven, se terminó la transacción y se hizo el SELECT para comprobarlo. Ahora hacemos un SELECT
desde el servidor.
Y como pueden observar ahora si aparecen los registros.
Ahora haremos algo similar, pero ahora con una transacción con UPDATE, es decir pasaremos 100 que tiene
el ID 101 al ID 102.
Desde la computadora conectada al servidor hacemos:
BEGIN TRANSACTION;
UPDATE cuentas SET balance = balance - 100 WHERE acctId = 101;
Se hace un SELECT y se observa que ya se realizó la consulta. Pero sólo lo guarda en el buffer de memoria,
más no en la base de datos.
Ahora le pasamos esos 100 a ID 102:
UPDATE cuentas SET balance = balance + 100 WHERE acctId = 202;
Si hacemos SELECT desde el servidor:
Sigue igual. Ahora hacemos un ROLLBACK desde la computadora conectada al servidor.
COMMIT;
Se terminó la transacción pero digamos que algo salió mal, es por eso que no se guardaron los cambios y
todo volvió a como estaba antes de que iniciara la transacción.
Ahora simularemos algún error, para que veamos que sucede con los registros. Aremos lo mismo que lo
anterior sólo que cuando insertemos el primer registro, cortaremos su red para que se pierda la conexión
con el servidor.
Hacemos un SELECT en el servidor:
No se insertaron los registros, es decir cuando sucedió la desconexión, se aplicó ROLLBACK
automáticamente para que la cuenta con ID 101 no perdiera, por decirlo así no perdiera su dinero.
TRANSACCIONES Y CONCURRENCIA EN ORACLE
Preparando el espacio de trabajo
Al igual que en MYSQL crearemos un usuario el cual se conectará al servidor, para que desde ahí se realicen
las transacciones.
Procedemos a iniciar con la transacción: Realizamos las siguientes instrucciones SQL para insertar los
registros a la tabla pieza.
Iniciamos la transacción:
Set transaction name ‘base’;
Insertamos el primer y segundo registro
A pesar de que ya señaló que se insertó una consulta, no ha terminado la transacción y el registro no se ha
insertado a la base de datos.
Lo vemos en el Servidor.
Ahora hacemos un commit desde la computadora conectada al servidor.
Hacemos un SELECT en el servidor.
Y como vemos ya se inseeron los registros al finalizar la transacción.

Weitere ähnliche Inhalte

Was ist angesagt?

Funciones y procedimientos en SQL
Funciones y procedimientos en SQLFunciones y procedimientos en SQL
Funciones y procedimientos en SQL
Ronald Rivas
 
Diagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegueDiagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegue
joshell
 
Administración de transacciones, problemas, candados e interbloqueos
Administración de transacciones, problemas, candados e interbloqueosAdministración de transacciones, problemas, candados e interbloqueos
Administración de transacciones, problemas, candados e interbloqueos
jocuva101
 
Mapa mental listas
Mapa mental listasMapa mental listas
Mapa mental listas
ENSON23
 
Instalacion de cassandra
Instalacion de cassandraInstalacion de cassandra
Instalacion de cassandra
Luis Alvarado
 

Was ist angesagt? (20)

Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccion
 
Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oracle
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
Integridad en las bases de datos
Integridad en las bases de datosIntegridad en las bases de datos
Integridad en las bases de datos
 
Funciones y procedimientos en SQL
Funciones y procedimientos en SQLFunciones y procedimientos en SQL
Funciones y procedimientos en SQL
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Diagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegueDiagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegue
 
Ado net
Ado netAdo net
Ado net
 
Taller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DMLTaller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DML
 
Administración de transacciones, problemas, candados e interbloqueos
Administración de transacciones, problemas, candados e interbloqueosAdministración de transacciones, problemas, candados e interbloqueos
Administración de transacciones, problemas, candados e interbloqueos
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Procesamiento superescalar
Procesamiento superescalarProcesamiento superescalar
Procesamiento superescalar
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccion
 
Mapa mental listas
Mapa mental listasMapa mental listas
Mapa mental listas
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Control de concurrencias investigación
Control de concurrencias investigaciónControl de concurrencias investigación
Control de concurrencias investigación
 
VISTAS
VISTASVISTAS
VISTAS
 
Instalacion de cassandra
Instalacion de cassandraInstalacion de cassandra
Instalacion de cassandra
 

Ähnlich wie Practica- Transacciones y Concurrencia en Oracle y MySQL

Transacciones en mysql
Transacciones en mysqlTransacciones en mysql
Transacciones en mysql
Carmen Sena C
 
Manual de usuario configuración e implementación de uan red vlan inac grupo 2
Manual de usuario configuración e implementación de uan red vlan inac grupo 2Manual de usuario configuración e implementación de uan red vlan inac grupo 2
Manual de usuario configuración e implementación de uan red vlan inac grupo 2
DIEGOGUERREROCUELLAR
 
Replicacion de datos en Oracle
Replicacion de datos en OracleReplicacion de datos en Oracle
Replicacion de datos en Oracle
Jenny Palma
 

Ähnlich wie Practica- Transacciones y Concurrencia en Oracle y MySQL (20)

Acceso a-una-base-de-datos-mediante-un-servidor
Acceso a-una-base-de-datos-mediante-un-servidor Acceso a-una-base-de-datos-mediante-un-servidor
Acceso a-una-base-de-datos-mediante-un-servidor
 
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
 
Transacciones en mysql
Transacciones en mysqlTransacciones en mysql
Transacciones en mysql
 
Saturacion base de datos - Ejemplos Parte 1
Saturacion base de datos  - Ejemplos Parte 1Saturacion base de datos  - Ejemplos Parte 1
Saturacion base de datos - Ejemplos Parte 1
 
Conexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQLConexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQL
 
Transacciones en MySQL
Transacciones en MySQLTransacciones en MySQL
Transacciones en MySQL
 
Transacciones
TransaccionesTransacciones
Transacciones
 
C# conexión sql server2012-visualstudio2012-mantenimientos
C#   conexión sql server2012-visualstudio2012-mantenimientosC#   conexión sql server2012-visualstudio2012-mantenimientos
C# conexión sql server2012-visualstudio2012-mantenimientos
 
Insertar editarborrar registros sql_server_tutorial 2015
Insertar editarborrar registros sql_server_tutorial 2015Insertar editarborrar registros sql_server_tutorial 2015
Insertar editarborrar registros sql_server_tutorial 2015
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Manual instalacion active directory windows server 2012
Manual instalacion active directory windows server 2012Manual instalacion active directory windows server 2012
Manual instalacion active directory windows server 2012
 
Pandora FMS: Plugin de Exchange ActivSync
Pandora FMS: Plugin de Exchange ActivSyncPandora FMS: Plugin de Exchange ActivSync
Pandora FMS: Plugin de Exchange ActivSync
 
Manual my sql
Manual my sqlManual my sql
Manual my sql
 
Exportacion e importacion de los datos en oracle
Exportacion e importacion de los datos en oracleExportacion e importacion de los datos en oracle
Exportacion e importacion de los datos en oracle
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7
 
Reporte de-practicas-unidad-1 equipo 8
Reporte de-practicas-unidad-1 equipo 8Reporte de-practicas-unidad-1 equipo 8
Reporte de-practicas-unidad-1 equipo 8
 
Manual de usuario configuración e implementación de uan red vlan inac grupo 2
Manual de usuario configuración e implementación de uan red vlan inac grupo 2Manual de usuario configuración e implementación de uan red vlan inac grupo 2
Manual de usuario configuración e implementación de uan red vlan inac grupo 2
 
Cuentas de usuario Active Directory
Cuentas de usuario Active DirectoryCuentas de usuario Active Directory
Cuentas de usuario Active Directory
 
Charla Evento TestingUY 2018 - 911: Automatización para emergencias
Charla Evento TestingUY 2018 - 911: Automatización para emergenciasCharla Evento TestingUY 2018 - 911: Automatización para emergencias
Charla Evento TestingUY 2018 - 911: Automatización para emergencias
 
Replicacion de datos en Oracle
Replicacion de datos en OracleReplicacion de datos en Oracle
Replicacion de datos en Oracle
 

Mehr von Ivan Luis Jimenez

Mehr von Ivan Luis Jimenez (13)

PelicanHPC Implementación fisica con dos nodos
PelicanHPC Implementación fisica con dos nodosPelicanHPC Implementación fisica con dos nodos
PelicanHPC Implementación fisica con dos nodos
 
Métodos en Java-Con ejemplos
Métodos en Java-Con ejemplosMétodos en Java-Con ejemplos
Métodos en Java-Con ejemplos
 
Aplicación de los Clusters en la empresas (Amazon Redshift)
Aplicación de los Clusters en la empresas (Amazon Redshift)Aplicación de los Clusters en la empresas (Amazon Redshift)
Aplicación de los Clusters en la empresas (Amazon Redshift)
 
Manipulación del contraste de una imágen monocromática por transformación exp...
Manipulación del contraste de una imágen monocromática por transformación exp...Manipulación del contraste de una imágen monocromática por transformación exp...
Manipulación del contraste de una imágen monocromática por transformación exp...
 
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoEjemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
 
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
 
Comandos básicos para crear VLANs
Comandos básicos para crear  VLANsComandos básicos para crear  VLANs
Comandos básicos para crear VLANs
 
Enrutamiento Dinámico con RIPv1 y RIPv2
Enrutamiento Dinámico con RIPv1 y RIPv2Enrutamiento Dinámico con RIPv1 y RIPv2
Enrutamiento Dinámico con RIPv1 y RIPv2
 
Práctica: Medición de voltaje en circuitos con dos fuentes de voltaje
Práctica: Medición de voltaje en circuitos con dos fuentes de voltajePráctica: Medición de voltaje en circuitos con dos fuentes de voltaje
Práctica: Medición de voltaje en circuitos con dos fuentes de voltaje
 
Creación de VLANs (subredes) desde Cisco Packet Tracer Student
Creación de VLANs (subredes) desde Cisco Packet Tracer StudentCreación de VLANs (subredes) desde Cisco Packet Tracer Student
Creación de VLANs (subredes) desde Cisco Packet Tracer Student
 
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para DesarrolladoresConfigurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
 
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEXProyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
 

Kürzlich hochgeladen

PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
EduardoJosVargasCama1
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 

Kürzlich hochgeladen (20)

Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
 
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdfFICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 

Practica- Transacciones y Concurrencia en Oracle y MySQL

  • 1. PRACTICA: CONCURRENCIA Y TRANSACCIONES EN ORACLE Y MYSQL BASE DE DATOS II ALUMNOS: IVAN LUIS JIMENEZ FRANCISCO AGUILAR JACOBO 12/DIC/2016
  • 2.
  • 3. Contenido Transacciones y Concurrencia en MYSQL................................................................................................... 4 Preparando el espacio de trabajo............................................................................................................ 4 Inicio de las transacciones y concurrencia............................................................................................... 5 Transacciones y Concurrencia en ORACLE............................................................................................... 12
  • 4. TRANSACCIONES Y CONCURRENCIA EN MYSQL Preparando el espacio de trabajo Para este ejemplo crearemos una base de datos llamada banco, con los siguientes atributos: La creamos en la computadora que ara el papel de Servidor. Pasamos a agregar usuarios que se conectarán o tendrán permisos a la base de datos con la siguiente regla; CREATE USER 'nombredeusuario'@'direccion-ip' IDENTIFIED BY 'contraseña'; En nuestro caso particular ejecutamos: CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'chk'; Después de haber creado el usuario, le concedemos los privilegios que nosotros consideremos que de tener dicho usuario con la siguiente sentencia: GRANT [permiso] ON [nombre de base de datos].[nombre tabla] TO ‘nombre_usuario’@’direccion_IP’; En nuestro caso particular ejecutamos: GRANT SELECT, INSERT, UPDATE, DELETE ON base_datos.* TO 'francisco'@'19 2.168.1.88' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
  • 5. Inicio de las transacciones y concurrencia Hasta este momento ya tenemos el servidor corriendo, y también la base de datos está creada. Iniciamos desde la computadora que se conectará al servidor, para que desde ahí podamos insertar los datos a la tabla. Se conectó correctamente. Procedemos a iniciar con la transacción: Realizamos las siguientes instrucciones SQL para insertar los registros a la tabla banco: Iniciamos la transacción: BEGIN TRANSACTION; Insertamos el primer: INSERT INTO cuentas (accdId, balance) VALUES(101,200);
  • 6. A pesar de que ya señaló que se insertó un Query, no ha terminado la transacción y el registro no se ha insertado a la base de datos. Lo vemos en el Servidor. Insertamos el segundo registro desde el usuario externo: INSERT INTO cuentas (accdId, balance) VALUES(102,200); Como podemos ver, se insertó el segundo registro, pero aún no ha terminado la transacción, se hizo un select y muestra la tabla con los registros previamente insertados. Si lo vemos desde el servidor obtenemos lo siguiente: No muestra los registros, es decir aún no se han agregado a la base de datos, ahora hacemos COMMIT, desde la computadora conectada al servidor para terminar la transacción:
  • 7. Como ven, se terminó la transacción y se hizo el SELECT para comprobarlo. Ahora hacemos un SELECT desde el servidor. Y como pueden observar ahora si aparecen los registros. Ahora haremos algo similar, pero ahora con una transacción con UPDATE, es decir pasaremos 100 que tiene el ID 101 al ID 102. Desde la computadora conectada al servidor hacemos: BEGIN TRANSACTION; UPDATE cuentas SET balance = balance - 100 WHERE acctId = 101;
  • 8. Se hace un SELECT y se observa que ya se realizó la consulta. Pero sólo lo guarda en el buffer de memoria, más no en la base de datos. Ahora le pasamos esos 100 a ID 102: UPDATE cuentas SET balance = balance + 100 WHERE acctId = 202; Si hacemos SELECT desde el servidor:
  • 9. Sigue igual. Ahora hacemos un ROLLBACK desde la computadora conectada al servidor. COMMIT; Se terminó la transacción pero digamos que algo salió mal, es por eso que no se guardaron los cambios y todo volvió a como estaba antes de que iniciara la transacción. Ahora simularemos algún error, para que veamos que sucede con los registros. Aremos lo mismo que lo anterior sólo que cuando insertemos el primer registro, cortaremos su red para que se pierda la conexión con el servidor.
  • 10. Hacemos un SELECT en el servidor: No se insertaron los registros, es decir cuando sucedió la desconexión, se aplicó ROLLBACK automáticamente para que la cuenta con ID 101 no perdiera, por decirlo así no perdiera su dinero.
  • 11.
  • 12. TRANSACCIONES Y CONCURRENCIA EN ORACLE Preparando el espacio de trabajo Al igual que en MYSQL crearemos un usuario el cual se conectará al servidor, para que desde ahí se realicen las transacciones. Procedemos a iniciar con la transacción: Realizamos las siguientes instrucciones SQL para insertar los registros a la tabla pieza. Iniciamos la transacción: Set transaction name ‘base’; Insertamos el primer y segundo registro
  • 13. A pesar de que ya señaló que se insertó una consulta, no ha terminado la transacción y el registro no se ha insertado a la base de datos. Lo vemos en el Servidor. Ahora hacemos un commit desde la computadora conectada al servidor.
  • 14. Hacemos un SELECT en el servidor. Y como vemos ya se inseeron los registros al finalizar la transacción.