如何更改Oracle資料檔案的位置
A:歸檔模式下
1.在sqlplus中串連到要移動檔案的Oracle資料庫,然後執行如下SQL語句查看Oracle資料庫檔案位置:
SQL>select file_name from sys.dba_data_files;
FILE_NAME
--------------------------------------------------------------
C:ORA8ORADATAORACLEUSERS01.DBF
C:ORA8ORADATAORACLEDR01.DBF
C:ORA8ORADATAORACLETOOLS01.DBF
C:ORA8ORADATAORACLEINDX01.DBF
C:ORA8ORADATAORACLERBS01.DBF
C:ORA8ORADATAORACLETEMP01.DBF
C:ORA8ORADATAORACLESYSTEM01.DBF
查詢到7記錄. 記錄要移動的檔案的位置和名稱。
2.下面我們以把檔案“C:ORA8ORADATAORACLEUSERS01.DBF”移動到“D:ORADATAUSERS01.DBF”為例介紹,要移動其它檔案,請安相同的方法(根據實際情況修改檔案路徑和名稱)操作即可。
<1> 首先讓所有的使用者停止串連該資料庫,關閉資料庫。在命令列視窗中輸入:
C:svrmgrl(斷行符號)
SVRMGR> connect internal(斷行符號)
SVRMGR> shutdown immediate(斷行符號)
#等待資料庫提示關閉
SVRMGR> exit
<2> 從“C:ORA8ORADATAORACLE”目錄下找到檔案“USERS01.DBF”,然後複製到目錄“D:ORADATA”下面。如果移動多個檔案,重複該步驟。
<3> 進入命令視窗,按以下內容輸入:
C:svrmgrl(斷行符號)
SVRMGR> connect internal(斷行符號)
SVRMGR> startup mount(斷行符號)
#等待資料庫提示裝載成功
SVRMGR> alter database rename file 'C:ORA8ORADATAORACLEUSERS01.DBF ' to 'D:ORADATAUSERS01.DBF ';
#提示句已處理後,如果要移動多個檔案,修改檔案路徑和名稱後重複執行上面的語句。完成後開啟資料庫。
SVRMGR> alter database open;
SVRMGR> exit
資料庫檔案移動成功。
B:資料庫處於非歸檔模式下,可以通過如下步驟變更檔路徑:
1.關閉資料庫
2.系統級進行檔案複製
3.啟動資料庫到mount狀態
3.通過SQL修改資料檔案位置
4.開啟資料庫
以下是實際操作的步驟示範:
1.資料庫處於非歸檔模式
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/oradata/conner/archive
Oldest online log sequence 150
Current log sequence 153
2.需要移動test.dbf檔案
SQL> select name from v$datafile;
NAME
------------------------------------------------------------
/opt/oracle/oradata/conner/system01.dbf
/opt/oracle/oradata/conner/undotbs01.dbf
/opt/oracle/oradata/conner/users01.dbf
/opt/oracle/test.dbf
3.關閉資料庫
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
4.複製檔案到新的位置
SQL> ! cp /opt/oracle/test.dbf /opt/oracle/oradata/conner/test.dbf
5.啟動資料庫到mount狀態
SQL> startup mount;
ORACLE instance started.
Total System Global Area 101782828 bytes
Fixed Size 451884 bytes
Variable Size 37748736 bytes
Database Buffers 62914560 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> select name from v$datafile;
NAME
-----------------------------------------------------------
/opt/oracle/oradata/conner/system01.dbf
/opt/oracle/oradata/conner/undotbs01.dbf
/opt/oracle/oradata/conner/users01.dbf
/opt/oracle/test.dbf
6.修改檔案位置
SQL> alter database rename file '/opt/oracle/test.dbf' to '/opt/oracle/oradata/conner/test.dbf';
Database altered.
SQL> alter database open;
Database altered.
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------
/opt/oracle/oradata/conner/system01.dbf
/opt/oracle/oradata/conner/undotbs01.dbf
/opt/oracle/oradata/conner/users01.dbf
/opt/oracle/oradata/conner/test.dbf