我有想要分析的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);
答案 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;