在Oracle12.1之前的版本中要重命名数据文件或移动数据文件需要关闭数据库或把表空间/数据文件置为离线状态才可以,参考之前总结的但到了12.1版本,可以直接在数据文件在线状态下把数据文件重命名或移动数据文件。
要实现这一功能需要使用<代码类=" codeph ">改变代码> <代码类=" codeph ">数据库代码> <代码类=" codeph "> 代码>移动<代码类=" codeph ">功能> 代码语句,语法如下
ALTER DATABASE MOVE DATAFILE (,“文件名”|,‘ASM_filename’, |, file_number ) ,(用(,“文件名”|,“ASM_filename”,),) ,[REUSE ], [], KEEP 
下面在12.2版本测试这一功能
zx@ORA12C> select *,得到v $版本; 横幅,,,,CON_ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - - - - - - Oracle Database 12 c Enterprise  Edition Release 12.2.0.1.0 作用;64 bit 生产,0 PL/SQL Release  12.2.0.1.0 才能生产,0 核心12.2.0.1.0生产,0 TNS for Linux: Version 12.2.0.1.0 作用;生产,0 NLSRTL Version  12.2.0.1.0 作用;生产,,0
1,创建测试表空间及数据文件:
sys@ORA12C> create tablespace t_move datafile “/home/oracle/t_move.dbf”, size 50 m ; Tablespace 创建。 sys@ORA12C> col  name for  a50股指 sys@ORA12C> select  d.name d.status 得到v $ datafile d v $ tablespace t where t.ts #=d.ts #,以及t.name=癟_MOVE”; 的名字,,,的地位 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - -/home/oracle/t_move.dbf 在线,,
现在数据文件的/home/oracle/t_move。dbf”为在线状态
2,执行重命名操作
sys@ORA12C> alter database move datafile “/home/oracle/t_move.dbf”,用“/home/oracle/t_move01.dbf”; Database 改变。 sys@ORA12C> select  d.name d.status 得到v $ datafile d v $ tablespace t where t.ts #=d.ts #,以及t.name=癟_MOVE”; 的名字,,,的地位 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - -/home/oracle/t_move01.dbf,,在线 sys@ORA12C> ! ls -l /home/oracle/t_move01.dbf -rw-r——安康;1,oracle oinstall 52436992, Jul 11, 16:07 /home/oracle/t_move01.dbf sys@ORA12C> ! ls -l /home/oracle/t_move.dbf ls: cannot access /home/oracle/t_move.dbf:, No such file 或是目录
可以看到文件名从t_move.dbf改为了t_move01。dbf,原文件已经不存在的了。
3,执行移动目录操作
sys@ORA12C> alter database move datafile “/home/oracle/t_move01.dbf”,用“/u01/app/oracle/oradata/ora12c t_move01.dbf”; Database 改变。 sys@ORA12C> ! ls -l /u01/app/oracle/oradata/ora12c/t_move01.dbf -rw-r——安康;1,oracle oinstall 52436992, Jul 11, 16:10 /u01/app/oracle/oradata/ora12c/t_move01.dbf sys@ORA12C> ! ls -l /home/oracle/t_move01.dbf ls: cannot access /home/oracle/t_move01.dbf:, No such file 或是目录 sys@ORA12C> select  d.name d.status 得到v $ datafile d v $ tablespace t where t.ts #=d.ts #,以及t.name=癟_MOVE”; 的名字,,,的地位 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - -/u01/app/oracle/oradata/ora12c/t_move01。dbf,,,网上
从上面的结果可以看到数据文件从/home/oracle的目录移动到了'/u01/app/oracle/oradata/ora12c目录下了。
4,拷贝数据文件到目标目录,保留原文件
sys@ORA12C> alter database move datafile , '/u01/app/oracle/oradata/ora12c t_move01.dbf”,用“/home/oracle/t_move01.dbf”,保持; Database 改变。 sys@ORA12C> select  d.name d.status 得到v $ datafile d v $ tablespace t where t.ts #=d.ts #,以及t.name=癟_MOVE”; 的名字,,,的地位 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - -/home/oracle/t_move01.dbf,,在线 sys@ORA12C> ! ls -l /home/oracle/t_move01.dbf -rw-r——安康;1,oracle oinstall 52436992, Jul 11, 16:15 /home/oracle/t_move01.dbf sys@ORA12C> ! ls -l /u01/app/oracle/oradata/ora12c/t_move01.dbf -rw-r——安康;1,oracle oinstall 52436992, Jul 11, 16:15 /u01/app/oracle/oradata/ora12c t_move01.dbfOracle 12.1新特性:在线重命名或迁移数据文件