ORACLE12C新特性之線上遷移活躍的資料檔案

shilei1發表於2013-12-16

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環境,就不測試了,有興趣的可以測試測試!

轉載--

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-1063340/,如需轉載,請註明出處,否則將追究法律責任。

相關文章