B4-T2_Admon. BBDD Flashcards

1
Q

Enumera algunas labores del DBA (administrador de base de datos):

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Enumera algunas labores del DBA (administrador de base de datos):

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿En qué se diferencia ORACLE de otros RDBMS (sistema de administración de bases de datos relacionales) como SQL Server, MariaDB/MySQL y PostgreSQL?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Cuál es el puerto del sistemas de administración de bases de datos relacionales (RDBMS) Oracle?

A

1521, reemplazado por 2483.

NOTA: aunque se puede cambiar durante la creación de escucha.

Otros RDBMS: MySQL/MariaDB, PostgreSQL y Microsoft SQL Server.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Enumera algunos puertos usados para los RDBMS (sistemas de administración de bases de datos relacionales):

A

MySQL / MariaDB => 3306

PostgresSQL => 5432

SQL Server => 1433

ORACLE => 1521, sustituido por 2483.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿En qué se diferencian PGA (Program Global Area) de SGA (System Global Area)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Pon un ejemplo del funcionamiento de Oracle:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué es un proceso de 2º plano de Oracle? y describe algunos:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿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?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Sabemos que hay 2 tipos de TableSpace, los de POR DEFECTO y los que los definidos por el DBA, define los primeros:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué información se agrupa o guarda en los TableSpace de la BD Oracle?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Qué 3 tipos de ficheros tienen las bases de datos de SQL Server?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Enumera algunas instrucciones de Oracle con las que el DBA creara las estructuras de la base da datos (TableSpace, tablas, roles, …):

A

*Para crear un TableSpace:

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿En qué se diferencia el usuario de Oracle del de otros SGBD?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Para qué asignamos el privilegio CONNECT a un usuario en Oracle?

A

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, …)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Cuál es la herramienta de BackUp más conocida de Oracle?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Sabemos que RMAN (Recovery Manager) es la herramienta de BackUp más conocida de Oracle, pero ¿conoces alguna de sus instrucciones?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Sabemos que RMAN (Recovery Manager) es la herramienta de BackUp más conocida de Oracle, pero ¿conoces alguna otra?

A

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;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué herramienta nos proporciona ORACLE para interactuar con la base de datos?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Qué 2 cosas habría que hacer si quisiéramos que un usuario (nominas-lector) pueda ver mis tablas (nominas_owner)?

A

PRIMERO: habría que crear un sinónimo.

create synonym

SEGUNDO: habría que dar permisos de SELECT.

grant select …

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Qué arquitectura nos va a proporcionar alta disponibilidad y equilibrio de carga en Oracle?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Qué es una Vista Materializada (Materialized View) en Oracle?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Qué 2 motores principales de almacenamiento podemos elegir para nuestras tablas de MySQL y MariaDB?

A

*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, …

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Sabemos que los 2 posibles motores a usar para dar formato a nuestras tablas MySQL y MariaDB, son InnoDB y MyIsam, define el primero:

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Sabemos que los 2 posibles motores a usar para dar formato a nuestras tablas MySQL y MariaDB, son InnoDB y MyIsam, define el segundo:

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

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?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

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ª?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

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ª?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Sabiendo que MariaDB y MySQL usan los mismos comandos, ¿para qué sirve el comando mysqldump?

A

Para generar un fichero MySQL backup de bbdd(s)/tabla(s) en un script con el ddl+dml.

mysqldump -u [username] -p [databaseName] > fichero.sql

EJEMPLO: con mysqldump -u root -p aeropuerto > AeroPuerto.bkp (así creariamos un fichero de backup de la BD o tabla “aeropuerto”)

NOTA: al hacer el backup, se crea un script que, entre otras funciones, automáticamente haría LOCK TABLES (para bloquear la tabla y nadie la pueda manipular mientras se copian los datos para el backup) y UNLOCK TABLES (para desbloquear la BD una vez copiada).

30
Q

¿Cuáles son los ficheros de configuración de MySQL / MariaDB?

A
  1. my.cnf => es el más típico.

Se encuentra en:
/etc/alternatives/my.cnf

NOTA: my. ini (antiguo), ambos contienen las opciones de arranque de Mysql.

  1. /etc/mysql/conf.d
  2. /etc/mysql/mariadb/conf.d
  3. En las versiones modernas de Mysql/MariaDB el fichero de configuración del
    servidor se encuentra en /etc/mysql/mariadb.conf.d/50-server.cnf => es donde estan los usuarios y puertos, entre otras cosas.
31
Q

¿Cómo podemos ver las bases de datos (tablas) de MySQL / MariaDB?

A
  1. Una vez conectados a MySQL:
    mysql -u root -p
    (-u para indicar el usuario y -p para que me pida credenciales)
  2. Usaríamos la instrucción:
    show databases;

