dataguard備庫的資料檔案的遷移
關於移動資料庫檔案,之前寫了一篇博文,http://blog.itpub.net/23718752/viewspace-1127910/
但是在備庫中還是有一些的差別。最近因為對備庫做了一些規劃,新增加了幾個分割槽,想把資料庫的一部分檔案放到SSD上。所以這個時候在現有的備庫基礎上需要移動備庫的資料庫檔案。這裡就不侷限於資料檔案了,不過目前的測試情況來說,還是資料檔案是重點,還是主要以資料檔案為例。
在備庫中目前嘗試了兩種方式,可以採用rename datafile的方式或者使用rman的方式,對於日誌檔案還是直接重建會比較方便。
採用rename datafile的方式。
首先在備庫取消日誌應用
SQL> recover managed standby database cancel;
Media recovery complete.
作業系統級移動資料檔案。
SQL> host mv /home/U01/app/oracle/oradata/test04/testdata01.dbf /home/U01/testdata01.dbf
使用rename datafile來移動資料檔案,其實就是建立一個對映關係。
SQL> alter database rename file '/home/U01/app/oracle/oradata/test04/testdata01.dbf' to '/home/U01/testdata01.dbf';
Database altered.
修改完畢後,就可以修改備庫檔案管理模式為auto了。
SQL> alter system set standby_file_management=auto;
System altered.
修改完成之後,檢視資料檔案的情況,發現資料字典層面已經改過來了。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/U01/app/oracle/oradata/test04/system01.dbf
/home/U01/app/oracle/oradata/test04/sysaux01.dbf
/home/U01/app/oracle/oradata/test04/undotbs01.dbf
/home/U01/app/oracle/oradata/test04/users01.dbf
/home/U01/testdata01.dbf
/home/U01/app/oracle/oradata/test04/testidx01.dbf
6 rows selected.
把備庫啟動到open,即read only狀態
SQL> alter database open;
Database altered.
11g的備庫還是啟用ADG。
SQL> recover managed standby database disconnect from session using current logfile;
Media recovery complete.
然後再次檢視資料檔案的細節。
SQL> col file_name format a50
SQL> select file_name,status,online_status from dba_data_files;
FILE_NAME STATUS ONLINE_STATUS
-------------------------------------------------- ------------------ --------------
/home/U01/app/oracle/oradata/test04/users01.dbf AVAILABLE ONLINE
/home/U01/app/oracle/oradata/test04/undotbs01.dbf AVAILABLE ONLINE
/home/U01/app/oracle/oradata/test04/sysaux01.dbf AVAILABLE ONLINE
/home/U01/app/oracle/oradata/test04/system01.dbf AVAILABLE SYSTEM
/home/U01/testdata01.dbf AVAILABLE ONLINE
/home/U01/app/oracle/oradata/test04/testidx01.dbf AVAILABLE ONLINE
6 rows selected.
由此可以看出檔案遷移已經成功。
另外一種是使用rman的方式,但是原理還是相通的。
如果在主庫中移動資料檔案,可以採用如下的方式。
rman target /
COPY DATAFILE 5 to '/DATA/app/testdata01.dbf';
sql 'alter database datafile 5 offline';
switch datafile 5 to copy;
recover datafile 5;
sql 'alter database datafile 5 online';
在備庫中不能這麼使用,還是有一些不同之處,首先檢視資料檔案的情況。
FILE_NAME FILE_ID
------------------------------------------------------------ ----------
/home/U01/app/oracle/oradata/test04/users01.dbf 4
/home/U01/app/oracle/oradata/test04/undotbs01.dbf 3
/home/U01/app/oracle/oradata/test04/sysaux01.dbf 2
/home/U01/app/oracle/oradata/test04/system01.dbf 1
/home/U01/testdata01.dbf 5
/home/U01/app/oracle/oradata/test04/testidx01.dbf 6
6 rows selected.
然後在mount狀態下,這個時候備庫檔案管理模式為auto或者manual就沒有直接的影響了。
SQL> show parameter standby
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
standby_archive_dest string ?/dbs/arch
standby_file_management string AUTO
還是手工宣告取消日誌應用
SQL> recover managed standby database cancel;
Media recovery complete.
然後開始rman中的資料檔案遷移,把5號資料檔案遷移到某個指定的路徑下。
RMAN> COPY DATAFILE 5 to '/home/U01/app/oracle/oradata/test04/testdata01.dbf';
Starting backup at 2016-02-26 16:19:24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=102 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/home/U01/testdata01.dbf
output file name=/home/U01/app/oracle/oradata/test04/testdata01.dbf tag=TAG20160226T161925 RECID=14 STAMP=904839566
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2016-02-26 16:19:26
上面的日誌其實在搭建dataguard的時候會看到,是不是很熟悉。然後宣告一個切換結束。
RMAN> switch datafile 5 to copy;
using target database control file instead of recovery catalog
datafile 5 switched to datafile copy "/home/U01/app/oracle/oradata/test04/testdata01.dbf"
然後宣告資料檔案為Online狀態。
>sql 'alter database datafile 5 online'; --不執行實際上也會是Online
移動完成之後,開始檢視遷移的情況,發現已經沒有問題了。
FILE_NAME BYTES ONLINE_STATUS
-------------------------------------------------- ---------- --------------
/home/U01/app/oracle/oradata/test04/users01.dbf 10485760 ONLINE
/home/U01/app/oracle/oradata/test04/undotbs01.dbf 73400320 ONLINE
/home/U01/app/oracle/oradata/test04/sysaux01.dbf 796917760 ONLINE
/home/U01/app/oracle/oradata/test04/system01.dbf 786432000 SYSTEM
/home/U01/app/oracle/oradata/test04/testdata01.dbf 209715200 ONLINE
/home/U01/app/oracle/oradata/test04/testidx01.dbf 104857600 ONLINE
6 rows selected.
所以綜上的感覺來看,rman的方式還是比較推薦,至少操作方便快捷,而且dataguard的原生支援就是如此,而且限制也少。
但是在備庫中還是有一些的差別。最近因為對備庫做了一些規劃,新增加了幾個分割槽,想把資料庫的一部分檔案放到SSD上。所以這個時候在現有的備庫基礎上需要移動備庫的資料庫檔案。這裡就不侷限於資料檔案了,不過目前的測試情況來說,還是資料檔案是重點,還是主要以資料檔案為例。
在備庫中目前嘗試了兩種方式,可以採用rename datafile的方式或者使用rman的方式,對於日誌檔案還是直接重建會比較方便。
採用rename datafile的方式。
首先在備庫取消日誌應用
SQL> recover managed standby database cancel;
Media recovery complete.
作業系統級移動資料檔案。
SQL> host mv /home/U01/app/oracle/oradata/test04/testdata01.dbf /home/U01/testdata01.dbf
使用rename datafile來移動資料檔案,其實就是建立一個對映關係。
SQL> alter database rename file '/home/U01/app/oracle/oradata/test04/testdata01.dbf' to '/home/U01/testdata01.dbf';
Database altered.
修改完畢後,就可以修改備庫檔案管理模式為auto了。
SQL> alter system set standby_file_management=auto;
System altered.
修改完成之後,檢視資料檔案的情況,發現資料字典層面已經改過來了。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/U01/app/oracle/oradata/test04/system01.dbf
/home/U01/app/oracle/oradata/test04/sysaux01.dbf
/home/U01/app/oracle/oradata/test04/undotbs01.dbf
/home/U01/app/oracle/oradata/test04/users01.dbf
/home/U01/testdata01.dbf
/home/U01/app/oracle/oradata/test04/testidx01.dbf
6 rows selected.
把備庫啟動到open,即read only狀態
SQL> alter database open;
Database altered.
11g的備庫還是啟用ADG。
SQL> recover managed standby database disconnect from session using current logfile;
Media recovery complete.
然後再次檢視資料檔案的細節。
SQL> col file_name format a50
SQL> select file_name,status,online_status from dba_data_files;
FILE_NAME STATUS ONLINE_STATUS
-------------------------------------------------- ------------------ --------------
/home/U01/app/oracle/oradata/test04/users01.dbf AVAILABLE ONLINE
/home/U01/app/oracle/oradata/test04/undotbs01.dbf AVAILABLE ONLINE
/home/U01/app/oracle/oradata/test04/sysaux01.dbf AVAILABLE ONLINE
/home/U01/app/oracle/oradata/test04/system01.dbf AVAILABLE SYSTEM
/home/U01/testdata01.dbf AVAILABLE ONLINE
/home/U01/app/oracle/oradata/test04/testidx01.dbf AVAILABLE ONLINE
6 rows selected.
由此可以看出檔案遷移已經成功。
另外一種是使用rman的方式,但是原理還是相通的。
如果在主庫中移動資料檔案,可以採用如下的方式。
rman target /
COPY DATAFILE 5 to '/DATA/app/testdata01.dbf';
sql 'alter database datafile 5 offline';
switch datafile 5 to copy;
recover datafile 5;
sql 'alter database datafile 5 online';
在備庫中不能這麼使用,還是有一些不同之處,首先檢視資料檔案的情況。
FILE_NAME FILE_ID
------------------------------------------------------------ ----------
/home/U01/app/oracle/oradata/test04/users01.dbf 4
/home/U01/app/oracle/oradata/test04/undotbs01.dbf 3
/home/U01/app/oracle/oradata/test04/sysaux01.dbf 2
/home/U01/app/oracle/oradata/test04/system01.dbf 1
/home/U01/testdata01.dbf 5
/home/U01/app/oracle/oradata/test04/testidx01.dbf 6
6 rows selected.
然後在mount狀態下,這個時候備庫檔案管理模式為auto或者manual就沒有直接的影響了。
SQL> show parameter standby
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
standby_archive_dest string ?/dbs/arch
standby_file_management string AUTO
還是手工宣告取消日誌應用
SQL> recover managed standby database cancel;
Media recovery complete.
然後開始rman中的資料檔案遷移,把5號資料檔案遷移到某個指定的路徑下。
RMAN> COPY DATAFILE 5 to '/home/U01/app/oracle/oradata/test04/testdata01.dbf';
Starting backup at 2016-02-26 16:19:24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=102 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/home/U01/testdata01.dbf
output file name=/home/U01/app/oracle/oradata/test04/testdata01.dbf tag=TAG20160226T161925 RECID=14 STAMP=904839566
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2016-02-26 16:19:26
上面的日誌其實在搭建dataguard的時候會看到,是不是很熟悉。然後宣告一個切換結束。
RMAN> switch datafile 5 to copy;
using target database control file instead of recovery catalog
datafile 5 switched to datafile copy "/home/U01/app/oracle/oradata/test04/testdata01.dbf"
然後宣告資料檔案為Online狀態。
>sql 'alter database datafile 5 online'; --不執行實際上也會是Online
移動完成之後,開始檢視遷移的情況,發現已經沒有問題了。
FILE_NAME BYTES ONLINE_STATUS
-------------------------------------------------- ---------- --------------
/home/U01/app/oracle/oradata/test04/users01.dbf 10485760 ONLINE
/home/U01/app/oracle/oradata/test04/undotbs01.dbf 73400320 ONLINE
/home/U01/app/oracle/oradata/test04/sysaux01.dbf 796917760 ONLINE
/home/U01/app/oracle/oradata/test04/system01.dbf 786432000 SYSTEM
/home/U01/app/oracle/oradata/test04/testdata01.dbf 209715200 ONLINE
/home/U01/app/oracle/oradata/test04/testidx01.dbf 104857600 ONLINE
6 rows selected.
所以綜上的感覺來看,rman的方式還是比較推薦,至少操作方便快捷,而且dataguard的原生支援就是如此,而且限制也少。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-2089586/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dataguard備庫的資料檔案的遷移實戰
- 資料庫檔案的遷移資料庫
- dataguard之邏輯備庫移動資料檔案
- 資料檔案的遷移
- 使用資料庫冷備份方式進行資料庫遷移,資料庫檔案遷移到不同的目錄資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- 資料庫的冷備份遷移資料庫
- 遷移資料庫檔案到ASM資料庫ASM
- dataguard之物理備庫丟失資料檔案
- 資料檔案遷移
- 遷移資料庫的檔案到不同路徑(轉)資料庫
- dnf資料庫備份&遷移資料庫
- 達夢資料庫資料檔案遷移過程資料庫
- dataguard之主庫增加資料檔案--物理備庫相應的調整(一)
- 【資料遷移】RMAN遷移資料庫到ASM(二)切換資料檔案到ASM資料庫ASM
- oracle 資料檔案遷移Oracle
- oracle資料檔案遷移Oracle
- dataguard之主庫增加資料檔案--邏輯備庫相應的調整(二)
- Oracle_遷移資料檔案Oracle
- 一、rman 資料庫遷移--從檔案系統到檔案系統用預設的備份路徑資料庫
- 利用拷貝data目錄檔案的方式遷移mysql資料庫MySql資料庫
- 使用RMAN遷移檔案系統資料庫到ASM資料庫ASM
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫
- 透過rman全庫備份遷移資料庫資料庫
- 資料庫課程作業筆記 - 編寫資料庫遷移檔案資料庫筆記
- 【遷移】使用rman遷移資料庫資料庫
- dataguard利用從庫的檔案恢復主庫發生異常的資料檔案。
- 資料庫遷移資料庫
- 用rman建立dataguard備用資料庫繼續(無法找到備份檔案)資料庫
- 用rman從檔案系統遷移資料庫到asm資料庫ASM
- 如何遷移ASM資料檔案到檔案系統ASM
- Datapump資料遷移前的準備工作
- windows下oracle資料檔案的遷移和規範WindowsOracle
- 線上遷移表空間資料檔案
- Oracle 表空間資料檔案遷移Oracle
- rename備庫資料檔案