Oracle查詢分割槽表的最後一個分割槽值
Oracle查詢分割槽表的最後一個分割槽值
這是一個來自生產上的需求:資料庫中的分割槽表(幾十上百個)都是根據年份來分割槽的並且分割槽名稱和分割槽年份一一對應(比如p2011對應'2011'),客戶要求檢查分割槽表的分割槽是否已經過時。比如現在是2014年,若一個表的最大分割槽時間為2013年或2012年,則該表的分割槽已過時,需要考慮增加分割槽之類的對策。
為了簡化問題,這裡只建立三個表來分析。
第一個分割槽表:
create table p1
(
id VARCHAR2(10),
name VARCHAR2(20)
)
partition by range (id)
(
partition p2011 values less than ('2011'),
partition p2012 values less than ('2012'),
partition p2013 values less than ('2013'),
partition p2014 values less than ('2014')
);
Table created.
第二個分割槽表:
create table p2
(
id VARCHAR2(10),
name VARCHAR2(20)
)
partition by range (id)
(
partition p2010 values less than ('2010'),
partition p2011 values less than ('2011'),
partition p2012 values less than ('2012'),
partition p2013 values less than ('2013'),
partition p2014 values less than ('2014')
);
Table created.
第三個分割槽表:
create table p3
(
id VARCHAR2(10),
name VARCHAR2(20)
)
partition by range (id)
(
partition p2010 values less than ('2010'),
partition p2011 values less than ('2011'),
partition p2012 values less than ('2012')
);
Table created.
思路:不管每個表有多少個時間分割槽,最大的時間分割槽只能有一個,即最後那個。最後的那個時間值是最大的,可以考慮用函式max()。
select table_name, max(partition_name) as max_partition_name from user_tab_partitions group by table_name;
TABLE_NAME MAX_PARTITION_NAME
--------------- --------------------
P1 P2014
P2 P2014
P3 P2012
如果想把high_value也顯示出來,則:
select t1.table_name, t1.max_partition_name, t2.high_value from
(select table_name, max(partition_name) as max_partition_name from user_tab_partitions group by table_name) t1,
(select table_name, partition_name, high_value from user_tab_partitions) t2
where t1.table_name = t2.table_name and t1.max_partition_name = t2.partition_name;
TABLE_NAME MAX_PARTITION_NAME HIGH_VALUE
--------------- -------------------- ---------------
P1 P2014 '2014'
P2 P2014 '2014'
P3 P2012 '2012'
從上述結果可以看出P3的資料有問題,分割槽只分到2012年。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29485627/viewspace-1250172/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何查詢分割槽表的分割槽及子分割槽
- 分割槽表分割槽索引查詢效率探究索引
- oracle實用sql(14)--查詢分割槽表的分割槽列和子分割槽列OracleSQL
- oracle分割槽表和分割槽表exchangeOracle
- Oracle分割槽表及分割槽索引Oracle索引
- oracle分割槽表和非分割槽表exchangeOracle
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- SCI分割槽查詢
- mysql 5.7.11查詢分割槽表的一個問題MySql
- Oracle 表分割槽Oracle
- oracle分割槽表Oracle
- oracle表分割槽Oracle
- Oracle 分割槽表Oracle
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- Oracle查詢Interval partition分割槽表內資料Oracle
- oracle 並行cpu查詢分割槽表測試Oracle並行
- 將一個非分割槽錶轉換為分割槽表
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- rebuild分割槽表分割槽索引的方法Rebuild索引
- 巧用分割槽查詢案例一則
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- Oracle 建立分割槽表Oracle
- ORACLE分割槽表管理Oracle
- Oracle 分割槽表的建立Oracle
- Oracle分割槽表的使用Oracle
- Oracle分割槽表的管理Oracle
- oracle分割槽表學習(一)Oracle
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- INTERVAL分割槽表鎖分割槽操作
- 【分割槽】如何將一個普通錶轉換為分割槽表
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle