您的位置:首页 > 数据库 > Oracle

ORACLE12C新特性之在线迁移活跃的数据文件

2015-12-04 10:21 465 查看
ORACLE12C新特性之在线迁移活跃的数据文件

前几天把oracle11g升级到12c时,没有选择移动数据库文件,导致数据库文件控制文件日志文件都还在oracle11g的目录,为了系统文件管理方便,需要移动到12c数据库的目录,刚好可以测试一下oracle12C的新特性-在线迁移活跃的数据文件!

相关文件检查:
SQL> select * from v$version;

BANNER                                                       CON_ID

------------------------------------------------------------ ----------

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 -            0

64bit Production

PL/SQL Release 12.1.0.1.0 - Production                                  0

CORE    12.1.0.1.0    Production                                        0

TNS for Linux: Version 12.1.0.1.0 - Production                          0

NLSRTL Version 12.1.0.1.0 - Production                                  0

SQL> select name from v$datafile;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/orcl/system01.dbf

/u01/app/oracle/oradata/orcl/sysaux01.dbf

/u01/app/oracle/oradata/orcl/undotbs01.dbf

/u01/app/oracle/oradata/orcl/users01.dbf

SQL> select member from v$logfile;

MEMBER

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/orcl/redo03.log

/u01/app/oracle/oradata/orcl/redo02.log

/u01/app/oracle/oradata/orcl/redo01.log

SQL> select name from v$controlfile;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/orcl/control01.ctl

/u01/app/oracle/fast_recovery_area/orcl/control02.ctl

SQL>  select name from v$tempfile;

NAME

---------------------------------------------

/u01/app/oracle/oradata/orcl/temp01.dbf


在线移动数据文件:操作前请备份:

目标目录:
/u02/app/oradata/orcl


以前版本做数据文件移动的步骤:offline数据文件-移动-online

12C的新特性直接使用ALTER DATABASE MOVE DATAFILE命令,不需要做任何offline或者数据库只能启动到mount的设置,直接移动,移动的同时数据库可以执行任何DDL\DML以及查询操作!
SQL> select name from v$datafile;

NAME

---------------------------------------------

/u01/app/oracle/oradata/orcl/system01.dbf

/u01/app/oracle/oradata/orcl/sysaux01.dbf

/u01/app/oracle/oradata/orcl/undotbs01.dbf

/u01/app/oracle/oradata/orcl/users01.dbf

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u02/app/oradata/orcl/system01.dbf' KEEP;

Database altered.

SQL> select name from v$datafile;

NAME

---------------------------------------------

/u02/app/oradata/orcl/system01.dbf

/u01/app/oracle/oradata/orcl/sysaux01.dbf

/u01/app/oracle/oradata/orcl/undotbs01.dbf

/u01/app/oracle/oradata/orcl/users01.dbf


数据库告警日志:
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u02/app/oradata/orcl/system01.dbf' KEEP

Mon Sep 30 11:45:48 2013

Moving datafile /u01/app/oracle/oradata/orcl/system01.dbf (1) to /u02/app/oradata/orcl/system01.dbf

Mon Sep 30 11:47:16 2013

Move operation committed for file /u02/app/oradata/orcl/system01.dbf

Completed: ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u02/app/oradata/orcl/system01.dbf' KEEP


继续移动其他,为了方便,可以把移动的语句写成脚本,,这里为了测试,就一个个测试了,需要的可以测试一下脚本的情况!
SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/sysaux01.dbf' to '/u02/app/oradata/orcl/sysaux01.dbf';

Database altered.

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf' to '/u02/app/oradata/orcl/undotbs01.dbf';

Database altered.

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf' to '/u02/app/oradata/orcl/users1.dbf';

Database altered.

SQL> select name from v$datafile;

NAME

---------------------------------------------

/u02/app/oradata/orcl/system01.dbf

/u02/app/oradata/orcl/sysaux01.dbf

/u02/app/oradata/orcl/undotbs01.dbf

/u02/app/oradata/orcl/users1.dbf


数据文件已经全部移动到行的位置,告警日志就不帖了.上面移动的命令仔细看是有区别的.下面具体说说他们的区别:
SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u02/app/oradata/orcl/system01.dbf' KEEP;

最后以KEEP结尾,该命令除了把指定的数据文件移动到新的位置外. 同时在原路径下保留其源文件拷贝.

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/sysaux01.dbf' to '/u02/app/oradata/orcl/sysaux01.dbf';

该命令直接移动指定数据文件到新目录,不保存源数据文件拷贝.

SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf' to '/u02/app/oradata/orcl/users1.dbf';

该命令移动指定数据文件到新目录,并且改名!如果目录下有同名文件,会直接覆盖!


使用12C的ALTER DATABASE MOVE DATAFILE新特性,可以随时移动数据文件位置.不管是从ASM磁盘组移动到非ASM磁盘,还是从非ASM磁盘移动到ASM磁盘组.个人感觉这个功能非常实用,再也不会因为移动数据文件导致数据文件损坏或者数据库启动不了的情况了!至于ASM磁盘组的移动,这里没有ASM环境,就不测试了,有兴趣的可以测试测试!

转载--http://www.oracle600.com/movedatafile.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: