重新命名與遷移聯機資料檔案

eric0435發表於2017-05-31

重新命名與遷移聯機資料檔案
在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磁碟組中


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

相關文章