Description du problème
Lorsque le projet exécute une insertion par lots de données dans la base de données Oracle, une exception est levée en arrière-plan à mi-chemin de l'exécution du programme :
ORA-01653: 表 emp 无法通过 128 (在表空间 USERS 中) 扩展
solution:
Astuce : La base de données doit disposer d'une autorisation d'opération (sys ou système)
1. Interrogez d'abord l'espace table en fonction du nom de la table effectuant l'opération
select * from all_tables where table_name = upper('表名');
2. Vérifiez ensuite l'utilisation de l'espace table correspondant selon le sql suivant
SELECT
fs.tablespace_name "表空间名称",
total / ( 1024 * 1024 ) "表空间大小(M)",
free / ( 1024 * 1024 ) "表空间剩余大小(M)",
( total - free ) / ( 1024 * 1024 ) "表空间使用大小(M)",
total / ( 1024 * 1024 * 1024 ) "表空间大小(G)",
free / ( 1024 * 1024 * 1024 ) "表空间剩余大小(G)",
( total - free ) / ( 1024 * 1024 * 1024 ) "表空间使用大小(G)",
round( ( total - free ) / total, 4 ) * 100 "使用率 %"
FROM
( SELECT tablespace_name, SUM( bytes ) free FROM dba_free_space GROUP BY tablespace_name ) fs,
( SELECT tablespace_name, SUM( bytes ) total FROM dba_data_files GROUP BY tablespace_name ) df
WHERE
fs.tablespace_name = df.tablespace_name;
Il y a deux situations :
Vérifiez d'abord l'expansion de l'espace table et AUTOEXTENSIBLE
vérifiez si l'expansion automatique est activée via le champ
SELECT * FROM DBA_DATA_FILES;
1. L'espace table n'est pas automatiquement étendu
--每次自动增长1024M
ALTER DATABASE DATAFILE 'D:\study\app\oradata\orcl\user1.dbf' AUTOEXTEND ON NEXT 1024M ;
2. L'espace table est épuisé
数据文件记得按顺序排下去
ALTER TABLESPACE USERS ADD DATAFILE 'D:\study\app\oradata\orcl\user1.dbf' SIZE 1024M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;