Unidad 4: Operación y Mantenibilidad

4.1 Bitácoras de Trabajo del DBMS

Una bitácora es una herramienta (archivos o registros) que permite registraranalizardetectar y notificar eventos que sucedan en cualquier sistema de información utilizado en las organizaciones.
La estructura más ampliamente usada para grabar las acciones que se llevan en la base de datos.
Nos ayuda a recuperar la información ante algunos incidentes de seguridad, detección de comportamiento inusual, información para resolver problemas, evidencia legal, es de gran ayuda en las tareas de computo forense.
Permite guardar las transacciones realizadas sobre una base de datos en específico, de tal manera que estas transacciones puedan ser auditadas y analizadas posteriormente.

4.1.1 Funciones Específicas de las Bitácoras

La estructura más ampliamente usada para grabar las modificaciones de la base de datos es la Bitácora. Cada registro de la bitácora escribe una única escritura de base de datos y tiene lo siguiente:

  1. Nombre de la Transacción
  2. Valor antiguo
  3. Valor Nuevo

Es fundamental que siempre se cree un registro en la bitácora cuando se realice una escritura antes de que se modifique la base de datos.

También tenemos la posibilidad de deshacer una modificación que ya se ha escrito en la base de datos, esto se realizará usando el campo del valor antiguo de los registros de la bitácora.
Los registros de la bitácora deben residir en memoria estable como resultado el volumen de datos en la bitácora puede ser exageradamente grande.

Las operaciones COMMIT y ROLLBACK establecen lo que se le conoce como punto de sincronización lo cual representa el límite entre dos transacciones consecutivas, o el final de una unidad lógica de trabajo, y por tanto al punto en el cual la base de datos esta (o debería estar) en un estado de consistencia. Las únicas operaciones que establecen un punto de sincronización son COMMIT, ROLLBACK y el inicio de un programa.

Cuando se establece un punto de sincronización:
Se comprometen o anulan todas las modificaciones realizadas por el programa desde el punto de sincronización anterior.
Se pierde todo posible posicionamiento en la base de datos. Se liberan todos los registros bloqueados. Es importante advertir que COMMIT y ROLLBACK terminan las transacción, no el programa.

4.1.2 Recuperación (Rollback)

En tecnologías de base de datos, un rollback es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas. Son cruciales para la recuperación de crashes de un servidor de base de datos; realizando rollback (devuelto) cualquier transacción que estuviera activa en el tiempo del crash, la base de datos es restaurada a un estado consistente.

En SQL, ROLLBACK es un comando que causa que todos los cambios de datos desde la última sentencia BEGIN WORK, o START TRANSACTION sean descartados por el sistema de gestión de base de datos relacional (RDBMS), para que el estado de los datos sea «rolled back»(devuelto) a la forma en que estaba antes de que aquellos cambios tuvieran lugar.
Una sentencia ROLLBACK también publicará cualquier savepoint existente que puediera estar en uso.
En muchos dialectos de SQL, los ROLLBACK son específicos de la conexión. Esto significa que si se hicieron dos conexiones a la misma base de datos, un ROLLBACK hecho sobre una conexión no afectará a cualesquiera otras conexiones. Esto es vital para el buen funcionamiento de la Concurrencia.
La funcionalidad de rollback está normalmente implementada con un Log de transacciones, pero puede también estar implementada mediante control de concurrencia multiversión.

4.1.3 Permanencia (Commit)

En el contexto de la Ciencia de la computación y la gestión de datos, commit (acción de comprometer) se refiere a la idea de consignar un conjunto de cambios «tentativos, o no permanentes». Un uso popular es al final de una transacción de base de datos.

Una sentencia COMMIT en SQL finaliza una transacción de base de datos dentro de un sistema gestor de base de datos relacional (RDBMS) y pone visibles todos los cambios a otros usuarios. El formato general es emitir una sentencia BEGIN WORK, una o más sentencias SQL, y entonces la sentencia COMMIT. Alternativamente, una sentencia ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emitió BEGIN WORK. Una sentencia COMMIT publicará cualquiera de los savepoints (puntos de recuperación) existentes que puedan estar en uso.
En términos de transacciones, lo opuesto de commit para descartar los cambios «en tentativa» de una transacción, es un rollback.

4.2 Definición de los Modos de Operación de un DBMS (Alta, Baja, Recovery)

La vida de todo archivo comienza cuando se crea y acaba cuando se borra. Durante su existencia es objeto de constante procesamiento, que con mucha frecuencia incluye acciones de consulta o búsqueda y de actualización. En el caso de la estructura archivos, entenderemos como actualización, además de las operaciones, vistas para vectores y listas enlazadas, de introducir nuevos datos (altas) o de eliminar alguno existente (bajas), la modificación de datos ya existentes, (operación muy común con datos almacenados). En esencia, es la puesta al día de los datos del archivo.
Una operación de alta en un archivo consiste en la adición de un nuevo registro. En un archivo de empleados, un alta consistirá en introducir los datos de un nuevo empleado. Para situar correctamente un alta, se deberá conocer la posición donde se desea almacenar el registro correspondiente: al principio, en el interior o al final de un archivo.
El algoritmo de ALTAS debe contemplar la comprobación de que el registro a dar de alta no existe previamente. Una baja es la acción de eliminar un registro de un archivo. La baja de un registro puede ser lógica o física. Una baja lógica supone el no borrado del registro en el archivo. Esta baja lógica se manifiesta en un determinado campo del registro con una bandera, indicador o “flag” -carácter *. $, etc.,-, o bien con la escritura o rellenado de espacios en blanco en el registro dado de baja
Altas
La operación de dar de alta un determinado registro es similar a la de añadir datos a un archivo. Es importante remarcar que en un archivo secuencial sólo permite añadir datos al final del mismo.
En otro caso, si se quiere insertar un registro en medio de los ya presentes en el archivo, sería necesaria la creación nueva del archivo.
El algoritmo para dar de alta un registro al final del fichero es como sigue:

  • algoritmo altas
  • leer registro de alta
  • inicio
  • abrir archivo para añadir
  • mientras haya más registros hacer {algunos lenguajes ahorran este bucle}
  • leer datos del registro
  • fin_mientras
  • escribir (grabar) registro de alta en el archivo
  • cerrar archivo
  • fin

Bajas
Existen dos métodos para dar de baja a un registro en un archivo secuencial, donde no es fácil eliminar un registro situado en el interior de una secuencia: Para ello podemos seguir dos métodos:
1) Utilizar y por tanto crear un segundo archivo auxiliar transitorio, también secuencial, copia del que se trata de actualizar. Se lee el archivo completo registro a registro y en función de su lectura se decide si el registro se debe dar de baja o no. En caso afirmativo, se omite la escritura en el archivo auxiliar. Si el registro no se va a dar de baja, este registro se reescribe en el archivo auxiliar 
Tras terminar la lectura del archivo original, se tendrán dos archivos: original (o maestro) y auxiliar. El proceso de bajas del archivo concluye borrando el archivo original y cambiando el nombre del archivo auxiliar por el del inicial.
2) Guardar o señalar los registros que se desean dar de baja con un indicador o bandera que se guarda en un array; de esta forma los registros no son borrados físicamente, sino que son considerados como inexistentes.
Inevitablemente, cada cierto tiempo, habrá que crear un nuevo archivo secuencial con el mismo nombre, en el que los registros marcados no se grabarán.

Propósito de Backup y Recuperación

Como administrador de copia de seguridad, la tarea principal es diseñar, implementar y gestionar una estrategia de backup y recuperación. En general, el propósito de una estrategia de recuperación de copia de seguridad y es para proteger la base de datos contra la pérdida de datos y reconstruir la base de datos después de la pérdida de datos. Normalmente, las tareas de administración de seguridad son las siguientes:

  • Planificación y probar las respuestas a diferentes tipos de fallas.
  • Configuración del entorno de base de datos de copia de seguridad y recuperación.
  • La creación de un programa de copia de seguridad
  • Seguimiento de la copia de seguridad y entorno de recuperación
  • Solución de problemas de copia de seguridad
  • Para recuperarse de la pérdida de datos en caso de necesidad

Como administrador de copia de seguridad, es posible que se le pida que realice otros deberes que se relacionan con copia de seguridad y recuperación:

  • La preservación de datos, lo que implica la creación de una copia de base de datos para el almacenamiento a largo plazo
  • La transferencia de datos, lo que implica el movimiento de datos de una base de datos o un host a otro.

4.3 Comandos de Activación para los Modos de Operación

Para ser uso de los diferentes comandos para un modo de operación debemos estar como administrador o asuma un rol que incluya el perfil de derechos Service Management.
Comando STARTUP
Para el arranque de una base de datos hay tres fases de arranque, para realizar estas fases podemos utilizar startup más un comando, las tres fases son las siguientes:
Fase de no Montaje: se leen los parámetros del sistema, se inician las estructuras de memoria y los procesos de segundo plano. La instancia se arranca sin asociarla a la base de datos. Normalmente se utiliza cuando se modifica o se necesita crear el archivo de control:

startup nomount ;

Fase de Montaje: se asocia la instancia con la base de datos. Se usa el archivo de parámetros para localizar los archivos de control, que contienen el nombre de los archivos de datos y los registros rehacer. Los archivos de datos y los registros de rehacer no están abiertos, así que no son accesibles por usuarios finales para tareas normales. Para realizar esta fase se pueden utilizar dos comandos:
startup mount;

alter database mount;

