📝 apuntes_TAI_redes_bbdd_adminremota
← Volver

📚 REDES AVANZADAS, BASES DE DATOS Y ADMINISTRACIÓN REMOTA — TAI

Clase magistral para el examen TAI

🎓 Cómo usar este documento: Lee la explicación de cada bloque temático y responde las preguntas antes de pasar al siguiente. Las soluciones comentadas están al final.


BLOQUE 1 — REDES: CAPA FÍSICA Y ENLACE DE DATOS

Medios de transmisión física

Medio Transmite Interferencias
Cable de cobre Impulsos eléctricos Susceptible a interferencias electromagnéticas
Fibra óptica Impulsos de luz (1 y 0 como luz) Sin interferencias electromagnéticas
Inalámbrico Ondas electromagnéticas Interferencias por obstáculos y otras señales

💡 Ancho de banda = capacidad máxima del medio. Rendimiento (throughput) = tasa real de datos transmitidos. Siempre rendimiento ≤ ancho de banda.


Organismos de estandarización de la capa física

Organismo Estándares clave
ISO ISO 8877 (conectores RJ-11, RJ-45) · ISO 11801 (cableado estructurado)
EIA/TIA TIA-568-C (cableado telecomunicaciones) · TIA-569-B (construcción) · TIA-598-C (código colores fibra) · TIA-942 (Data Centers)
ANSI 568-C: diagrama de pines RJ-45 (con EIA/TIA)
ITU-T G.992: ADSL
IEEE 802.3 (Ethernet) · 802.11 (Wi-Fi) · 802.15 (Bluetooth)

Estándares IEEE 802 completos

IEEE 802 — Familia de estándares de redes locales
├── 802.1
│     └── 802.1Q: VLANs
├── 802.3: Ethernet
│     └── 802.3ae: 10 Gbit Ethernet
├── 802.4: Token bus
├── 802.5: Token ring
├── 802.11: Wireless LAN (WLAN)
│     ├── 802.11b:  Hasta 11 Mbit/s    — 2,4 GHz
│     ├── 802.11g:  Hasta 54 Mbit/s    — 2,4 GHz
│     ├── 802.11n:  Hasta 600 Mbit/s   — 2,4 / 5 GHz
│     ├── 802.11ac: Hasta 433 Mbit/s   — 5 GHz (canales más anchos)
│     ├── 802.11ad: Hasta 7 Gbit/s     — 60 GHz
│     ├── 802.11ah: WiFi HaLow         — 0,9 GHz (largo alcance, IoT)
│     ├── 802.11p:  WAVE (vehículos)
│     └── 802.11v:  Configuración de clientes por Wi-Fi
├── 802.15: Wireless PAN (WPAN)
│     ├── 802.15.1: Bluetooth
│     └── 802.15.7: VLC (Visible Light Communication)
└── 802.16: WiMAX

⚠️ Dato clave para el examen: 802.11n es el primero que usa doble banda (2,4 y 5 GHz). 802.11ac solo usa 5 GHz. 802.11ad llega hasta 7 Gbit/s en la banda de 60 GHz.


Capa de enlace de datos (Capa 2 OSI)

La capa de enlace comunica la parte física (capa 1) con la parte lógica (capa 3). Se divide en dos subcapas:

Subcapa Nombre Función
MAC Media Access Control Acceso al medio físico. Contiene la dirección MAC del dispositivo
LLC Logical Link Control Control de errores, control de flujo, diálogo y direccionamiento lógico

Funciones de la capa de enlace de datos

Funciones capa 2
├── Gestión del canal     → Determina si la señal va en un canal (simplex),
│                           dos canales (duplex) o full duplex
├── Segmentación de trama → Trama mínima: 64 bytes | Trama máxima: 1518 bytes
└── Control de errores    → Añade caracteres al final de la trama (FCS)
                            para verificar integridad en la recepción

Estructura de la trama Ethernet

Campo Descripción
Encabezado de trama Inicio de trama
MAC destino Dirección MAC del receptor (6 bytes)
MAC origen Dirección MAC del emisor (6 bytes)
Datos Paquete IP encapsulado (carga útil)
Trailer Contiene FCS y Stop Frame
FCS Frame Check Sequence: número calculado a partir de los datos para verificar integridad
Stop Frame Identificador de fin de trama

💡 La dirección broadcast Ethernet es FF-FF-FF-FF-FF-FF. Una trama enviada a esta dirección llega a todos los dispositivos del segmento.


Direcciones MAC

Estructura dirección MAC (48 bits)
├── Primeros 24 bits: OUI (Organizationally Unique Identifier)
│     ├── Bit 0: 0=Unicast / 1=Multicast o Broadcast
│     └── Bit 1: 0=Global / 1=Local (administrada localmente)
└── Últimos 24 bits: Identificador específico del dispositivo

⚠️ Aunque la MAC está grabada en ROM, los SO modernos permiten cambiarla por software. Por eso el filtrado por MAC ya no es totalmente seguro.


Tipos de transmisión en capa 2

Tipo Descripción Destinatario
Unicast Un origen → un solo destino MAC específica
Multicast Un origen → grupo específico Rango de MACs de grupo
Broadcast Un origen → todos los dispositivos FF-FF-FF-FF-FF-FF

💡 ARP usa broadcast para resolver IP → MAC. Un router corta los dominios de broadcast (no reenvía broadcast entre redes).


Clases de direcciones IPv4

Clase Primer octeto Red / Host Máscara por defecto Hosts máximos
A 1 – 126 1 octeto red / 3 octetos host 255.0.0.0 /8 16.777.214
B 128 – 191 2 octetos red / 2 octetos host 255.255.0.0 /16 65.534
C 192 – 223 3 octetos red / 1 octeto host 255.255.255.0 /24 254
D 224 – 239 Multicast
E 240 – 247 Reservado uso futuro

