oracle分区活动条件在表上

时间:2016-04-20 08:32:35

标签: sql oracle partitioning

我有想要分析的oracle查询。表track_table具有active分区。我对分区知之甚少。我想检查已创建此分区的条件。要检查我的表是否已分区,我在查询下方使用,并且PARTITION_NAME表示track_table

SELECT * FROM dba_tab_partitions WHERE table_name = 'track_table'; 

以下是我要分析的查询:

select count(*) as cnt 
from track_table partition (active) 
where trg_id > 198754
      and status not in (2);

2 个答案:

答案 0 :(得分:1)

您的分区似乎是一个列表分区。或者也许是范围,几乎可以肯定不是哈希。您可以在high_value列的user_tab_partitions中看到构建分区的值。

SELECT * FROM all_tab_partitions@your_dblink_name WHERE table_name = 'TRACK_TABLE';

否则,如果您需要更多内容,请参阅此讨论:Getting schema (DDL) of a table through DB link

答案 1 :(得分:-1)

试试这个。我不确定它是否有效。

declare
h       NUMBER;         
th      NUMBER;        
doc     CLOB;         
BEGIN
 h := DBMS_METADATA.OPEN(object_type => 'TABLE',network_link => 'dblink' );
 DBMS_METADATA.SET_FILTER(h,'SCHEMA','schema_name');
 DBMS_METADATA.SET_FILTER(h,'NAME','table_name');
 th := DBMS_METADATA.ADD_TRANSFORM(h,'DDL');
 DBMS_METADATA.SET_TRANSFORM_PARAM(th,'SQLTERMINATOR',true);
 LOOP
   doc := DBMS_METADATA.FETCH_CLOB(h);
   EXIT WHEN doc IS NULL;
   dbms_output.put_line(doc);
   exit;
 END LOOP;
 DBMS_METADATA.CLOSE(h);
end;