2016-04-20 87 views
0

我有我想分析的oracle查詢。表track_tableactive分區。我沒有那麼多關於分區的知識。我想檢查此分區已創建的條件。要檢查我的表是否被分區或者我沒有使用下面的查詢,並且它說PARTITION_NAME對於track_table表是有效的。oracle分區表上的活動狀態

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

你看不到表的定義?使用工具的模式瀏覽器(Toad,sqldeveloper,plsqldeveloper)查看錶的DDL /腳本。有一個分區部分,你會看到分區定義。 –

+0

我無法從任何工具檢查。該表駐留在遠程數據庫中,我沒有權限在oracle sql developer或任何其他工具中查看它。它通過查詢唯一可能。 – Andrew

+0

'active'是表格的一個分區。所以,你的問題是這個分區中數據的條件是什麼? –

回答

1

您的分區似乎是一個列表分區。或者也許是範圍,幾乎肯定不是哈希。您可以在high_value列的user_tab_partitions中看到構建分區的值。

SELECT * FROM [email protected]_dblink_name WHERE table_name = 'TRACK_TABLE'; 

否則,如果您想了解更多,請參閱本discusssion:Getting schema (DDL) of a table through DB link

+0

其列表分區。但它仍然不能回答我的問題。我想知道列表分區是什麼意思?哪種條件意味着什麼是在track_table上進行分區的標準? – Andrew

+0

通過在互聯網上搜索或查閱文檔,您會發現列表分區意味着什麼。你的桌子的標準是什麼,這正是我所回答的。查看查詢的結果,您將知道該表是如何分區的。 –

-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; 
+0

它發出一個錯誤PLS-00352:無法訪問另一個數據庫'DBLINK' PLS-00201:標識符'DBMS_METADATA @ DBLINK'必須聲明 – Andrew

+0

嗨,如果你從[這裏](https://社區。 oracle.com/thread/1982552?tstart=0)然後請用源代碼更新答案。如果它是您的代碼,請忽略我的評論。 –