Fase de Apertura: se abren los archivos de datos y los registros rehacer. La base de datos queda disponible para las operaciones normales. Es necesario que existan registros rehacer de lo contrario si no hay registros usamos el comando resetlogs, que crea registros nuevos. Para esta fase se pueden usar dos comandos:

  • startup open;
  • alter database open;
  • Si es necesario utilizar resetlogs:
  • startup open resetlogs;
  • alter database open resetlogs;
  • startup restrict (sólo permite la conexión de usuarios con el privilegio restricted sesion).
  • startup force (hace shutdown abort y arranca la BD).

Comando SHUTDOWN
El comando SHUTDOWN lo utilizamos parar una base de datos la cual consiste en varias cláusulas.
Shutdown Normal: Este es el valor por defecto, durante el proceso de parada no admite nuevas conexiones y espera que las conexiones actuales finalicen. En el próximo arranque la base datos no requiere procedimientos de recuperación.
Shutdown Immediate: Se produce una parada inmediata de la base de datos, durante el proceso de parada no permite nuevas conexiones y las actuales la desconecta, las transacciones que no estén commit se hara roolback de ellas. En el próximo arranque la base datos no requiere procedimientos de recuperación.
Shutdown Transactional: Se produce una parada hasta que hayan terminado las transacciones activas, no admite nuevas conexiones y tampoco nuevas transacciones, una vez que las transacciones activas van terminando va desconectando a los usuarios. En el próximo arranque la base datos no requiere procedimientos de recuperación.
Shutdown Abort: Aborta todos los procesos de una base de datos, durante el proceso de parada no permite nuevas conexiones y las actuales la desconecta, las transacciones que no estén commit se hará roolback de ellas. En el próximo arranque la base datos puede requerir procedimientos de recuperación.

Comando Describe
Este comando permite conocer la estructura de una tabla, las columnas que la forman y su tipo y restricciones. 
DESCRIBE f1;

Comando SHOW TABLES y SHOW CREATE TABLE
El comando SHOW TABLES muestra las tablas dentro de una base de datos y SHOW CREATE TABLES muestra la estructura de creación de la tabla.


Modificación
Para realizar una modificación utilizamos el comando ALTER TABLE. Para usar ALTER TABLE, necesita permisos ALTER, INSERT y CREATE para la tabla. 

4.4- Manejo de Índices

El índice de una base de datos es una estructura alternativa de los datos en una tabla. El propósito de los índices es acelerar el acceso a los datos mediante operaciones físicas más rápidas y efectivas. En pocas palabras, se mejoran las operaciones gracias a un aumento de la velocidad, permitiendo un rápido acceso a los registros de una tabla en una base de datos. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuáles se hacen búsquedas frecuentes.

4.4.1 Tipos de Índices

Índices Compuestos

Un índice compuesto, también llamado índice concatenado, es un índice de varias columnas de una tabla. Las columnas de un índice compuesto que deben aparecer en el orden que tenga más sentido para las consultas que recuperar datos y no necesita ser adyacente en la tabla.
Los índices compuestos pueden acelerar la recuperación de datos para las instrucciones SELECT en la que el DONDE referencias cláusula totalidad o la parte principal de las columnas en el índice compuesto. Por lo tanto, el orden de las columnas utilizadas en la definición es importante. En general, las columnas de acceso más común van primero.

Índices Únicos y no Únicos
Los índices pueden ser únicos o no únicos. Índices únicos garantizar que no hay dos filas de una tabla tienen valores duplicados en la columna de clave o columna. Por ejemplo, dos empleados no pueden tener el mismo ID de empleado. Por lo tanto, en un índice único, existe una ROWID para cada valor de datos. Los datos de los bloques de hojas se ordenan sólo por clave.

Índices no únicas permiten valores duplicados en la columna o columnas indexadas. Por ejemplo, la columna ‘nombre de la tabla de empleados puede contener varios valores Mike. Para un índice no único, el ROWID se incluye en la clave de forma ordenada, por lo que los índices no únicos se ordenan por la clave de índice y ROWID (ascendente).

Tipos de Índices

Los Índices de Árbol B
Estos índices son el tipo de índice estándar. Son excelentes para la clave principal y los índices altamente selectivos. Utilizado como índices concatenados, B-tree índice pueden recuperar los datos ordenados por las columnas de índice. Índices B-tree tienen los siguientes subtipos:

Índice de Tablas Organizadas
Una tabla de índice-organizada difiere de un montón-organizado porque los datos es en sí mismo el índice.
En este tipo de índice, los bytes de la clave de índice se invierten, por ejemplo, 103 se almacena como 301. La inversión de bytes extiende inserta en el índice durante muchos bloques.

Índices Descendentes
Este tipo de índice almacena los datos en una columna o columnas de concreto en orden descendente.
Índices B-Tree de Racimo
Este tipo de índice se utiliza para indexar una clave de clúster tabla. En lugar de apuntar a una fila, los puntos clave para el bloque que contiene filas relacionadas con la clave de clúster.
Mapa de Bits y los Índices Bitmap Join
En un índice de mapa de bits, una entrada de índice utiliza un mapa de bits para que apunte a varias filas. En cambio, los puntos de entrada de un índice B-tree en una sola fila. Un índice de combinación de mapa de bits es un índice de mapa de bits para la unión de dos o más tablas. Consulte «Indicadores de mapa de bits».
Índices Basados ​​en Funciones
Este tipo de índice incluye columnas que, o bien se transforman por una función, tales como la función UPPER, o incluidos en una expresión. Índices B-tree o mapa de bits puede ser basado en las funciones.
Índices de Dominio de Aplicación
Este tipo de índice se crea por un usuario para los datos en un dominio específico de la aplicación. El índice físico no tiene que utilizar una estructura de índice tradicional y se puede almacenar ya sea en la base de datos Oracle como tablas o externamente como un archivo. Consulte «Indicadores de dominio de aplicación».
Índices B-Tree
Árboles B, abreviatura de árboles balanceados, son el tipo más común de índice de base de datos. Un índice B-tree es una lista ordenada de valores dividida en rangos. Mediante la asociación de una tecla con una fila o rango de filas, los árboles B proporcionan un excelente rendimiento de la recuperación para una amplia gama de consultas, incluyendo coincidencia exacta y búsquedas por rango.

4.4.2 Reorganización de Índices.

Un factor clave para conseguir una E/S de disco mínima para todas las consultas de bases de datos es asegurarse de que se creen y se mantengan buenos índices. Una vez creados los índices, se debe procurar mantenerlos para asegurarse que sigan trabajando en forma óptima. A medida que se agregan, modifican o borran datos se produce fragmentación. Esta fragmentación puede ser buena o mala para el rendimiento del sistema, dependiendo de las necesidades del trabajo de la base de datos.
Fragmentación de los Índices
La fragmentación es consecuencia de los procesos de modificación de los datos (instrucciones INSERT, UPDATE y DELETE) efectuados en la tabla y en los índices definidos en la tabla. Como dichas modificaciones no suelen estar distribuidas de forma equilibrada entre las filas de la tabla y los índices, el llenado de cada página puede variar con el paso del tiempo. Para las consultas que recorren parcial o totalmente los índices de una tabla, este tipo de fragmentación puede producir lecturas de páginas adicionales. Esto impide el recorrido paralelo de los datos. Existen dos tipos de fragmentación:
Interna: Fragmentación dentro de páginas individuales de datos e índices con espacios libres que generan la necesidad de más operaciones de E/S y más memoria para su lectura. Este hecho disminuye el rendimiento en ambientes de lectura, pero en algunos casos puede beneficiar las inserciones, que no requieren una división de páginas con tanta frecuencia.
Externa: Cuando el orden lógico de las páginas no es correcto, porque las páginas no son contiguas. El acceso a los datos es mucho más lento por la necesidad de búsqueda de los datos.
La fragmentación de índices se puede reparar reorganizando un índice o reconstruyéndolo. Para los índices fraccionados que fueron construidos en una estructura partida se puede usar cualquiera de estos métodos o bien en un índice completo o bien en un único fragmento del índice.
Detección de Fragmentación
El primer paso para decidir qué método de desfragmentación se va a utilizar consiste en analizar el índice para determinar el nivel de fragmentación. Si se usa la función del sistema sys.dm_db_index_physical_stats, se puede detectar la fragmentación de los índices de la base de datos thuban-homologada.

La grilla de resultados emitida por la anterior sentencia incluye las siguientes columnas:

Una vez que se toma conciencia del nivel de fragmentación, se debe utilizar la tabla a continuación para determinar el mejor método para su corrección.

La reconstrucción del índice puede ejecutarse tanto en línea como fuera de línea. La reorganización de los índices debe ejecutarse siempre en línea. Para adquirir una disponibilidad similar a la de la opción de reorganización, los índices deben ser reconstruidos en línea.
Estos valores proveen una estricta guía para determinar el punto en el que se debe cambiar de ALTER INDEX REORGANIZE a ALTER INDEX REBUILD.
Los niveles muy bajos de fragmentación (menores que el 5 por ciento) no deben ser corregidos por ninguno de estos comandos porque el beneficio de la remoción de una cantidad tan pequeña de fragmentación es casi siempre superado ampliamente por el costo de reorganización o reconstrucción de índices.

Reorganización de Índices
Para reorganizar uno o más índices se debe usar la sentencia ALTER INDEX con la cláusula REORGANIZE. Por ejemplo:
ALTER INDEX PK_LOGS ON THUBAN_LOGS REORGANIZE
El proceso de reorganización de índices se realiza siempre en línea y el consumo de recursos es bajo por lo que no mantiene bloqueos por mucho tiempo.

