oracle分区表检查--是否带有max或default分区
admin
2023-04-15 21:02:09
0


/*查询含有'default','MAXVALUE'的分区表*,分区表含有default或max分区/
select                                                                                                                                                                                             
allparttab.datestr,                                                                                                                                                                                
allparttab.table_owner,                                                                                                                                                                            
allparttab.partition_name,                                                                                                                                                                         
allparttab.table_name,                                                                                                                                                                             
allparttab.num_rows                                                                                                                                                                                
from                                                                                                                                                                                               
(select  *  from                                                                                                                                                                                   
(                                                                                                                                                                                                  
with xs as                                                                                                                                                                                         
   (select x.*,                                                                                                                                                                                    
       to_date (substr (high_value, 11, 19), 'YYYY-MM-DD HH24:MI:SS') dates,                                                                                                                       
       replace (high_value, 'TIMESTAMP''') datestr                                                                                                                                                 
  from xmltable('/ROWSET/ROW' passing (select dbms_xmlgen.getxmltype('                                                                                                                             
select t.table_owner, t.table_name, t.partition_name, t.high_value                                                                                                                                 
  from dba_tab_partitions t')                                                                                                                                                                      
                      from dual) columns                                                                                                                                                           
                   table_owner varchar2(30) path 'TABLE_OWNER',                                                                                                                                    
                   table_name varchar2(30) path 'TABLE_NAME',                                                                                                                                      
                   partition_name varchar2(30) path 'PARTITION_NAME',                                                                                                                              
                   high_value varchar2(30) path 'HIGH_VALUE') x )                                                                                                                                  
select                                                                                                                                                                                             
xs.datestr,                                                                                                                                                                                        
p.table_owner,                                                                                                                                                                                     
p.partition_name,                                                                                                                                                                                  
p.table_name,                                                                                                                                                                                      
p.num_rows                                                                                                                                                                                         
from xs,dba_tab_partitions p                                                                                                                                                                       
where xs.table_owner IN (select distinct(p.table_owner) from dba_tab_partitions p where p.table_owner<>'SYS' and substr(table_name,-1,1) <> '$' )                                                  
 and p.table_owner = xs.table_owner                                                                                                                                                                
 and p.table_name = xs.table_name                                                                                                                                                                  
 and p.partition_name = xs.partition_name                                                                                                                                                          
 order by p.table_owner,p.table_name,p.partition_position  ) )  allparttab,                                                                                                                        
 /*查询所有的分区表*/                                                                                                                                                                              
                                                                                                                                                                                                   
 (                                                                                                                                                                                                 
 select  distinct(tabname.table_name)  from                                                                                                                                                        
(                                                                                                                                                                                                  
with xs as                                                                                                                                                                                         
   (select x.*,                                                                                                                                                                                    
       to_date (substr (high_value, 11, 19), 'YYYY-MM-DD HH24:MI:SS') dates,                                                                                                                       
       replace (high_value, 'TIMESTAMP''') datestr                                                                                                                                                 
  from xmltable('/ROWSET/ROW' passing (select dbms_xmlgen.getxmltype('                                                                                                                             
select t.table_owner, t.table_name, t.partition_name, t.high_value                                                                                                                                 
  from dba_tab_partitions t')                                                                                                                                                                      
                      from dual) columns                                                                                                                                                           
                   table_owner varchar2(30) path 'TABLE_OWNER',                                                                                                                                    
                   table_name varchar2(30) path 'TABLE_NAME',                                                                                                                                      
                   partition_name varchar2(30) path 'PARTITION_NAME',                                                                                                                              
                   high_value varchar2(30) path 'HIGH_VALUE') x )                                                                                                                                  
select                                                                                                                                                                                             
xs.datestr,                                                                                                                                                                                        
p.table_owner,                                                                                                                                                                                     
p.partition_name,                                                                                                                                                                                  
p.table_name,                                                                                                                                                                                      
p.num_rows                                                                                                                                                                                         
from xs,dba_tab_partitions p                                                                                                                                                                       
where xs.table_owner IN (select distinct(p.table_owner) from dba_tab_partitions p where p.table_owner<>'SYS' and substr(table_name,-1,1) <> '$' )                                                  
 and p.table_owner = xs.table_owner                                                                                                                                                                
 and p.table_name = xs.table_name                                                                                                                                                                  
 and p.partition_name = xs.partition_name                                                                                                                                                          
 order by p.table_owner,p.table_name,p.partition_position  ) tabname                                                                                                                               
 where tabname.datestr in('default','MAXVALUE')                                                                                                                                                    
                                                                                                                                                                                                   
 )  parttab                                                                                                                                                                                        
 /*查询只含有'default','MAXVALUE'的分区表*/                                                                                                                                                        
 where parttab.table_name=allparttab.table_name     
 
---------------------------------------------------------------------------------------------------------------------------------------------------------- 



 /*查询不带有maxvalue和default分区的表*,分区表不含有maxvalue和default分区/

select  * from 

(select  *  from
(
with xs as                                                                       
   (select x.*,                                                                  
       to_date (substr (high_value, 11, 19), 'YYYY-MM-DD HH24:MI:SS') dates,     
       replace (high_value, 'TIMESTAMP''') datestr                               
  from xmltable('/ROWSET/ROW' passing (select dbms_xmlgen.getxmltype('           
select t.table_owner, t.table_name, t.partition_name, t.high_value               
  from dba_tab_partitions t')                                                    
                      from dual) columns                                         
                   table_owner varchar2(30) path 'TABLE_OWNER',                  
                   table_name varchar2(30) path 'TABLE_NAME',                    
                   partition_name varchar2(30) path 'PARTITION_NAME',            
                   high_value varchar2(30) path 'HIGH_VALUE') x )                
select
xs.datestr,
p.table_owner,
p.partition_name,
p.table_name
---p.num_rows
from xs,dba_tab_partitions p                               
where xs.table_owner IN (select distinct(p.table_owner) from dba_tab_partitions p where p.table_owner<>'SYS' and substr(table_name,-1,1) <> '$' )                                                  
 and p.table_owner = xs.table_owner                                              
 and p.table_name = xs.table_name                                                
 and p.partition_name = xs.partition_name                                        
 order by p.table_owner,p.table_name,p.partition_position  ) ) a
 
where  not  exists

(
select  *  from
(
select                                                                                                                                                                                             
allparttab.datestr,                                                                                                                                                                                
allparttab.table_owner,                                                                                                                                                                            
allparttab.partition_name,                                                                                                                                                                         
allparttab.table_name                                                                                                                                                                                                                                                                                                                                                      
from                                                                                                                                                                                               
(select  *  from                                                                                                                                                                                   
(                                                                                                                                                                                                  
with xs as                                                                                                                                                                                         
   (select x.*,                                                                                                                                                                                    
       to_date (substr (high_value, 11, 19), 'YYYY-MM-DD HH24:MI:SS') dates,                                                                                                                       
       replace (high_value, 'TIMESTAMP''') datestr                                                                                                                                                 
  from xmltable('/ROWSET/ROW' passing (select dbms_xmlgen.getxmltype('                                                                                                                             
select t.table_owner, t.table_name, t.partition_name, t.high_value                                                                                                                                 
  from dba_tab_partitions t')                                                                                                                                                                      
                      from dual) columns                                                                                                                                                           
                   table_owner varchar2(30) path 'TABLE_OWNER',                                                                                                                                    
                   table_name varchar2(30) path 'TABLE_NAME',                                                                                                                                      
                   partition_name varchar2(30) path 'PARTITION_NAME',                                                                                                                              
                   high_value varchar2(30) path 'HIGH_VALUE') x )                                                                                                                                  
select                                                                                                                                                                                             
xs.datestr,                                                                                                                                                                                        
p.table_owner,                                                                                                                                                                                     
p.partition_name,                                                                                                                                                                                  
p.table_name,                                                                                                                                                                                      
p.num_rows                                                                                                                                                                                         
from xs,dba_tab_partitions p                                                                                                                                                                       
where xs.table_owner IN (select distinct(p.table_owner) from dba_tab_partitions p where p.table_owner<>'SYS' and substr(table_name,-1,1) <> '$' )                                                  
 and p.table_owner = xs.table_owner                                                                                                                                                                
 and p.table_name = xs.table_name                                                                                                                                                                  
 and p.partition_name = xs.partition_name                                                                                                                                                          
 order by p.table_owner,p.table_name,p.partition_position  ) )  allparttab,                                                                                                                        
 /*查询所有的分区表*/                                                                                                                                                                                                                                                                                                                                                                              
 (                                                                                                                                                                                                 
 select  distinct(tabname.table_name)  from                                                                                                                                                        
(                                                                                                                                                                                                  
with xs as                                                                                                                                                                                         
   (select x.*,                                                                                                                                                                                    
       to_date (substr (high_value, 11, 19), 'YYYY-MM-DD HH24:MI:SS') dates,                                                                                                                       
       replace (high_value, 'TIMESTAMP''') datestr                                                                                                                                                 
  from xmltable('/ROWSET/ROW' passing (select dbms_xmlgen.getxmltype('                                                                                                                             
select t.table_owner, t.table_name, t.partition_name, t.high_value                                                                                                                                 
  from dba_tab_partitions t')                                                                                                                                                                      
                      from dual) columns                                                                                                                                                           
                   table_owner varchar2(30) path 'TABLE_OWNER',                                                                                                                                    
                   table_name varchar2(30) path 'TABLE_NAME',                                                                                                                                      
                   partition_name varchar2(30) path 'PARTITION_NAME',                                                                                                                              
                   high_value varchar2(30) path 'HIGH_VALUE') x )                                                                                                                                  
select                                                                                                                                                                                             
xs.datestr,                                                                                                                                                                                        
p.table_owner,                                                                                                                                                                                     
p.partition_name,                                                                                                                                                                                  
p.table_name                                                                                                                                                                                                                                                                                                                                                                           
from xs,dba_tab_partitions p                                                                                                                                                                       
where xs.table_owner IN (select distinct(p.table_owner) from dba_tab_partitions p where p.table_owner<>'SYS' and substr(table_name,-1,1) <> '$' )                                                  
 and p.table_owner = xs.table_owner                                                                                                                                                                
 and p.table_name = xs.table_name                                                                                                                                                                  
 and p.partition_name = xs.partition_name                                                                                                                                                          
 order by p.table_owner,p.table_name,p.partition_position  ) tabname                                                                                                                               
 where tabname.datestr in('default','MAXVALUE')                                                                                                                                                    
                                                                                                                                                                                                   
 )  parttab                                                                                                                                                                                        
 /*查询只含有'default','MAXVALUE'的分区表*/                                                                                                                                                        
 where parttab.table_name=allparttab.table_name  ) c
 where  a.table_name=c.table_name
 )                                                                                                                                              


