Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle SQL:Chọn dữ liệu và tên phân vùng từ bảng và cắt bớt các phân vùng

Cảm ơn gợi ý của bạn về rowid , Tôi đã tìm thấy một giải pháp. Nếu bạn có rowid, bạn có thể xác định được đối tượng mà hàng đó thuộc về.

Một ví dụ tối thiểu với 4 phân vùng băm:

CREATE TABLE pt (i NUMBER)
 PARTITION BY HASH (i) (PARTITION pt1, PARTITION pt2, PARTITION pt3, PARTITION pt4);

INSERT INTO pt SELECT ROWNUM FROM all_objects WHERE ROWNUM < 20;

Bây giờ, mỗi hàng có một ROWID . Bạn có thể tìm ra số đối tượng qua DBMS_ROWID.ROWID_OBJECT . Bảng từ điển USER_OBJECTS sau đó có object_name (=tên của bảng) và subobject_name (=tên của phân vùng):

SELECT i, 
       ROWID AS row_id, 
       dbms_rowid.rowid_object(ROWID) AS object_no,
       (SELECT subobject_name 
          FROM user_objects 
         WHERE object_id = dbms_rowid.rowid_object(pt.ROWID)) AS partition_name
  FROM pt
 ORDER BY 3;

I   ROW_ID              OBJECT_NO PARTITION_NAME
6   AAALrYAAEAAAATRAAA  47832   PT1
11  AAALrYAAEAAAATRAAB  47832   PT1
13  AAALrYAAEAAAATRAAC  47832   PT1
9   AAALrZAAEAAAATZAAA  47833   PT2
10  AAALrZAAEAAAATZAAB  47833   PT2
12  AAALrZAAEAAAATZAAC  47833   PT2
17  AAALrZAAEAAAATZAAD  47833   PT2
19  AAALrZAAEAAAATZAAE  47833   PT2
2   AAALraAAEAAAAThAAA  47834   PT3
5   AAALraAAEAAAAThAAB  47834   PT3
18  AAALraAAEAAAAThAAD  47834   PT3
8   AAALraAAEAAAAThAAC  47834   PT3
1   AAALrbAAEAAAATpAAA  47835   PT4
3   AAALrbAAEAAAATpAAB  47835   PT4
4   AAALrbAAEAAAATpAAC  47835   PT4
7   AAALrbAAEAAAATpAAD  47835   PT4


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00838

  2. Xóa một ký tự khỏi một vị trí nhất định trên Oracle

  3. Không thể đọc đúng bảng SQL trong python:các cột varchar được nhập dưới dạng ký tự / bộ giá trị được phân tách bằng dấu phẩy

  4. Lỗi:Mã hóa ký tự không tương thích:UTF-8 và ASCII-8BIT

  5. Làm thế nào để tải tập lệnh bảng trong Oracle SQL Developer?