NOTA: con mysqldump -u root -p aeropuerto > AeroPuerto.bkp (así creariamos un fichero de backup de la tabla “aeropuerto”).

IMPORTANTE: x defecto, NO copia PROCEDURES y FUNCTIONS, habría que añadir la instrucción:
–routines

32
Q

¿Cómo se generaría el DDL en MySQL / MariaDB?

A

añadiendo la instrucción:
–no-data

33
Q

¿Cuáles son los 3 usos del comando “mysqldump” para hacer backups en MariaDB/MySQL?

A
  1. mysqldump [opciones] nombre_bd [nombre_tabla1 …] > fichero.bkp
    (UNA)
  2. mysqldump [opciones] –databases nombre_bd1 nombre_bd2 > fichero.bkp
    (VARIAS)
  3. mysqldump [opciones] –all-databases > fichero.bkp
    (TODAS)

NOTA: con la sentencia –add-drop-database: añadiriamos la sentencia ‘DROP DATABASE’ antes de cada sentencia
‘CREATE DATABASE’

mysqldump –database -u root -p aeropuerto –add-drop-database > aeropuerto.bkp

(-u para poner el usuario y -p para que nos pida la password).

34
Q

En caso de borrado, ¿cómo restauraríamos el BackUp de una BD o tabla?, pon ejemplos-

A

El BackUp lo crearíamos:

mysqldump -u root -p aeropuerto > AeroPuerto.bkp

Y para restaurarlo:

mysql -u root -p nombre_BD < AeroPuerto.bkp

35
Q

Expón algunas utilidades de administración de BBDD del comando “mysqladmin” (MySQL/MariaDB)?

A
  1. mysqladmin -u root -p ping
    (chequea si mysqld está vivo)

NOTA: también se puede hacer con “systemctl” y con “ps”: (foto)

systemctl status mysql

ps -aux | grep mysql

  1. mysqladmin -u root -p shutdown
    (cierre del servidor)
  2. mysqladmin -u root -p version
    (versión y estado del servidor)
  3. mysqladmin -u root -p processList
    (lista de todos los procesos activos)

(-u para poner el usuario y -p para que nos pida la password)

36
Q

Expón algunas utilidades de administración de BBDD del comando “mysqladmin” (MySQL/MariaDB)?

A
  1. mysqladmin -u root -p kill id_proceso
    (matar un proceso concreto)
  2. mysqladmin -u root -p create nominas
    (crear la bbdd nominas)
  3. mysqladmin -u root -p reload
    (recarga tablas de privilegios)
  4. mysqladmin -u root -p stop-slave
    (para la replicación en un servidor esclavo)

(-u para poner el usuario, que normalmente sólo “root” podrá hacer estas funciones de adminsitración y -p para que nos pida la password)

37
Q

¿Con qué opción podemos administrar remotamente un MySQL?

A

-h ip_servidor_remoto

38
Q

¿Qué función tienen los comandos de MariaDB/MySQL: mysqlshow y mysqldumpslow?

A

mysqlshow
(muestra información sobre bbdd, tablas y columnas)

mysqldumpslow
(lista queries que tardan mucho tiempo en ejecutarse)

39
Q

¿Qué función tienen los comandos de MariaDB/MySQL: mysqlcheck, myisamchk y mysqlimport?

A

mysqlcheck
(chequea, repara y optimiza tablas)

myisamchk
(chequea, repara y optimiza tablas)

NOTA: las tablas MyISAM eran las vulnerables, ya que no soportan ACID.

mysqlimport
(importar datos de un fichero externo)

mysqlimport –local db_name fichero.txt

40
Q

De entre los sistemas de administración de bases de datos relacionales (RDBMS): MySQL/MariaDB, PostgreSQL, Microsoft SQL Server y Oracle Database, explica las características de PostgreSQL:

A

Puerto de PostGres: 5432

Se crean bases de datos y schemas (al igual que en SQL Server, se usan esquemas para organizar tablas lógicamente dentro de la BD).

Se pueden definir TABLESPACE para gestionar físicamente tablas, índices, … (parecido a Oracle)

TODA la seguridad de usuarios se basa en ROLES:
CREATE ROLE nombre [opciones]

NOTA: las opciones pueden ser:
CREATEDB, SUPERUSER, CREATEROLE o LOGIN (login es un rol de usuario).

41
Q

Cuando una base d datos es inmensa con millones de files, ¿cómo la podríamos particionar con Postgres?

A

Se denomina particionado mediante herencia de tablas. Cada partición puede ser creada como una tabla hija de una única tabla padre => se crea una especie de tabla virtual (padre) que reparte de acuerdo a una condición las filas sobre las otras (hijas).

