背景
這兩天做一個oracle數據庫遷移,以前都是用exp、imp來走,這次用到了expdp、impdp,的確有些優勢,但同時又想起了只是拷貝數據文件遷移的方式,其實這個方式不常用做遷移,更多用在磁盤空間不足了這種情況。特把過程列下,此次懶惰,沒有試驗。應該差不多。以下為linux環境下,不解釋命令了。同時也把sqlserver、mysql的總結了下。
過程
- xhell4鏈接,切換Oracle用戶。su - oracle
- sqlplus / as sysdba(windows下不知為何還不大行,得用nolog,再用conn)
- 先看看當前有哪些數據文件 SQL> select name from v$datafile; 看到結果里有個/u01/app/oracle/oradata/sid/TEST.dbf
- 關閉數據庫 SQL> shutdown immediate; SQL> exit;
- 用oracle用戶拷貝文件 [oracle@my]$ mv /u01/app/oracle/oradata/sid/TEST.dbf /u02/app/oracle/oradata/sid/
- 拷貝完畢后再執行執行sqlplus / as sysdba,進入sqlplus SQL> startup mount;(此處還不能open,應該是啟動后就沒法執行下面命令了,我猜的,沒試驗。)
- SQL> alter database rename file '/u01/app/oracle/oradata/sid/TEST.dbf' to '/u02/app/oracle/oradata/sid/TEST.dbf';
- SQL> select name from v$datafile, 這時候看到的結果了已經沒有了/u01/app/oracle/oradata/sid/TEST.dbf ,取而代之的是/u02/app/oracle/oradata/sid/TEST.dbf
- 然后啟動數據庫 SQL> alter database open。