4.4.3 Reconstrucción de Índices

Es importante periódicamente examinar y determinar qué índices son susceptibles de ser reconstruidos. Cuando un índice está descompensado puede ser porque algunas partes de éste han sido accedidas con mayor frecuencia que otras. Como resultado de este suceso podemos obtener problemas de contención de disco o cuellos de botella en el sistema. Normalmente reconstruimos un índice con el comando ALTER INDEX.
Es importante tener actualizadas las estadísticas de la base de datos. Para saber si las estadísticas se están lanzando correctamente podemos hacer una consulta sobre la tabla dba_indexes y ver el campo last_analyzed para observar cuando se ejecutaron sobre ese índice las estadísticas.
Blevel (branch level) es parte del formato del B-tree del índice e indica el número de veces que Oracle ha tenido que reducir la búsqueda en ese índice. Si este valor está por encima de 4 el índice deberá de ser reconstruido.


ALTER INDEX <index_name> REBUILD;


Para reconstruir una partición de un índice podríamos hacer los siguiente:
ALTER INDEX <index_name> REBUILD PARTITION <nb_partition> NOLOGGING;

Unidad 3. Configuración y administración del espacio en el disco.

3.1 Definición de espacio de almacenamiento.

Para la gestión del almacenamiento de una base de datos existen 4 conceptos bien definidos que deben ser conocidos para poder comprender la forma en la que se almacenan los datos. Vamos a ver la diferencia entre bloque, extensión, segmento y espacio de tablas.

Bloques: Se tratan de la unidad más pequeña. Generalmente debe múltiple del tamaño de bloque del sistema operativo, ya que es la unidad mínima que va a pedir Oracle al sistema operativo. Si no fuera múltiple del bloque del sistema se añadiría un trabajo extra ya que el sistema debería obtener más datos de los estrictamente necesarios. Se especifica mediante DB_BLOCK_SIZE

Extensiones: Se forma con uno o más bloques. Cuando se aumenta tamaño de un objeto se usa una extensión para incrementar el espacio.

Segmentos: Grupo de extensiones que forman un objeto de la base de datos, como por ejemplo una tabla o un índice.

Espacio de Tablas: Formado por uno o más datafiles, cada datafile solo puede pertenecer a un determinado tablespace

En general, el almacenamiento de los objetos de la base de datos (tablas e índices fundamentalmente) no se realiza sobre el archivo o archivos físicos de la base de datos, sino que se hace a través de estructuras lógicas de almacenamiento que tienen por debajo a esos archivos físicos, y que independizan por tanto las sentencias de creación de objetos de las estructuras físicas de almacenamiento. Esto es útil porque permite que a esos “espacios de objetos ” les sean asociados nuevos dispositivos físicos (es decir, más espacio en disco) de forma dinámica cuando la base de datos crece de tamaño más de lo previsto. Posibilita además otra serie de operaciones como las siguientes:

  • Asignar cuotas específicas de espacio a usuarios de la base de datos.
  • Controlar la disponibilidad de los datos de la base de datos, poniendo fuera de uso alguno de esos espacios de tablas individualmente.
  • Realizar copias de seguridad o recuperaciones parciales de la base de datos.
  • Reservar espacio para almacenamiento de datos de forma cooperativa entre distintos dispositivos.

