【发布时间】:2016-02-11 06:38:05
【问题描述】:
我按回历月份(日期)为表(测试)创建了分区, oracle中如何通过ROWID匹配特定分区?
【问题讨论】:
-
您可以从 ROWID 中提取 file_id 和 block_id(通过调用一些 dbms_package)。然后你可以通过查询 dba_extents 找到“最接近的”extent header。
我按回历月份(日期)为表(测试)创建了分区, oracle中如何通过ROWID匹配特定分区?
【问题讨论】:
非常简单,使用 DBMS_RowID 和 dba_objects。
select *
from dba_objects
where data_object_id = dbms_rowid.rowid_object(ROWID_OF_THE_ROW)
这里有更多提示和观察:https://oraclesponge.wordpress.com/2006/05/11/getting-the-subpartition-name-for-a-row/
【讨论】:
试试这个:
SELECT dbms_rowid.rowid_object(ROWID) data_object_id
FROM test;
要获取分区名称,您可以使用
SELECT partition_name
from user_tab_partitions
where table_name='test'
【讨论】:
select object_name tab_name, subobject_name parttition from user_objects where object_id =dbms_rowid.rowid_object('xxxxx');
【讨论】: