Oracle表空间查看方式

  • 以下查询均在拥有DBA权限的用户下执行
  • 以下命令执行结果截图客户端来自:PL/SQL Developer 11.0.6.1796(64 bit)

一、所有表空间

1、查看所有表空间文件存储位置

方式一

select t1.name tablespace_name,t2.name file_name  from v$tablespace t1,v$datafile t2 where t1.ts# = t2.ts#;

方式二

select tablespace_name,file_name from dba_data_files;

以上两种方式查询结果相同,如下图:


Oracle表空间查看方式_第1张图片
表空间存储位置
2、查看所有表空间使用情况

方式一

SELECT a.tablespace_name "表空间名", 
total "表空间大小", 
free "表空间剩余大小", 
(total - free) "表空间使用大小", 
total / (1024 * 1024 * 1024) "表空间大小(G)", 
free / (1024 * 1024 * 1024) "表空间剩余大小(G)", 
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (SELECT tablespace_name, SUM(bytes) free 
FROM dba_free_space 
GROUP BY tablespace_name) a, 
(SELECT tablespace_name, SUM(bytes) total 
FROM dba_data_files 
GROUP BY tablespace_name) b 
WHERE a.tablespace_name = b.tablespace_name;
Oracle表空间查看方式_第2张图片
表空间查询方式一

方式二

select
b.file_name "物理文件名",
b.tablespace_name "表空间",
b.bytes/1024/1024 "大小(M)",
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 "已使用(M)",
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "利用率(%)"
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name;

如下如:


Oracle表空间查看方式_第3张图片
表空间查询方式二

该语句通过查询dba_free_space,dba_data_files这二个数据字典表,得到了表空间文件存储位置,表空间名称,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。

二、指定用户的表空间

1、查询指定用户默认表空间、默认临时表空间
/* 指定用户(username)必须大写! */
select username,default_tablespace,temporary_tablespace from dba_users where username='GZBPO';

如下图:


Oracle表空间查看方式_第4张图片
查询指定用户默认表空间、默认临时表空间
2、查看指定用户下所有表使用的表空间
select owner,table_name,tablespace_name from dba_tables where owner='GZBPO';

三、查询某表空间被哪些用户所使用

1、先查询所有表空间的名称

select tablespace_name from dba_tablespaces;

2、查看表空间下有多少用户

--查看表空间下有多少用户,tablespace_name表空间的名字一定要大写 
select distinct s.owner from dba_segments s where s.tablespace_name ='USERS'; 
-- 利用视图查看表空间下的所有者(如果有索引的话,此方式会漏掉一些所有者)
select owner from dba_tables where tablespace_name='USERS' group by owner;

文章参照
  • 查询某表空间被哪些用户所使用

你可能感兴趣的:(Oracle表空间查看方式)