相关内容

热门资讯

科学家预测:“哥斯拉级”厄尔尼... 科学家近日发出警告,太平洋上空正在形成一种被称为“哥斯拉”级的罕见厄尔尼诺气候模式。有科学家预测,这...
200亿美金估值的可灵,值母公... 文 | 影子备忘录 要说今年科技圈最火的赛道,AI短剧绝对排得上号。一部AI仿真人短剧,3人团队、...
多名中国公民在越南乘机遗失财物... 近日,多名中国公民反映在越乘机过程中财物遗失,中国驻胡志明市总领馆提醒中国公民注意:一、强化防范意识...
电视机尺寸一览表70寸长宽 电视机尺寸一览表70寸长宽:一般液晶电视显示屏都是16比9,70寸就是说客它对角线长70寸是106....
东莞一社区推出生育奖励方案,二... 极目新闻记者 柳之萌近日,广东东莞万江街道谷涌社区出台生育奖励方案,对符合条件的二孩家庭一次性奖励1...
80寸液晶电视尺寸长宽多少厘米 80寸液晶电视尺寸长宽多少厘米:80寸的液晶电视大概为181x111厘米,即长度大概在181厘米,宽...
石膏线一般用多久会掉 大家在装修客厅吊顶的时候,一般都会用石膏线来装。石膏线的施工非常方便,而且装修价格也比较便宜,所以很...
10公分石膏线下挂尺寸 10公分石膏线下挂,大概在8公分左右,这样排出来的石膏线才会比较好看,而且边缘也会比较整齐一些,如果...
地漏怎么防臭呢,有专门的防臭地... 地漏下方的排水管要装S型储水湾,也有专门的防臭地漏 非常芯地漏就是防臭地漏,非常芯地漏原理:重...
12名农民工遭遇“车位抵薪”:... 极目新闻记者 舒隆焕陕西西安12名农民工遭遇“车位抵薪”一事有了最新进展。5月12日,极目新闻记者从...