Oracle

有沒有辦法找到我的 ID 所屬的分區或子分區名稱

  • March 31, 2016

我知道是否需要從需要提供分區名稱的任何分區中進行選擇

SELECT * FROM TABLE PARTITION(P1);

如果我需要使用 sql 查詢知道特定值屬於哪個分區怎麼辦?

SELECT PARTITION_NAME FROM TABLE WHERE DOC_ID = 'S00102981655537O';

錯誤

ORA-00904: "PARTITION_NAME": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 25 Column: 8

甲骨文版本:11g

首先使用 . 獲取行的 rowid 和對象的對象 i​​d DBMS_ROWID

SQL> insert into t3 values('S00102981655537O',sysdate,'IN-RJ');

1 row created.

SQL> select dbms_rowid.rowid_object(rowid) from t3 where doc_id='S00102981655537O';

DBMS_ROWID.ROWID_OBJECT(ROWID)
------------------------------
            93178

SQL> select subobject_name from user_objects where data_object_id=93178;

SUBOBJECT_
----------
SYS_SUBP81




SQL> select * from t3 subpartition(SYS_SUBP81);

DOC_ID           DOC_DATET STATE
-------------------- --------- ----------
S00102981655537O     31-MAR-16 IN-RJ

我們可以看到該行屬於SYS_SUBP81子分區。

引用自:https://dba.stackexchange.com/questions/133915