空间的汇总Oracle下查看用户所有表空间使用情况汇总(oracle下用户所有表)
空间的汇总Oracle下查看用户所有表空间使用情况汇总
数据库中的表空间是用来存储表和索引等对象的物理空间。为确保数据库的正常运行,我们需要对表空间进行管理和监控。在Oracle数据库中,我们可以通过以下方式查看用户的所有表空间使用情况汇总。
我们需要查询所有用户的用户名,可以通过以下查询语句得到:
“`sql
SELECT username FROM dba_users;
接下来,我们可以通过以下查询语句得到每个用户对应的表空间使用情况:
```sqlSELECT tablespace_name, SUM(bytes)/1024/1024 AS "Total Size (MB)",
SUM(decode(e.used_bytes, NULL, d.bytes, e.used_bytes))/1024/1024AS "Used Size (MB)", ROUND(SUM(decode(e.used_bytes, NULL, d.bytes,
e.used_bytes))/SUM(bytes)*100,2) AS "% Used"FROM dba_tablespaces,
(SELECT tablespace_name,file_id,bytes FROM dba_data_files) d,(SELECT tablespace_name,file_id,SUM(bytes) used_bytes FROM
dba_extents GROUP BY tablespace_name,file_id) eWHERE dba_tablespaces.tablespace_name=d.tablespace_name
AND dba_tablespaces.tablespace_name=e.tablespace_name(+)AND d.file_id=e.file_id(+)
AND dba_tablespaces.contents='PERMANENT'GROUP BY tablespace_name;
以上查询语句可以得到表空间的名称、总大小、使用大小和使用百分比四个指标。
接着,我们可以将所有用户的表空间使用情况汇总到一张表中,可以通过以下查询语句实现:
“`sql
CREATE TABLE all_tablespaces_summary (
username VARCHAR2(30),
tablespace_name VARCHAR2(30),
total_size_mb NUMBER(10,2),
used_size_mb NUMBER(10,2),
used_percent NUMBER(5,2)
);
INSERT INTO all_tablespaces_summary (username, tablespace_name, total_size_mb, used_size_mb, used_percent)
SELECT d.username,
t.tablespace_name,
SUM(d.bytes)/1024/1024 AS “Total Size (MB)”,
SUM(decode(e.used_bytes, NULL, d.bytes, e.used_bytes))/1024/1024 AS “Used Size (MB)”,
ROUND(SUM(decode(e.used_bytes, NULL, d.bytes, e.used_bytes))/SUM(d.bytes)*100,2) AS “% Used”
FROM dba_tablespaces t,
(SELECT username,default_tablespace,temporary_tablespace FROM dba_users WHERE account_status=’OPEN’) d,
(SELECT tablespace_name,file_id,bytes FROM dba_data_files) f,
(SELECT tablespace_name,file_id,SUM(bytes) used_bytes FROM dba_extents GROUP BY tablespace_name,file_id) e
WHERE t.tablespace_name=f.tablespace_name
AND t.tablespace_name=e.tablespace_name(+)
AND f.file_id=e.file_id(+)
AND t.contents=’PERMANENT’
AND t.tablespace_name NOT IN (SELECT tablespace_name FROM dba_temp_files)
AND t.tablespace_name NOT IN (‘SYSTEM’,’SYSAUX’,’UNDOTBS1′)
AND t.tablespace_name NOT LIKE ‘APEX%’
AND d.default_tablespace=t.tablespace_name
GROUP BY d.username,t.tablespace_name;
以上查询语句可以得到每个用户在不同的表空间中的使用情况。
我们可以通过以下查询语句得到所有用户的表空间使用情况汇总:
```sqlSELECT tablespace_name, SUM(total_size_mb) AS "Total Size (MB)",
SUM(used_size_mb) AS "Used Size (MB)",ROUND(SUM(used_size_mb)/SUM(total_size_mb)*100,2) AS "% Used"
FROM all_tablespaces_summaryGROUP BY tablespace_name;
以上查询语句可以得到所有用户在每个表空间中的总大小、使用大小和使用百分比。通过这些指标,我们可以有效地监控数据库的表空间使用情况,及时应对可能出现的问题,确保数据库的正常运行。
综上所述,通过Oracle提供的查询语句,我们可以轻松地查看用户的所有表空间使用情况汇总,并根据需要进行相应的管理和优化。