Oracle的dbf文件遷移


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服務就能夠正常使用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM