sql - 在 oracle 中检查模式表空间的使用情况
问题描述
我有多个非 dba 模式,每个模式都分配了各自的表空间。
有没有办法让模式用户检查他们自己分配的表空间使用情况而无需访问 dba 表?
我希望架构用户只能检查他们自己的表空间使用情况。
我正在使用 Oracle 11g
解决方案
每个用户都可以访问user_segments
存储每个段的大小信息(表,索引,...)
要获取所有段的大小,请使用:
select segment_name,
segment_type,
tablespace_name,
sum(bytes) / 1024 / 1024 as total_bytes_mb
from user_segments
group by segment_name, segment_type, tablespace_name
order by total_bytes_mb desc;
上面将显示 LOB 段,例如SYS_LOB0005330538C00010$$
要将 LOB 段与相应的列匹配,您可以使用:
select case
when lb.column_name is not null then lb.table_name||'.'||lb.column_name||' ('||sg.segment_name||')'
else sg.segment_name
end as segment_name,
sg.tablespace_name,
sg.segment_type,
sum(sg.bytes) / 1024 / 1024 as total_bytes_mb
from user_segments sg
left join user_lobs lb on lb.segment_name = sg.segment_name
group by sg.segment_name, sg.segment_type, lb.column_name, lb.table_name, sg.tablespace_name
order by total_bytes_mb desc;
推荐阅读
- reactjs - 如何在 React 中将 svg 字符串呈现为图像?
- python - 避免 Seaborn barplot 颜色饱和度降低
- c++ - 编译 mongodb-cxx-driver 时对 bsoncxx 的未定义引用
- javascript - Google Apps 脚本:当两个数组匹配时合并数组
- java - 导入 excel 时出错:无法初始化类 org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller
- javascript - 多线程上下文中的 Performance.now()
- android - Room @Transaction 和 Rx 可完成
- microsoft-graph-api - 无法使用图形 api 获取频道
- spring - Apache Camel:帮助理解 SimpleScheduledRoutePolicy 的使用
- nestjs - 如何处理 GRPC 断开连接?