【问题标题】:How to find the partition by ROWID in oracle?oracle如何通过ROWID查找分区?
【发布时间】:2016-02-11 06:38:05
【问题描述】:

我按回历月份(日期)为表(测试)创建了分区, oracle中如何通过ROWID匹配特定分区?

【问题讨论】:

  • 您可以从 ROWID 中提取 file_id 和 block_id(通过调用一些 dbms_package)。然后你可以通过查询 dba_extents 找到“最接近的”extent header。

标签: oracle partition rowid


【解决方案1】:

非常简单,使用 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/

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT dbms_rowid.rowid_object(ROWID) data_object_id
    FROM test;
    

    要获取分区名称,您可以使用

    SELECT partition_name 
    from user_tab_partitions
    where table_name='test'
    

    【讨论】:

    • 如何获取分区名称?
    • @mohsen.noor:- 更新了我的答案。请检查!
    • 我要给Rowid,oracle返回给我分区我的记录属于哪个分区SELECT partition_name from user_tab_partitions -- 不知道是哪个表?其中 ROWID = 'xxx'
    【解决方案3】:
    select object_name tab_name, subobject_name parttition   from user_objects where object_id =dbms_rowid.rowid_object('xxxxx');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      相关资源
      最近更新 更多