💡 Fórmula de hosts: 2ⁿ − 2 (donde n = bits de host). Se restan 2 por la dirección de red (todos bits host a 0) y la de broadcast (todos bits host a 1).


Rango de direcciones IP privadas (no enrutables en Internet)

Clase Rango Máscara
A 10.0.0.0 – 10.255.255.255 /8
B 172.16.0.0 – 172.31.255.255 /12
C 192.168.0.0 – 192.168.255.255 /16

Capa de transporte: TCP vs UDP

Característica TCP UDP
Conexión Orientado a conexión (Three-way handshake) Sin conexión
Fiabilidad Garantiza entrega ordenada y sin errores Sin garantía de entrega ni orden
Control de flujo No
Velocidad Más lento Más rápido
Comunicación Solo punto a punto Punto a punto, multicast y broadcast
Uso típico HTTP/S, FTP, SMTP, SSH DNS, DHCP, VoIP, streaming, juegos online

Cabecera TCP (campos principales)

Campo Descripción
Puerto origen / destino Identifican la aplicación en cada extremo
Número de secuencia Orden de los segmentos
Número de acknowledgment Confirma los datos recibidos
Flags SYN, ACK, FIN, RST…
Window Size Control de flujo

💡 Three-way handshake TCP: SYN → SYN-ACK → ACK. Establece la conexión antes de enviar datos.

Cabecera UDP (campos)

Solo 4 campos: Puerto origen · Puerto destino · Longitud · Checksum. Mucho más ligera que TCP.


🧪 TEST — BLOQUE 1: Redes

1. ¿Qué estándar IEEE define las redes inalámbricas WLAN (Wi-Fi)?


2. ¿Cuál es la velocidad máxima y la frecuencia del estándar IEEE 802.11ac?


3. ¿Qué campo de la trama Ethernet permite verificar que los datos llegaron íntegros?


4. Una red con máscara /26 tiene bits de host. ¿Cuántos hosts válidos (asignables) puede tener?


5. ¿Qué protocolo de la capa de transporte usan aplicaciones como VoIP y streaming de video, y por qué?


BLOQUE 2 — ADMINISTRACIÓN REMOTA: SSH, VNC Y SFTP

SSH — Secure Shell

SSH (Secure Shell) es un protocolo para controlar un equipo remotamente a través de una CLI cifrada. Sustituye a Telnet y rcp, que transmiten en texto plano.

OpenSSH es la implementación libre de SSH, y proporciona tanto cliente como servidor.

# Instalar cliente SSH
sudo apt-get install openssh-client

# Instalar servidor SSH
sudo apt-get install openssh-server

# Conectarse a un servidor remoto
ssh usuario_remoto@host_remoto

# Conectarse por un puerto distinto al 22
ssh -p 2222 usuario@servidor

# Conectarse con reenvío X11 (aplicaciones gráficas)
ssh -X usuario_remoto@host_remoto

Archivo de configuración del servidor: /etc/ssh/sshd_config

Directiva Descripción Valor recomendado
Port Puerto de escucha 22 (por defecto), cambiar por seguridad
Protocol Versión del protocolo 2 (solo SSH v2)
PermitRootLogin Permitir login como root no (por seguridad)
PermitEmptyPasswords Permitir contraseñas vacías no
PubkeyAuthentication Autenticación por clave pública yes
X11Forwarding Reenvío de aplicaciones gráficas yes (si se necesita)
Banner Mensaje previo al login /etc/issue.net
AllowUsers Usuarios permitidos usuario1 usuario2
AllowGroups Grupos permitidos grupo1 grupo2
TCPKeepAlive Mantener la conexión activa yes
# Reiniciar el servicio SSH tras cambios
sudo /etc/init.d/ssh restart
# o
sudo systemctl restart ssh

⚠️ Siempre hacer copia de seguridad antes de editar: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.copia


Autenticación por certificado (clave pública)

La autenticación por clave pública evita introducir contraseña en cada conexión. Proceso:

1. Generar par de claves en el CLIENTE:
   ssh-keygen -t rsa
   → Crea: ~/.ssh/id_rsa       (clave PRIVADA — nunca compartir)
   → Crea: ~/.ssh/id_rsa.pub   (clave PÚBLICA — se copia al servidor)

2. Copiar la clave pública al SERVIDOR:
   scp ~/.ssh/id_rsa.pub usuario@servidor:~/.ssh/authorized_keys

3. Verificar en /etc/ssh/sshd_config del servidor:
   PubkeyAuthentication yes

4. Conectar sin contraseña:
   ssh usuario@servidor  ← ya no pide contraseña

💡 Si el usuario se conecta desde varios clientes, hay que generar un certificado en cada uno y concatenarlos en ~/.ssh/authorized_keys del servidor.


SCP — Copia remota segura

# Copiar directorio del servidor al cliente (recursivo)
scp -r usuario@IPremota:/home/user/prueba ./local

