oracle的dataguard建立其實並不難,尤其是在11g中可以用
rman active duplicate建立standby
後,dataguard的建立變得非常的簡單便捷,如果熟悉dataguard的各項引數的意義和用法後,基本上乙個指令碼就能完成。
下面是我總結的一些dataguard的要點和幾個關鍵引數詳解。
要點1:listener.ora與tnsnames.ora
listener.ora是配置靜態監聽的檔案,下面是乙個最標準的靜態監聽配置檔案
listener =
( description =
(address = (host = 192.168.0.88)(protocol = tcp)(port = 1521))
)sid_list_listener =
( sid_list =
(sid_desc =
(global_dbname = ceshi)
(oracle_home=/opt/oracle/product/11.2.0)
(sid_name = test)))
listener是監聽名,sid_list_listener部分的global_dbname表示向外提供的服務名(service_name)(可以不需要,但建議
加上去,並且把它和sid_name設成一樣的,這裡為了方便表述,有所區別);
sid_name是提供註冊的例項名(sid或instance_name)。
下面是與之對應的tnsnames.ora配置
testtns =
(description =
(address_list =
(address = (protocol = tcp)(host = 192.168.0.88)(port = 1521))
)(connect_data =
(service_name = ceshi)或(sid=test)
(server = dedicated)——可有可無))
這裡tnsname是testtns,在後面需要用到,所以起個好名字好記又好區分。
在主備庫都設好監聽,配置好tns後,相互用tnsping一下對方,看能否通訊。
要點2:主庫的log_archive_dest_n(n>=2)
這是dataguard重做傳輸的主要引數,通常在主庫上發揮作用。log_archive_dest_n引數有許多,其中log_archive_dest_1是本地
歸檔目的地,從log_archive_dest_2開始設定備庫目的地。下面是乙個簡單的log_archive_dest_2示例:
log_archive_dest_2=『service=testtns lgwr async valid_for(online_logfiles,primary_role) db_unique_name=test'
這裡testtns就是在tnsnames.ora配置的tnsname,lgwr在以前版本中有用到,現在完全可以忽視不用,這裡是為了習慣
是非同步傳輸的意思,與之相反的是sync,也就是同步傳輸,async是預設模式,沒必要非要指定它,為了理解,我們還是加上,valid_for
裡面有兩個引數,第乙個是日誌檔案的值,第二個是角色值,它是乙個必需的引數,可以使用預設,但強烈不建議你使用預設,如果你在設
立乙個備庫的目的地,強烈建議你想我一樣設定,它表示當歸檔orl檔案,並且當前資料庫是主庫角色時
log_archive_dest_2
有效;db_unique_name,預設值是跟主庫的
db_unique_name,也就是說
如果主備庫的
db_unique_name一樣,你也可以不設定,但建議還是設一下,這個
db_unique_name與下面說到的log_archive_config是有
相關性的,主要是為了rac資料庫。
log_archive_dest_2
還有其他一些其他引數,不設定不影響使用。所以假設你要在建立dataguard備機,
上面的足夠了,而且你在主(備)庫設定的時候,只需要替換service和db_unique_name即可.
有了log_archive_dest_n,主庫就會主動去聯絡備庫,讓備庫接收歸檔日誌。
要點3:備庫fal_server和fal_client
前面的log_archive_dest_n,主庫可以給備庫傳正在歸檔的日誌,但如果備庫缺少一些早些時候的歸檔日誌怎麼辦?首先,主庫是不會去
查備庫卻不缺少歸檔日誌的,備庫才會自己查,自己缺少哪些歸檔日誌,所以這個時候備庫要去主庫找歸檔日誌,那這個主庫是誰?
這個時候fal_server就起作用了,它會告訴備庫這個主庫的tnsname,備庫根據這個tnsname找到主庫,並告訴主庫自己缺少的歸檔日誌。備庫
告訴主庫自己缺少歸檔日誌時,會同時把fal_client的值告訴主庫,這個fal_client的值要對應主庫的tnsname.ora檔案裡的備庫的tnsname
,這樣主庫就知道自己該往哪傳,傳哪些歸檔日誌了。事實上如果我同時有兩個甚至更多備庫,其中乙個備庫缺少歸檔日誌,除了去主庫找外,
也可以去其他備庫找,也就是說
fal_server的值可以是多個,例如:
fal_server='primary,standby2',當然
fal_client有且只有乙個。
其他引數的推薦設定:
standby_file_management='auto'——用於物理備庫,表示在主庫新增資料檔案時,備庫也同時新增
db_unique_name
——資料庫唯一名稱,主備庫一樣都沒關係,最好和sid一樣,好記
log_archive_config——列舉所有主備庫的
db_unique_name,把所有主備庫的
db_unique_name加上去就行了
例如:log_archive_config=『dg_config=(test,test1)'
有了上面這幾個引數,基本上就足夠了,前提是主備庫的目錄一致(資料檔案目錄,日誌檔案目錄,歸檔日誌檔案目錄呀都一樣)。話說,做
備庫不就是要一樣的嗎。所以做備庫最好這些目錄都跟主庫一致。
記住3個要點和下面的3個引數,做dataguard時就會心中有數,不會這也錯,那也錯。在我做dataguard的過程中,99%的出錯都跟上面
的設定有關係。
搭建物理Data Guard的簡要步驟
搭建物理data guard的詳細步驟在網際網路上已經有很多了,本節就不再詳述。相關流程簡述如下 1 檢查主備主機的作業系統是否支援搭建data guard。2 檢查主備資料庫之間的網路頻寬是否滿足要求,生產庫產生的歸檔量越大,頻寬要求越高。3 檢查備份端的儲存的空間和效能是否滿足要求,生產庫產生的...
RDS 跨區建立唯讀備庫
目前,在aws的console中,無法建立跨區的唯讀庫 類似上圖所示,只能建立本區內的唯讀庫。其實aws rds是支援跨區建立唯讀庫的,但我們需要從awscli命令列中操作。需要注意的是 要在與源資料庫例項不同的 aws 區域中建立乙個加密的唯讀副本,源資料庫例項必須加密。還需要額外注意以下事項 您...
建立資料庫物理模式
建資料庫 單檔案 create database newdb on primary name newdb,filename d sqldata newdb.mdf size 10mb,maxsize 2gb,filegrowth 20 log on name newdblog,filename d ...