B4-T2_Admon. BBDD Flashcards
Enumera algunas labores del DBA (administrador de base de datos):
*Instalación y mantenimiento (actualización) del SGDB (Sist. Gestor de BS).
Ej: instalación de Oracle o SQL Server.
*Establecer la política y necesidades de almacenamiento: para un buen uso de volúmenes lógicos, particionado, seleccionar la SAN a usar, …
*Creación de políticas de BackUp y Restauración (GFS = abuelo-padre-hijo ó 3-2-1).
*Establecimiento de mecanismos de seguridad: para auditar el sistema de información, compuesto por 2 activos:
1. Los activos de tipo Información (datos)
2. Los activos de tipos Servicio.
Hay 2 dimensiones de la seguridad:
a) Disponibilidad / HA => es la parte del servicio que puede verse afectada / paliado con las arquitecturas HA (cuando una maquina activas se cae, se sustituirá por otra pasiva)
b) Visitas / Permisos => los permisos, más orientados a los datos, filtran quien puede ver que cosas y para ello usaremos VISTAS que estableceremos con GRANT y REVOKE.
NOTA: muy importante para la seguridad de los datos las VISTAS con los PERMISOS asociados.
*Estas funciones se llevan a cabo por el DBA y su equipo.
Enumera algunas labores del DBA (administrador de base de datos):
*Monitorización y optimización del rendimiento:
con la sentencia “explain” podemos ver nuestro plan de ejecución.
*Creación de BBDD. Script de creación / carga, donde se definen los esquemas, reglas de integridad o restricciones, que darán soporte al desarrollador.
*Creación / Definición de USUARIOS y ROLES.
*Documentación.
NOTA: Estas funciones se llevan a cabo por el DBA y su equipo.
¿En qué se diferencia ORACLE de otros RDBMS (sistema de administración de bases de datos relacionales) como SQL Server, MariaDB/MySQL y PostgreSQL?
En que cuando instalas Oracle sólo se crea UNA base de datos.
NOTA: en esta BD están los ficheros para manejar tablas, indices, transacciones, … es decir, para gestionar sus propias funciones.
¿Cuál es el puerto del sistemas de administración de bases de datos relacionales (RDBMS) Oracle?
1521, reemplazado por 2483.
NOTA: aunque se puede cambiar durante la creación de escucha.
Otros RDBMS: MySQL/MariaDB, PostgreSQL y Microsoft SQL Server.
Enumera algunos puertos usados para los RDBMS (sistemas de administración de bases de datos relacionales):
MySQL / MariaDB => 3306
PostgresSQL => 5432
SQL Server => 1433
ORACLE => 1521, sustituido por 2483.
¿En qué se diferencian PGA (Program Global Area) de SGA (System Global Area)?
El PGA es la zona de memoria de cada proceso de Servidor Oracle, que atiende a cada proceso de usuario (app). NO está compartida y contiene datos e información de control de un único proceso.
La SGA es una zona de memoria compartida por los diferentes procesos de la instancia. Es la zona de memoria en la que la BD Oracle guarda información sobre su estado.
Pon un ejemplo del funcionamiento de Oracle:
Cuando se conecta tú aplicación Java, mediante el driver JDBC, se conecta a un proceso en el servidor (PGA), que es el que atiende a cada proceso de usuario.
Y el PGA lo comunica con el área global (SGA) para usar los procesos en 2º plano (SMON, PMON, …), que son los que hacen uso de las distintas cachés para llevar a cabo sus particulares funciones sobre la única base de datos de Oracle.
En resumen => PROCESO DE USUARIO (App) –LISTENER-> PROCESO DE SERVIDOR (PGA) -> SGA (datos distribuidos en caches y subprocesos en 2 plano (SMON, CKPT, …)
NOTA: cuando instalas Oracle sólo se crea UNA base de datos. A diferencia de otros SGBD como SQL Server, MariaDB y MySQL.
¿Qué es un proceso de 2º plano de Oracle? y describe algunos:
DBWn, CKPT, LGWR, PMON, SMON, …
Los procesos en segundo plano se ejecutan al lanzar la instancia de Oracle y quedan residentes en memoria realizando diversas labores en el servidor.
La vista V$DBPROCESS permite obtener información de los procesos en memoria. A continuación se detallan las acciones de los principales procesos.
DBWn: El proceso de escritura de base de datos (DataBase Writer Process), escribe en los ficheros físicos de la única base de datos de Oracle, cuando se produce un evento de tipo checkpoint.
La n en el nombre (DBWn) indica que no hay un solo proceso DBW, sino que puede haber hasta 20 dependiendo de la potencia del servidor (DBW0, DBW1, …).
El parámetro de sistema DB_WRITER_PROCESSES se encarga de definir el número de procesos DBWn.
*CKPT: Proceso encargado de registrar la llegada de un checkpoint.
*LGWR: (LoG WriteR Process) Proceso encargado de escribir en los archivos redo log.
*SMON: (System Monitor) Proceso encargado de monitorizar el sistema.
¿Qué proceso da capacidad a la app de usuario para conectarse con el PGA (proceso en servidor que atiende a cada proceso de usuario) en BBDD Oracle?
LISTENER
Es un proceso que esta escuchando por el puerto 2483 (antes 1521) para comunicar cada proceso de usuario (app) con el proceso de servidor (PGA)
Sabemos que hay 2 tipos de TableSpace, los de POR DEFECTO y los que los definidos por el DBA, define los primeros:
En la base de datos, se manejan objetos a nivel lógico (tablas, columnas, filas, vistas, índices,…). La información de esos objetos se tiene que almacenar en archivos de datos. Oracle crea los tablespaces como un elemento intermedio entre el nivel lógico y el nivel físico de la base de datos. Relaciona ambas ópticas para optimizar el funcionamiento del sistema.
Por defecto Oracle proporciona los siguientes espacios de tabla:
USERS. Almacén por defecto para los usuarios de la BD. SYSTEM. Para el diccionario de datos. SYSAUX. Para componentes adicionales de la BD como el repositorio del Enterprise Manager.
Un tablespace puede abarcar más de un fichero de datos. Cada fichero, sin embargo, se asigna a solamente un tablespace.
Los TableSpaces se dividen o agrupan segmentos (tablas, indices, lob, undo, …), estos en extensiones y las extensiones en bloques.
¿Qué información se agrupa o guarda en los TableSpace de la BD Oracle?
Los TableSpaces agrupan o se dividen en segmentos, que son objetos de diferentes tipos:
*Tablas
*Indices
*Lob (para guardar binarios largos)
*Undo (para hacer ROLLBACK)
*Nestead table (tablas anidadas)
*Cluster
NOTA1: toda esa información que agrupa el TableSpace se puede GUARDAR en uno o varios archivos. Incluso, algún objeto se puede distribuir entre varios archivos.
NOTA2: los segmentos se DIVIDEN en Logical Extend (EXTENSIONES), que son como los chunks de LVM, pero este espacio es CONTIGUO.
En resumen, los TableSpace, que son para agrupar los diferentes objetos:
*Se GUARDAN en 1 o varios archivos.
*Se DIVIDEN en extensiones (Extends) o espacios contiguos, es decir, un EXTEND de una tabla son datos CONTIGUOS.
*Y cada EXTEND tiene una serie de BLOQUES.
¿Qué 3 tipos de ficheros tienen las bases de datos de SQL Server?
*PRIMARY (Principal): información de inicio de la base de datos (.mdf).
*SECUNDARY (Secundario): archivos de datos opcionales definidos por el usuario (.ndf).
*TRANSACTION LOG (Registro de transacciones): el registro contiene la información que se utiliza para recuperar la base de datos (.ldf).
NOTA: Se recomienda colocar los archivos de datos y de registro en distintos discos.
Enumera algunas instrucciones de Oracle con las que el DBA creara las estructuras de la base da datos (TableSpace, tablas, roles, …):
*Para crear un TableSpace:
1º create tablespace nombre
NOTA: el nombre hará referencia al tipo de información guardada, ej: para guardar sólo indices (ts-indices), guardar datos (ts-data), …
2º Dentro del “create tablespace” puedo poner varios “datafile” para que las tablas distribuidas:
datafile ‘/var/data/oracle/ts-data-01.dbf’
size 100M => tamaño
auto extend ON => que crezca automáticamente
next 20M maxsize 2G;
*Para crear una TABLA:
create table Alumnos ( … )
NOTA: para que no se guarde en el tablespace por defecto, también podemos indicar en que TableSpace queremos que guarde la tabla creada:
create table Alumnos ( … ) tablespace ts-data
NOTA2: también asignamos el almacenamiento:
storage (initial 20k next 30k maxextends 50)
*Para crear un usuario: UN USUARIO EN ORACLE ES UN ESQUEMA. Es decir, para crear una tabla, primero tienes que crear un usuario, que será el esquema de la tabla.
create user nominas_owner
¿En qué se diferencia el usuario de Oracle del de otros SGBD?
UN USUARIO EN ORACLE ES UN ESQUEMA. Es decir, para crear una tabla, primero tienes que crear un usuario, que será el esquema de la tabla.
Es decir, cuando haces: create user nominas_owner => crearías el dueño del esquema o base de datos. Quiere decir que nominas_owner (usuario) es el propietario de las tablas nominas.
Otras indicaciones después del CREATE USER…:
IDENTIFIED BY ‘password’
DEFAULT TABLESPACE ts_indices => todo lo que cree el usuario, sino indica un tablespace concreto, se guardará en este por defecto.
TEMPORARY TABLESPACE ts_temp; => tablespace para cosas temporales.
=>PARA DAR CONEXIÓN AL USUARIO CON LA BD: DESPUÉS DEL create user … HAY QUE USAR LA SIGUIENTE SENTENCIA:
GRANT CONNECT TO nominas_owner
(esta sentencia también incluye el permiso: CREATE SESSION)
En resumen de creación de base de datos: PRIMERO, creas el usuario (esquema) y luego vas poblando dicho esquema de tablas => BASE de DATOS.
*Otras instrucciones:
create tablespace nombre ts-indices => TableSpace para guardar índices.
NOTA: dentro del “create tablespace” puedo poner varios “datafile” para que las tablas estén distribuidas.
create table Alumnos ( … ) tablespace ts-indices => creamos la tabla “Alumnos” y la guardamos en el tablespace “ts-indices”.
¿Para qué asignamos el privilegio CONNECT a un usuario en Oracle?
PARA DAR CONEXIÓN AL USUARIO CON LA BD:
DESPUÉS DEL create user … HAY QUE USAR LA SIGUIENTE SENTENCIA:
GRANT CONNECT TO nominas_owner
NOTA: “CONNECT” es un rol que, además de conectar con la BD, incluye el permiso CREATE SESSION.
Es decir, al darle el privilegio CONNECT, también le da el de CREATE SESSION.
*Aunque también podemos dar los privilegios (con GRANT), incluidos o no en el rol CONNECT, de manera independiente:
CREATE SESSION …
CREATE TABLE …
…
NOTA: antes de Oracle 10, CONNECT incluía más permisos: CREATE SESSION, CREATE TABLE, …
RECORDATORIO: un usuario en Oracle es propietario de un esquema que da soporte a las diferentes estructuras que creemos (tablas, indices, …)
¿Cuál es la herramienta de BackUp más conocida de Oracle?
RMAN (Recovery Manager) es un programa cliente creado por Oracle para realizar copias de respaldo y recuperación de la base de datos.
Cabe destacar que la base de datos debe estar configurada en Modo Archivado (Archive Log Mode), para poder realizar respaldos en “caliente” o en línea usando RMAN.
Sabemos que RMAN (Recovery Manager) es la herramienta de BackUp más conocida de Oracle, pero ¿conoces alguna de sus instrucciones?
RMAN> RESTORE DATABASE; => para restaurar el backup.
RMAN> BACKUP TABLESPACE ts-indices; => para hacer un backup de un TableSpace.
RMAN> BACKUP TABLE Alumnos; => para hacer un backup de una tabla.
Sabemos que RMAN (Recovery Manager) es la herramienta de BackUp más conocida de Oracle, pero ¿conoces alguna otra?
DATA PUMP.
(exportación/backup e importación/restauración)
Es una copia en caliente. Las aplicaciones usadas son:
EXPDP para exportación.
IMPDP para importación.
*Pasos previos:
Antes de crear las copias de seguridad es necesario tener configurado un directorio de destino
donde se almacenarán dichas copias (se crea un objeto DIRECTORY por defecto llamado
DATA_PUMP_DIR).
1º Creamos el directorio:
MKDIR C:\BACKUP-ORACLE
2º Luego lo asignamos para tal uso:
CREATE DIRECTORY BACKUP AS ‘C:\BACKUP-ORACLE’;
3º Conceder los permisos:
GRANT READ, WRITE ON DIRECTORY BACKUP TO usuario;
*También podemos comprobar que se ha registrado correctamente el directorio:
SELECT DIRECTORY_NAME FROM DBA_DIRECTORIES;
¿Qué herramienta nos proporciona ORACLE para interactuar con la base de datos?
SQL Plus.
Es una herramienta de línea de comandos de Oracle que puede ejecutar comandos SQL y PL/SQL de forma interactiva o mediante un script.
*PL/SQL: lenguajes para programar nuestros procedimientos almacenados (procedures) en Oracle, cuyo estandar es SQL/PSM (SQL/Persistent Stored Modules).
En Microsof se llaman: T-SQL.
EJEMPLO: comandos de arranque y parada del servidor
SQLPLUS> SHUTDOWN TRANSACTIONAL | INMEDIATE | ABORT | NORMAL
SQLPLUS> START MOUNT | NOMOUNT | OPEN | RESTRICT | FORCE
¿Qué 2 cosas habría que hacer si quisiéramos que un usuario (nominas-lector) pueda ver mis tablas (nominas_owner)?
PRIMERO: habría que crear un sinónimo.
create synonym
SEGUNDO: habría que dar permisos de SELECT.
grant select …
¿Qué arquitectura nos va a proporcionar alta disponibilidad y equilibrio de carga en Oracle?
Oracle RAC (solución de cluster).
Oracle Real Application Clusters, es una arquitectura de base de datos “compartir todo” que puede proporcionar alta disponibilidad y equilibrio de carga.
Permite a varios servidores trabajar en forma concurrente sobre una misma base de datos, incrementando escabilidad, rendimiento y tolerancia a las fallas (alta disponibilidad).
¿Qué es una Vista Materializada (Materialized View) en Oracle?
Es una vista o view normal (que es el resultado de ejecutar una “select”), pero con la optimización o mejora de que si los datos cambian muy poco, NO seguiría ejecutándose la “select” continuamente.
Habría que crear la vista materializada:
CREATE MATERIALIZED VIEW nombre_vista
=> la cual haría una foto a los datos en el momento en que se hace la “select”, y es lo que se muestra cuando se hace otra select, POR LO CUAL LA “SELECT” NO SE HARÍA.
Aunque, habría que hacer refrescos de la misma:
“REFRESH {FAST | COMPLETED | FORCE | NEVER}
…
AS SELECT … FROM … WHERE …”
En resumen, es un sistema para optimizar las selects.
¿Qué 2 motores principales de almacenamiento podemos elegir para nuestras tablas de MySQL y MariaDB?
*MyIsam: (ficheros secuenciales e indexados).
NO soporta transacciones.
NO soporta ACID => inseguro.
Se recomiendo usar ARIA (versión nueva).
NOTA: Creará 3 archivos en el disco con las extensiones: .frm (formato tabla), .myd (datos) y .myi (índices).
*InnoDB: reemplazó a MyISAM.
Soporta transacciones.
Soporta ACID => es seguro.
Se recomiendo usar xTRADB (versión nueva).
Otros motores: ARIA, CSV, MariaDB ColumnStore, MEMORY STORE Engine, Spider, …
Sabemos que los 2 posibles motores a usar para dar formato a nuestras tablas MySQL y MariaDB, son InnoDB y MyIsam, define el primero:
*InnoDB: reemplazó a MyISAM como el tipo de tabla predeterminado de MySQL.
Proporciona las funciones estándar de transacciones compatibles con ACID, junto con soporte de clave externa.
Soporta transacciones => Bloquea registros (para evitar problemas de lectura entre transacciones).
Permite tener las características ACID y garantizar consistencia => SEGURO.
Se recomiendo usar xTRADB (versión nueva).
Sabemos que los 2 posibles motores a usar para dar formato a nuestras tablas MySQL y MariaDB, son InnoDB y MyIsam, define el segundo:
*MyIsam: (ficheros secuenciales e indexados) es un motor no-transaccional, por lo cual, sólo se recomienda si no necesitamos garantizar ACID (Atomicidad- Consistencia- Isolation- Durability) de los datos de la tabla en la que usemos MyIsam => ES UN MOTOR INSEGURO, pero rápido.
Soporta FULLTEXT indexed (quiere decir que google se ha ocupado de los indexados, aportando una gran capacidad de búsqueda).
No admite claves foráneas (foreign keys).
Una tabla MyISAM se almacena en tres archivos en el disco:
a) Hay un archivo de formato de TABLA con la extensión .frm
b) Un archivo de DATOS con la extensión .MYD
c) Y un archivo de ÍNDICE con la extensión .MYI.
NOTA: es recomendable usar el nuevo MyIsam, llamado ARIA.
Sabemos que los 2 posibles motores a usar para dar formato a nuestras tablas MySQL y MariaDB, son InnoDB y MyIsam, pero ¿cómo se crearían dichas tablas?
*MyIsam: para crear una tabla MyIsam se debe especificar la opción “ENGINE = MyIsam” en la sentencia SQL de creación de tabla:
mysql> CREATE TABLE libros (
id INTEGER PRIMARY KEY,
titulo VARCHAR(80),
autor INTEGER )
ENGINE = MYISAM;
*InnoDB: para crear una tabla InnoDB se debe especificar la opción “ENGINE = InnoDB” o “TYPE = InnoDB” en la sentencia SQL de creación de tabla:
CREATE TABLE customers (
a INT,
b CHAR (20),
INDEX (a))
ENGINE=InnoDB; ó TYPE=InnoDB;
Sabemos que hay 2 maneras de hacer Soluciones HA (High Availability), una: CLUSTER (SQL Nodes+ Data Nodes) y otra: Replicación (Máster- Slave), ¿cómo funciona la 2ª?
En esta arquitectura (Replicación), tendríamos un nodo MÁSTER al que le llega todo el trabajo.
1º El MÁSTER va guardando las sentencias de todo lo que le llega en el fichero: Binglog
2º Va mandando el contenido de esos “Binlog” a los SLAVEs y estos REPLICAN dicha información.
En resumen, en este sistema TODO se envía al MASTER (Binlog). Pero por si hubiera algún problema, para no perder nada, TODO se replica en los SLAVEs (Relay Log).
NOTA: Los sistemas de alta disponibilidad (HA) están diseñados para garantizar que tengan el máximo potencial de tiempo de actividad y accesibilidad.
Sabemos que hay 2 maneras de hacer Soluciones HA (High Availability), una: CLUSTER (SQL Nodes+ Data Nodes) y otra: Replicación (Máster- Slave), ¿cómo funciona la 1ª?
Tenemos por un lado Nodos SQL (con el demonio “mysqld”) y por otro Data Nodes (con el demonio “ndbd”). Con la idea de una mayor distribución de los datos.
NOTA: demonio de DATA Node: ndbd => ndb: cluster distribuido de mysql / d: demonio. Quiere decir que ese motor de almacenamiento esta diseñado para tener los datos distribuidos en varios nodos => NDB Clúster.
Es decir, en contraposición al común funcionamiento de instalarlo todo en un mismo sitio, con este sistema en CLÚSTERs se instala MySQL de manera distribuida en varios NODOS o máquinas y aportar una mayor seguridad => NDB Clúster.