1.背景說明
在Oracle數據庫中插入了1.5億條數據,
並且創建了主鍵索引,
又插入了1.5億條數據到另外一張表,
導致數據庫表空間暴漲到28G,
由於根目錄下只有50G的空間,
數據庫文件所在磁盤空間不夠,
已經撐爆,完全無法寫入任何新的文件,
所以需要將數據庫dbf遷移到有空間的磁盤。
2.登錄Oracle的system用戶
sqlplus / as sysdba
system/123456
3 .關閉數據庫
shutdown immediate;
有可能無法關閉,報錯說system用戶沒有權限,
實際上是有權限的,只是因為磁盤沒有空間,
無法寫日志導致無法進行操作,
可以備份或者刪除掉一些無用的文件,
空出一點空間。
4.以mount形式加載數據庫
startup mount;
啟動的時候可能也會報錯說initorcl.ora文件找不到,
請參考另外一篇文章。
5.找到需要遷移的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;
6.修改dbf文件路徑
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;
9.刪除原路徑下文件
rm /data/oracle/oradata/orcl/users01.dbf
刪除后,該文件占用的空間就能釋放出來,
基本上Oracle服務就能夠正常使用了。