Oracle 12.1新特性:在线重命名或迁移数据文件

  

在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.dbf

Oracle 12.1新特性:在线重命名或迁移数据文件