ORA-01654错误:一般原因是Oracle数据库表空间满了,导致数据插入失败报错。(表空间,即数据仓库)
解决方法:
1、查看表空间使用情况,是否是满了;
复制直接执行下面这条语句,即可
select a.tablespace_name,
a.bytes / 1024 / 1024 "sum MB",
(a.bytes - b.bytes) / 1024 / 1024 "used MB",
b.bytes / 1024 / 1024 "free MB",
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "used%"
from (select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) bytes, max(bytes) largest
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by ((a.bytes - b.bytes) / a.bytes) desc;
可以看到 QHTJ这个表空间已经 100%爆了,
2、給表空间扩容。扩容有两种思路:一是直接扩大原表空间大小,二是 给该表空间增加额外的空间
select tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
from sys.dba_data_files
order by tablespace_name
直接执行sql,查看表空降的配置文件位置 。
一、第一种方式:直接扩大原表空间大小
alter database datafile '/home/app/oracle/oradata/orcl/qhtj.dbf' resize 40000m
直接扩大到5W M的空间
或者
alter database datafile '/home/app/oracle/oradata/orcl/qhtj.dbf' autoextend on next 10M maxsize unlimited;
自动扩展到 最大空降(不限制)
二:第二种方法: 给该表空间增加额外的空间
alter tablespace QHTJ add datafile '/home/app/oracle/oradata/orcl/qhtj1.dbf' size 10000m