2014-11-25 89 views
29

Ho provato a generare alcuni dati di test eseguendo il seguente sql.ORA-01653: impossibile estendere la tabella in tablespace ORA-06512

BEGIN  
    FOR i IN 1..8180 LOOP 
    insert into SPEEDTEST 
    select 'column1', 'column2', 'column3', 'column4', 'column5', 'column6', 'column7', 'column8', 'column9', 'column10', 'column11', 'column12', 'column13', 'column14', 'column15', 'column16', 'column17', 'column18', 'column19', 'column20', 'column21', 'column22', 'column23', 'column24', 'column25', 'column26', 'column27', 'column28', 'column29', 'column30', 'column31', 'column32', 'column33', 'column34', 'column35', 'column36', 'column37', 'column38', 'column39', 'column40', 'column41', 'column42', 'column43', 'column44', 'column45', 'column46', 'column47', 'column48', 'column49', 'column50', 'column51', 'column52', 'column53', 'column54', 'column55', 'column56', 'column57', 'column58', 'column59', 'column60', 'column61', 'column62', 'column63', 'column64', 'column65', 'column66', 'column67', 'column68', 'column69', 'column70', 'column71', 'column72', 'column73', 'column74', 'column75', 'column76', 'column77', 'column78', 'column79', 'column80', 'column81', 'column82', 'column83', 'column84', 'column85', 'column86', 'column87', 'column88', 'column89', 'column90', 'column91', 'column92', 'column93', 'column94', 'column95', 'column96', 'column97', 'column98', 'column99', 'column100', i from dual; 
    END LOOP; 
END; 
/
commit; 

e mi ha dato errore seguente:

ORA-01653: unable to extend table LEGAL.SPEEDTEST by 128 in tablespace LEGAL_DATA 
ORA-06512: at line 4 

che indica che ha esaurito lo spazio, Come si aggiungono più e come sapere quanto ho bisogno? Cosa significa 128?

+0

Stand per bytes.Oracle utilizza gli spazi tabella per memorizzare data.Here è un exaple in cui si aggiunge un file di dati a un TABLESAPCE 'ALTER TABLESPACE LEGAL_DATA ADD DATAFILE‘/ u01/oradata/userdata03. dbf 'SEDE 200M; 'Assicurati di collegarlo al tuo indirizzo – Mihai

+3

O ridimensiona un file di dati esistente' alter file di dati del database' 'ridimensiona M; ' – Mihai

+0

@Mihai Grazie, potresti postare come risposta per favore. –

risposta

38

Basta aggiungere un nuovo file di dati per il tablespace esistente

ALTER TABLESPACE LEGAL_DATA ADD DATAFILE '/u01/oradata/userdata03.dbf' SIZE 200M; 

Per trovare la posizione e le dimensioni dei file di dati:

SELECT FILE_NAME, BYTES FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'LEGAL_DATA'; 
+0

Gli spazi sono destinati? Ho adattato il percorso alle mie esigenze, ma ho lasciato gli spazi, quindi ho finito con: 'ALTER TABLESPACE SYSTEM ADD DATAFILE '/ usr/lib/oracle/oradata/XE/userdata03. dbf 'SIZE 200M; ' Il file nel mio filesystem ha gli spazi, ma pensa che questo sia sbagliato. Tuttavia, non riesco a rinominare il file, poiché non posso portare offline il tablespace SYSTEM. – phm

+0

@phm No gli spazi non sono necessari, penso che Oracles li ignori. – Mihai

+0

Se desideri sistemarli, puoi * *. Arresta il database (ad esempio 'shutdown immediate'); rinomina i file per il tuo sistema operativo; Riavvia in modalità mount ('startup mount') e controlla i percorsi (' Seleziona rpad (name, 50) come Name da v $ datafile; '); semplicemente rinominare il percorso "alter database rename file"

26

Si potrebbe anche attivare autoextend per l'intero database utilizzando questo comando:

ALTER DATABASE DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF' 
AUTOEXTEND ON NEXT 1M MAXSIZE 1024M; 

Basta modificare il percorso file per po int al tuo file system.dbf.

credito Here