# Copiar todos los ficheros de un directorio remoto
scp usuario@maquina:/home/user/prueba/* ./local

# Enviar ficheros al servidor
scp /home/local/* usuario@IPremota:/home/user/prueba/

# Usar puerto distinto al 22
scp -P 2222 usuario@servidor:/ruta/fichero ./local
Opción Descripción
-r Recursivo (copia directorios completos)
-P puerto Especifica el puerto del servidor SSH

SFTP — FTP seguro sobre SSH

SFTP (Secure File Transfer Protocol) funciona sobre SSH. Para usarlo basta tener el servidor SSH activo.

# Conectarse a un servidor SFTP
sftp usuarioRemoto@Servidor

# Puerto distinto al 22
sftp -o Port=2222 usuario@IP-Servidor

Comandos principales dentro de una sesión SFTP

Comando Función
get [-r] remote-path [local-path] Descargar fichero del servidor
put [-P] local-path [remote-path] Subir fichero al servidor
ls Listar directorio remoto
lls Listar directorio local
cd path Cambiar directorio remoto
lcd path Cambiar directorio local
pwd Directorio de trabajo remoto
lpwd Directorio de trabajo local
mkdir / rmdir Crear / borrar directorio remoto
rm path Borrar fichero remoto
rename oldpath newpath Renombrar fichero remoto
chmod mode path Cambiar permisos en remoto
bye / exit / quit Salir de la sesión

VNC — Escritorio remoto gráfico

VNC (Virtual Network Computing) permite visualizar y controlar el escritorio completo de un equipo remoto.

Arquitectura: cliente/servidor
├── Servidor VNC: equipo a administrar  → paquete "vino" en Ubuntu
└── Cliente VNC: equipo desde el que se accede → Remmina (Ubuntu), vinagre (antiguo)
# Instalar servidor VNC
sudo apt-get install vino

# Puerto que hay que abrir en el firewall/router para VNC
Puerto 5900

Configuración del servidor VNC (Ubuntu)

Configuración → Compartir → Compartición de pantalla:
1. Activar "Permitir conexiones para controlar la pantalla"
2. Marcar "Solicitar una contraseña" (por seguridad)
3. Seleccionar la red por la que se compartirá

⚠️ VNC consume más recursos de red que SSH. Si solo se necesita CLI, usar SSH. VNC es para administración gráfica completa.


Comparativa herramientas de administración remota

Herramienta Protocolo Tipo Cifrado Puerto
SSH SSH CLI (texto) ✅ Sí 22
SCP SSH Transferencia ficheros ✅ Sí 22
SFTP SSH FTP seguro ✅ Sí 22
VNC / vino VNC Escritorio gráfico ⚠️ Opcional 5900
TeamViewer Propietario Escritorio gráfico + ficheros ✅ Sí
Telnet Telnet CLI (texto) ❌ No (texto plano) 23
FTP FTP Transferencia ficheros ❌ No (texto plano) 20/21

💡 TeamViewer: gratuito para uso no comercial. Solo necesita ID y contraseña del equipo remoto. También disponible para móviles.

💡 Clientes SSH para Windows: PuTTY (modo texto), WinSCP (transferencia ficheros), Cygwin/Xming/Mocha (modo gráfico con X11).


🧪 TEST — BLOQUE 2: Administración Remota

6. ¿En qué archivo se configura el servidor OpenSSH y qué directiva impide el acceso como root?


7. ¿Qué par de ficheros genera ssh-keygen -t rsa y cuál debe copiarse al servidor?


8. ¿Qué protocolo utiliza SFTP y qué ventaja tiene frente al FTP tradicional?


9. ¿Qué comando permite conectarse a un servidor SSH con reenvío de aplicaciones gráficas?


10. ¿Qué puerto hay que abrir en el firewall para permitir conexiones VNC con el servidor "vino"?


BLOQUE 3 — BASES DE DATOS: PUERTOS Y MOTORES

Puertos por defecto de los principales gestores de BBDD

Relacionales

SGBD Puerto
MySQL / MariaDB 3306
PostgreSQL 5432 TCP
Microsoft SQL Server 1433 (1434 para instancias nombradas)
Oracle 1521 (listener), 1830
IBM DB2 50000
Informix 1523

NoSQL

SGBD Puerto
MongoDB 27017, 28017, 2780
Cassandra 9042 (CQL) o 9160
CouchDB 5984
HBase 9000
Redis 6379
Neo4j 7474
Riak 8098
Amazon DynamoDB 8000
Apache Hive 10000

BLOQUE 4 — POSTGRESQL: ADMINISTRACIÓN Y COMANDOS

Instalación y arranque

# Instalación en RedHat/CentOS
sudo yum install postgresql-server postgresql-contrib

# Instalación en Debian/Ubuntu
apt install postgresql-9.6 postgresql-client-9.6

# Inicializar el cluster
sudo postgresql-setup initdb

# Gestión del servicio
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo systemctl restart postgresql

# Comprobar si está operativo
pg_isready

Archivos de configuración

Archivo Ubicación Debian Ubicación CentOS Función
pg_hba.conf /etc/postgresql/<ver>/main/ /var/lib/pgsql/data/ Tipos de acceso y autenticación
pg_ident.conf Igual Igual Mapeo de usuarios ident
postgresql.conf Igual $PGDATA/postgresql.conf Parámetros de configuración del servidor
start.conf Igual Comportamiento al inicio
pg_ctl.conf Igual Opciones de pg_ctl

⚠️ Para habilitar conexiones remotas: verificar tcpip_socket = true en postgresql.conf. En pg_hba.conf cambiar ident por md5 para autenticación con contraseña.


Conexión con psql

# Conectarse con usuario específico
psql -U postgres

# Conectarse a una base de datos específica
psql testdb

# Conectarse a un servidor remoto
psql -h servidor.org -U usuario -d basedatos -W

# Ejecutar un comando SQL directo
psql -d demo -c "SELECT version();"

# Ejecutar un script SQL
psql demo -f demo.sql

Opciones de conexión

Opción Descripción
-U usuario Nombre de usuario
-h hostname Servidor remoto
-d dbname Nombre de la base de datos
-p puerto Puerto (por defecto 5432)
-W Fuerza petición de contraseña
-w No pide contraseña
-f fichero Ejecuta fichero SQL
-l Lista las bases de datos
-c Ejecuta comando SQL

Comandos internos psql (backslash)

Comando Función
\l Listar todas las bases de datos
\c nombre_bd Conectarse a otra base de datos
\conninfo Información de la conexión actual
\q Salir de psql
\dt Listar tablas de la base de datos actual
\dt+ Listar tablas con información detallada
\d tabla Estructura de una tabla
\d+ tabla Estructura detallada
\du Listar usuarios/roles
\dy Listar eventos
\df Listar funciones
\di Listar índices
\dn Listar esquemas
\dv Listar vistas
\ds Listar secuencias
\dT+ Listar tipos de datos
\df+ función Código fuente de una función
\x Activar/desactivar formato expandido
\timing Activar cronómetro de consultas
\! comando Ejecutar comando del sistema operativo
\e Abrir editor externo
\i fichero Ejecutar fichero SQL
\o fichero Redirigir salida a fichero
\? Ayuda de comandos backslash
\h COMANDO Ayuda del comando SQL

Gestión de usuarios y roles

-- Crear usuario (SQL)
CREATE USER angel PASSWORD 'Pa$$w0rd';

-- Crear usuario con opciones
CREATE ROLE username NOINHERIT LOGIN PASSWORD 'password';

-- Crear rol
CREATE ROLE role_name;

-- Cambiar de rol en la sesión actual
SET ROLE test;

-- Listar usuarios desde shell
createuser --interactive

-- Borrar usuario
DROP USER marc;
DROP ROLE role_name;

-- Otorgar privilegios
GRANT ALL PRIVILEGES ON proveedores TO marc;
GRANT SELECT ON precios TO manuel;

Gestión de bases de datos

-- Crear base de datos (SQL)
CREATE DATABASE test;

-- Crear base de datos desde shell
createdb demo --owner=postgres

-- Borrar base de datos
DROP DATABASE test;
dropdb demo

-- Crear tabla
CREATE TABLE USERS (Serial_No int, First_Name varchar, Last_Name varchar);

-- Borrar tabla
DROP TABLE users;

-- Exportar tabla a CSV
\copy (SELECT * FROM tabla) TO 'fichero.csv' WITH CSV

Backup y restauración PostgreSQL

# Backup de una base de datos
pg_dump dbName > dbName.sql

# Backup con usuario y contraseña, formato tar
pg_dump -U username -W -F t database_name > backup.tar

# Opciones de formato (-F):
#   c = custom, d = directorio, t = tar, p = texto plano

# Copiar BD entre servidores
pg_dump -h host1 demo | psql -h host2 demo

# Backup de TODAS las bases de datos
pg_dumpall > pgbackup.sql

# Backup de ficheros comprimidos
tar -czvf backup.tar.gz /var/pgsql/data

# Backup de un cluster completo
pg_basebackup

# Restaurar
psql basededatos < backup.sql
pg_restore --dbname=newdb --verbose backup.tar

Mantenimiento PostgreSQL

-- Vacuum: libera espacio de filas borradas
VACUUM tabla;
VACUUM ANALYZE tabla;
VACUUM FULL;  -- Reescribe toda la tabla en nuevo fichero

-- Analyze: recopila estadísticas para el optimizador
ANALYZE;

-- Reindexar
REINDEX DATABASE dbName;
REINDEX TABLE tabla;
# Comandos de shell equivalentes
vacuumdb --analyze-only
vacuumdb --analyze
reindexdb

# Control de logs
pg_ctl start | logrotate
pg_ctlcluster start/stop/restart/reload 10 main

💡 VACUUM es el proceso de limpieza de PostgreSQL. Debe ejecutarse periódicamente junto con ANALYZE para mantener el rendimiento.


Variables predefinidas en psql

demo=# \echo :DBNAME :ENCODING :HOST :PORT :USER
-- Ejemplo de salida: demo LATIN9 localhost 5432 postgres

🧪 TEST — BLOQUE 3 y 4: BBDD y PostgreSQL

11. ¿En qué puerto escucha por defecto MySQL/MariaDB?


12. ¿Qué archivo de configuración de PostgreSQL controla los métodos de autenticación de los clientes?


13. ¿Qué comando de shell de PostgreSQL realiza un backup completo de todas las bases de datos del servidor?


14. ¿Qué hace el comando VACUUM FULL en PostgreSQL?


15. ¿Qué comando psql muestra la estructura detallada de una tabla incluyendo columnas, tipos e índices?


BLOQUE 5 — ORACLE: ARQUITECTURA Y ADMINISTRACIÓN

Puertos y herramientas Oracle

Herramienta Comando Función
SQL*Plus sqlplus CLI para consultas SQL
Listener Control lsnrctl Gestión del listener de red
Data Pump Export expdp Exportación de datos a alta velocidad
Data Pump Import impdp Importación de datos a alta velocidad
Recovery Manager rman Backup físico de los ficheros
SQL Developer sqldeveloper IDE gráfico para consultas
Net Manager netmgr Configuración de conectividad de red
Network Config Assistant netca Asistente de configuración de red
SQL*Loader sqlldr Carga de datos desde fichero externo
Enterprise Manager emctl Consola de administración
Server Control srvctl Control del servidor

Componentes lógicos del almacenamiento Oracle

Jerarquía de almacenamiento (de menor a mayor)
Bloque de datos → Extensión → Segmento → Tablespace → Base de datos

├── Bloque de datos: unidad mínima de almacenamiento
├── Extensión: conjunto de bloques de datos contiguos
├── Segmento: conjunto de extensiones (datos, índices, rollback, temporales)
└── Tablespace: unidad lógica de almacenamiento
      ├── Contiene objetos del esquema (tablas, índices...)
      ├── Una BD puede tener varios tablespaces
      ├── Un tablespace puede tener varios datafiles
      └── Un datafile solo puede pertenecer a UN tablespace

⚠️ El Tablespace SYSTEM es obligatorio. Es el puente entre el sistema de ficheros del SO y la BD.


Componentes físicos del almacenamiento Oracle

Fichero Extensión Descripción
Datafile .dbf Representación física de un tablespace. Almacena los datos físicamente. Ubicado en $ORACLE_HOME/Database
Redo Log .log Registro de transacciones para recuperación
Control file .ctl Información de estructura de la BD
Init.ora .ora Fichero de parámetros de arranque (texto)
Spfile.ora .ora Fichero de parámetros de arranque (binario)

Opciones de tamaño del Datafile


Procesos de la instancia Oracle

Proceso Nombre Función
DBWR Database Writer Escritura de datos en disco desde la memoria
LGWR Log Writer Escribe desde el buffer de log hacia el redo log
CKPT Checkpoint Avisa a DBWR para actualizar datos en disco
PMON Process Monitor Monitoriza procesos; limpia la caché cuando falla un proceso de usuario
SMON System Monitor Levanta la instancia cuando se da la instrucción de inicio
ARCH Archivelog Respalda los redo log cuando se llenan

Archivos de configuración Oracle (red)

Fichero Ubicación Función
listener.ora Servidor — $ORACLE_HOME/network/admin/ Configuración del listener (HOST, PORT, SID)
tnsnames.ora Cliente — $ORACLE_HOME/network/admin/ Nombres de servicio de red para conexión
sqlnet.ora Cliente y servidor Orden de resolución de nombres (ONAMES, TNSNAMES)
names.ora Servidor ORACLE NAMES Ubicación e información de dominio
ldap.ora Servidor y cliente Parámetros para acceso al directorio LDAP centralizado
# Ejemplo listener.ora
HOST: IP del servidor
PORT: 1521 (por defecto)
GLOBAL_DB_NAME: nombre de la BD
SID_NAME: SID de la BD

# Ejemplo tnsnames.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = centos.home)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.home)))

# Comprobar conexión desde cliente
tnsping nombre_servicio

Arranque y parada de Oracle

-- Arrancar la BD (fichero de parámetros por defecto)
STARTUP

-- Arrancar en modo específico
STARTUP NOMOUNT          -- Para crear la BD
STARTUP MOUNT            -- Para renombrar datafiles o activar ARCHIVELOG
STARTUP RESTRICT         -- Solo usuarios con privilegio RESTRICTED SESSION
STARTUP FORCE            -- Hace SHUTDOWN ABORT y arranca

-- Parar la BD (controlado y rápido)
SHUTDOWN IMMEDIATE

-- Modos de parada
SHUTDOWN ABORT           -- Inmediato, sin esperar nada (puede requerir recuperación)
SHUTDOWN IMMEDIATE       -- Rápido y controlado, cierra ficheros
SHUTDOWN TRANSACTIONAL   -- Espera a que terminen las transacciones en curso
SHUTDOWN NORMAL          -- Espera a que terminen todas las sesiones
Modo Nuevas conexiones Espera sesiones Espera transacciones Cierra ficheros
ABORT NO NO NO NO
IMMEDIATE NO NO NO
TRANSACTIONAL NO NO
NORMAL NO

Conectarse a Oracle

# Conectarse como DBA
sqlplus '/as sysdba'
sqlplus system@orcl

# Dentro de SQL*Plus
CONNECT administrador/administrador
CONNECT / AS SYSDBA

# Cambiar contraseña
ALTER USER usuario IDENTIFIED BY 'nueva_password';

# Ver en qué instancia estás trabajando
echo $ORACLE_SID

# Cambiar de instancia
export ORACLE_SID=instancia1

# Arrancar/parar el listener
lsnrctl start
lsnrctl stop
lsnrctl status

Data Pump: backup Oracle

# Export completo de un esquema
expdp SCHEMAS=MIBD DIRECTORY=EXPORT_API \
      DUMPFILE=MIBD_20240101.dmp \
      LOGFILE=MIBD_20240101.log

# Import de un esquema
impdp SCHEMAS=MIBD DIRECTORY=EXPORT_API \
      DUMPFILE=MIBD_20240101.dmp \
      LOGFILE=MIBD_20240101.log

# Backup físico con RMAN
RMAN> BACKUP AS BACKUPSET DATABASE PLUS ARCHIVELOG;

Parámetros clave de EXPDP

Parámetro Descripción
SCHEMAS Lista de esquemas a exportar
TABLES Lista de tablas a exportar
DIRECTORY Objeto directorio Oracle para el fichero
DUMPFILE Nombre del fichero de volcado
LOGFILE Nombre del fichero de log
FULL Exportar toda la BD
CONTENT ALL / DATA_ONLY / METADATA_ONLY
COMPRESSION ALL / DATA_ONLY / METADATA_ONLY / NONE
FLASHBACK_TIME Hace la exportación consistente en el tiempo
FLASHBACK_SCN Número de cambio del sistema para consistencia
QUERY Filtro WHERE para exportar subconjunto de tabla
EXCLUDE Excluir objetos específicos
INCLUDE Incluir solo objetos específicos

💡 FLASHBACK_TIME y FLASHBACK_SCN son excluyentes entre sí. SCN = System Change Number, el "reloj" interno de Oracle.


Creación de tablespace y usuario Oracle

-- Crear tablespace
CREATE TABLESPACE "MI_DATOS"
  DATAFILE '/oracle/oradata/instancia/MI_DATOS.dbf'
  SIZE 50M AUTOEXTEND ON NEXT 10M MAXSIZE 500M
  LOGGING EXTENT MANAGEMENT LOCAL
  SEGMENT SPACE MANAGEMENT AUTO;

-- Crear usuario
CREATE USER administrador
  PROFILE "DEFAULT"
  IDENTIFIED BY administrador
  DEFAULT TABLESPACE "MI_DATOS"
  TEMPORARY TABLESPACE "TEMP"
  ACCOUNT UNLOCK;

-- Otorgar permisos
GRANT CONNECT TO administrador;
GRANT ALL PRIVILEGES TO administrador;
GRANT CREATE MATERIALIZED VIEW TO administrador;

-- Borrar usuario
DROP USER administrador CASCADE;

🧪 TEST — BLOQUE 5: Oracle

16. ¿Cuál es el modo de arranque de Oracle que permite renombrar datafiles o activar el modo ARCHIVELOG?


17. En la jerarquía de almacenamiento de Oracle, ¿cuál es el orden correcto de menor a mayor?


18. ¿Qué proceso de Oracle se encarga de escribir la información del buffer de log hacia los archivos redo log?


19. ¿Qué fichero de configuración Oracle contiene los nombres de servicio de red en el cliente y permite conectarse usando un alias?


BLOQUE 6 — MySQL / MariaDB Y SQL SERVER

MySQL / MariaDB — Instalación y configuración

# Instalación en CentOS
sudo yum install mariadb-server mariadb
sudo systemctl start mariadb

# Instalación en Debian
apt install mysql-server

# Archivos de configuración
# CentOS: /etc/my.cnf y /etc/my.cnf.d/*
# Debian: /etc/mysql/my.cnf y /etc/mysql/mariadb.conf.d/

# Arrancar el servidor
service mysql start
sudo systemctl start mysqld

# Parar el servidor
mysqladmin -u root -p shutdown

# Acceder a la BD
mysql -u root -p
mysql -u usuario -p basedatos
mysql -h servidor -u usuario -p basedatos

Comandos MySQL principales

-- Mostrar todas las bases de datos
SHOW DATABASES;

-- Crear base de datos
CREATE DATABASE mibd;
DROP DATABASE mibd;

-- Seleccionar BD en uso
USE mysql;
SELECT DATABASE();   -- Muestra la BD en uso

-- Mostrar todas las tablas
SHOW TABLES;

-- Ver columnas de una tabla
DESCRIBE tabla;
SHOW COLUMNS FROM tabla;

-- Ver índices de una tabla
SHOW INDEX FROM tabla;

-- Explicar una consulta (rendimiento)
EXPLAIN SELECT * FROM tabla;

-- Paginación
SELECT cols FROM tabla LIMIT 10 OFFSET 30;

Gestión de usuarios MySQL

-- Crear usuario
CREATE USER bob@localhost IDENTIFIED BY 'Secure1pass!';

-- Cambiar contraseña
SET PASSWORD FOR 'dbadmin'@'localhost' = PASSWORD('bigshark');

-- Ver los usuarios
SELECT user FROM mysql.user;

-- Dar privilegios
GRANT ALL PRIVILEGES ON *.* TO 'angel'@localhost;

-- Ver privilegios
SHOW GRANTS FOR usuario;

-- Quitar privilegios
REVOKE privilege ON objeto FROM usuario;

-- Aplicar cambios de privilegios
FLUSH PRIVILEGES;

-- Borrar usuario
DROP USER cuenta;

-- Renombrar usuario
RENAME USER cuenta TO nuevacuenta;

Backup y restauración MySQL

# Backup de una base de datos
mysqldump bd_clientes > clientes.sql

# Backup con usuario y contraseña
mysqldump -u root -p basedatos > backup.sql

# Backup de una BD con tablas específicas
mysqldump bd_clientes tabla_saldos tabla_facturas > clientes.sql

# Backup de varias bases de datos
mysqldump --databases bd_clientes bd_ventas > respaldo.sql

# Backup de TODAS las bases de datos
mysqldump --all-databases > respaldo_full.sql

# Backup con gzip
mysqldump -u root -pPass --all-databases | gzip > respaldo.sql.gz

# Backup incluyendo procedimientos almacenados (--routines)
mysqldump -h 192.168.1.100 -u root -pPass --routines --all-databases > respaldo.sql

# Excluir tablas del backup
mysqldump clientes --ignore-table=clientes.temporal > respaldo.sql

# Restaurar una base de datos
mysql -u root -p bd_clientes < respaldo.sql

# Restaurar con gzip en una sola línea
gunzip < respaldo.sql.gz | mysql -u root -p

# Importar con mysqlimport
mysqlimport -u root -p db_clientes respaldo.sql

Mantenimiento MySQL

-- Analizar tabla (actualiza estadísticas)
ANALYZE TABLE tabla;

-- Comprobar integridad de la tabla
CHECK TABLE tabla;

-- Reparar tabla
REPAIR TABLE tabla;

-- Optimizar tabla (compacta y corrige)
OPTIMIZE TABLE tabla;
# Equivalentes desde shell
mysqlanalyze
mysqlcheck
mysqlrepair
mysqloptimize

# Copia en caliente sin detener el servicio
mysqlhotcopy demo /directorio_backup

# Información de versión
mysqladmin version -u user -pPass

# Mostrar bases de datos predefinidas
mysqlshow -u user -p

Bases de datos del sistema SQL Server

BD Función
master Configuración del servidor, tablas de sistema, procedimientos almacenados
model Plantilla para nuevas bases de datos (tamaño, tipo de recuperación, etc.)
msdb Soporte a DTS, sistema de backup, agente de replicación
tempdb BD auxiliar para cálculos y operaciones temporales. Se vacía al reiniciar
-- Backup en SQL Server
BACKUP DATABASE [AdventureWorks2014]
  TO DISK = N'C:\SQL\backup.bak'

-- Información del servidor
SELECT
  SERVERPROPERTY('MachineName') as Host,
  SERVERPROPERTY('InstanceName') as Instance,
  @@VERSION as VersionNumber

-- Ver configuración del servidor
SELECT * FROM sys.configurations ORDER BY NAME

💡 Puerto SQL Server: 1433 (instancia por defecto), 1434 (instancias nombradas / SQL Server Browser).


MongoDB — NoSQL documental

# Instalación
yum install mongodb-org
systemctl start mongod

# Configuración: /etc/mongod.conf
# Puerto: 27017

# Consola MongoDB
mongo

# Comandos básicos
show dbs                          # Mostrar bases de datos
use testdb                        # Crear/usar BD
db                                # Mostrar BD actual
db.dropDatabase()                 # Borrar BD actual
show collections                  # Mostrar colecciones (tablas)
db.cars.insert({marca: "bmw"})    # Insertar documento
db.cars.find().pretty()           # Mostrar documentos
db.cars.drop()                    # Borrar colección
# Backup MongoDB
mongodump                                          # Todas las BDs
mongodump --db=test --collection coleccion         # BD y colección específica
mongodump --host=server --port=27017 --out=/backup # A directorio específico

# Restaurar MongoDB
mongorestore --db=test dump/test

# Exportar a JSON/CSV
mongoexport --db=users --collection=contacts --type=csv --out=/backup/contacts.csv

# Importar desde JSON
mongoimport --db=users --collection=contacts --file=contacts.json

Estructura de MongoDB vs BBDD Relacional

MongoDB BBDD Relacional
Servidor Servidor
Base de datos Base de datos
Colección Tabla
Documento Fila/Registro
Campo Columna

💡 MongoDB usa el formato de datos JSON/BSON. Usa Sharding para distribuir datos entre múltiples servidores. La herramienta gráfica oficial es MongoDB Compass.


🧪 TEST — BLOQUE 6: MySQL y MongoDB

20. ¿Qué comando MySQL hace un backup de TODAS las bases de datos del servidor con compresión gzip?


21. ¿Cuál es la base de datos del sistema SQL Server que sirve de plantilla para la creación de nuevas bases de datos?


22. En MongoDB, ¿cómo se llama la estructura equivalente a una "tabla" en una base de datos relacional?


23. ¿Qué comando MySQL verifica la integridad de una tabla y cuál optimiza su almacenamiento?


24. ¿En qué puerto escucha por defecto MongoDB y qué formato de datos utiliza?


25. ¿Qué opción de mysqldump permite incluir también los procedimientos almacenados en el backup?



✅ SOLUCIONES COMENTADAS


1 → b) IEEE 802.11 define las redes inalámbricas WLAN (Wi-Fi). IEEE 802.3 es Ethernet, 802.15 es WPAN (Bluetooth), 802.16 es WiMAX.

2 → c) 802.11ac tiene una velocidad de hasta 433 Mbit/s (con canales más anchos puede llegar a más) y opera exclusivamente en la banda de 5 GHz. 802.11ad llega a 7 Gbit/s en 60 GHz. 802.11n usa 2,4/5 GHz con hasta 600 Mbit/s.

3 → c) El campo FCS (Frame Check Sequence) es un número calculado a partir de los datos de la trama. El receptor recalcula el FCS y lo compara con el recibido para verificar la integridad. Si no coinciden, la trama se descarta.

4 → b) Una máscara /26 deja 6 bits para hosts: 2⁶ = 64 direcciones totales, menos 2 (red y broadcast) = 62 hosts asignables.

5 → b) UDP es el protocolo elegido para VoIP y streaming porque su baja latencia es crítica. En comunicaciones en tiempo real, un paquete retrasado es peor que uno perdido. UDP no establece conexión ni confirma entrega, lo que lo hace mucho más rápido que TCP.

6 → b) El archivo es /etc/ssh/sshd_config (config del servidor, no del cliente). La directiva es PermitRootLogin no. No confundir con ssh_config que es la configuración del cliente SSH.

7 → b) ssh-keygen genera id_rsa (clave privada, nunca compartir) e id_rsa.pub (clave pública). Se copia id_rsa.pub al servidor en ~/.ssh/authorized_keys. La clave privada nunca sale del cliente.

8 → b) SFTP usa el protocolo SSH como capa de transporte, por lo que cifra completamente la comunicación: identidad del usuario e información intercambiada. FTP tradicional transmite en texto plano incluyendo la contraseña.

9 → c) El parámetro -X (mayúscula) activa el reenvío X11, exportando la variable $DISPLAY para ejecutar aplicaciones gráficas remotas en el escritorio local. También requiere X11Forwarding yes en el servidor.

10 → b) El puerto 5900 es el estándar VNC. Hay que abrirlo en el router/firewall para permitir conexiones entrantes al servidor "vino" desde el exterior de la red local.

11 → c) MySQL / MariaDB usa el puerto 3306. PostgreSQL usa 5432, Oracle usa 1521, SQL Server usa 1433.

12 → c) pg_hba.conf (Host-Based Authentication) controla quién puede conectarse, desde qué IP y con qué método de autenticación (trust, md5, scram-sha-256, cert…). postgresql.conf controla los parámetros generales del servidor.

13 → b) pg_dumpall > backup.sql hace backup de todas las bases de datos del servidor. pg_dump solo hace backup de una base de datos. pg_basebackup hace backup físico del cluster completo.

14 → b) VACUUM FULL reescribe todos los contenidos de la tabla en un nuevo fichero de disco sin espacio adicional, compactando físicamente los datos. Es más lento que VACUUM normal pero libera más espacio. VACUUM normal marca el espacio como reutilizable pero no lo devuelve al sistema operativo.

15 → c) \d+ tabla muestra la estructura detallada con columnas, tipos de datos, restricciones, índices y más información. \dt lista las tablas, \l lista las bases de datos, \df lista las funciones.

16 → b) STARTUP MOUNT monta la base de datos sin abrirla, lo que permite operaciones de mantenimiento como renombrar datafiles, activar/desactivar el modo ARCHIVELOG o realizar recuperaciones completas. STARTUP NOMOUNT es para crear la BD desde cero.

17 → b) El orden correcto en Oracle es Bloque → Extensión → Segmento → Tablespace. El bloque es la unidad mínima, varias forman una extensión, varias extensiones forman un segmento, y varios segmentos forman un tablespace.

18 → c) LGWR (Log Writer) escribe la información desde el buffer de redo log hacia los archivos redo log en disco. DBWR escribe los datos (no los logs). PMON monitoriza procesos. SMON levanta la instancia.

19 → c) tnsnames.ora está en el cliente y contiene los descriptores de conexión con nombre (alias) que se usan para conectarse. listener.ora está en el servidor. sqlnet.ora define el orden de resolución.

20 → b) mysqldump -u root -p --all-databases | gzip > backup.sql.gz hace backup de todas las BDs y lo comprime con gzip en una sola línea mediante pipe. La opción --all-databases incluye todas las bases de datos del servidor.

21 → c) model es la base de datos plantilla de SQL Server. Cada vez que se crea una nueva BD, se copia desde model. Si configuras model con ciertos parámetros de tamaño o tipo de recuperación, todas las BDs nuevas los heredarán.

22 → b) En MongoDB, la estructura equivalente a una tabla se llama Colección. Un documento (equivalente a una fila) pertenece a una colección. Los campos son los atributos del documento.

23 → c) CHECK TABLE verifica la integridad de la tabla. OPTIMIZE TABLE optimiza el almacenamiento (equivalente a VACUUM en PostgreSQL). REPAIR TABLE repara tablas corruptas. ANALYZE TABLE actualiza estadísticas para el optimizador.

24 → b) MongoDB escucha en el puerto 27017 por defecto y usa el formato JSON/BSON (Binary JSON) para almacenar y transmitir documentos. Cassandra usa 9042, CouchDB usa 5984, Redis usa 6379.

25 → c) La opción --routines de mysqldump incluye en el backup los procedimientos almacenados y funciones definidas por el usuario. Sin esta opción, solo se exportan los datos y la estructura de las tablas.


📊 TABLA FLASH FINAL — Datos clave Redes, BBDD y Admin Remota

Concepto Valor / Respuesta clave
IEEE 802.11b 11 Mbit/s — 2,4 GHz
IEEE 802.11g 54 Mbit/s — 2,4 GHz
IEEE 802.11n 600 Mbit/s — 2,4/5 GHz (doble banda)
IEEE 802.11ac 433 Mbit/s — 5 GHz
IEEE 802.11ad 7 Gbit/s — 60 GHz
IEEE 802.11ah WiFi HaLow — 0,9 GHz (IoT)
IEEE 802.15.1 Bluetooth
IEEE 802.16 WiMAX
IEEE 802.1Q VLANs
Trama Ethernet: tamaño mínimo 64 bytes
Trama Ethernet: tamaño máximo 1518 bytes
MAC broadcast FF-FF-FF-FF-FF-FF
MAC: tamaño 48 bits (12 dígitos hex)
SSH: puerto por defecto 22
SSH: archivo config servidor /etc/ssh/sshd_config
SSH: impedir login root PermitRootLogin no
SSH: autenticación por clave PubkeyAuthentication yes
SSH: clave privada generada ~/.ssh/id_rsa
SSH: clave pública generada ~/.ssh/id_rsa.pub
SSH: destino de la clave pública ~/.ssh/authorized_keys del servidor
VNC: puerto 5900
VNC: paquete servidor Ubuntu vino
VNC: cliente Ubuntu Remmina
SCP: opción recursivo -r
SCP: opción puerto -P (mayúscula)
MySQL: puerto 3306
PostgreSQL: puerto 5432
Oracle Listener: puerto 1521
SQL Server: puerto 1433
MongoDB: puerto 27017
Cassandra: puerto 9042
Redis: puerto 6379
PostgreSQL: backup una BD pg_dump
PostgreSQL: backup todas las BD pg_dumpall
PostgreSQL: backup cluster físico pg_basebackup
PostgreSQL: limpieza de la BD VACUUM
PostgreSQL: estadísticas ANALYZE
PostgreSQL: archivo autenticación pg_hba.conf
PostgreSQL: listado de usuarios \du
PostgreSQL: listar BDs \l
Oracle: archivo listener servidor listener.ora
Oracle: archivo nombres cliente tnsnames.ora
Oracle: comprobar conexión tnsping
Oracle: STARTUP para renombrar datafiles STARTUP MOUNT
Oracle: proceso escritura datos DBWR
Oracle: proceso escritura redo log LGWR
Oracle: proceso monitoriza procesos PMON
Oracle: tablespace obligatorio SYSTEM
Oracle: exportación moderna expdp (Data Pump)
MySQL: backup todas las BDs mysqldump --all-databases
MySQL: con gzip mysqldump ... \| gzip > backup.sql.gz
MySQL: incluir procedimientos --routines
MySQL: config archivo principal /etc/my.cnf o /etc/mysql/my.cnf
SQL Server: BD plantilla model
SQL Server: BD del sistema principal master
MongoDB: formato de datos JSON / BSON
MongoDB: tabla equivalente Colección
MongoDB: backup mongodump
MongoDB: herramienta gráfica MongoDB Compass