如何选择特定数据的分区名称?

时间:2018-02-23 14:30:53

标签: oracle plsql oracle11g partition

我想选择一个数据,想看看哪个分区。

  

分区列是:code(varchar column)

Select .... -- I want to find partition name
from
partition_table
where to_number(code) = 55;

为什么我需要这个:

我有一个代码是' 55'但是当我使用分区列时,在该表中我不选择它。但有数据的价值是' 55'

所以我想要分区中的数据。

数据不在 PDEFAULT 分区中。我已经检查过了。

修改

数据在另一个分区中。我认为交换分区过程存在问题

提前致谢

1 个答案:

答案 0 :(得分:1)

有两种方法。

1)rowid将指向分区对象

SQL> create table t ( x int, y int )
  2  partition by range (x )
  3    ( partition p1 values less than ( 100 ),
  4      partition p2 values less than ( 200 )
  5    );

Table created.

SQL>
SQL> insert into t values (34,34);

1 row created.

SQL>
SQL> select rowid from t;

ROWID
------------------
AAA0cqAAHAAAAQ6AAA

1 row selected.

SQL>
SQL> select dbms_rowid.rowid_object(rowid) from t;

DBMS_ROWID.ROWID_OBJECT(ROWID)
------------------------------
                        214826

1 row selected.

SQL>
SQL> select subobject_name
  2  from user_objects
  3  where data_Object_id =
  4   ( select dbms_rowid.rowid_object(rowid) from t );

SUBOBJECT_NAME
------------------------------------------------------------
P1

2)您可以挖掘字典数据以探测USER_TAB_PARTITIONS中的HIGH_VALUE列。我在这里做了一个关于如何做到这一点的视频

https://www.youtube.com/watch?v=yKHQQXKdfOM