
SELECT segment_name, SUM(bytes) / 1024 / 1024 Mbytes
FROM dba_segments
WHERE segment_type = 'TABLE PARTITION'
AND Tablespace_name = 'SYSTEM'
GROUP BY segment_name;
查看当前用户下的分区表:
select from user_part_tables ;
或者下面的语句可以:
select from dba_part_tables where owner ='scheme名称' ;
dba_part_tables表是sys用户下的表。
要想查看表分区的名称:
select partition_name from user_segments where segment_type='TABLE PARTITION' and segment_name='表名';
或者下面的语句可以:
select from dba_part_col_statistics where lower(table_name)= '表名';
dba_part_col_statistics表是sys用户下的表。
查询的时候按table来查,一个表的所有分区都属于table。
但每个分区都是单独的segment,如果查询限制了分区键,那么查询只落在特定的segment,而segment在底层对应的数据块是不同的,这样可以减少数据的访问。
oracle分区表的分区有四种类型:范围分区、散列分区、列表分区和复合分区。
特点如下:
1、范围分区
就是根据数据库表中某一字段的值的范围来划分分区。
数据中有空值,Oracle机制会自动将其规划到maxvalue的分区中。
2、散列分区
根据字段的hash值进行均匀分布,尽可能地实现各分区所散列的数据相等。
散列分区即为哈希分区,Oracle采用哈希码技术分区,具体分区如何由Oracle说的算,也可能我下一次搜索就不是这个数据了。
3、列表分区
列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。
4、复合分区
根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。复合分区是先使用范围分区,然后在每个分区同再使用散列分区的一种分区方法。
比如将part_date的记录按时间分区,然后每个分区中的数据分三个子分区,将数据散列地存储在三个指定的表空间中。
扩展资料:
分区的恢复方法:
如果数据库运行在archive 模式下,那么一旦数据库损坏则可以通过冷备份(热备份)和归档备份将数据库恢复到断点状态。
数据库控制文件恢复(假设所有控制文件均被破坏):
数据库基于文件系统: 利用 *** 作系统的tar、cp等命令即可。
数据库基于裸设备:dd if=$ORACLE_BASE/conbak of=/dev/rdrd/drd1 seek=12
参考资料来源:百度百科-oracle数据库
以上就是关于如何查询oracle数据库某个表空间下的分区表的实际大小全部的内容,包括:如何查询oracle数据库某个表空间下的分区表的实际大小、oracle如何查询一个用户下的所有分区表求脚本、oracle数据库是怎样实现按月分区的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)