Se puede particionar en base a lo que quieras.
Pondremos un ejemplo de particionado en base a un campo (año):

create table medidas (
) PARTITION BY RANGE (campo)
[create table medidas_2019 PARTITION
OF medidas
FOR VALUES FROM ( … ) TO ( …);]

[igual para 2018]

etc

42
Q

¿Qué contienen los ficheros de configuración de Postgres: pg_hba.conf y postgresql.conf?

A

En el fichero /etc/pg_hba.conf se encuentra la información de AUTENTICACIÓN DE LOS CLIENTES.

En el fichero /etc/postgresql/9.6/main/postgresql.conf está la CONFIGURACIÓN DEL SERVIDOR:

port = 5432
max_connections = 100
data_directory = ‘/var/lib/postgresql/9.6/main’
hba_file = ‘/etc/postgresql/9.6/main/pg_hba.conf’
….

43
Q

¿Para qué sirve el comando inherits?

A

Para que una tabla HEREDE campos de otra:

create table cliente (
número_cuenta BIGINT,
estado VARCHAR (10)
)
INHERITS (persona);

44
Q

¿A qué nos referimos con RLS en Postgres?

A

Row Level Security => seguridad basada en filas.

Quiere decir que podemos establecer políticas (create policy), para que, por ejemplo, se aplique cuando sobre cierta tabla un cierto usuario realice una SELECT:

create policy nombre_politica ON tabla FOR SELECT TO usuario USING (filtro)

La política habría que activarla de la siguiente manera: (ENABLE ROW LEVEL SECURITY)

alter table nombre_tabla ENABLE ROW LEVEL SECURITY;

NOTA: con el (filtro), por ejemplo, si no quisiéramos que cierta usuario sólo vea en la tabla productos premium o que veas productos de cierto precio…

45
Q

¿Qué 4 lenguajes de PROCEDIMIENTOS ALMACENADOS (procedures) soporta Postgres??

A

PL/ pqSQL

PL/ TLC

PL/ Perl

PL/ Python

*Otros: en Oracle (PL/ SQL) y en SQL Server (T- SQL).

46
Q

Sabemos que en el sistema Replicación de MySQL/MariaDB toda la información se guarda en el fichero Binglog del MASTER, para luego replicarla entre los SLAVEs (Relay Log) por seguridad, pero ¿cómo se llama el fichero del MASTER del sistema de “Replicación” en Postgres?

A

WAL (Write Ahead Log / REDO) => guarda todas las transacciones que recibamos y se manda, dicho archivo WAL, a las máquinas SLAVE para que lo repliquen.

NOTA: write Ahead quiere decir que se va a enviar la información a otro sitio.

47
Q

Además del sistema de bloqueos de transacciones, en Postgres tenemos MVCC (Multi Version Concurrency Control). Definelo y ¿en qué otro RDBMS hay un sistema parecido?

A

Consiste en aislar unas transacciones de otras y cada una contendrá una foto (snapshot) de los datos en diferentes tiempos, que se podrán mezclar por una necesidad dada.
Reduciendo en gran medida los bloqueos, ya que cada una tiene su foto o snapshot.

Este sistema también existe en SQL Server y se llama Snapshot.

NOTA: un snapshot (copia instantánea de volumen) es una instantánea del estado de un sistema en un momento determinado.

48
Q

¿Cómo podemos hacer BackUp en Postgres y cómo restaurarlo?

A

pg_dump => backup de una bbdd

pg_dump base_de_datos > fichero_backup.sql

pg_dump -Fc base_de_datos > fichero_backup
(custom_format = formato personalizad)

pg_dumpall => backup de todas las bbdd.

pg_dumpall > fichero_backup.sql

==================

pg_restore => restauración cuando el formato de backup es de tipo “custom-format”.

pg_restore -d base_de_datos fichero_backup_custom_format

psql => para restauración normal

psql base_de_datos < fichero.bkp

49
Q

¿Qué comandos externos usa Postgres para crear/borrar tanto tablas como usuarios?

A

createdb / dropdb => crear/borrar una base de datos.

createuser / dropuser => crear/borrar un usuario/role.

*Al crear un usuario, lo que creamos es un rol con capacidad de login.

NOTA: con comandos externos queremos decir que son comandos para usar en la terminal de comandos estándar, es decir, NO hace falta entrar dentro de Postgres para crear tablas o usuarios.
En MySQL/MariaDB tambien se puede hacer con:

mysqladmin -u root -p create base_de_datos

50
Q

¿Cómo podemos recuperar el almacenamiento de las tuplas muertas en Postgres?

A

Con el comando vacuumdb, que limpia y analiza la base de datos, además de recuperar las tuplas muertas.

vacuumdb test (limpia)
vacuumdb –analyze bigdb (limpia y analiza)

