2010-01-26 21 views
3

Pour une table partitionnée intervalle de plage, vous pouvez spécifier plusieurs tablespaces comme:Où puis-je trouver les tablespaces de la partition d'intervalle dans le dictionnaire de données?

CREATE TABLE range_part_interval_table(col1 NUMBER, col2 NUMBER) 
PARTITION BY RANGE (col1) 
INTERVAL (10) STORE IN (ts2, ts3, ts4) 
(PARTITION VALUES LESS THAN (100) TABLESPACE ts1); 

Mais je ne peux pas trouver où les tablespaces d'intervalle sont stockés dans le dictionnaire de données (ici, ts2, ts3, ts4). Cette information est-elle disponible quelque part?

Répondre

2

Cela devrait vous obtenir les informations dont vous avez besoin:

SELECT table_owner, table_name, partition_name, tablespace_name 
FROM dba_tab_partitions 
WHERE table_name = <table_name>; 

Voici la description de la table:

%> desc dba_tab_partitions 

Name       Null        Type                                                                      
------------------------------ -------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
TABLE_OWNER              VARCHAR2(30)                                                                    
TABLE_NAME              VARCHAR2(30)                                                                    
COMPOSITE              VARCHAR2(3)                                                                     
PARTITION_NAME             VARCHAR2(30)                                                                    
SUBPARTITION_COUNT            NUMBER                                                                      
HIGH_VALUE              LONG()                                                                      
HIGH_VALUE_LENGTH            NUMBER                                                                      
PARTITION_POSITION            NUMBER                                                                      
TABLESPACE_NAME             VARCHAR2(30)                                                                    
PCT_FREE              NUMBER                                                                      
PCT_USED              NUMBER                                                                      
INI_TRANS              NUMBER                                                                      
MAX_TRANS              NUMBER                                                                      
INITIAL_EXTENT             NUMBER                                                                      
NEXT_EXTENT              NUMBER                                                                      
MIN_EXTENT              NUMBER                                                                      
MAX_EXTENT              NUMBER                                                                      
MAX_SIZE              NUMBER                                                                      
PCT_INCREASE             NUMBER                                                                      
FREELISTS              NUMBER                                                                      
FREELIST_GROUPS             NUMBER                                                                      
LOGGING               VARCHAR2(7)                                                                     
COMPRESSION              VARCHAR2(8)                                                                     
COMPRESS_FOR             VARCHAR2(18)                                                                    
NUM_ROWS              NUMBER                                                                      
BLOCKS               NUMBER                                                                      
EMPTY_BLOCKS             NUMBER                                                                      
AVG_SPACE              NUMBER                                                                      
CHAIN_CNT              NUMBER                                                                      
AVG_ROW_LEN              NUMBER                                                                      
SAMPLE_SIZE              NUMBER                                                                      
LAST_ANALYZED             DATE                                                                      
BUFFER_POOL              VARCHAR2(7)                                                                     
GLOBAL_STATS             VARCHAR2(3)                                                                     
USER_STATS              VARCHAR2(3)                                                                     
+0

$ Ce sont les tablespaces des partitions prédéfinies, pas celles du INTERVALLE ... MAGASIN IN (.. .) clause – thecoop

+0

dba_tab_partitions contient tous les tablespaces de partition qui existent, même les tablespaces d'intervalle spécifiées dans la clause "store in". Je suis incapable de tester/vérifier cette b/c Je travaille actuellement avec une ancienne instance Oracle, mais les informations sur l'espace de table d'intervalle inexistant peuvent être disponibles dans la table all_tab_partitions. Vous pouvez essayer d'y trouver les noms des tablespaces qui n'existent pas encore. –

0

Vos partitions d'intervalle n'existent pas jusqu'à ce que vous avez des données dans les .. ..

SQL> CREATE TABLE range_part_interval_table(col1 NUMBER, col2 NUMBER) 
    2 PARTITION BY RANGE (col1) 
    3 INTERVAL (10) STORE IN (ts2, ts3, ts4) 
    4 (PARTITION VALUES LESS THAN (100) TABLESPACE ts1); 

Table created. 

SQL> SELECT table_owner, table_name, partition_name, tablespace_name 
    2 FROM dba_tab_partitions 
    3 WHERE table_name = 'RANGE_PART_INTERVAL_TABLE' 
    4/

TABLE_OWNER TABLE_NAME      PARTITION_NAME TABLESPACE_NAME 
----------- ------------------------------ -------------- --------------- 
APC   RANGE_PART_INTERVAL_TABLE  SYS_P55  TS1 

SQL> 

La table vide a uniquement la partition définie. Mais si l'on insère des données pour des intervalles différents ....

SQL> insert into range_part_interval_table values (90, 8888) 
    2/

1 row created. 

SQL> insert into range_part_interval_table values (110, 8888) 
    2/

1 row created. 

SQL> insert into range_part_interval_table values (310, 8888) 
    2/

1 row created. 

SQL> insert into range_part_interval_table values (120, 8888) 
    2/

1 row created. 

SQL> SELECT table_owner, table_name, partition_name, tablespace_name 
    2 FROM dba_tab_partitions 
    3 WHERE table_name = 'RANGE_PART_INTERVAL_TABLE' 
    4/

TABLE_OWNER TABLE_NAME      PARTITION_NAME TABLESPACE_NAME 
----------- ------------------------------ -------------- --------------- 
APC   RANGE_PART_INTERVAL_TABLE  SYS_P58  TS2 
APC   RANGE_PART_INTERVAL_TABLE  SYS_P55  TS1 
APC   RANGE_PART_INTERVAL_TABLE  SYS_P56  TS4 
APC   RANGE_PART_INTERVAL_TABLE  SYS_P57  TS3 

SQL> 
+0

Mais j'ai besoin idéalement des informations sur le STORE IN (ts2, ts3, ts4) indépendamment du nombre de partitions qui en ont été créées ... – thecoop

0

chèque sys.insert_tsn_list