🎓 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.
| 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.
| 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) |
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.
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 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
| 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.
00-05-9A-3C-78-00 | 00:05:9A:3C:78:00 | 0005.9A3C.7800Estructura 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.
| 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).
| 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).
| 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 |
| 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 | Sí | 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 |
| 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.
Solo 4 campos: Puerto origen · Puerto destino · Longitud · Checksum. Mucho más ligera que TCP.
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é?
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
/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
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_keysdel servidor.
# 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 (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
| 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 (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 → 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.
| 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).
6. ¿En qué archivo se configura el servidor OpenSSH y qué directiva impide el acceso como root?
/etc/ssh/ssh_config — directiva DenyRootLogin no/etc/ssh/sshd_config — directiva PermitRootLogin no/etc/openssh/config — directiva RootAccess disabled/etc/ssh/sshd_config — directiva AllowRoot no7. ¿Qué par de ficheros genera ssh-keygen -t rsa y cuál debe copiarse al servidor?
id_rsa (pública) e id_rsa.pub (privada) — se copia id_rsaid_rsa (privada) e id_rsa.pub (pública) — se copia id_rsa.pubrsa_key y rsa_key.pub — se copia rsa_key.pubssh_key y authorized_keys — se copia authorized_keys8. ¿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?
ssh -G usuario@servidorssh -x usuario@servidorssh -X usuario@servidorssh --gui usuario@servidor10. ¿Qué puerto hay que abrir en el firewall para permitir conexiones VNC con el servidor "vino"?
| 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 |
| 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 |
# 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
| 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 = trueenpostgresql.conf. Enpg_hba.confcambiaridentpormd5para autenticación con contraseña.
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
| 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 |
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 |
-- 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;
-- 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 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
-- 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.
demo=# \echo :DBNAME :ENCODING :HOST :PORT :USER
-- Ejemplo de salida: demo LATIN9 localhost 5432 postgres
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?
postgresql.confpg_ident.confpg_hba.confstart.conf13. ¿Qué comando de shell de PostgreSQL realiza un backup completo de todas las bases de datos del servidor?
pg_dump --all-databases > backup.sqlpg_dumpall > backup.sqlpg_basebackup --all > backup.sqlvacuumdb --full > backup.sql14. ¿Qué hace el comando VACUUM FULL en PostgreSQL?
15. ¿Qué comando psql muestra la estructura detallada de una tabla incluyendo columnas, tipos e índices?
\dt tabla\l tabla\d+ tabla\df tabla| 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 |
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.
| 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) |
| 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 |
| 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
-- 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 | SÍ |
| TRANSACTIONAL | NO | NO | SÍ | SÍ |
| NORMAL | NO | SÍ | SÍ | SÍ |
# 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
# 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á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_TIMEyFLASHBACK_SCNson excluyentes entre sí. SCN = System Change Number, el "reloj" interno de 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;
16. ¿Cuál es el modo de arranque de Oracle que permite renombrar datafiles o activar el modo ARCHIVELOG?
STARTUP NOMOUNTSTARTUP MOUNTSTARTUP RESTRICTSTARTUP FORCE17. 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?
listener.orasqlnet.oratnsnames.oranames.ora# 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
-- 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;
-- 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 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
-- 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
| 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).
# 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
| 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.
20. ¿Qué comando MySQL hace un backup de TODAS las bases de datos del servidor con compresión gzip?
mysqldump --all-databases > backup.sqlmysqldump -u root -p --all-databases | gzip > backup.sql.gzmysqlhotcopy --all > backup.tar.gzmysqladmin backup --all | gzip > backup.sql.gz21. ¿Cuál es la base de datos del sistema SQL Server que sirve de plantilla para la creación de nuevas bases de datos?
mastermsdbmodeltempdb22. 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?
CHECK TABLE verifica, REPAIR TABLE optimizaANALYZE TABLE verifica, OPTIMIZE TABLE optimizaCHECK TABLE verifica, OPTIMIZE TABLE optimizaREPAIR TABLE verifica, VACUUM TABLE optimiza24. ¿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?
--stored-procedures--include-procs--routines--with-functions1 → 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.
| 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 |