web-dev-qa-db-ja.com

私のIDが属するパーティションまたはサブパーティションの名前を見つける方法はありますか

パーティション名を指定する必要があるパーティションから選択する必要があるかどうかがわかります

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

Oracleバージョン:11g

1
Some Java Guy

まず、DBMS_ROWIDを使用して、行の行IDとオブジェクトのオブジェクトIDを取得します。

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サブパーティションに属しています。

2
JSapkota