Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /membri/oraclefaq/qa-include/qa-db.php on line 66
Modifica colonna tabella partizionata - ORA-14060 partition key column, need to be modified - Oracle FAQ - Il forum italiano su oracle
Benvenuto in Oracle FAQ - Il forum italiano su oracle, dove potrai fare domande e ricevere risposte da altri membri della community.

76 domande

14 risposte

4 commenti

41,077 utenti

Tag popolari


Modifica colonna tabella partizionata - ORA-14060 partition key column, need to be modified

+1 voto
1,753 visite
Ho necessità di aumentare la spazio che era stato dedicato ad una colonna di tipo varchar2, il problema è che con il solito costrutto ALTER TABLE XXX MODIFY non riesco perchè la tabella in questione è una tabella partizionata, qualcuno sa dirmi come posso arrivare ad una soluzione?
quesito posto 1 Luglio 2014 in SQL e PLSQL da stellare21 (130 punti)

1 Risposta

0 voti

Ciao,

non riesco a capire cosa intendi per aumentare lo spazio che era stato dedicato ad una colonna. 

Se intendi, ad esempio, aumentare il campo da VARCHAR2(30) a VARCHAR2(50) non dovresti avere alcun tipo di problema anche se la tabella è partizionata.

Ti riporto di seguito un esempio.

1. Creazione di una tabella partizionata:

CREATE TABLE sales_range
(salesman_id  NUMBER(5), 
salesman_name VARCHAR2(30), 
sales_amount  NUMBER(10), 
sales_date    DATE)
PARTITION BY RANGE(sales_date) 
(
PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY')),
PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY')),
PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('04/01/2000','DD/MM/YYYY')),
PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY'))
);
 
Creato table SALES_RANGE.
 
2. Aumento la larghezza di una colonna:
 
alter table sales_range modify (salesman_name varchar2(50));
 
table SALES_RANGE modificato.
 
Non dovrebbe darti problemi nemmeno se stai tentando di modificare la colonna utilizzata come chiave per stabilire su quale partizione deve essere inserito il record.
 
Fammi sapere se il tuo problema è differente ed eventualmente quale errore ti viene restituito.
risposta inviata 1 Luglio 2014 da carlo10 (1,860 punti)
Praticamente mi da l'errore ora 14060 partition key column, need to be modified.

Quindi non gli va giù che provo a modificare proprio la colonna che ho usato come chiave per la partizione
Ok. In questa discussione indicano che è necessario fare il rebuild della tabella:

https://community.oracle.com/thread/2445497

Puoi scegliere di farlo in maniera manuale oppure in utilizzando il package DBMS_REDEFINITION. Se opti per la prima strada ti consiglio quanto segue.

1. Rename della tabella
2. Creazione della nuova tabella partizionata con la colonna allargata
3. Insert into nuova_tabella (select * from vecchia_tabella)

Domande correlate

0 voti
0 risposte 247 visite
0 voti
0 risposte 1,914 visite
1,914 visite quesito posto 23 Marzo 2014 in SQL e PLSQL da carlo10 (1,860 punti)
0 voti
0 risposte 134 visite
134 visite quesito posto 23 Marzo 2014 in SQL e PLSQL da carlo10 (1,860 punti)
0 voti
0 risposte 287 visite
0 voti
0 risposte 95 visite
...