共计 2850 个字符,预计需要花费 8 分钟才能阅读完成。
在 Oracle 12C 中可以使用 alter database move datafile 语句来重命名或迁移联机数据文件。当数据库处于 open 状态,并且用户正在访问数据文件时仍然能够重命名与迁移联机数据文件。
当你重命名与迁移联机数据文件时,在控制文件中所记录指向数据文件的指针会被改变。数据文件会在操作系统层面被重命名与迁移。
当执行以下任务时因为需要允许用户访问数据文件所以需要对联机数据文件执行重命名与迁移:
. 将数据文件从一种类型的存储迁移到另一种类型存储上。
. 将不频繁访问的数据文件迁移到低成本存储上。
. 将表空间置为只读并将它的数据文件写入存储设备上
. 将数据库迁移到 Oracle ASM 中
当执行 alter database move datafile 语句时,如果在目标目录中存在相同的文件,可以指定 reuse 选项来覆盖现有文件。当没有指定 reuse 选项时,如果在目标目录中存在相同文件时,现有文件不会被覆盖并且语句会返回错误信息。
缺省情况下,当执行 alter database move datafile 语句并指定新目录时,语句会移动数据文件到新目录中。然而可以指定 keep 选项来保留旧目录中的数据文件。在这种情况下当语句完成后数据库只会使用新目录中的数据文件。
使用 alter database move datafile 语句来重命名或迁移数据文件时,Oracle 数据库会创建一份数据文件副本。确保对于有足够的空间来执行此操作。
注意: 如果指定的数据文件处于脱机状态那么执行 alter database move datafile 语句将会触发错误, 如果配置了备库,那么对于主库和备库所执行的联机数据文件迁移操作是相互独立的。当对主库移动数据文件时备库不受影响,反之一样。闪回操作不会将被移动的数据文件重新迁移回之前的目录中。如果将一个联机数据文件从一个目录移动到另一个目录,之后执行闪回数据库操作将其闪回到数据文件迁移之前的时间点,那么数据文件仍然会存储在新目录中,但数据文件的内容将会回到闪回操作所指定的时间点。当在 Windows 平台上执行数据文件迁移时,就算没有指定 keep 选项,原始数据文件也会保留在旧目录中。在这种情况下,当迁移操作完成之后,数据库就只会使用新目录中的数据文件。如果需要这时可以使用手动删了旧数据文件。
重命名联机数据文件
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------------------------------------
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/system.274.939167015
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/sysaux.275.939167015
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/undotbs1.273.939167015
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/undo_2.277.939167063
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/users.278.939167083
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/testtb1.dbf
6 rows selected.
SQL> alter database move datafile '+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/testtb1.dbf' to '+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/testtb01.dbf';
Database altered.
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------------------------------------
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/system.274.939167015
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/sysaux.275.939167015
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/undotbs1.273.939167015
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/undo_2.277.939167063
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/users.278.939167083
+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/testtb01.dbf
6 rows selected.
迁移联机数据文件
SQL>ALTER DATABASE MOVE DATAFILE '/u01/oracle/rbdb1/user1.dbf' TO '/u02/oracle/rbdb1/user1.dbf';
复制联机数据文件
SQL>ALTER DATABASE MOVE DATAFILE '/u01/oracle/rbdb1/user1.dbf' TO '/u02/oracle/rbdb1/user1.dbf' KEEP;
迁移联机数据文件并覆盖所存在的数据文件
SQL>ALTER DATABASE MOVE DATAFILE '/u01/oracle/rbdb1/user1.dbf' TO '/u02/oracle/rbdb1/user1.dbf' REUSE;
迁移联机数据文件到 ASM 磁盘组
SQL>ALTER DATABASE MOVE DATAFILE '/u01/oracle/rbdb1/user1.dbf' TO '+dgroup_01/data/orcl/datafile/user1.dbf';
将联机数据文件从一个 ASM 磁盘组迁移到另一个 ASM 磁盘组中
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-06/144503.htm