问题描述
项目在执行批量插入数据到 oracle 数据库的时候,程序执行到一半后台抛出异常:
ORA-01653: 表 emp 无法通过 128 (在表空间 USERS 中) 扩展
解决方案:
提示:数据库需要拥有操作权限(sys或system)
1、首先根据执行操作的表名查询表空间
select * from all_tables where table_name = upper('表名');
2、然后根据下面的 sql 查看对应表空间的使用情况
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;
分两种情况:
首先查看表空间扩展情况,通过 AUTOEXTENSIBLE
字段查看是否开启自动扩展
SELECT * FROM DBA_DATA_FILES;
1、表空间没有打开自动扩展
--每次自动增长1024M
ALTER DATABASE DATAFILE 'D:\study\app\oradata\orcl\user1.dbf' AUTOEXTEND ON NEXT 1024M ;
2、表空间已用完
数据文件记得按顺序排下去
ALTER TABLESPACE USERS ADD DATAFILE 'D:\study\app\oradata\orcl\user1.dbf' SIZE 1024M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;