如何更改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