在Oracle数据库中插入了大量数据,又插入了大量数据到另外一张表,导致数据库表空间暴涨,由于根目录下只有50G左右的空间,数据库文件所在磁盘空间不够,完全无法写入任何新的文件,所以需要将数据库dbf迁移到大空间的磁盘上。
1,登录Oracle的system用户:
sqlplus / as sysdba
system/***
2,关闭数据库:shutdown immediate;
有可能无法关闭,报错说system用户没有权限,实际上是有权限的,只是因为磁盘没有空间,
无法写日志导致无法进行操作,可以备份或者删除掉一些无用的文件,空出一点空间。
3,以mount形式加载数据库:startup mount;
启动的时候可能也会报错说initorcl.ora文件找不到,
4,找到需要迁移的dbf文件路径
例如:/data/oracle/oradata/orcl/users01.dbf,
执行如下查询语句可以看到所有dbf文件:
select tablespace_name, file_id,file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;
alter database rename file '/data/oracle/oradata/orcl/users01.dbf' to '/home/oracle/oradata/orcl/users01.dbf';
注:此处路径根据实际情况进行更改,并且需要提前将/data/oracle/oradata/orcl/users01.dbf文件
复制到新的目录下。
7.恢复介质
recover datafile '/home/oracle/oradata/orcl/users01.dbf';
如果不做这一步会报ora-01113,ora-01110错误。
8.打开数据库
alter database open;
rm /data/oracle/oradata/orcl/users01.dbf
删除后,该文件占用的空间就能释放出来,基本上Oracle服务就OK了。