利用offline datafile檔案方式遷移資料

space6212發表於2019-06-10
我們可能經常遇到這樣的情況:
1. 因為儲存需要調整,所以需要暫時把部分資料檔案從一個儲存遷移到另一個儲存上
2. 隨時時間的轉移,原來的熱點資料變成歷史資料,需要這部分資料從好的裝置轉移到歸檔裝置上

我們的選擇有多種:
1. move table
這種方法的優點是對業務影響較小,幾乎可以聯機做。但如果物件很多,會比較麻煩,而且還需要重建索引。


2. 直接把資料檔案轉移
如果資料庫可以停機,則是最簡單的,但使用者一般難以承受完全的停機操作。所以需要找一個折中的辦法。
如果這部分資料比較獨立、或者不太重要,使用者願意承受操作期間的部分業務的不可用,則可以考慮用offline datafile然後移動的方法去操作。
[@more@]----------------------------
此種方法的具體步驟是:
1) 資料檔案offline

SQL> alter database datafile 'E:ORACLEPRODUCT10.2.0ORADATAORA10GSUK.DBF' offline;

資料庫已更改。

2) 複製資料檔案到新路徑
可以cp/dd/rman都可以,步驟不再贅述

3) 重新命名資料檔案
SQL> alter database rename file 'E:ORACLEPRODUCT10.2.0ORADATAORA10GSUK.DBF' to 'E:ORACLEPRODUCT10.2.0ORADATASUK.DBF';

資料庫已更改。
--資料檔案必須是offline的狀態才可以在資料庫開啟狀態下rename名稱

4) 恢復資料檔案

SQL> recover datafile 'E:ORACLEPRODUCT10.2.0ORADATASUK.DBF';
完成介質恢復。

5) 重新online資料檔案

SQL> alter database datafile 'E:ORACLEPRODUCT10.2.0ORADATASUK.DBF' online;

資料庫已更改。

此時,所有步驟完成!


----------------------------
用這種方法有兩個疑慮:

1. 如果有會話一直在資料檔案上的物件進行查詢,是否可以offline?
可以。證明步驟如下:

create table T(a int);
insert into T values(1);
commit;

DECLARE
I INTEGER;
BEGIN
WHILE 1 = 1 LOOP
SELECT A INTO I FROM T;
END LOOP;
END;
/

上面的語句可以模擬一直有活動查詢,我來試試是否可以offline:
SQL> alter database datafile 'E:ORACLEPRODUCT10.2.0ORADATASUK.DBF' offline;

資料庫已更改。

資料庫offline後,上面的查詢會報錯:
ORA-00376: 此時無法讀取檔案 7
ORA-01110: 資料檔案 7: 'E:ORACLEPRODUCT10.2.0ORADATASUK.DBF'

可以看到,在這種情況下,資料檔案可以被offline。

2. 如果一直有活動事物,是否可以offline?
可以。證明步驟如下:

SQL> delete from T;

1 row deleted

資料刪除後一直不提交,則表示一直有活動事物。嘗試offline成功!

SQL> alter database datafile 'E:ORACLEPRODUCT10.2.0ORADATASUK.DBF' offline;

資料庫已更改。
SQL> recover datafile 'E:ORACLEPRODUCT10.2.0ORADATASUK.DBF';
完成介質恢復。
SQL> alter database datafile 'E:ORACLEPRODUCT10.2.0ORADATASUK.DBF' online;

資料庫已更改。

此時因為事物沒有提交,所以資料檔案online後表中的資料仍然存在。



需要注意的是:

1. datafile offline會觸發dbwn把buffer中相關的資料重新整理到資料檔案中,重新整理完成後,資料檔案才能被offline
2. 資料檔案被offline後,資料庫內任何對這些檔案的讀寫操作都會失敗
3. 一個事務可以在offline前執行,在offline後再提交,前提是操作都發生在同一個會話中。
4. 被offline的資料檔案被online前,必須做recover操作,如果對應的歸檔不存在導致recover失敗,則無法online這個資料檔案。

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

相關文章