LinuxParty
La gestión de las tablas en Oracle resulta diferente a como lo hace MySQL, pero resulta mucho más flexible una vez acostumbrados a ella. Vamos a ver como realizar listados de tablas por tablespace o por usuario.
Para poder realizar listados de tablas podemos consultar varias tablas del data dictionary:
- DBA_TABLES: Contiene todas las tablas de la base de datos
- ALL_TABLES: Contiene todas las tablas accesibles por el usuario (las propias más las que tiene permisos sobre ellas)
- USER_TABLES: Contiene totas las tablas del usuario
- DBA_SEGMENTS: Contiene todos los segmentos de la base de datos, esto incluye tablas, indices y segmentos de rollback entre otros:
SQL> select distinct SEGMENT_TYPE from DBA_SEGMENTS;
SEGMENT_TYPE
------------------
LOBINDEX
INDEX PARTITION
TABLE PARTITION
NESTED TABLE
ROLLBACK
LOB PARTITION
LOBSEGMENT
INDEX
TABLE
CLUSTER
TYPE2 UNDO
11 filas seleccionadas.
Así, la tabla DBA_SEGMENTS contiene la tabla DBA_TABLES más el resto de segmentos de la base de datos:
SQL> select count(*) from DBA_SEGMENTS;
COUNT(*)
----------
5783
SQL> select count(*) from DBA_TABLES;
COUNT(*)
----------
2083
Usando la tabla DBA_TABLES tenemos las siguientes columnas:
SQL> desc DBA_TABLES;
Nombre ?Nulo? Tipo
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
TABLESPACE_NAME VARCHAR2(30)
CLUSTER_NAME VARCHAR2(30)
IOT_NAME VARCHAR2(30)
STATUS VARCHAR2(8)
PCT_FREE NUMBER
PCT_USED NUMBER
INI_TRANS NUMBER
MAX_TRANS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
LOGGING VARCHAR2(3)
BACKED_UP VARCHAR2(1)
NUM_ROWS NUMBER
BLOCKS NUMBER
EMPTY_BLOCKS NUMBER
AVG_SPACE NUMBER
CHAIN_CNT NUMBER
AVG_ROW_LEN NUMBER
AVG_SPACE_FREELIST_BLOCKS NUMBER
NUM_FREELIST_BLOCKS NUMBER
DEGREE VARCHAR2(10)
INSTANCES VARCHAR2(10)
CACHE VARCHAR2(5)
TABLE_LOCK VARCHAR2(8)
SAMPLE_SIZE NUMBER
LAST_ANALYZED DATE
PARTITIONED VARCHAR2(3)
IOT_TYPE VARCHAR2(12)
TEMPORARY VARCHAR2(1)
SECONDARY VARCHAR2(1)
NESTED VARCHAR2(3)
BUFFER_POOL VARCHAR2(7)
ROW_MOVEMENT VARCHAR2(8)
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
DURATION VARCHAR2(15)
SKIP_CORRUPT VARCHAR2(8)
MONITORING VARCHAR2(3)
CLUSTER_OWNER VARCHAR2(30)
DEPENDENCIES VARCHAR2(8)
COMPRESSION VARCHAR2(8)
DROPPED VARCHAR2(3)
Los campos que vamos a ver son los siguientes:
- OWNER: Propietario del segmento
- SEGMENT_NAME: Nombre del segmento
- TABLESPACE_NAME: Nombre del tablespace al que pertenece
Mediante simples consultas SQL podemos obtener los datos que queremos. Por ejemplo, para listar el nombre de todas las tablas de la base de datos Oracle haríamos:
SQL> select TABLE_NAME from DBA_TABLES;
TABLE_NAME
------------------------------
OPINIONES
FORM
LOCALIDAD
EXAMENES
(...)
2083 filas seleccionadas.
Este comando sería el equivalente al SHOW TABLES; de MySQL.
Para contar todas las tablas del tablespace UNIT001 haríamos lo siguiente:
SQL> select count(*) from DBA_TABLES where TABLESPACE_NAME='UNIT001';
COUNT(*)
----------
117
Y para contar las tablas de cada usuario podríamos hacer lo siguiente:
SQL> select count(*), OWNER from DBA_TABLES group by OWNER;
COUNT(*) OWNER
---------- ------------------------------
49 MDSYS
24 EJEMPLOSCURSO
14 NURIA
1 TSMSYS
2 DMSYS
160 OING
3 OUTLN
37 CTXSYS
126 OLAPSYS
35 ENRIC_COLL
6 NEWS
COUNT(*) OWNER
---------- ------------------------------
141 SYSTEM
68 TESTING
44 EXFSYS
4 TIGER
37 TIENDA
11 SYSTEMADMIN_ES
21 DBSNMP
4 ORDSYS
337 SYSMAN
11 XDB
66 CLAUDATOR
COUNT(*) OWNER
---------- ------------------------------
75 XD_TMP
767 SYS
40 WMSYS
25 filas seleccionadas.
-
Bases de Datos
- La última versión de MySQL es decepcionante, dicen algunos expertos en bases de datos
- Cómo instalar MongoDB en AlmaLinux 9 con ejemplos de uso
- Cómo instalar PostgreSQL 16 en distribuciones basadas en RHEL, AlmaLinux, RockyLinux y Fedora
- Cómo instalar PhpMyAdmin con Apache en sistemas RHEL, Alma Linux, Rocky Linux, Centos y Fedora
- Cómo hacer una copia de seguridad y restaurar una base de datos PostgreSQL en Linux
- Cómo instalar phpPgAdmin y PostgreSQL en CentOS, AlmaLinux, RHEL, RockyLinux y similares
- 20 comandos mysqladmin para la administración de bases de datos MYSQL/MariaDB
- Copiar y restaurar copias de seguridad de MySQL / MariaDB para la administración de bases de datos
- Crear Copias de Seguridad (Backups) de MariaDB o MySQL Automáticas con AutoMySQLBackup
- Grafana, software para análisis y supervisión
- Cómo configurar la replicación MariaDB (Maestro-Esclavo) en CentOS / RHEL y Debian
- Arrancar al inicio MySQL / MariaDB con Linux.
- Conocer que IPs están conectados a MySQL haciendo consultas a la base de datos.
- MariaDB, guía práctica para Administradores Linux
- Cómo configurar MariaDB Galera Cluster 5.5 en CentOS, RHEL y Fedora