LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

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.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías