今天需要把数据导到表里,结果导了大半天后报错了: oracle ora-01652无法通过128(在表空间xxx中),绝对是来搞我心态的,原来是表空间满了。
知道原因就好办了
1 . 登陆system用户,给需要扩容表空间的用户授权(我这里给root用户授权)
grant dba to root;
授权后会出现success表示授权成功,不授权的话查询有些表,会报错表不存在
2 . 登陆需要操作的用户,查看当前用户表空间名default_tablespace
select * from user_users;
记住这个USERS
3 . 查看表空间文件位置
Select * FROM DBA_DATA_FILES;
这里两个都是
4 . 查看表空间大小
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;
这个就是我们的表空间的大小
接下来我用两种不同的办法给它扩容
方法一:增大所需表空间大小
alter database datafile '表空间的路径,第三步查出来的那' resize 改变后的大小
示例:
alter database datafile 'C:\ORACLE\ORADATA\ORCL\USERS02.DBF' resize 3G
这样就可以成功修改到我们想要的大小了
修改前是2494,修改后在查询就变大了
方法二: 新增数据文件
alter tablespace 表空间名
add datafile '存放路径'
size 大小 autoextend on next 50M maxsize unlimited;
示例
alter tablespace USERS
add datafile 'C:\ORACLE\ORADATA\ORCL\USERS03.DBF'
size 1024M autoextend on next 50M maxsize unlimited;
这样与方法一不同就是它会新建一个文件,执行代码后我们再执行一下第三步,查看,会发现多了一个文件,在文件夹中也能找到它,到这里就成功扩容了