ORA-01653: 表 DEV.BI_SYS_USER 无法通过 128 (在表空间 USERS 中) 扩展

问题描述

项目在执行批量插入数据到 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;

通过对应的情况,执行相应的操作,然后重新执行插入数据操作,已恢复正常。

猜你喜欢

转载自blog.csdn.net/u012129030/article/details/125155949
今日推荐