El administrador de la base de datos puede crear o borrar nuevos espacios lógicos de objetos, añadir o eliminar ficheros físicos de soporte, utilizados como espacio temporal de trabajo, definir parámetros de almacenamiento para objetos destinados a ese espacio de datos, todos los gestores relacionales que venimos introduciendo como ejemplos siguen esta filosofía. En el caso de Oracle, sobre los ficheros físicos de datos (datafiles) se definen los tablespaces. Por lo tanto, una base de datos Oracle se compone lógicamente de tablespaces, y físicamente de datafiles. Su creación es sencilla, con la sentencia GREAT”, TABLESPACE: CREATE TABLESPACE usuarios DATAFILE `datal.ora’ SIZE 50M

También es sencillo ampliar el espacio destinado a un tablespace utilizando el comando ALTER TABLESPACE:

ALTER TABLESPACE usuarios ADD DATAFILE 'data2.ora' SIZE 25M

Para hacer más grande una base de datos, las opciones disponibles son tres:

  1. Añadir más ficheros de datos a tablespaces existentes
  2. Crear tablespaces nuevos con sus correspondientes ficheros de datos asociados
  3. Permitir que el tablespace crezca dinámicamente en función de sus necesidades de espacio

Cada base de datos contiene un tablespace llamado SYSTEM que es creado automáticamente al crear la base de datos. Contiene las tablas del diccionario de datos para la base de datos en cuestión. Es recomendable no cargar datos de usuario en SYSTEM, para dejarlos como espacio de objetos del sistema.

Si además los datos de usuario están en tablespaces sitos en otros dispositivos, el rendimiento mejorará porque las tablas del diccionario de datos se acceden frecuentemente y por lo tanto son un cuello de botella potencial desde el punto de vista del acceso a disco. A la hora de estimar el espacio necesario para cl tablespace sys-nsm hay que tener en cuenta que las unidades de programación PL-SQL (entorno de programación SQL proporcionado por Oracle) almacenadas en la base de datos (procedimientos, paquetes, disparos y funciones) almacenan sus datos en SYSTEM.

3.2 Definición y creación del espacio asignado para cada base de datos

Las bases de datos se almacenan en ficheros o archivos. Existen diferentes formas de organizaciones primarias de archivos que determinan la forma en que los registros de un archivo se colocan físicamente en el disco y, por lo tanto, cómo se accede a éstos.

Las distintas formas de organizaciones primarias de archivos son:

  • Archivos de Montículos (o no Ordenados): esta técnica coloca los registros en el disco sin un orden específico, añadiendo nuevos registros al final del archivo.
  • Archivos Ordenados (o Secuenciales): mantiene el orden de los registros con respecto a algún valor de algún campo (clave de ordenación).
  • Archivos de Direccionamiento Calculado: utilizan una función de direccionamiento calculado aplicada a un campo específico para determinar la colocación de los registros en disco.
  • Árboles B: se vale de la estructura de árbol para las colocaciones de registros.
  • Organización Secundaria o Estructura de Acceso Auxiliar: Estas permiten que los accesos a los registros de un archivo basado en campos alternativos, sean más eficientes que los que han sido utilizados para la organización primaria de archivos.

El DBMS asigna espacio de almacenamiento a las bases de datos cuando los usuarios introducen create database o alter database. El primero de los comandos puede especificar uno o más dispositivos de base de datos, junto con la cantidad de espacio en cada uno de ellos que será asignado a la nueva base de datos.

Si se utiliza la palabra clave default o se omite completamente la cláusula on, el DBMS pone la base de datos en uno o más de los dispositivos predeterminados de base de datos especificados en master.sysdevices.

Para especificar un tamaño (por ejemplo, 4MB) para una base de datos que se va a almacenar en una ubicación predeterminada, se utiliza: on default = size de esta forma:

1CREATE DATABASE newpubs  on default = 4

3.3 Asignación de cuotas de espacio para usuarios

Por defecto ningún usuario tiene cuota en los Tablespaces y se tienen tres opciones para poder proveer a un usuario de una cuota sin limite, que permite al usuario usar todo el espacio disponible de un Tablespace.

Por medio de un valor, que puede ser en kilobytes o megabytes que el usuario puede usar. Este valor puede ser mayor o menor que el tamaño del Tablespace asignado a él.

Por medio del privilegio UNLIMITED TABLESPACE, se tiene prioridad sobre cualquier cuota dada en un Tablespace por lo que tienen disponibilidad de todo el espacio incluyendo en SYSTEM y SYSAUX.

No se recomienda dar cuotas a los usuarios en los Tablespaces SYSTEM y SYSAUX, pues tipicamente sólo los usuarios SYS y SYSTEM pueden crear objetos en éstos. Tampoco dar cuotas en los Tablespaces Temporal o del tipo Undo.

Ejemplo de la creación de usuario

CREATE USER nombre IDENTIFIED BY contraseña [DEFAULT TABLESPACE nombreTableSpace] [TEMPORARY TABLESPACE nombreTemp] [QUOTA INT {K|M} | UNLIMITED ON nombreTableSpace] [PROFILE perfil] [PASSWORD EXPIRE] [ACCOUNT {LOCK | UNLOCK}]

CREATE USER: Nos permite especificar el nombre del usuario

IDENTIFIED BY: Nos permite especificar su contraseña

DEFAULT TABLESPACE: Definimos el tablespace por defecto. Si no se especifica se asigna USERS. Para crear un nuevo tablespace.

TEMPORARY TABLESPACE: Definimos el tablespace temporal. Si no especificamos ninguno se asigna TEMP.

QUOTA: Espacio que el usuario podrá utilizar en el sistema. Si no se especifica el espacio por defecto es 0 con lo cual el usuario no podrá crear nada.

PROFILE: Permite especificar el perfil por defecto. Si no se especifica se asigna DEFAULT. Es utilizado para controlar el acceso a los recursos, por ejemplo, el número de sesiones concurrentes, uso de CPU, etc.

PASSWORD EXPIRE: Especifica que la contraseña asignada al usuario expirará, de esta forma, el propio usuario o el DBA deberá asignar una nueva antes de acceder al sistema.

ACCOUNT LOCK/UNLOCK: Podemos decidir si el usuario tendrá la cuenta bloqueada o no de forma inicial.

3.4 Espacios para objetos de la base de datos

Una buena parte del trabajo del DBA implicará la planificación para el almacenamiento real de la base de datos.

Nombres de objeto Cada objeto de Active Directory es una instancia de una clase definida en el esquema. Cada clase tiene atributos que aseguran lo siguiente:

  • La identificación única de cada objeto (instancia de una clase) en un almacén de datos del directorio.
  • La compatibilidad con los Id. de seguridad utilizados en Windows Nt 4.0 y versiones anteriores.
  • La compatibilidad con los estándar LDAP para nombres de objetos del directorio

El cálculo espacial debe tener en cuenta no sólo tablas, índices, sino también, y dependiendo del DBMS, el registro de transacciones. Cada una de estas entidades probablemente requerirá un archivo separado o conjunto de datos, para el almacenamiento persistente.

El DBA debe separar en diferentes discos a los archivos para:

  • Mejorar el rendimiento
  • Separar índices de datos
  • Aislar los logros en otro disco

3.5 Roles

Finalmente, los Roles, que son simplemente un conjunto de privilegios que se pueden otorgar a un usuario o a otro Rol. De esa forma se simplifica el trabajo del DBA en esta tarea. Por default cuando creamos un usuario desde el Enterprise Manager se le asigna el permiso de connect, lo que permite al usuario conectarse a la BD y crear sus propios objetos en su propio esquema. De otra manera, debemos asignarlos en forma manual.

Para crear un Rol y asignarlo a un usuario se hace de la siguiente manera:

1CREATE ROLE appl_dba;

Opcionalmente, se puede asignar una clave al Rol:

1SET ROLE appl_dba IDENTIFIED BY app_pwd;

Para asignar este Rol a un usuario:

1GRANT appl_dba TO jperez;

Otro uso común de los roles es asignarle privilegios a nivel de Objetos, por ejemplo, en una Tabla de Facturas en donde sólo queremos que se puedan hacer Querys e Inserts:

1
2
CREATE ROLE consulta;GRANT SELECT,INSERT on analista.factura TO consulta;

Y finalmente asignamos ese rol con este “perfil” a distintos usuarios finales:

1GRANT consulta TO ahernandez;

Nota: Existen algunos roles predefinidos, tales como:

CONNECT, CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER, ALTER SESSION, RESOURCE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR SCHEDULER, CREATE ANY JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM, MANAGE SCHEDULER, etc.

DBA: Tiene la mayoría de los privilegios, no es recomendable asignarlo a usuarios que no son administradores.

SELECT_CATALOG_ROLE: No tiene privilegios de sistema, pero tiene cerca de 1600 privilegios de objeto.Para consultar los roles definidos y los privilegios otorgados a través de ellos, utilice las vistas:
SELECT * from DBA_ROLES;
SELECT* from DBA_ROLE_PRIVS order by GRANTEE;

Importancia al momento de crear una base de datos

Es importante que a la hora de crear una BD el DBA configure y asigne el espacio de disco que ocupara la BD para que así no haya complicaciones en caso de que la cantidad de información almacenada sea en volumen muy grande y llegara a faltar espacio en el disco para ese volumen de información, así como la importancia de tener bien administrada la BD ya que de no ser así pueden existir errores que causarían el colapso de dicha BD.

Porque el administrador debe contemplar la configuración y administración del espacio

El DBA debe de contemplar estos aspectos ya que de lo contrario no estaría bien el BD ya que no se tiene considerado el espacio de disco que se ocupara y en dado caso que se requiera más espacio no se podría tener más espacio ya que en un principio no se consideró ni la configuración ni la administración del espacio en disco, se tendría que volver a generar un BD con las especificaciones necesarios para empresa causando perdidas de dinero y tiempo para dicha empresa.

Unidad 1: Introducción al lenguaje ensamblador

1.1 Importancia de la programación en lenguaje ensamblador.

La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en él se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.

Puntos importantes:

  • El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario.
  • El lenguaje ensamblador expresa las instrucciones de una forma más natural al hombre a la vez que muy cercana al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en código máquina.
  • El lenguaje ensamblador trabaja con nemónicos, que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar.
  • La traducción de los nemónicos a código máquina entendible por el microcontrolador la lleva a cabo un programa ensamblador.
  • El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente código máquina, que suele tener la extensión *.hex.

Ventajas:

  • Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la máquina la computadora lo procesa mas rápido.
  • Eficiencia de tamaño: un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel
  • Flexibilidad: Es flexible porque todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina. O sea que en lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite.

Desventajas:

  • Tiempo de programación: Como es un lenguaje de bajo nivel requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución.
  • Programas fuente grandes: Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos más instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores.
  • Peligro de afectar recursos inesperadamente: Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la maquina, programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialize. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel.
  • Falta de portabilidad: Porque para cada máquina existe un lenguaje ensamblador; por ello, evidentemente no es una selección apropiada de lenguaje cuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras.  

1.2 El procesador y sus registros internos

Definición: El procesador es el que se refiere a los diferentes tipos de artículos de sistemas informativos que forma parte de un microprocesador que es parte de un CPU o micro que es el cerebro de la computadora y de todos los procesos informativos desde los más sencillos hasta los más complejos.

Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre.

Tipos de registros:

  • Registros de segmento.
  • Registros de propósito general.
  • Registros de apuntadores.
  • Registros de banderas.
  • Registros de Pila.
  • Registros Indice.

◘ Registros de segmento: Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual.

  • Registro CS: El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.
  • Registro DS: La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, mas un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte especifico en el segmento de datos.
  • Registro SS: El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en le registro SS. Esta dirección de segmento, mas un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que esta siendo direccionada.
  • Registros ES: Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.
  • Registros FS y GS: Son registros extra de segmento en los procesadores 80386 y posteriores.

◘ Registros de propósito general: Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del sistema. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte “alta”, y el ultimo byte de la derecha es la parte “baja”. Por ejemplo, el registro CX consta de una parte CH (alta) y una parte Cl (baja), y usted puede referirse a cualquier parte por su nombre.

  • Registro AX: El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. También, algunas operaciones generan código mas eficiente si se refieren al AX en lugar de a los otros registros.
  • Registro BX: El BX es conocido como el registro base ya que es el único registro de propósito general que puede ser índice para direccionamiento indexado. También es común emplear el BX para cálculos.
  • Registro DX: Es conocido como el registro de datos. Algunas operaciones de entrada/salida requieren uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos.

◘ Registros Apuntadores: Los registros SP (apuntador de la pila) Y BP (apuntador de base) están asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila.

  • Registro SP: El apuntador de la pila de 16 bits esta asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo procesada en la pila. Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits, el registro ESP. El sistema maneja de forma automática estos registros.
  • Registro BP: El BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones transmitidos vía pila. Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP.

◘ Registros Indice: Los registros SI y DI están disponibles para direccionamiento indexado y para sumas y restas.

  • Registro SI: El registro índice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI esta asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el ESI.
  • Registro DI: El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el DI esta asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el EDI.

◘Registro de Banderas: De los 16 bits del registro de banderas, nueve son comunes a toda la familia de procesadores 8086, y sirven para indicar el estado actual de la maquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente. En resumen, los bits de las banderas comunes son como sigue:

  • OF (Overflow, desbordamiento): Indica desbordamiento de un bit de orden alto (mas a la izquierda) después de una operación aritmética.
  • DF (dirección): Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.
  • IF (interrupción): Indica que una interrupción externa, como la entrada desde el teclado, sea procesada o ignorada.
  • TF (trampa): Permite la operación del procesador en modo de un paso. Los programas depuradores, como el DEBUG, activan esta bandera de manera que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo, para examinar el efecto de esa instrucción sobre los registros de memoria.
  • SF (signo): Contiene el signo resultante de una operación aritmética (0 = positivo y 1 = negativo).
  • ZF (cero): Indica el resultado de una operación aritmética o de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero).
  • AF (acarreo auxiliar): Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmética especializada.
  • PF (paridad): Indica paridad par o impar de una operación en datos de 8 bits de bajo orden (mas a la derecha).
  • CF (acarreo): Contiene el acarreo de orden mas alto (mas a la izquierda) después de una operación aritmética; también lleva el contenido del ultimo bit en una operación de corrimiento o de rotación.

Las banderas mas importantes para la programación en ensamblador son O, S, Z y C, para operaciones de comparación y aritméticas, y D para operaciones de cadenas de caracteres. Los procesadores 80286 y posteriores tienen algunas banderas usadas para propósitos internos, en especial las que afectan al modo protegido. Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags.

  • ◘ Registros de PILA: La pila es un área de memoria importante y por ello tiene, en vez de uno, dos registros que se usan como desplazamiento (offset) para apuntar a su contenido. Se usan como complemento al registro y son:
  • SP (Stack Pointer): Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila. Por lo general, el programador no debe alterar su contenido.
  • BP (Base pointer): Se usa como registro auxiliar. El programador puede usarlo para su provecho.

1.3 La memoria principal (RAM)

La memoria principal o primaria, «Memoria Central «, es aquella memoria de un ordenador, donde se almacenan temporalmente tanto los datos como los programas que la CPU está procesando o va a procesar en un determinado momento. Por ejemplo, cuando la CPU tiene que ejecutar un programa, primero lo coloca en la memoria y después lo empieza a ejecutar.
Otros andarán más rápido si el sistema cuenta con más memoria RAM. La memoria Caché: dentro de la memoria RAM existe una clase de memoria denominada Memoria Caché que tiene la característica de ser más rápida que las otras, permitiendo que el intercambio de información entre el procesador y la memoria principal sea a mayor velocidad.

Está formada por bloques de circuitos integrados o chips capaces de almacenar, retener o «memorizar» información digital, es decir, valores binarios; a dichos bloques tiene acceso el microprocesador de la computadora. La MP se comunica con el microprocesador de la CPU mediante el bus de direcciones.

El ancho de este bus determina la capacidad que posea el microprocesador para el direccionamiento de direcciones en memoria. En algunas oportunidades suele llamarse «memoria interna» a la MP, porque a diferencia de los dispositivos de memoria secundaria, la MP no puede extraerse tan fácilmente por usuarios no técnicos.

La MP es el núcleo del sub-sistema de memoria de una computadora, y posee una menor capacidad de almacenamiento que la memoria secundaria, pero una velocidad millones de veces superior. Si tienes más memoria almacenas más datos.

Características de la Memoria
Las magnitudes importantes que caracterizan la Memoria Central o Principal son:

  • Capacidad o tamaño de la misma. Es decir, el numero de miles de posiciones que contiene. Normalmente se expresan en K.palabras, aunque en los ordenadores personales al ser las palabras de 8 bits se expresan en K-bytes. En la actualidad, el tamaño de la palabra es múltiplo del byte, ya que de esta forma el acceso a la misma puede hacerse desde uno al ancho máximo del bus de datos, ahorrando en muchos casos tiempo. Así tendremos palabras de 8, 16, 32, 64 bits y capacidades de siempre medidas en potencia de dos: 8, 16, 64, 128 K…etc(siendo 1K igual a 1025).
  • Tiempo de Acceso. Es el tiempo que invierte el ordenador desde que se emite la orden de lectura-escritura, hasta que finaliza la misma. Este tiempo es muy pequeño, y de el depende la potencia del ordenado. Son típicos tiempos del orden de microsegundos e incluso del orden de 2 a 10 nanosegundos.
  • El tamaño de la celda define su anchura de palabra, y viene fijado por el ancho del registro de información de memoria. Si la palabra interna es superior a la de la memoria, necesitara hacer más de un acceso para conseguir toda la información.

1.4 El concepto de interrupciones 

Definición: Una interrupción es el rompimiento en la secuencia de un programa para ejecutar un programa especial llamando una rutina de servicio cuya característica principal es que al finalizar regresa al punto donde se interrumpió el programa.

Dentro de una computadora existen dos clases de interrupciones:

◘ Interrupciones por software: Son aquellas programadas por el usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida.

◘ Interrupciones por hardware: Son aquellas que son provocadas por dispositivos externos al procesador su característica principal es que no son programadas, esto es, pueden ocurrir en cualquier momento en el programa.
Existen dos clases de interrupciones de este tipo:

  • Interrupciones por hardware enmascarables: Aquellas en las que el usuario decide si quiere o no ser interrumpido.
  • Interrupciones por hardware no enmascarables (NMI): Aquellas que siempre interrumpen al programa.

Las interrupciones por software se ejecutan con ayuda de las instrucciones: INT e IRET, además se tiene 256 interrupciones: de la 00 a la FF.

Asociado al concepto de interrupción se tiene un área de memoria llamada vector de interrupciones; la cual contiene las direcciones de las rutinas de servicio de cada interrupción. Esta área se encuentra en el segmento 0000:0000.

Una interrupción es una situación especial que suspende la ejecución de un programa de modo que el sistema pueda realizar una acción para tratarla. Tal situación se da, por ejemplo, cuando un periférico requiere la atención del procesador para realizar una operación de E/S.

Las interrupciones constituyen quizá el mecanismo más importante para la conexión del microcontrolador con el mundo exterior, sincronizando la ejecución de programas con acontecimientos externos.
Pasos para el pricesamiento:
1.Terminar la ejecución de la instrucción máquina en curso.

2.Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la última instrucción.

3.La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (ISR, Interrupt Service Routine) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la interrupción.

4. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.
Ejemplo de interrupciones:

int 01h–>un solo paso
int 02h–>interrupcion no enmascarable
int 03h–> punto de interrupcion
int 04h–>desbordamiento
int 05h–>impresion de pantalla
int 08h–>Cronometro
int 15h–>Servicios del sistema
int 16h–>Funciones de entrada del teclado
int 18h–>Entrada con el Basic de Rom
int 19h–>Cargador ed arranque
int 1Ah–>Leer y establecer la hora
int 1Bh–>Obtener el control con una interrupcion de teclado.
int 2oh–>Terminar un programa
int 33h->Funciones del Raton

1.5 Llamadas a servicios del sistema

Una llamada al sistema es un método o función que puede invocar un proceso para solicitar un cierto servicio al sistema operativo. Dado que, el acceso a ciertos recursos del sistema requieren la ejecución de código en modo privilegiado, el sistema operativo ofrece un conjunto de métodos o funciones que el programa puede emplear para acceder a dichos recursos. En otras palabras, el sistema operativo actúa como intermediario, ofreciendo una interfaz de programación (API) que el programa puede usar en cualquier momento para solicitar recursos gestionados por el sistema operativo.

Algunos ejemplos de llamadas al sistema son las siguientes:

  • Time: que permite obtener la fecha y hora del sistema.
  • Write: que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una pantalla o un disco magnético.
  • Read: que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco magnético.
  • Open: que es usada para obtener un descriptor de un fichero del sistema, ese fichero suele pasarse a write.

En los sistemas operativos bajo norma POSIX o similares, algunas llamadas al sistema muy usadas son: open, Read (system call), write, close, wait, exec, fork, exit y kill. Los sistemas operativos actuales tienen cientos de llamadas, por ejemplo, Linux 2.x y FreeBSD tienen más de 300.

Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado (generalmente es el núcleo), previamente especificado. Esto permite al código privilegiado especificar donde va a ser conectado, así como el estado del procesador.

Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés: Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de bajo nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.

Generalmente, los sistemas operativos proveen bibliotecas que relacionan los programas de usuario y el resto del sistema operativo, usualmente una biblioteca C como glibc o el runtime de Microsoft C. Esta biblioteca maneja los detalles de bajo nivel para transferir información al kernel y conmutar a modo supervisor, así como cualquier procesamiento de datos o tareas que deba ser realizada en modo supervisor. Idealmente, esto reduce la dependencia entre el sistema operativo y la aplicación, e incrementa su portabilidad.

La implementación de las llamadas al sistema requiere un control de transferencia que involucra características específicas de la arquitectura del procesador. Una forma típica de implementar es usar una interrupción por software. Linux usa esta implementación en la arquitectura x86. 

1.6 Modos de direccionamiento 

Los modos de direccionamiento son las diferentes maneras de especificar un operando dentro de una instrucción en lenguaje ensamblador. Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y/o constantes, contenida dentro de una instrucción de la máquina o en otra parte.

Diferentes arquitecturas de computadores varían mucho en cuanto al número de modos de direccionamiento que ofrecen desde el hardware. Eliminar los modos de direccionamiento más complejos podría presentar una serie de beneficios, aunque podría requerir de instrucciones adicionales, e incluso de otro registro. Se ha comprobado que el diseño de CPUs segmentadas es mucho más fácil si los únicos modos de direccionamiento que proporcionan son simples.
La mayoría de las máquinas RISC disponen de apenas cinco modos de direccionamiento simple, mientras que otras máquinas CISC tales como el DEC VAX tienen más de una docena de modos de direccionamiento, algunos de ellos demasiado complejos. El mainframe IBM System/360 disponía únicamente de tres modos de direccionamiento; algunos más fueron añadidos posteriormente para el System/390.
Cuando existen solo unos cuantos modos, estos van codificados directamente dentro de la propia instrucción (Un ejemplo lo podemos encontrar en el IBM/390, y en la mayoría de los RISC). Sin embargo, cuando hay demasiados modos, a menudo suele reservarse un campo específico en la propia instrucción, para especificar dicho modo de direccionamiento. El DEC VAX permitía múltiples operandos en memoria en la mayoría de sus instrucciones, y reservaba los primeros bits de cada operando para indicar el modo de direccionamiento de ese operando en particular.
Tipos de direccionamiento
◘ Implícito: En este modo de direccionamiento no es necesario poner ninguna dirección de forma explícita, ya que en el propio código de operación se conoce la dirección de el/los operando/s al (a los) que se desea acceder o con el/los que se quiere operar.Supongamos una arquitectura de pila, las operaciones aritméticas no requieren direccionamiento explícito por lo que se ponen como: – add – sub …Porque cuando se opera con dos datos en esta arquitectura se sabe que son los dos elementos del tope de la pila. Ejemplo de una pila
1 2 3 4 5 6 <- pila top() es 1 ntop() es 2
Donde top() representa el tope de la pila y ntop() el siguiente al tope de la pila y son estos argumentos con los que se opera al llamar a una orden en concreto.

◘ Inmediato: En la instrucción está incluido directamente el operando.
En este modo el operando es especificado en la instrucción misma. En otras palabras, una instrucción de modo inmediato tiene un campo de operando en vez de un campo de dirección. El campo del operando contiene el operando actual que se debe utilizar en conjunto con la operación especificada en la instrucción. Las instrucciones de modo inmediato son útiles para inicializar los registros en un valor constante.
Cuando el campo de dirección especifica un registro del procesador, la instrucción se dice que está en el modo de registro. Su valor es fijo, por lo que se suele utilizar en operaciones aritméticas o para definir constantes y variables. Como ventaja, no se requiere acceso adicional a memoria para obtener el dato, pero el tamaño del operando está limitado por el tamaño del campo de direccionamiento.
Las desventajas principales son que el valor del dato es constante y el rango de valores que se pueden representar está limitado por el tamaño de este operando.

◘ Directo: El campo de operando en la instrucción contiene la dirección en memoria donde se encuentra el operando.
En este modo la dirección efectiva es igual a la parte de dirección de la instrucción. El operando reside en la memoria y su dirección es dada directamente por el campo de dirección de la instrucción. En una instrucción de tipo ramificación el campo de dirección especifica la dirección de la rama actual.

Indirecto: El campo de operando contiene una dirección de memoria, en la que se encuentra la dirección efectiva del operando.

Si hace referencia a un registro de la máquina, la dirección de memoria (dirección efectiva) que contiene el dato estará en este registro y hablaremos de direccionamiento indirecto a registro; si hace referencia a una posición de memoria, la dirección de memoria (dirección efectiva) que contiene el dato estará almacenada en esta posición de memoria y hablaremos de direccionamiento indirecto a memoria.

La desventaja principal de este modo de direccionamiento es que necesita un acceso más a memoria que el directo. Es decir, un acceso a memoria para el direccionamiento indirecto a registro y dos accesos a memoria para el direccionamiento indirecto a memoria; por este motivo este segundo modo de direccionamiento no se implementa en la mayoría de las máquinas.

◘ Absoluto: El campo de operando contiene una dirección en memoria, en la que se encuentra la instrucción. Y no se cancela.

◘ De registro: Sirve para especificar operandos que están en registros. En este modo, los operandos están en registros que residen dentro de la CPU.

◘ Indirecto mediante registros: El campo de operando de la instrucción contiene un identificador de registro en el que se encuentra la dirección efectiva del operando.

En este modo el campo de la dirección de la instrucción da la dirección en donde la dirección efectiva se almacena en la memoria. El control localiza la instrucción de la memoria y utiliza su parte de dirección para acceder a la memoria de nuevo para leer una dirección efectiva. Unos pocos modos de direccionamiento requieren que el campo de dirección de la instrucción sea sumado al control de un registro especificado en el procesador. La dirección efectiva en este modo se obtiene del siguiente cálculo:

  Dir. efectiva = Dir. de la parte de la instrucción + Contenido del registro del procesador.
◘ De desplazamiento: Combina el modo directo e indirecto mediante registros.
◘ De pila: Se utiliza cuando el operando está en memoria y en la cabecera de la pila.
Este direccionamiento se basa en las estructuras denominadas Pila (tipo LIFO), las cuales están marcados por el fondo de la pila y el puntero de pila (*SP). El puntero de pila apunta a la última posición ocupada. Así, como puntero de direccionamiento usaremos el SP.El desplazamiento más el valor del SP nos dará la dirección del objeto al que queramos hacer referencia. En ocasiones, si no existe C. de desplazamiento solo se trabajara con la cima de la pila. Como es un modo de direccionamiento implícito, solo se utiliza en instrucciones determinadas, las más habituales de las cuales son PUSH (poner un elemento en la pila) y POP (sacar un elemento de la pila).Este tipo de direccionamiento nos aporta flexibilidad pero por el contrario, es mucho más complejo que otros tipos estudiados más arriba.

◘ Relativo a un registro base: Consiste, al igual que el indirecto a través de registro, en calcular la dirección efectiva (EA, effective address) como la suma del contenido del registro base y un cierto desplazamiento (offset) que siempre será positivo. Esta técnica permite códigos reentrantes y acceder de forma fácil y rápida a posiciones cercanas de memoria.

Este modo de direccionamiento es muy usado por los ensambladores cuando se llaman a las funciones (para acceder a los parámetros almacenados en la pila).
◘ Relativo a un registro índice: Es similar al direccionamiento relativo a un registro base, excepto que es el contenido del registro índice el que indica el desplazamiento que se produce a partir de una dirección de memoria que se pasa también como argumento a la orden que utiliza este modo de direccionamiento. Aunque en esencia son dos modos equivalentes. La EA se calcula como la suma del contenido del registro índice y una dirección de memoria.
◘ Indexado respecto a una base: Se trata de una combinación de los dos anteriores y consiste en calcular la dirección efectiva como:

  • Relativo al contador de programa: Consiste en dirección una posición de memoria usando como registro base al contador de programa (PC), el funcionamiento es análogo al direccionamiento respecto a registro base con la salvedad de que, en este caso, el offset puede ser también negativo.
  • Indexado con autoincremento/autodecremento: Es un modo de direccionamiento análogo al indexado, explicado anteriormente.

La única diferencia es que permite un incremento o decremento de la dirección final o el registro índice según los siguientes casos:

  • Indexado con autopreincremento: Incrementa el registro índice primero (se incrementa un valor, según el tamaño del objeto direccionado) y luego calcula la EA al igual que el direccionamiento indexado.
  • Indexado con autoposincremento: Calcula la dirección efectiva y después incrementa esta.
  • Indexado con autopredecremento: Decrementa el registro índice y después calcula la dirección efectiva.
  • Indexado con autoposdecremento: Calcula la dirección efectiva y después decrementa esta.

◘ Instrucción de salto con direccionamiento absoluto: Consiste en cargar en el PC el valor que se especifica, por ¿ejemplo: jmp 0xAB —-> Carga 0xAB en PC.
◘ Instrucción de salto con direccionamiento relativo: Es parecida a la especificada anteriormente la diferencia es que el salto es relativo al PC.
Ejemplo: supongamos que PC vale = 0x0A, si nosotros interpretamos la instrucción jr +03, saltaremos tres posiciones posteriores a PC (también podría ser -03 y serían posiciones anteriores). Pero, ¡cuidado! si esa instrucción estaba en la posición 0x0A la dirección de PC a incrementar será la inmediatamente posterior (ya que PC se incrementa automáticamente después de leer la instrucción), por lo que quedaría:
       PC = 0x0B —> nuevo PC = 0x0B+0x03 = 0x0E, con lo que el PC quedaría como 0x0E.
◘ Direccionamiento paginado: En el paginado la memoria se encuentra actualmente dividida en páginas (bloques de igual longitud). Para obtener las direcciones se necesita:

  • Indicador de página (IP): en un registro específico o de propósito general de la máquina.
  • Dirección de la palabra (DP):
    en el campo CD de la instrucción.

    Así, concatenando ambas partes se obtiene la dirección completa.

El problema viene cuando queremos referenciar un dato al que no podemos acceder de forma relativa (p.e. porque los registros base no puedan alcanzar dicha posición aun con el direccionamiento absoluto. Sin embargo, sólo una pequeña parte de la memoria se puede acceder (64 kilobytes, si el desplazamiento es de 16 bits).
El desplazamiento de 16 bits puede parecer muy pequeño en relación con el tamaño de la memoria de los equipos actuales (esta es la razón por la 80386 se expandió a 32 bits). Podría ser peor ya que: los sevidores IBM System/360 sólo tienen un signo de 12 bits de desplazamiento. Sin embargo, el principio de localización se aplica en un corto espacio de tiempo, la mayoría de los elementos de datos que un programa quiere acceder están bastante cerca uno del otro.Este modo de direccionamiento está estrechamente relacionado con el modo de direccionamiento absoluto.

Ejemplo 1: Dentro de una subrutina, un programador estará principalmente interesados en los parámetros y las variables en los atributos del objeto actual.

1.7 Proceso de ensamblado y ligado 

Pasos para llevar a cabo el proceso:
1. El programa utiliza un editor de texto para crear un archivo de texto ASCII, conocido como archivo de código fuente.

2. El ensamblador lee el archivo de código fuente y produce un archivo de código objeto, una traducción del programa a lenguaje máquina. De manera opcional, produce un archivo de listado. Si ocurre un error, el programador debe regresar al paso 1 y corregir el programa.

3. El enlazador lee el archivo de código objeto y verifica si el programa contiene alguna llamada a los procedimientos en una biblioteca de enlace. El enlazador copia cualquier procedimiento requerido de la biblioteca de enlace, lo combina con el archivo de código objeto y produce el archivo ejecutable. De manera opcional, el enlazador puede producir un archivo de mapa.

4. La herramienta cargador (loader) del sistema operativo lee el archivo ejecutable y lo carga en memoria, y bifurca la CPU hacia la dirección inicial del programa, para que éste empiece a ejecutarse.

1.8 Desplegado de mensajes en el monitor 

Para poder desplegar los mensajes en lenguaje ensamblador es preciso conocer primero la estructura del lenguaje ensamblador, la cual es:

◘ Palabras reservadas:

  • PAGE: designa el número máximo de líneas para listar en una página y el número máximo de caracteres en una línea.
  • TITLE: para hacer que un título en un programa se imprima en la línea 2 de cada página en el listado del programa.
  • SEGMENTS Y ENDS
  • ASSUME

◘ Identificadores: nombre que se le da a algunos elementos del programa.
◘ Operación.
◘ Operando.

Todos los gráficos y el texto que se muestran en el monitor se escriben en la RAM de visualización de video, para después enviarlos al monitor mediante el controlador de video. El controlador de video es en sí un microprocesador de propósito especial, que libera a la CPU principal del trabajo de controlar el hardware de video.

Un monitor de pantalla de cristal líquido (LCD) digital directo recibe un flujo de bits digitales directamente desde el controlador de video, y no requiere del barrido de trama.

UNIDAD 2: Arquitectura e instalación del SGBD

2.1 Estructura de memoria y procesos de la instancia

La memoria se puede estructurar en las siguientes partes: 
Área Global del sistema (SGA), la cual se comparte entre todos los servidores y los procesos en segundo plano. 

  1. Áreas globales de programas (PGA), que es privada para cada servidor y proceso en segundo planos; a cada proceso se asigna un PGA.
  2.  Área de Ordenaciones (Sort Areas).
  3. Memoria Virtual 
  4. J Area de código de software. 

Instancia de una base de datos

Cada instancia está asociada a una base de datos. Cuando se inicia una base de datos en un servidor (independientemente del tipo de computadora), se le asigna un área de memoria (SGA) y lanza uno o más procesos. A la combinación del SGA y de los procesos es lo que se llama instancia. La memoria y los procesos de una instancia gestionan los datos de la base de datos asociada de forma eficiente y sirven a uno o varios usuarios.

Cuando se inicia una instancia El DBMS monta la base de datos, es decir, asocia dicha instancia a su base de datos correspondiente. En un misma computadora pueden ejecutarse varias instancias simultáneamente, accediendo cada una a su propia base de datos física. Únicamente el administrador de la base de datos puede iniciar una instancia y abrir una base de datos. Si una base de datos está abierta, entonces el administrador puede cerrarla y, cuando esto ocurre, los usuarios no pueden acceder a la información que contiene.

2.2 estructura física de la base de datos

En una base de datos almacenamos información relevante para nuestro negocio u organización y desde el punto de vista físico, la base de datos está conformada por dos tipos de archivos: 
Archivos de datos: contiene los datos de la base de datos internamente, está compuesto por páginas enumeradas secuencial mente que representa la unidad mínima de almacenamiento. Cada página tiene un tamaño de 8kb de información. Existen diferentes tipos de páginas, a tener en cuenta:

  • Páginas de datos: es el tipo principal de páginas y son las que almacenan los registros de datos.
  • Páginas de espacio libre (PFS Page Free Space): almacenan información sobre la ubicación y el tamaño del espacio libre.
  • Paginas GAM and SGAM: utilizadas para ubicar extensiones.
  • Páginas de Mapa de Ubicaciones de índices (IAM – Index Allocation Map): contiene información sobre el almacenamiento de páginas de una tabla o índice en particular.
  • Páginas Índices: Utilizada para almacenar registros de índices.

Archivo de Registro de Transacciones: El propósito principal del registro de transacciones es la recuperación de datos a un momento en el tiempo o complementar una restauración de copia de respaldo completa (full backup). El registro de transacciones no contiene páginas, sino entradas con todos los cambios realizados en la base de datos, como son las modificaciones de datos, modificaciones de la base de datos y eventos de copia de seguridad y restauración. El acceso a datos es secuencial, ya que el registro de transacciones se actualiza en el mismo orden cronológico en el que se hacen las modificaciones.

Este archivo no puede ser leído por herramientas de usuario de SQL auqnue existen herramientas de terceros que leen este archivo para recuperar los cambios efectuados. Dependiendo de la versión el registro de transacciones se utiliza para otros propósitos como por ejemplo bases de datos espejo (mirror) y transporte remoto de transacciones (log shipping).

Para muchos de los administradores de bases de datos, la imagen anterior representa la parte lógica y la parte física, donde:

Data File: Los datafiles son los archivos físicos 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 ubicación o directorio, el tamaño que va a tener y el tablespace al que va a pertenecer. Además, al crearlos, ocupan ya ese espacio aunque se encuentran totalmente vacíos, es decir, Oracle reserva el espacio para poder ir llenándolo poco a poco con posterioridad. Por supuesto, si no hay sitio suficiente para crear un archivo físico del tamaño indicado, se producirá un error y no se creará dicho archivo.

Cuando se van creando objetos en un tablespace, éstos físicamente se van almacenando en los datafiles asignados a dicho tablespace, es decir, cuando creamos una tabla y vamos insertando datos en ella, estos datos realmente se reparten por los archivos físicos o datafiles que forman parte del tablespace. No se puede controlar en qué archivo físico 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 almacenarán 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 lógicamente la suma de los tamaños que ocupan los archivos físicos o datafiles que lo forman. Como hemos indicado estos datafiles, al crearlos, están totalmente vacíos, 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.

Tienen las siguientes características:

  1. Un archivo sólo puede estar asociado con una base de datos.
  2. Los archivos de datos tienen atributos que permiten reservar automáticamente para ellos extensiones cuando se acaba el espacio.
  3. Uno o más archivos de datos forman una unidad lógica de almacenamiento llamada tablespace

Os Block: Conocidos como Disk Block, estos mapean a los data blocks. A la hora de crear una nueva base de datos se debe indicar cuántos bloques de sistema operativo formarán un bloque de datos.

2.3 Requerimientos para la instalación

Antes de instalar cualquier SGBD es necesario conocer los requerimientos de hardware y software, el posible software a des instalar previamente, verificar el registro de Windows y el entorno del sistema, así como otras características de configuración especializadas como pueden ser la re configuración de los servicios TCP/IP y la modificación de los tipos archivos HTML para los diversos navegadores.

Se presenta a continuación una serie de requerimientos mínimos de hardware y software para instalar oracle 11g Express y MySQL estándar versión 5.1. en Windows Seven y Ubuntu 10.

La regla general para determinar el tamaño de la memoria virtual depende del tamaño de memoria RAM instalada. Si su sistema tiene menos de 4 GB de RAM por lo general el espacio de intercambio debe ser de al menos dos veces este tamaño. Si usted tiene más de 8 GB de memoria RAM instalada puede considerar usar el mismo tamaño como espacio de intercambio. Cuanta más memoria RAM tenga instalada, es menos probable usar el espacio de intercambio, a menos que tenga un proceso inadecuado.

2.4 Instalación del SGBD en modo transaccional

Una base de datos en modo transaccional significa que la BD será capaz de que las operaciones de inserción y actualización se hagan dentro de una transacción, es un componente que procesa información descomponiéndola de forma unitaria en operaciones indivisibles, llamadas transacciones, esto quiere decir que todas las operaciones se realizan o no, si sucede algún error en la operación se omite todo el proceso de modificación de la base de datos, si no sucede ningún error se hacen toda la operación con éxito.
Una transacción es un conjunto de líneas de un programa que llevan insert o update o delete. Todo aquél software que tiene un log de transacciones (que es la «bitácora» que permite hacer operaciones de commit o rollback), propiamente es un software de BD; aquél que no lo tiene (v.g. D-Base), propiamente no lo es. Todo software de base de datos es transaccional; si el software de la BD no es «transaccional», en realidad NO es un «software» de BD; en todo caso, es un software que emula el funcionamiento de un verdadero software de BD. Cada transacción debe finalizar de forma correcta o incorrecta como una unidad completa. No puede acabar en un estado intermedio.Se usan las siguientes métodos:

  •  Begin TRans para iniciar la transacción
  •  CommitTrans para efectuar los cambios con éxito
  •  RollbackTrans para deshacer los cambios

Y depende que base de datos uses para efectuar las operaciones pero, es la misma teoría para cualquier BD.
Una vez que se sabe la forma de ingresar comandos, es el momento de acceder a una base de datos.
Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de información sobre ellas. Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la información deseada. Entonces, podrá responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas. Los pasos serían:

  •  Crear una base de datos
  •  Crear una tabla
  •  Introducir datos en la tabla
  •  Recuperar datos desde la tabla de varias maneras
  •  Emplear múltiples tablas
  • La base de datos menagerie (palabra inglesa que en español significa «colección de animales») se ha hecho deliberadamente simple, pero no es difícil imaginar situaciones del mundo real donde podría usarse un tipo similar de base de datos. Por ejemplo, para un granjero que desee hacer el seguimiento de su hacienda, o para los registros de los pacientes de un veterinario.

2.5 Variables de Ambiente y archivos importantes para instalación.

Para instalar MySQL como primer instancia el archivo primordial es el que se descarga de la Web de MySQL. El proceso para instalar MySQL desde un archivo ZIP es el siguiente:

  1. Extraer el contenido del archivo dentro del directorio de instalación deseado.
  2. Crear un archivo de opciones.
  3. Elegir un tipo de servidor MySQL
  4. Iniciar el servidor MySQL.
  5. Establecer la seguridad de las cuentas de usuario por defecto.

2.6 Procedimiento general de instalación

Oracle Database XE es una gran base de datos para:

  •  Desarrolladores que trabajan en PHP, Java, .NET, XML, y Open Sourceapplications
  •  DBAs que necesitan desarrollar libremente
  •  Vendedores de Software y hardware que necesitan distribuir sin cargos
  •  Instituciones educativas y estudiantes que cursan materias relacionados con base de datos

Oracle es líder en bases de datos. Con Oracle XE, es posible desarrollar y desplegar aplicaciones potentes, actualizar sin costo y generar complejas migraciones.Oracle Express Edition se instala en una máquina con cualquier número de procesadores, solo puede contener una base de datos y direccionar un máximo de 4GB de datos y un máximo de 1GB RAM.

Oracle Database XE, usa una interface basada en browser (Navegador) para:

  • Administrar la base de datos
  •  Crear tablas, vistas, y otros objetos de base de datos
  •  Importar, exportar, y ver tablas de datos
  •  Ejecutar consultas y scripts SQL
  •  Generar reportes

Oracle Database XE incluye Oracle Application Express release 2.1, un ambiente de desarrollo gráfico para crear aplicaciones Web con base de datos. Oracle Database XE es una versión reducida de Oracle con las misma características y potencialidad de Oracle Database. Es necesario destacar que no soporta todos los tipos de datos de Oracle Database XE.

oracle Database XE incluye las siguientes utilidades:

Línea de comandos SQL (SQL*Plus), para ejecutar sentencias SQL y comandos PL/SQL y ejecutar scriptsSQL*Loader, para insertar datos en la base de datosUtilidades para importar, exportar y volcar la base de datos

Requerimientos del sistema para Oracle Database XE Server y Oracle Database XE Client.

Resultado de imagen para 2.6 PROCEDIMIENTO GENERAL DE INSTALACIÓN

Estos puertos son usados por defecto por Oracle Database XE

2.7 Procedimiento para configuración de un SGBD.

Para configurar nuestro DBMS podemos acceder a las siguientes pantallas, para Oracle o MySQL.
El esquema de una base de datos (en inglés, DatabaseSchema) describe la estructura de una Base de datos, en un lenguaje formal soportado por un Sistema administrador de Base de datos (DBMS). En una Base de datos Relacional, el Esquema define sus tablas, sus campos en cada tabla y las relaciones entre cada campo y cada tabla.Oracle generalmente asocia un ‘username’ como esquemas en este caso SYSTEM y HR (Recursos humanos).Por otro lado MySQL presenta dos esquemas information_schema y MySQL ambos guardan información sobre privilegios y procedimientos del gestor y no deben ser eliminados.

2.8 Comandos generales de alta y baja del SGBD

Una tabla es un sistema de elementos de datos (atributo – valores) que se organizan que usando un modelo vertical – columnas (que son identificados por su nombre)- y horizontal filas. Una tabla tiene un número específico de columnas, pero puede tener cualquier número de filas. Cada fila es identificada por los valores que aparecen en un subconjunto particular de la columna que se ha identificado por una llave primaria.

Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en cuanto a que los datos se almacenan en filas y columnas. Como consecuencia, normalmente es bastante fácil importar una hoja de cálculo en una tabla de una base de datos. La principal diferencia entre almacenar los datos en una hoja de cálculo y hacerlo en una base de datos es la forma de organizarse los datos.

Por lo tanto, la creación de las tablas en el proceso de programación en Oracle juegan un papel muy importante. En el momento de crear las tablas se definen características a dos niveles: Tabla y Columna, como se muestra a continuación:
A nivel de tabla: Refieren a una o a varias columnas, donde cada columna se define individualmente.

A nivel de Columna el nombre de la columna puede tener un máximo de 30 caracteres.
En Oracle podemos implementar diversos tipos de tablas. A continuación se presenta una recopilación no exhaustiva de ellas.

Practicas de redis

EXISTS = verificar que exista el dato / APPEND = concatenar
GETRANGE = Muestra los espacios de memoria que se indican
lpush= Insertar dato en la primera posición / rpush = Insertar dato en la ultima posición
LRANGE = mostrar datos / LPOP = eliminar el primer dato / RPOP = eliminar el ultimo dato
RPUSH = Insertar dato en la ultima posición / RPOP = eliminar el ultimo dato

Características de las bases de datos

Características de oracle:

Resultado de imagen para logo de-oracle

Oracle es una empresa que desarrolla bases de datos que almacenan y facilitan el manejo de grandes cantidades de información relacionada entre sí. Se trata de una de las mayores compañías de software del mundo y también de las más caras al crear aplicaciones empresariales de alto rendimiento.

  • Modelo relacional: los usuarios visualizan los datos en tablas con el formato filas/columnas.
  • Herramienta de administración gráfica intuitiva y cómoda de utilizar.
  • Control de acceso: tecnologías avanzadas para vigilar la entrada a los datos.
  • Protección de datos: seguridad completa en el entorno de producción y de pruebas y gestión de copias de seguridad.
  • Lenguaje de diseño de bases de datos muy completo (PL/SQL): permite implementar diseños «activos», que se pueden adaptar a las necesidades cambiantes de negocio.
  • Alta disponibilidad: escalabilidad, protección y alto rendimiento para la actividad empresarial.
  • Gestión de usuarios: agilidad en los trámites, reducción de costes y seguridad en el control de las personas que acceden a las aplicaciones y a los sistemas.

Características de Mysql:

Resultado de imagen para logo de mysql

MySQL es un manejador de bases de datos principalmente utilizado en las aplicaciones WEB en conjunto con PHP. 

  • Uso de transacciones ACID (Atomic, Consistent Isolated, Durable): Para construir aplicaciones más seguras mediante commit, rollback, crash recovery y bloqueo por registro.
  • Store Procedures: Para mejorar la programación.
  • Triggers: Para mejorar las reglas del negocio.
  • Vistas: Para que la información sensible sea más segura.
  • Information Schema: Para un fácil acceso a los metadatos.
  • Transacciones Distribuidas(XA): Para soportar transacciones entre múltiples ambientes de bases de datos

Características de DB2:

Resultado de imagen para logo db2

El DB2 ofrece un punto central de gestión para el entorno de DB2. El DB2 una forma completa de recopilar exactamente la información que se necesita a fin de detectar los problemas de forma prematura y evitarlos. La información aparece estandarizada en todo el sistema. Puede supervisar una multitud de servidores desde un único Tivoli Enterprise Portal, cada servidor supervisado por un agente de DB2. Utilizando el DB2, podrá recopilar y analizar información específica, incluyendo información sobre los siguientes elementos:

  • Aplicaciones con el mayor porcentaje de sentencias SQL fallidas, desbordamientos de clasificación, tiempos de espera de bloqueo excedidos y puntos muertos, y la proporción más baja de aciertos de agrupación de almacenamientos intermedios.
  • Proporción de aciertos de agrupación de almacenamientos intermedios por agrupación de almacenamientos intermedios, proporción de aciertos de agrupación de almacenamientos intermedios por base de datos, tiempos medios de lectura y grabación, actividad de E/S asíncrona y síncrona, almacén ampliado y actividad de E/S que no es de agrupación de almacenamientos intermedios.
  • Bases de datos con el porcentaje más alto de sentencias SQL fallidas, la proporción más baja de aciertos de agrupación de almacenamientos intermedios y el número más alto de conexiones, tiempos de espera excedidos de bloqueo y puntos muertos.
  • Información de configuración y tiempo de ejecución de HADR (Database High Availability and Disaster Recovery).
  • Aplicaciones que actualmente están esperando bloqueos y otros detalles sobre los recursos de bloqueo.
  • Sucesos clave del servidor, el número de conexiones del servidor, las bases de datos con la proporción más baja de aciertos de agrupación de almacenamientos intermedios y aplicaciones con el porcentaje más alto de sentencias SQL fallidas
  • Uso de tamaño y de página de los espacios de tablas.
  • Recursos del sistema donde se está ejecutando el servidor de DB2 Server, incluyendo el uso de la CPU, de la memoria e información de red.
  • Información de registro, como la cantidad de espacio de registro activo, el porcentaje de registro secundario y la cantidad de espacio utilizando por los registros de archivado.
  • Mensajes de diagnósticos del archivo db2diag.log de la base de datos de DB2, incluyendo información sobre el registro de notificación de administración, registro de sucesos y registro de diagnósticos.
  • Definiciones personalizadas de la sentencia de SQL, estados de última ejecución y resultados.

Figura 3D

Figura de un pentágono 3D

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
verticies = (
(1, 1, 1),# vertice 0
(1, 1, -1),# vertice 1
(-1, -1, -1),# vertice 2
(-1, -1, 1),# vertice 3
(1, -1, 1),# vertice 4
(1, -1, -1),# vertice 5
(-1, 1, 1),# vertice 6
(-1, 1, -1),# vertice 7
(0, 0, 2),# vertice 8
)
edges = (
# Aristas del cubo
(0,1),# arista es la union entre dos vertices 0 y 1
(1,5),# union entre los vertices 1 y 5
(7,1),# union entre los vertices 7 y 1
(6,0),
(4,0),
(5,4),
(7,6),
(3,2),
(3,6),
(4,3),
(2,7),
(2,5),
# Aristas del la piramide
(6,8),
(0,8),
(4,8),
(3,8)
)
def Cube():
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(verticies[vertex])
glEnd()
def main():
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0,0.0, -5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glRotatef(1, 3, 1, 1)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Cube()
pygame.display.flip()
pygame.time.wait(10)
main()
view raw mifig3D.py hosted with ❤ by GitHub
corrida del programa
Uso de geogebra para buscar los puntos
Marco las aristas

Figura 3D reloj de arena

Usando las aristas del cubo forme otra figura

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
verticies = (
(1, 1, 1),
(1, 1, -1),
(-1, -1, -1),
(-1, -1, 1),
(1, -1, 1),
(1, -1, -1),
(-1, 1, 1),
(-1, 1, -1),
)
edges = (
(0,1),
(0,3),
(0,4),
(2,1),
(2,3),
(2,7),
(6,3),
(6,4),
(6,7),
(5,1),
(5,4),
(5,7)
)
def Cube():
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(verticies[vertex])
glEnd()
def main():
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0,0.0, -5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glRotatef(1, 3, 1, 1)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Cube()
pygame.display.flip()
pygame.time.wait(10)
main()
view raw Mifig2en3D.py hosted with ❤ by GitHub
Corrida del programa
Diseña un sitio como este con WordPress.com
Comenzar