2013-02-27 43 views
6

Tôi có một cơ sở dữ liệu với ba bảng. Tôi cần di chuyển dữ liệu được phân đoạn lịch sử sang lược đồ khác Bây giờ tôi đang lập kế hoạch để tạo ra các bảng "lịch sử" mới. Tôi không biết cách đo kích thước phân vùng và phân vùng phụ. Bạn có thể giúp tôi không? xin vui lòng gimme một số lời khuyên.cách xác định kích thước của không gian bảng 11g

Thanx trước. Lou

+0

Bạn nói về không gian bảng trong tiêu đề của bạn nhưng phân vùng và phân đoạn phụ trong văn bản. Đó là cái nào? Và bạn đã thử cái gì? Có rất nhiều thứ có sẵn với một tìm kiếm đơn giản, tại sao những thứ cơ bản không đáp ứng được nhu cầu của bạn? – Mat

+0

@ user2115594: dude bạn cần đo kích thước vùng bảng hoặc từng kích thước phân vùng trong một bảng cụ thể? –

+0

Vâng, tôi xin lỗi những gì tôi thực sự cần là để đo kích thước phân vùng trong bảng nguồn gốc của tôi. Mỗi bảng nguồn gốc được tạo bằng phân vùng và phân đoạn con nhưng tất cả đều chèn dữ liệu vào 3 vùng bảng. Bước tiếp theo là tạo một vùng bảng cho mỗi phân lớp – user2115594

Trả lời

27

Các truy vấn sau đây có thể được sử dụng để tự xác định được tablespace và params khác:

select df.tablespace_name "Tablespace", 
     totalusedspace "Used MB", 
     (df.totalspace - tu.totalusedspace) "Free MB", 
     df.totalspace "Total MB", 
     round(100 * ((df.totalspace - tu.totalusedspace)/ df.totalspace)) "Pct. Free" 
    from (select tablespace_name, 
       round(sum(bytes)/1048576) TotalSpace 
      from dba_data_files 
     group by tablespace_name) df, 
     (select round(sum(bytes)/(1024*1024)) totalusedspace, 
       tablespace_name 
      from dba_segments 
     group by tablespace_name) tu 
where df.tablespace_name = tu.tablespace_name 
    and df.totalspace <> 0; 

Nguồn: https://community.oracle.com/message/1832920

Đối với trường hợp của bạn nếu bạn muốn biết tên phân vùng và kích thước của nó chỉ cần chạy này truy vấn:

select owner, 
     segment_name, 
     partition_name, 
     segment_type, 
     bytes/1024/1024 "MB" 
    from dba_segments 
where owner = <owner_name>; 
+0

Có thể biết kích thước của các phân đoạn con trong MB hoặc Gigas không? – user2115594

+0

Có bất kỳ truy vấn như thế này để đo các không gian bảng tạm thời không? – Avias

+0

thực sự? gigas? xD –

12

Một trong những cách là Sử dụng truy vấn sql bên dưới

--Size of All Table Space 

--1. Used Space 
SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024/1024, '99,999,990.99') AS "USED SPACE(IN GB)" FROM USER_SEGMENTS GROUP BY TABLESPACE_NAME 
--2. Free Space 
SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024/1024, '99,999,990.99') AS "FREE SPACE(IN GB)" FROM USER_FREE_SPACE GROUP BY TABLESPACE_NAME 

--3. Both Free & Used 
SELECT USED.TABLESPACE_NAME, USED.USED_BYTES AS "USED SPACE(IN GB)", FREE.FREE_BYTES AS "FREE SPACE(IN GB)" 
FROM 
(SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024/1024, '99,999,990.99') AS USED_BYTES FROM USER_SEGMENTS GROUP BY TABLESPACE_NAME) USED 
INNER JOIN 
(SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024/1024, '99,999,990.99') AS FREE_BYTES FROM USER_FREE_SPACE GROUP BY TABLESPACE_NAME) FREE 
ON (USED.TABLESPACE_NAME = FREE.TABLESPACE_NAME); 
Các vấn đề liên quan