table 上的 oracle 分区活动状态

oracle partition active condition on table

我有要分析的 Oracle 查询。 table track_tableactive 分区。我对分区了解不多。我想检查创建此分区的条件。为了检查我的 table 是否分区,我使用了下面的查询,它说 PARTITION_NAME 对于 track_table 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);

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

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; 

您的分区似乎是列表分区。或者也许是范围,几乎可以肯定不是散列。您可以在 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