千家信息网

Oracle怎么查询Interval partition分区表内数据

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"Oracle怎么查询Interval partition分区表内数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希
千家信息网最后更新 2026年11月01日Oracle怎么查询Interval partition分区表内数据

本篇内容介绍了"Oracle怎么查询Interval partition分区表内数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.查看分区信息

select table_name,partition_name,high_value,partition_position,num_rows from dba_tab_partitions where table_owner='CAMS_CORE' and table_name='BP_VOUCHER_HISTORY';

注:dba_tab_partitions | all_tab_partitions | user_tab_partitions表都可以

2.查看分区内数据(以SYS_P82分区为例)

(1)如果知道分区的名字,可以直接查询对应的分区名

SYS@cams> select count(*) from cams_core.bp_voucher_history partition(SYS_P82);

COUNT(*)

----------

2844459

(2)如果不知道分区的名字,但是知道分区主键的字段值范围,可以基于分区范围进行查询

SYS@cams> select count(*) from cams_core.bp_voucher_history partition where ac_dte>=to_date('2017-01-01','yyyy-mm-dd') and ac_dte

COUNT(*)

----------

2844459

(3)如果不知道分区的名字,也不知道分区主键的字段值范围,可以使用PARTITION FOR子句进行查询,比如现在只知道2017-01-15是这个分区的数据

SYS@cams> select count(*) from cams_core.bp_voucher_history partition for(to_date('2017-01-15','yyyy-mm-dd'));

COUNT(*)

----------

2844459

  1. 注:PARTITION FOR子句可以用于指定分区,而不使用分区的名字。

3.根据分区内的分区字段值,查询Interval Partition分区的名字

因为Oracle并没有提供直接的方法用于指定某个日期属于哪个分区,所以这里要借助于dba_tab_partitions的high_value。但是这里又有一个问题,high_value是Long类型的,不能使用to_date或者to_char函数直接进行转化。

所以,要解决根据分区字段值查询分区的问题,本文的解决方案是把Oracle数据库的Long类型转化为varchar2类型或者date类型,然后进行比对,查找出分区的名字。

set serveroutput on;--/declare  my_var date;begin  for x in (select * from dba_tab_partitions where table_owner='CAMS_CORE' and table_name='BP_VOUCHER_HISTORY') loop  execute immediate 'select '|| x.high_value || 'from dual' into my_var;  if (my_var = to_date('2017-02-01','yyyy-mm-dd')) then    dbms_output.put_line(x.partition_name);  end if;  end loop;end;/

同理,对于使用数字进行自动分区的情况,也可以通过类似的方法进行处理。

从MOS上找到的用于将high_value转化为varvhar2类型的方法,这里进行分享(已经对部分参数进行修改):

select subname,       TO_CHAR(y1*100+y2, '9999') || '/' ||       TO_CHAR(m,  'FM09')        || '/' ||       TO_CHAR(d,  'FM09')        || ' ' ||       TO_CHAR(hh, 'FM09')        || ':' ||       TO_CHAR(mi, 'FM09')        || ':' ||       TO_CHAR(ss, 'FM09')from (SELECT  o.subname, tp.part#,  TO_NUMBER(SUBSTR(RAWTOHEX(CAST(bhiboundval as raw(8))),  3, 2),'XX')-100 y1,  TO_NUMBER(SUBSTR(RAWTOHEX(CAST(bhiboundval as raw(8))),  5, 2),'XX')-100 y2,  TO_NUMBER(SUBSTR(RAWTOHEX(CAST(bhiboundval as raw(8))),  7, 2),'XX')     m,  TO_NUMBER(SUBSTR(RAWTOHEX(CAST(bhiboundval as raw(8))),  9, 2),'XX')     d,  TO_NUMBER(SUBSTR(RAWTOHEX(CAST(bhiboundval as raw(8))), 11, 2),'XX')-1   hh,  TO_NUMBER(SUBSTR(RAWTOHEX(CAST(bhiboundval as raw(8))), 13, 2),'XX')-1   mi,  TO_NUMBER(SUBSTR(RAWTOHEX(CAST(bhiboundval as raw(8))), 15, 2),'XX')-1   ss  from sys.tabpart$ tp, sys.obj$ o, sys.user$ u  where tp.obj# = o.obj# and o.owner# = u.user#   and o.name = 'BP_VOUCHER_HISTORY' and u.name = 'CAMS_CORE')order by part#;

with xml as (select dbms_xmlgen.getxmltype('select table_name, partition_name, high_value from dba_tab_partitions where table_name = ''BP_VOUCHER_HISTORY'' and table_owner=''CAMS_CORE''') as xfrom dual)select extractValue(rws.object_value, '/ROW/TABLE_NAME') table_name,extractValue(rws.object_value, '/ROW/PARTITION_NAME') partition,extractValue(rws.object_value, '/ROW/HIGH_VALUE') high_valuefrom xml x,table(xmlsequence(extract(x.x, '/ROWSET/ROW'))) rws ORDER BY extractValue(rws.object_value, '/ROW/TABLE_NAME');

"Oracle怎么查询Interval partition分区表内数据"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

查询 名字 数据 类型 字段 方法 范围 分区表 内容 子句 情况 更多 知识 问题 实用 学有所成 接下来 信息 函数 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 保险科技 互联网保险 高科技与互联网 互联网与未来科技 互联网女皇 腾讯科技 成都仁贤领冠互联网科技有限公司 恒生科技互联网指数分析 中盈科技互联网信息有限公司 互联网教育科技公司vipkid 来此购互联网科技有限公司 互联网对科技的发展 浙江互联网科技研学营 湖南一路畅行互联网科技 深圳市优智互联网科技有限公司 高科技互联网套路 美国互联网科技公司 互联网科技包装股份有限公司上市 广西科技产业互联网是什么 长沙易易互联网科技有限公司 中国主要互联网科技公司 百单网互联网科技有限公司怎么样 齐家互联网科技 互联网科技公司名称 深圳卡尔迅互联网科技有限公司怎么样 现代互联网科技股 中化能源互联网科技招聘 南平创想时代互联网科技有限公司 智腾互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 互联网领先科技成果宣传视频
0