2013-02-27 13 views
6

Ho un database con tre tabelle. Ho bisogno di spostare i dati partizionati storici su altri schemi Ora che ho intenzione di creare i nuovi tavoli "storici". Non so come misurare la dimensione della partizione e delle partizioni secondarie. Puoi aiutarmi? per favore dammi alcuni consigli.come determinare la dimensione del tablespace oracolo 11g

Grazie in anticipo. Lou

+0

Si parla di tablespace nel titolo ma partizioni e partizioni secondarie nel testo. Qual é? E cosa hai provato? Ci sono molte cose disponibili con una semplice ricerca, perché le cose di base non hanno soddisfatto le tue esigenze? – Mat

+0

@ user2115594: amico, devi misurare la dimensione del tablespace o ogni dimensione della partizione in una tabella specifica? –

+0

Sì, mi spiace quello di cui ho veramente bisogno è misurare la dimensione della partizione nella mia tabella di origine. Ogni tabella di origine è stata creata con partizioni e sottopartizioni, ma tutte inseriscono i dati in 3 tablespace. Il passo successivo è creare un tablespace per ciascuna subpartizione – user2115594

risposta

27

La seguente query può essere utilizzata per detemine tabelle e altri params:

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; 

Fonte: https://community.oracle.com/message/1832920

Per il vostro caso, se si desidera conoscere il nome della partizione e la sua dimensione basta eseguire questo query:

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

È possibile conoscere la dimensione delle partizioni secondarie in MB o Gigas? – user2115594

+0

Esiste una query come questa per misurare gli spazi tabelle temporali? – Avias

+0

davvero? gigas? xD –

12

Uno dei modi è Usando sotto query SQL

--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); 
Problemi correlati