¿Cómo ver la correspondencia entre los objetos de la base de datos y los archivos de datos en ORACLE?

En la base de datos de Oracle, ¿cómo verificamos qué objetos de la base de datos están contenidos en el espacio de tabla o el archivo de datos? ¿Cómo ver el espacio de tablas y el archivo de datos donde se encuentra el objeto de la base de datos?
Este artículo proporcionará algunos scripts de consulta para su referencia.

1. Comprobar qué objetos contiene un tablespace

SELECT TABLESPACE_NAME,
       SEGMENT_NAME,
       SUM(BYTES)/1024/1024 SEGMENT_SIZE_M 
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME='&TABLESPACE_NAME'
GROUP BY TABLESPACE_NAME,SEGMENT_NAME;

También vea los objetos en el tablespace a través de la siguiente instrucción SQL:

SELECT OWNER,
       'TABLE'      SEGMENT_TYPE,
       TABLE_NAME   SEGMENT_NAME
FROM DBA_TABLES 
WHERE TABLESPACE_NAME='&TABLESPACE_NAME'
UNION ALL
SELECT OWNER,
       'INDEX'      SEGMENT_TYPE,
       INDEX_NAME   SEGMETN_NAME
FROM DBA_INDEXES 
WHERE TABLESPACE_NAME='&TABLESPACE_NAME'
UNION ALL
SELECT OWNER,
       'LOBSEGMENT'  SGEMENT_TYPE,
       SEGMENT_NAME  SEGMENT_NAME
FROM DBA_LOBS 
WHERE TABLESPACE_NAME='&TABLESPACE_NAME';

En segundo lugar, ver un archivo de datos que contiene esos objetos de la base de datos.

SELECT  A.OWNER,
        A.SEGMENT_NAME,
        A.SEGMENT_TYPE,
        B.FILE_NAME,
        SUM(A.BYTES)/1024/1024 SEGMENT_SIZE_M
FROM DBA_EXTENTS A
INNER JOIN DBA_DATA_FILES B ON A.FILE_ID= B.FILE_ID
WHERE B.FILE_ID =&FILE_ID
GROUP BY  A.OWNER,A.SEGMENT_NAME,A.SEGMENT_TYPE,B.FILE_NAME;

o

SELECT  A.OWNER,
        A.SEGMENT_NAME,
        A.SEGMENT_TYPE,
        B.FILE_NAME,
        SUM(A.BYTES)/1024/1024 SEGMENT_SIZE_M
FROM DBA_EXTENTS A
INNER JOIN DBA_DATA_FILES B ON A.FILE_ID= B.FILE_ID
WHERE B.FILE_NAME ='&FILE_NAME'
GROUP BY  A.OWNER,A.SEGMENT_NAME,A.SEGMENT_TYPE,B.FILE_NAME;

3. Ver a qué tablespace pertenece el objeto de la base de datos

SELECT TABLE_NAME, TABLESPACE_NAME
  FROM USER_TABLES
 WHERE TABLE_NAME = '&TABLE_NAME';

4. Ver a qué archivo de datos pertenece el objeto de la base de datos

SELECT  A.OWNER, 
        A.SEGMENT_TYPE,
        A.SEGMENT_NAME,
        A.PARTITION_NAME,
        A.TABLESPACE_NAME,
        B.FILE_NAME,
        SUM(A.BYTES)/1024/1024  SEGMENT_SIZE_M
FROM DBA_EXTENTS A
INNER JOIN DBA_DATA_FILES B ON A.FILE_ID= B.FILE_ID
WHERE   A.OWNER='&OWNER'
        AND A.SEGMENT_NAME='&SEGMENT_NAME'
GROUP BY A.OWNER,A.SEGMENT_TYPE,A.PARTITION_NAME,A.SEGMENT_NAME,A.TABLESPACE_NAME,B.FILE_NAME;

Supongo que te gusta

Origin blog.csdn.net/Ruishine/article/details/129881403
Recomendado
Clasificación