51
Q

¿Con qué comando gestionamos el arranque, parada y control del PostgreSQL server?

A

pg_ctl

pg_ctl start/stop/status/restart

52
Q

¿Para qué sirve el comando EXPLAIN en una BBDD?

A

Para poder evaluar el plan de ejecución de una determinada sentencia y así poder ajustarla de cara a mejorar su rendimiento (ej: creación de índices).

53
Q

¿Cuál es el puerto por defecto de SGBBDD Oracle?

A

1521, reemplazado por 2483.

Otros puertos:
MySQL / MariaDB => 3306

PostgresSQL => 5432

SQL Server => 1433

54
Q

En Oracle, dentro de un tablespace, ¿qué tipos de segmentos fundamentales podemos almacenar?

A
  • tablas
  • índices

NOTA: estos segmentos (tablas o índices) se dividen en EXTENT (espacio lógico). Como los “chunks” en LVM.

55
Q

En Oracle, ¿en que tablespace se almacena el “diccionario de datos”?

A

SYSTEM

56
Q

En Oracle, ¿qué permiso hace falta para que un usuario se pueda conectar?

A

GRANT CONNECT o GRANT CREATE SESSION

57
Q

¿Cuál es la herramienta para realizar backups en Oracle?

A

RMAN

58
Q

En Oracle, si queremos que un usuario pueda consultar los datos de una tabla (propiedad de otro usuario), ¿qué 2 pasos debemos de dar?

A
  • GRANT SELECT …
  • CREATE SYNONYM
59
Q

En Oracle, ¿cuál podría ser una optimización sobre una vista para que no se ejecute la SELECT cada vez que la usamos?

A

Crear una vista materializada (nosotros decidiremos cuando y como se hará el refresco de datos).

CREATE MATERIALIZED VIEW nombre_de_vista

60
Q

En MySQL, ¿qué gran diferencia hay entre el motor de almacenamiento innodb y myisam?

A

Que el único que es transaccional (ACID) es innodb.

61
Q

En MySQL, ¿para qué sirve el motor de almacenamiento ndb?

A

Si queremos montar un Cluster.

62
Q

¿Qué dos motores de almacenamiento tiene MariaDB como evolución de innodb y myisam de MySQL?

A

XtraDB y Aria, respectivamente.

63
Q

En MySQL, ¿qué es el binlog?

A

Donde se almacenan las sentencias (MASTER) que posteriormente podremos replicar sobre el relaylog (SLAVEs) de otro nodo (de forma asincrona).

En Postgres se llama ese fichero (MASTER): WAL (Write Ahead Log / REDO)

64
Q

¿Cómo se realiza un backup en MySQL/MariaDB?

A

mysqldump -u user -p database-name > fichero.sql

NOTA: se restauraría:
mysql -u root -p database-name < fichero.sql

65
Q

¿Cómo podríamos ver los procesos internos de MySQL, de cara a identificar alguna consulta lenta o con problemas?

A

Con “processlist”.

mysqladmin -u root -p processlist

66
Q

En PostgreSQL, ¿cómo se crean usuarios y grupos?

A

Con CREATE ROLE (la diferencia es que los usuarios tendrán el atributo/opción LOGIN y los otros no).

67
Q

En PostgreSQL, ¿qué significan las siglas MVCC?

A

Un modelo de concurrencia que hace que las transacciones trabajen con “versiones” de los datos y no haya tantos bloqueos.

NOTA: cada transacción tendrá su snapchot (foto) de un momento determinado.

68
Q

En PostgreSQL, ¿qué significan las siglas RLS (Row Level Security)?

A

Una política de grano muy fino mediante la cual podemos definir sobre los permisos usuarios de acceso a nivel de fila(s).

69
Q

En PostgreSQL, ¿para que se usa la palabra INHERITS?

A

Para poder definir herencia entre tablas.

70
Q

¿Qué mecanismo podríamos usar para mejorar la gestión de una tabla con gran cantidad de datos?

A

Realizar sobre ella Particiones.

NOTA: se crea una especie de tabla virtual que reparte de acuerdo a una condición las filas sobre las otras.

71
Q

En PostgreSQL, ¿para qué sirve la utilidad de línea de comando vacuumdb?

A

Para limpiar (eliminar físicamente filas marcadas para borrado) y analizar la info de una BD de cara a la optimización.

72
Q

En PostgreSQL, nombre cinco herramientas de línea de comando

A
  • createuser (crea usuarios desde fuera de Postgres, es decir, desde la linea de comandos convencional)
  • createdb (crea tablas desde fuera de Postgres, es decir, desde la linea de comandos convencional)
  • psql (cliente de BBDD)
  • pg_dump (backup de una BBDD)
  • pg_dumpall (backup de todas)