如何查询oracle数据库某个表空间下的分区表的实际大小

如何查询oracle数据库某个表空间下的分区表的实际大小,第1张

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数据库是怎样实现按月分区的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9853256.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存