Data Guard搭建困境突围(一)
生活随笔
收集整理的這篇文章主要介紹了
Data Guard搭建困境突围(一)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在Oracle 10g的中搭建Data Guard環(huán)境真是一個(gè)糾結(jié),目前大體都是采用兩種方式,一種是rman備份,一種是duplicate的方式,但是這兩個(gè)地方不夠讓我滿意,一來是rman備份數(shù)據(jù)量不小,需要先在本地生成備份,然后拷貝到備庫(kù)去,這個(gè)搭建周期略長(zhǎng),另外一個(gè)就是推薦的方式duplicate,在10g中有些雞肋的味道,本地備份,然后拷貝到備庫(kù),然后動(dòng)用duplicate的方式,這樣的方式還不如手工rman的方式同步來得順心順意,所以在10g中我是不怎么喜歡duplicate方式。當(dāng)然11g終于改進(jìn)了一把,這種方式成了我搭建Data Guard的不可之選。
???? 最近碰到一個(gè)比較糾結(jié)的問題就是在主備庫(kù)空間資源不足的情況下,如何在10g版本中順利搭建Data Guard環(huán)境。大體的情況如下:
????主備庫(kù)的文件分布略有一些差別,數(shù)據(jù)庫(kù)數(shù)據(jù)量大概在800G左右,數(shù)據(jù)庫(kù)版本為10gR2.
這讓我很糾結(jié),到底該怎么處理,一來是文件的路徑映射,至少Oracle的convert參數(shù)還處理不了這么智能,如何這么平均的分配空間和數(shù)據(jù)。所以哪怕備庫(kù)的空間總量夠,我還是懸著心,這個(gè)需求至少通過rman的異機(jī)恢復(fù)還是有難度。那么試試duplicate,當(dāng)然我們知道文件路徑可以重新修改,所以主要的問題還是在于空間,10g的duplicate需要在主庫(kù)端生成備份集,然后在備庫(kù)開啟duplicate選項(xiàng)而已。所以實(shí)現(xiàn)起來還是有難度。
??? Oracle如何通過rman的方式實(shí)現(xiàn)遠(yuǎn)程備份,這是個(gè)難題,如果是在11g可能這個(gè)問題就能夠大大化和,在10g上如何突圍呢。
假設(shè)數(shù)據(jù)庫(kù)主庫(kù)為primary,備庫(kù)為standby
則我在備庫(kù)嘗試使用下面的方式,我們?cè)?home/oracle/下創(chuàng)建一個(gè)臨時(shí)目錄tmp,看看到底能夠在備庫(kù)環(huán)境生成。
rman target sys/oracle@primary
COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf';
運(yùn)行時(shí)提示文件無法創(chuàng)建,因?yàn)樵诜?wù)器主庫(kù)環(huán)境沒有這個(gè)目錄。所以初戰(zhàn)失敗。
然后嘗試使用duplicate的方式。
rman target sys/oracle@primaryauxiliary sys/oracle@standby nocatalog
這種方式是我們一直使用的方式,當(dāng)然這種方式?jīng)]有給我?guī)砣魏误@喜,依舊是在當(dāng)前環(huán)境不大適合。
在備庫(kù)端我們可以這么試試。
rman target sys/oracle@standby auxiliary sys/oracle@primary? nocatalog
COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf';
這種方式就可以順利在備庫(kù)端生成系統(tǒng)表空間的數(shù)據(jù)文件了。
所以我們的改進(jìn)方式就是參考這個(gè)主要的 解決思路。
當(dāng)然我們可以在主庫(kù)生成相應(yīng)的命令,直接批量執(zhí)行即可。假設(shè)我們存在下面的數(shù)據(jù)文件。
?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';
以其中的兩個(gè)數(shù)據(jù)文件為例,日志如下:
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
在主備庫(kù)數(shù)據(jù)文件路徑的情況下,就批量生成一個(gè)文件就可以立刻在備庫(kù)使用。如果確認(rèn)生成沒有問題,直接拷貝覆蓋原來備庫(kù)文件,或者直接替換已有的備庫(kù)數(shù)據(jù)文件即可。
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中其實(shí)已經(jīng)可以這樣使用duplicate的方式來,但是Oracle卻沒有建議這么用,我覺得主要的考慮還是安全吧。
10g中這樣用: Duplicate target database for standby nofilenamecheck ;
11g中這樣用:Duplicate target database for standby from active database nofilenamecheck
可以看出主要的差別還是一個(gè)active的字樣,我看到有很多人搭建Data Guard在主庫(kù)端duplicate,這樣在10g就很不規(guī)范而且有一定的風(fēng)險(xiǎn)。
盡管在11g做了這樣的改進(jìn),但是還是很容易混淆關(guān)系,這也是我猜測(cè)的原因,當(dāng)然手頭的工作就是嘗試在這種情況下盡快使用新方案搭建Data Guard環(huán)境。
當(dāng)然對(duì)于很多老司機(jī)來說,這已經(jīng)不是什么新方法了。
???? 最近碰到一個(gè)比較糾結(jié)的問題就是在主備庫(kù)空間資源不足的情況下,如何在10g版本中順利搭建Data Guard環(huán)境。大體的情況如下:
????主備庫(kù)的文件分布略有一些差別,數(shù)據(jù)庫(kù)數(shù)據(jù)量大概在800G左右,數(shù)據(jù)庫(kù)版本為10gR2.
這讓我很糾結(jié),到底該怎么處理,一來是文件的路徑映射,至少Oracle的convert參數(shù)還處理不了這么智能,如何這么平均的分配空間和數(shù)據(jù)。所以哪怕備庫(kù)的空間總量夠,我還是懸著心,這個(gè)需求至少通過rman的異機(jī)恢復(fù)還是有難度。那么試試duplicate,當(dāng)然我們知道文件路徑可以重新修改,所以主要的問題還是在于空間,10g的duplicate需要在主庫(kù)端生成備份集,然后在備庫(kù)開啟duplicate選項(xiàng)而已。所以實(shí)現(xiàn)起來還是有難度。
??? Oracle如何通過rman的方式實(shí)現(xiàn)遠(yuǎn)程備份,這是個(gè)難題,如果是在11g可能這個(gè)問題就能夠大大化和,在10g上如何突圍呢。
假設(shè)數(shù)據(jù)庫(kù)主庫(kù)為primary,備庫(kù)為standby
則我在備庫(kù)嘗試使用下面的方式,我們?cè)?home/oracle/下創(chuàng)建一個(gè)臨時(shí)目錄tmp,看看到底能夠在備庫(kù)環(huán)境生成。
rman target sys/oracle@primary
COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf';
運(yùn)行時(shí)提示文件無法創(chuàng)建,因?yàn)樵诜?wù)器主庫(kù)環(huán)境沒有這個(gè)目錄。所以初戰(zhàn)失敗。
然后嘗試使用duplicate的方式。
rman target sys/oracle@primaryauxiliary sys/oracle@standby nocatalog
這種方式是我們一直使用的方式,當(dāng)然這種方式?jīng)]有給我?guī)砣魏误@喜,依舊是在當(dāng)前環(huán)境不大適合。
在備庫(kù)端我們可以這么試試。
rman target sys/oracle@standby auxiliary sys/oracle@primary? nocatalog
COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf';
這種方式就可以順利在備庫(kù)端生成系統(tǒng)表空間的數(shù)據(jù)文件了。
所以我們的改進(jìn)方式就是參考這個(gè)主要的 解決思路。
當(dāng)然我們可以在主庫(kù)生成相應(yīng)的命令,直接批量執(zhí)行即可。假設(shè)我們存在下面的數(shù)據(jù)文件。
?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';
以其中的兩個(gè)數(shù)據(jù)文件為例,日志如下:
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
在主備庫(kù)數(shù)據(jù)文件路徑的情況下,就批量生成一個(gè)文件就可以立刻在備庫(kù)使用。如果確認(rèn)生成沒有問題,直接拷貝覆蓋原來備庫(kù)文件,或者直接替換已有的備庫(kù)數(shù)據(jù)文件即可。
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中其實(shí)已經(jīng)可以這樣使用duplicate的方式來,但是Oracle卻沒有建議這么用,我覺得主要的考慮還是安全吧。
10g中這樣用: Duplicate target database for standby nofilenamecheck ;
11g中這樣用:Duplicate target database for standby from active database nofilenamecheck
可以看出主要的差別還是一個(gè)active的字樣,我看到有很多人搭建Data Guard在主庫(kù)端duplicate,這樣在10g就很不規(guī)范而且有一定的風(fēng)險(xiǎn)。
盡管在11g做了這樣的改進(jìn),但是還是很容易混淆關(guān)系,這也是我猜測(cè)的原因,當(dāng)然手頭的工作就是嘗試在這種情況下盡快使用新方案搭建Data Guard環(huán)境。
當(dāng)然對(duì)于很多老司機(jī)來說,這已經(jīng)不是什么新方法了。
總結(jié)
以上是生活随笔為你收集整理的Data Guard搭建困境突围(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring学习总结(18)——Spri
- 下一篇: Swift 3 新特性