概述
有朋友问到如何查出表空间都被哪些用户使用的一些方法,因为有几种情况需要考虑,也顺便做个总结。
需求:如何查看共用一个表空间的所有用户
查看某表空间下表的所有者
使用dba用户查询:
1、如果先要知道表空间的命名,可以这样查询:
select tablespace_name from dba_tablespaces;
![80e57e1ae8a9c5453204b45058ef0cdb.png](https://img-blog.csdnimg.cn/img_convert/80e57e1ae8a9c5453204b45058ef0cdb.png)
2、然后再通过一个表空间的名,利用dba_tables视图查看,这个表空间下表的所有者,就可以知道某个表空间下都有哪些用户了。
select owner from dba_tables where tablespace_name='USERS' group by owner;
![23a56164244637d22f1af3477c1d8b85.png](https://img-blog.csdnimg.cn/img_convert/23a56164244637d22f1af3477c1d8b85.png)
考虑索引
如果有索引,只查表可能会漏掉。所以这里我们改一下查的表
select owner from dba_segments where tablespace_name='表空间名' group by owner;
![fa3d660781518ff5e8991c322c14cde6.png](https://img-blog.csdnimg.cn/img_convert/fa3d660781518ff5e8991c322c14cde6.png)
考虑临时表空间:
上面的命令在查临时表空间应该是查不到owner的。所以还是要区别对待下:
1、临时表空间
select username from dba_users where temporary_tablespace='TEMP' group by username;
![31ec9c839899e6da619ac758579e391b.png](https://img-blog.csdnimg.cn/img_convert/31ec9c839899e6da619ac758579e391b.png)
2、其它存储对象(表、索引等)用的表空间:
select owner from dba_segments where tablespace_name='表空间名' group by owner;
这里可能还有没考虑到位的地方,大家也可以在下方留言一起探讨下~后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
![3fec68df10b8b0cf103649aa03c1d711.gif](https://img-blog.csdnimg.cn/img_convert/3fec68df10b8b0cf103649aa03c1d711.gif)