空间的汇总Oracle下查看用户所有表空间使用情况汇总(oracle下用户所有表)

空间的汇总Oracle下查看用户所有表空间使用情况汇总

数据库中的表空间是用来存储表和索引等对象的物理空间。为确保数据库的正常运行,我们需要对表空间进行管理和监控。在Oracle数据库中,我们可以通过以下方式查看用户的所有表空间使用情况汇总。

我们需要查询所有用户的用户名,可以通过以下查询语句得到:

“`sql

SELECT username FROM dba_users;


接下来,我们可以通过以下查询语句得到每个用户对应的表空间使用情况:

```sql
SELECT tablespace_name, SUM(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(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) e
WHERE 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;


以上查询语句可以得到每个用户在不同的表空间中的使用情况。

我们可以通过以下查询语句得到所有用户的表空间使用情况汇总:

```sql
SELECT 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_summary
GROUP BY tablespace_name;

以上查询语句可以得到所有用户在每个表空间中的总大小、使用大小和使用百分比。通过这些指标,我们可以有效地监控数据库的表空间使用情况,及时应对可能出现的问题,确保数据库的正常运行。

综上所述,通过Oracle提供的查询语句,我们可以轻松地查看用户的所有表空间使用情况汇总,并根据需要进行相应的管理和优化。


数据运维技术 » 空间的汇总Oracle下查看用户所有表空间使用情况汇总(oracle下用户所有表)