Data Guard搭建困境突圍(一)
在Oracle 10g的中搭建Data Guard環境真是一個糾結,目前大體都是採用兩種方式,一種是rman備份,一種是duplicate的方式,但是這兩個地方不夠讓我滿意,一來是rman備份資料量不小,需要先在本地生成備份,然後複製到備庫去,這個搭建週期略長,另外一個就是推薦的方式duplicate,在10g中有些雞肋的味道,本地備份,然後複製到備庫,然後動用duplicate的方式,這樣的方式還不如手工rman的方式同步來得順心順意,所以在10g中我是不怎麼喜歡duplicate方式。當然11g終於改進了一把,這種方式成了我搭建Data Guard的不可之選。
最近碰到一個比較糾結的問題就是在主備庫空間資源不足的情況下,如何在10g版本中順利搭建Data Guard環境。大體的情況如下:
主備庫的檔案分佈略有一些差別,資料庫資料量大概在800G左右,資料庫版本為10gR2.
這讓我很糾結,到底該怎麼處理,一來是檔案的路徑對映,至少Oracle的convert引數還處理不了這麼智慧,如何這麼平均的分配空間和資料。所以哪怕備庫的空間總量夠,我還是懸著心,這個需求至少透過rman的異機恢復還是有難度。那麼試試duplicate,當然我們知道檔案路徑可以重新修改,所以主要的問題還是在於空間,10g的duplicate需要在主庫端生成備份集,然後在備庫開啟duplicate選項而已。所以實現起來還是有難度。
Oracle如何透過rman的方式實現遠端備份,這是個難題,如果是在11g可能這個問題就能夠大大化和,在10g上如何突圍呢。
假設資料庫主庫為primary,備庫為standby
則我在備庫嘗試使用下面的方式,我們在/home/oracle/下建立一個臨時目錄tmp,看看到底能夠在備庫環境生成。
rman target sys/oracle@primary
COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf';
執行時提示檔案無法建立,因為在伺服器主庫環境沒有這個目錄。所以初戰失敗。
然後嘗試使用duplicate的方式。
rman target sys/oracle@primaryauxiliary sys/oracle@standby nocatalog
這種方式是我們一直使用的方式,當然這種方式沒有給我帶來任何驚喜,依舊是在當前環境不大適合。
在備庫端我們可以這麼試試。
rman target sys/oracle@standby auxiliary sys/oracle@primary nocatalog
COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf';
這種方式就可以順利在備庫端生成系統表空間的資料檔案了。
所以我們的改進方式就是參考這個主要的 解決思路。
當然我們可以在主庫生成相應的命令,直接批次執行即可。假設我們存在下面的資料檔案。
select 'copy datafile '||file_id ||' to '||chr(39)||file_name ||chr(39)||';'from dba_data_files;
copy datafile 4 to '/U01/app/oracle/oradata/newtest2/users01.dbf';
copy datafile 3 to '/U01/app/oracle/oradata/newtest2/undotbs01.dbf';
copy datafile 2 to '/U01/app/oracle/oradata/newtest2/sysaux01.dbf';
copy datafile 1 to '/U01/app/oracle/oradata/newtest2/system01.dbf';
copy datafile 5 to '/U01/app/oracle/oradata/newtest2/users2.dbf';
copy datafile 6 to '/U01/app/oracle/oradata/newtest2/fbarch01.dbf';
以其中的兩個資料檔案為例,日誌如下:
RMAN> copy datafile 5 to '/home/oracle/tmp/users2.dbf';
Starting backup at 2016-09-09 22:46:30
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/U01/app/oracle/oradata/newtest2/users2.dbf
output file name=/home/oracle/tmp/users2.dbf tag=TAG20160909T224630 RECID=28 STAMP=922142791
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2016-09-09 22:46:32
RMAN> copy datafile 6 to '/home/oracle/tmp/fbarch01.dbf';
Starting backup at 2016-09-09 22:46:39
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=/U01/app/oracle/oradata/newtest2/fbarch01.dbf
output file name=/home/oracle/tmp/fbarch01.dbf tag=TAG20160909T224639 RECID=29 STAMP=922142800
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2016-09-09 22:46:40
在主備庫資料檔案路徑的情況下,就批次生成一個檔案就可以立刻在備庫使用。如果確認生成沒有問題,直接複製覆蓋原來備庫檔案,或者直接替換已有的備庫資料檔案即可。
DGMGRL> show configuration;
Configuration - dg_newtest2
Protection Mode: MaxPerformance
Databases:
primaryxx- Primary database
standbyxx- Physical standby database
Fast-Start Failover: DISABLED
Configuration Status
SUCCESS
在10g中其實已經可以這樣使用duplicate的方式來,但是Oracle卻沒有建議這麼用,我覺得主要的考慮還是安全吧。
10g中這樣用: Duplicate target database for standby nofilenamecheck ;
11g中這樣用:Duplicate target database for standby from active database nofilenamecheck
可以看出主要的差別還是一個active的字樣,我看到有很多人搭建Data Guard在主庫端duplicate,這樣在10g就很不規範而且有一定的風險。
儘管在11g做了這樣的改進,但是還是很容易混淆關係,這也是我猜測的原因,當然手頭的工作就是嘗試在這種情況下儘快使用新方案搭建Data Guard環境。
當然對於很多老司機來說,這已經不是什麼新方法了。
最近碰到一個比較糾結的問題就是在主備庫空間資源不足的情況下,如何在10g版本中順利搭建Data Guard環境。大體的情況如下:
主備庫的檔案分佈略有一些差別,資料庫資料量大概在800G左右,資料庫版本為10gR2.
這讓我很糾結,到底該怎麼處理,一來是檔案的路徑對映,至少Oracle的convert引數還處理不了這麼智慧,如何這麼平均的分配空間和資料。所以哪怕備庫的空間總量夠,我還是懸著心,這個需求至少透過rman的異機恢復還是有難度。那麼試試duplicate,當然我們知道檔案路徑可以重新修改,所以主要的問題還是在於空間,10g的duplicate需要在主庫端生成備份集,然後在備庫開啟duplicate選項而已。所以實現起來還是有難度。
Oracle如何透過rman的方式實現遠端備份,這是個難題,如果是在11g可能這個問題就能夠大大化和,在10g上如何突圍呢。
假設資料庫主庫為primary,備庫為standby
則我在備庫嘗試使用下面的方式,我們在/home/oracle/下建立一個臨時目錄tmp,看看到底能夠在備庫環境生成。
rman target sys/oracle@primary
COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf';
執行時提示檔案無法建立,因為在伺服器主庫環境沒有這個目錄。所以初戰失敗。
然後嘗試使用duplicate的方式。
rman target sys/oracle@primaryauxiliary sys/oracle@standby nocatalog
這種方式是我們一直使用的方式,當然這種方式沒有給我帶來任何驚喜,依舊是在當前環境不大適合。
在備庫端我們可以這麼試試。
rman target sys/oracle@standby auxiliary sys/oracle@primary nocatalog
COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf';
這種方式就可以順利在備庫端生成系統表空間的資料檔案了。
所以我們的改進方式就是參考這個主要的 解決思路。
當然我們可以在主庫生成相應的命令,直接批次執行即可。假設我們存在下面的資料檔案。
select 'copy datafile '||file_id ||' to '||chr(39)||file_name ||chr(39)||';'from dba_data_files;
copy datafile 4 to '/U01/app/oracle/oradata/newtest2/users01.dbf';
copy datafile 3 to '/U01/app/oracle/oradata/newtest2/undotbs01.dbf';
copy datafile 2 to '/U01/app/oracle/oradata/newtest2/sysaux01.dbf';
copy datafile 1 to '/U01/app/oracle/oradata/newtest2/system01.dbf';
copy datafile 5 to '/U01/app/oracle/oradata/newtest2/users2.dbf';
copy datafile 6 to '/U01/app/oracle/oradata/newtest2/fbarch01.dbf';
以其中的兩個資料檔案為例,日誌如下:
RMAN> copy datafile 5 to '/home/oracle/tmp/users2.dbf';
Starting backup at 2016-09-09 22:46:30
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/U01/app/oracle/oradata/newtest2/users2.dbf
output file name=/home/oracle/tmp/users2.dbf tag=TAG20160909T224630 RECID=28 STAMP=922142791
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2016-09-09 22:46:32
RMAN> copy datafile 6 to '/home/oracle/tmp/fbarch01.dbf';
Starting backup at 2016-09-09 22:46:39
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=/U01/app/oracle/oradata/newtest2/fbarch01.dbf
output file name=/home/oracle/tmp/fbarch01.dbf tag=TAG20160909T224639 RECID=29 STAMP=922142800
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2016-09-09 22:46:40
在主備庫資料檔案路徑的情況下,就批次生成一個檔案就可以立刻在備庫使用。如果確認生成沒有問題,直接複製覆蓋原來備庫檔案,或者直接替換已有的備庫資料檔案即可。
DGMGRL> show configuration;
Configuration - dg_newtest2
Protection Mode: MaxPerformance
Databases:
primaryxx- Primary database
standbyxx- Physical standby database
Fast-Start Failover: DISABLED
Configuration Status
SUCCESS
在10g中其實已經可以這樣使用duplicate的方式來,但是Oracle卻沒有建議這麼用,我覺得主要的考慮還是安全吧。
10g中這樣用: Duplicate target database for standby nofilenamecheck ;
11g中這樣用:Duplicate target database for standby from active database nofilenamecheck
可以看出主要的差別還是一個active的字樣,我看到有很多人搭建Data Guard在主庫端duplicate,這樣在10g就很不規範而且有一定的風險。
儘管在11g做了這樣的改進,但是還是很容易混淆關係,這也是我猜測的原因,當然手頭的工作就是嘗試在這種情況下儘快使用新方案搭建Data Guard環境。
當然對於很多老司機來說,這已經不是什麼新方法了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2129519/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Data guard搭建
- Oracle 12c Data Guard搭建(一)Oracle
- 單機搭建Data Guard
- 【DG】Data Guard搭建(physical standby)
- RedHat搭建物理Data GuardRedhat
- 搭建Active Data Guard環境
- 容災技術Data Guard搭建
- Oracle RAC + Data Guard 環境搭建Oracle
- 單機上快速搭建一個Data Guard環境
- 搭建邏輯Data Guard 12c
- Active Data Guard初探(一)
- DATA GUARD架構(一)架構
- [Data Guard]Oracle10g Data Guard學習筆記(一)Oracle筆記
- Data guard 配置之搭建物理備庫
- 半自動化搭建Data Guard的想法和實踐(一)
- DATA GUARD部署模式——DATA GUARD概念和管理模式
- 面對國產基礎軟體困境,進擊的星環如何突圍?
- 搭建Oracle Data Guard 11g(物理備用)Oracle
- 介紹ORACLE DATA GUARD——DATA GUARD概念和管理Oracle
- ORACLE DATA GUARD -一般概念Oracle
- oracle data guard!!Oracle
- 搭建11g data guard(duplicate from active database方式)Database
- Data Guard 之RMAN備份線上搭建物理standby
- Data Guard Broker系列之二:Data Guard Broker配置實戰
- DATA GUARD 簡介
- Data Guard 建立(ASM)ASM
- Oracle Data Guard配置Oracle
- Oracle Data Guard Linux 平臺 Physical Standby 搭建例項OracleLinux
- 面對出海大潮與研發困境,中小團隊如何在競爭中突圍?
- Oracle 11g Data Guard Enabling Active Data GuardOracle
- [Data Guard]Oracle10g Data Guard學習筆記(二)Oracle筆記
- [Data Guard]Oracle10g Data Guard學習筆記(三)Oracle筆記
- 主備庫記憶體不一致的Data Guard環境搭建記憶體
- 建言“十四五”:中國既有公共建築節能工作的困境與突圍(附下載)
- 半自動化搭建Data Guard的想法和實踐(二)
- 半自動化搭建Data Guard的想法和實踐(四)
- 半自動化搭建Data Guard的想法和實踐(三)
- Oracle RAC & Data Guard搭建高可用資料庫系統方案Oracle資料庫