重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: 显示 CDB$ROOT 和所有 PDB 的表空间 [打印本页]

作者: Inkcup    时间: 2026-4-6 17:21
标题: 显示 CDB$ROOT 和所有 PDB 的表空间
本帖最后由 Inkcup 于 2026-4-7 14:01 编辑

-- 正确显示 CDB$ROOT 和所有 PDB 的表空间
SELECT
    CASE
        WHEN d.con_id = 1 THEN 'CDB$ROOT'
        WHEN d.con_id = 2 THEN 'PDB$SEED'
        ELSE p.name
    END AS container_name,
    d.tablespace_name,
    ROUND(SUM(d.bytes) / 1024 / 1024 / 1024, 2) AS size_gb,
    COUNT(d.file_name) AS datafile_count
FROM cdb_data_files d
LEFT JOIN v$pdbs p ON d.con_id = p.con_id
GROUP BY
    CASE
        WHEN d.con_id = 1 THEN 'CDB$ROOT'
        WHEN d.con_id = 2 THEN 'PDB$SEED'
        ELSE p.name
    END,
    d.tablespace_name
ORDER BY container_name, d.tablespace_name;
====================
CONTAINER_NAME  TABLESPACE_NAME                   SIZE_GB DATAFILE_COUNT
--------------- ------------------------------ ---------- --------------
CDB$ROOT        SYSAUX                                .88              1
CDB$ROOT        SYSTEM                               1.17              1
CDB$ROOT        TSP_APEX                                1              1
CDB$ROOT        TSP_ORDS                               .1              1
CDB$ROOT        UNDOTBS1                                1              1
CDB$ROOT        USERS                                   0              1
PDB1            SYSAUX                                .55              1
PDB1            SYSTEM                                .58              1
PDB1            TSP_APEX                                1              1
PDB1            TSP_ORDS                               .1              1
PDB1            UNDOTBS1                              .26              1

CONTAINER_NAME  TABLESPACE_NAME                   SIZE_GB DATAFILE_COUNT
--------------- ------------------------------ ---------- --------------
PDB1            USERS                                   0              1

12 rows selected.

====================

--查看当前PDB下所有表空间
SELECT
    tablespace_name,
    status,
    ROUND(SUM(bytes) / 1024 / 1024 / 1024, 2) AS size_gb,
    COUNT(file_name) AS datafile_count
FROM dba_data_files
GROUP BY tablespace_name,status
ORDER BY tablespace_name;
===============
TABLESPACE_NAME                STATUS       SIZE_GB DATAFILE_COUNT
------------------------------ --------- ---------- --------------
SYSAUX                         AVAILABLE        .55              1
SYSTEM                         AVAILABLE        .58              1
TSP_APEX                       AVAILABLE          1              1
TSP_ORDS                       AVAILABLE         .1              1
UNDOTBS1                       AVAILABLE        .26              1
USERS                          AVAILABLE          0              1

6 rows selected.

===============

--查看PDB1下所有表空间
SELECT
    d.tablespace_name,
    ROUND(SUM(d.bytes) / 1024 / 1024 / 1024, 2) AS size_gb,
    COUNT(d.file_name) AS datafile_count
FROM cdb_data_files d
WHERE d.con_id = (SELECT con_id FROM v$pdbs WHERE name = 'PDB1')
GROUP BY d.tablespace_name
ORDER BY d.tablespace_name;
===============
TABLESPACE_NAME                   SIZE_GB DATAFILE_COUNT
------------------------------ ---------- --------------
SYSAUX                                .55              1
SYSTEM                                .58              1
TSP_APEX                                1              1
TSP_ORDS                               .1              1
UNDOTBS1                              .26              1
USERS                                   0              1

6 rows selected.

===============






欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2