附加临时段
SET LINES 132 PAGES 300
col EXT_PCT for a10
COL con_name FORM A15 HEAD “Container|Name”
COL tablespace_name FORM A25
COL fsm FORM 999,999,999,999 HEAD “Free|Space Meg.”
COL apm FORM 999,999,999,999 HEAD “Alloc|Space Meg.”
COMPUTE SUM OF fsm apm ON REPORT
BREAK ON REPORT ON con_id ON con_name ON tablespace_name
WITH x AS (SELECT c1.con_id, cf1.tablespace_name, SUM(cf1.bytes)/1024/1024 fsm
FROM cdb_free_space cf1
,v
c
o
n
t
a
i
n
e
r
s
c
1
W
H
E
R
E
c
f
1.
c
o
n
i
d
=
c
1.
c
o
n
i
d
G
R
O
U
P
B
Y
c
1.
c
o
n
i
d
,
c
f
1.
t
a
b
l
e
s
p
a
c
e
n
a
m
e
)
,
y
A
S
(
S
E
L
E
C
T
c
2.
c
o
n
i
d
,
c
d
.
t
a
b
l
e
s
p
a
c
e
n
a
m
e
,
s
u
m
(
d
e
c
o
d
e
(
m
a
x
b
y
t
e
s
,
0
,
b
y
t
e
s
,
m
a
x
b
y
t
e
s
)
)
/
1024
/
1024
a
p
m
F
R
O
M
c
d
b
d
a
t
a
f
i
l
e
s
c
d
,
v
containers c1 WHERE cf1.con_id = c1.con_id GROUP BY c1.con_id, cf1.tablespace_name), y AS (SELECT c2.con_id, cd.tablespace_name,sum(decode(maxbytes,0,bytes,maxbytes))/1024/1024 apm FROM cdb_data_files cd ,v
containersc1WHEREcf1.conid=c1.conidGROUPBYc1.conid,cf1.tablespacename),yAS(SELECTc2.conid,cd.tablespacename,sum(decode(maxbytes,0,bytes,maxbytes))/1024/1024apmFROMcdbdatafilescd,vcontainers c2
WHERE cd.con_id = c2.con_id
GROUP BY c2.con_id
,cd.tablespace_name)
SELECT x.con_id, v.name con_name, x.tablespace_name, x.fsm, y.apm , trunc(x.fsm/y.apm*100,2)||‘%’ ext_pct
FROM x, y, v$containers v
WHERE x.con_id = y.con_id
AND x.tablespace_name = y.tablespace_name
AND v.con_id = y.con_id
ORDER BY 1,6,2,3;
不附加临时段
set linesize 300;
SELECT B.TABLESPACE_NAME,
ROUND(sum(case when B.MAXBYTES=0 then B.bytes else B.maxbytes end)/1024/1024/1024,0)SUM_GB,
ROUND (SUM(B.bytes/1024/1024/1024)-SUM(A.bytes/1024/1024/1024), 0) used_GB,
ROUND(sum(case when B.MAXBYTES=0 then B.bytes else B.maxbytes end)/1024/1024/1024-(SUM(B.bytes/1024/1024/1024)-SUM(A.bytes/1024/1024/1024)),0) free_GB,
ROUND((SUM(B.bytes/1024/1024/1024)-SUM(A.bytes/1024/1024/1024))/(sum(case when B.MAXBYTES=0 then B.bytes else B.maxbytes end)/1024/1024/1024), 4) * 100 USE_PRECENT
FROM (SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES) BYTES
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME, FILE_ID) A,
DBA_DATA_FILES B
WHERE A.FILE_ID(+) = B.FILE_ID
AND A.TABLESPACE_NAME(+) = B.TABLESPACE_NAME
GROUP BY B.TABLESPACE_NAME
ORDER BY USE_PRECENT desc;