久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle怎么查詢Interval partition分區(qū)表內(nèi)數(shù)據(jù)

135次閱讀
沒有評論

共計 3079 個字符,預(yù)計需要花費(fèi) 8 分鐘才能閱讀完成。

本篇內(nèi)容介紹了“Oracle 怎么查詢 Interval partition 分區(qū)表內(nèi)數(shù)據(jù)”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1. 查看分區(qū)信息

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. 查看分區(qū)內(nèi)數(shù)據(jù)(以 SYS_P82 分區(qū)為例)

(1)如果知道分區(qū)的名字,可以直接查詢對應(yīng)的分區(qū)名

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

  COUNT(*)

———-

  2844459

(2)如果不知道分區(qū)的名字,但是知道分區(qū)主鍵的字段值范圍,可以基于分區(qū)范圍進(jìn)行查詢

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 to_date(2017-02-01 , yyyy-mm-dd

  COUNT(*)

———-

  2844459

(3)如果不知道分區(qū)的名字,也不知道分區(qū)主鍵的字段值范圍,可以使用 PARTITION FOR 子句進(jìn)行查詢,比如現(xiàn)在只知道 2017-01-15 是這個分區(qū)的數(shù)據(jù)

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

  COUNT(*)

———-

  2844459

注:PARTITION FOR 子句可以用于指定分區(qū),而不使用分區(qū)的名字。

3. 根據(jù)分區(qū)內(nèi)的分區(qū)字段值,查詢 Interval Partition 分區(qū)的名字

因為 Oracle 并沒有提供直接的方法用于指定某個日期屬于哪個分區(qū),所以這里要借助于 dba_tab_partitions 的 high_value。但是這里又有一個問題,high_value 是 Long 類型的,不能使用 to_date 或者 to_char 函數(shù)直接進(jìn)行轉(zhuǎn)化。

所以,要解決根據(jù)分區(qū)字段值查詢分區(qū)的問題,本文的解決方案是把 Oracle 數(shù)據(jù)庫的 Long 類型轉(zhuǎn)化為 varchar2 類型或者 date 類型,然后進(jìn)行比對,查找出分區(qū)的名字。

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;
/

同理,對于使用數(shù)字進(jìn)行自動分區(qū)的情況,也可以通過類似的方法進(jìn)行處理。

從 MOS 上找到的用于將 high_value 轉(zhuǎn)化為 varvhar2 類型的方法,這里進(jìn)行分享(已經(jīng)對部分參數(shù)進(jìn)行修改):

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 x
from 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_value
from xml x,
table(xmlsequence(extract(x.x,  /ROWSET/ROW))) rws ORDER BY extractValue(rws.object_value,  /ROW/TABLE_NAME

“Oracle 怎么查詢 Interval partition 分區(qū)表內(nèi)數(shù)據(jù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-28發(fā)表,共計3079字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 东丽区| 山西省| 临泽县| 克什克腾旗| 永昌县| 天气| 东乌珠穆沁旗| 诸城市| 塔河县| 定西市| 桂平市| 松溪县| 景宁| 海南省| 泗阳县| 安岳县| 阿鲁科尔沁旗| 阳山县| 永和县| 博爱县| 六盘水市| 商丘市| 罗江县| 务川| 通辽市| 和顺县| 静乐县| 正镶白旗| 阿鲁科尔沁旗| 谢通门县| 蒲城县| 开平市| 新邵县| 汨罗市| 全椒县| 顺义区| 台中县| 龙陵县| 文登市| 余姚市| 航空|