Data Guard Broker系列之四:資料庫管理

fanhongjie發表於2010-12-29

轉自:http://www.dbabeta.com/2009/learn-data-guard-broker_db-management.html


[@more@]資料庫狀態管理


top資料庫狀態分類

broker管理的資料庫可以存在多種不同的狀態,在DG中扮演不同角色的資料的狀態型別也不一樣,詳細狀態如下。

Primary資料庫
  • ONLINE:預設狀態。Primary資料庫正常開啟,日誌傳送服務正常傳送日誌到Standby資料庫。
    當資料庫轉為ONLINE狀態的時候,初始化引數LOG_ARCHIVE_DEST_n和LOG_ARCHIVE_DEST_STATE_n會被自動設定以啟用日誌傳送服務,同時primary資料庫以及所有standby資料庫的LOG_ARCHIVE_CONFIG引數也會被設定,如果需要的話會根據broker配置中的資訊重新設定資料庫的保護模式,同時將資料庫開啟為讀寫模式,最後系統將做一個日誌卻換。
  • LOG-TRANSPORT-OFF:Primary資料庫正常開啟,日誌傳送服務不傳送日誌到Standby資料庫。
    當資料庫從別的狀態切換到LOG-TRANSPORT-OFF狀態的時候,引數LOG_ARCHIVE_DEST_STATE_n會被設定成FALSE,這樣到所有standby資料庫的日誌傳送將會停止,但是primary資料庫的本地歸檔操作還是正常的。
  • OFFLINE: 資料庫關閉,不再接受broker管理,重新啟動資料庫之後恢復預設狀態。
    當資料庫從別的狀態切換到OFFLINE狀態的時候,broker會關閉資料庫,當然此時資料庫無法被broker管理了,要重新啟用的話只需要重啟資料庫到MOUNT狀態就行了,broker會自動的使資料庫ONLINE。
physical Standby資料庫
  • ONLINE:預設狀態。資料庫處於MOUNT狀態,日誌恢復正常,不能進行只讀查詢。
    當資料庫裝換成ONLINE狀態,相關引數被設定以啟用日誌恢復。
  • LOG-APPLY-OFF:資料庫MOUNT,日誌恢復停止,不能進行制度查詢。
    當資料庫裝換成LOG-APPLY-OFF狀態時,如果之前資料庫ONLINE,則日誌恢復關閉,如果之後是READ-ONLY則關閉資料庫到MOUNT狀態。
  • READ-ONLY:資料庫只讀開啟,可以查詢,日誌恢復停止。
    當資料庫裝換成READ-ONLY狀態時,日誌恢復被停止,同時將資料庫開啟為只讀。
  • OFFLINE:資料庫關閉,不再接受broker管理,重新啟動資料庫之後恢復預設狀態。
    當資料庫從別的狀態切換到OFFLINE狀態的時候,broker會關閉資料庫,當然此時資料庫無法被broker管理了,要重新啟用的話只需要重啟資料庫到MOUNT狀態就行了,broker會自動的使資料庫ONLINE。

logical Standby資料庫
  • ONLINE:預設狀態。資料庫只讀開啟,日誌恢復正常。
    轉換為ONLINE狀態時,broker將開啟資料庫,同時啟用database guard以防止對錶資料的修改,同時修改SQL應用相關引數啟用SQL應用。
  • LOG-APPLY-OFF:資料庫只讀開啟,日誌恢復關。
    轉換為LOG-APPLY-OFF狀態時,broker將停止SQL應用草操作。
  • OFFLINE:資料庫關閉,不再接受broker管理,重新啟動資料庫之後恢復預設狀態。
    當資料庫從別的狀態切換到OFFLINE狀態的時候,broker會關閉資料庫,當然此時資料庫無法被broker管理了,要重新啟用的話只需要重啟資料庫到MOUNT狀態就行了,broker會自動的使資料庫ONLINE。
資料庫各種轉換路徑
資料庫各種轉換路徑


相關DGMGRL命令

1. 檢視一個資料庫當前的狀態

直接使用show database命令,然後檢視“Intended State”一項

DGMGRL> show database torcla
Database
Name: torcla
Role: PHYSICAL STANDBY
Enabled: YES
Intended State: ONLINE
Instance(s):
torcla

Current status for "torcla":SUCCESS

2. 修改資料庫的狀態

通過edit命令來修改資料庫的狀態,命令語法如下

EDIT DATABASE 'db_unique_nmae' SET STATE='database_state';

下面我們來個設定資料庫offline的操作

-- 設定我們的standby資料庫OFFLINEDGMGRL> edit database torcla set state='OFFLINE';Operation requires shutdown of instance "torcla" on database "torcla"Shutting down instance "torcla"...ORA-01109: database not open
Database dismounted.ORACLE instance shut down.
-- 此時再看資料庫的state已經是OFFLINE了
SYS@torcla> startup mountORACLE instance started.
Total System Global Area 1191182336 bytes
Fixed Size 1259312 bytesVariable Size 355207376 bytesDatabase Buffers 819200000 bytesRedo Buffers 15515648 bytesDatabase mounted.DGMGRL> show database torclaDatabase
Name: torcla
Role: PHYSICAL STANDBY
Enabled: NO
Intended State: OFFLINE
Instance(s):
torcla

Current status for "torcla":SHUTDOWN
-- 下面我們啟動下這個資料庫,然後再看資料庫的state,又變成了ONLINESYS@torcla> startup mountORACLE instance started.
Total System Global Area 1191182336 bytes
Fixed Size 1259312 bytesVariable Size 355207376 bytesDatabase Buffers 819200000 bytesRedo Buffers 15515648 bytesDatabase mounted.
DGMGRL> show database torcla
Database
Name: torcla
Role: PHYSICAL STANDBY
Enabled: YES
Intended State: ONLINE
Instance(s):
torcla

Current status for "torcla":SUCCESS

top資料庫屬性管理


top資料庫屬性分類

broker管理的資料庫屬性包含兩類:第一類是可監控的屬性,第二類是可配置的屬性。

可監控屬性
顧名思義,可監控的屬性是能在broker的介面中看到屬性的設定值,但是不能夠修改。
可配置屬性
可配置屬性既能監控,同時還能夠動態的修改。可配置屬性在資料庫處於任何狀態的是很都能夠修改,不過當資料庫處於OFFLINE狀態或者是DISABLE狀態的時候,屬性的修改會先記錄到broker配置檔案中,在資料庫broker被啟用之後會被應用到據庫中。

對於可配置的資料庫屬性,broker會保證啟用了broker的資料庫它在broker配置檔案後中記錄的資料庫的屬性和資料庫執行所使用的引數是一致的,但這也有兩種情況:

  • 如果對應的資料庫引數是可以動態更新的,那麼broker配置檔案、SGA、spfile這三個地方所涉及的屬性值將會是一樣的。
  • 如果對應的資料庫引數不能動態更新,那麼在資料庫重啟之前broker配置檔案、SGA這兩個地方的引數值是一樣的,spfile中引數值要在資料庫重新啟動之後才能與broker配置檔案值一致。


顯示/修改資料庫屬性

1. 同show database verbose命令可以檢視資料庫當前的屬性設定,值顯示為“(monitor)”的自然就是可監控的屬性了,其他的屬性都屬於可配置的。

DGMGRL> show database verbose torcla
Database
Name: torcla
Role: PHYSICAL STANDBY
Enabled: YES
Intended State: ONLINE
Instance(s):
torcla


Properties:
InitialConnectIdentifier = 'torcla.mycompany'

LogXptMode = 'SYNC'
Dependency = ''
DelayMins = '0'
Binding = 'OPTIONAL'
MaxFailure = '0'
MaxConnections = '1'
ReopenSecs = '300'
NetTimeout = '180'
LogShipping = 'ON'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyParallel = 'AUTO'
StandbyFileManagement = 'MANUAL'
ArchiveLagTarget = '3600'
LogArchiveMaxProcesses = '2'
LogArchiveMinSucceedDest = '1'
DbFileNameConvert = 'torclb, torcla'
LogFileNameConvert = 'torclb, torcla'
FastStartFailoverTarget = ''
StatusReport = '(monitor)'
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
HostName = 'orainst.desktop.mycompany.com'
SidName = 'torcla'
LocalListenerAddress = '(ADDRESS=(PROTOCOL=tcp)(HOST=orainst.desktop.mycompany.com)(PORT=8000))'
StandbyArchiveLocation = '/data1/dg/databases/torcla/redolog'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = 'log-%s-%t-%r.arc'
LatestLog = '(monitor)'
TopWaitEvents = '(monitor)'
Current status for "torcla":SUCCESS

2. 通過edit database命令修改資料庫屬性,基本語法如下

EDIT DATABASE db_unique_name SET PROPERTY 'property_name'=property_value;

下面實戰一下,修改下資料庫的NetTimeout屬性

-- 先看下當前的值DGMGRL> show database torcla NetTimeout
NetTimeout = '60'
-- 將60修改成120DGMGRL> edit database torcla set property 'NetTimeout'=120;Property "NetTimeout" updated
-- 再看torclb的broker日誌檔案,可以看到broker在修改log_archive_dest_2值DG 2009-08-31-07:21:25 0 2 0 Executing SQL [alter system set log_archive_dest_2 = 'service="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=orainst.desktop.mycompany.com)(PORT=8000)))(CONNECT_DATA=(SERVICE_NAME=torcla_XPT.mycompany)(INSTANCE_NAME=torcla)(SERVER=dedicated)))"', ' LGWR SYNC AFFIRM delay=0 OPTIONAL max_failure=0 max_connections=1 reopen=300 db_unique_name="torcla" register net_timeout=120 valid_for=(online_logfile,primary_role)']
-- 這個時候torcla的broker日誌檔案也有動作,是在同步broker配置……
DG 2009-08-31-07:21:32 0 2 0 DRCX: Start receiving metadata file: /data1/dg/10.2.0.2/A10db/dbs/dr2torcla.datDG 2009-08-31-07:21:32 0 2 0 DRCX: Receiving block #1, 86 blocks.


top日誌傳送管理

使用broker配置日誌傳送管理需要涉及下面這些可配置的資料庫屬性。

LogShipping
決定是否傳送日誌到指定的資料庫,和primary資料庫的狀態LOG-TRANSPORT-OFF不同的是LOG-TRANSPORT-OFF會停止向所有的standby資料庫傳送日誌。
  • ON:傳送日誌到指定資料庫
  • OFF:不傳送日誌到指定資料庫
LogXptMode
這個屬性設定的是LOG_ARCHIVE_DEST_n中傳送模式那部分
  • SYNC:相當於LGWR, SYNC, AFFIRM
  • ASYNC:相當於LGWR, ASYNC, NOAFFIRM
  • ARCH:相當於ARCH
StandbyArchiveLocation
指定standby資料庫上從primary接收的歸檔日誌的存放位置,和standby自己本地的日誌歸檔不一樣,standby資料庫本地的日誌歸檔由LOG_ARCHIVE_DEST_n指定。當然這個值最好設定和本地歸檔位置一樣最好。
AlternateLocation
這個屬性是和StandbyArchiveLocation配合使用,如果設定了這兒屬性,一旦StandbyArchiveLocation指定的目錄因為磁碟滿之類的原因fail了的話資料庫就會歸檔日誌存放在這個屬性指定的位置上。
Dependency
這個引數設定一個standby資料庫的歸檔日誌依賴於別的那個standby或者是primary資料庫,這個引數在多個資料庫放在一個機器上的是很很有用,可以保證不用再同一個機器上存好幾份同樣的歸檔日誌。

除了上面幾個重要的設定之外還有Binding、MaxFailure、NetTimeout、ReopenSecs這幾個屬性,這些屬性會在資料庫加入broker的時候自動匯入,通常不需要修改。


top日誌應用管理

日誌應用相關的可配置引數有下面這些。

同時適應於Redo Apply和SQL Apply的
  • ApplyInstanceTimeout
  • DelayMins
  • PreferredApplyInstance
只適用於Redo Apply的屬性
  • ApplyParallel
只適用於SQL Apply的屬性
  • LsbyASkipTxnCfgPr
  • LsbyDSkipTxnCfgPr
  • LsbyASkipCfgPr
  • LsbyDSkipCfgPr
  • LsbyASkipErrorCfgPr
  • LsbyDSkipErrorCfgPr
  • LsbyMaxEventsRecorded
  • LsbyTxnConsistency
  • LsbyRecordSkipErrors
  • LsbyRecordSkipDdl
  • LsbyRecordAppliedDdl
  • LsbyMaxSga
  • LsbyMaxServers


top資料庫保護模式


top設定資料庫的保護模式

保護模式與其他設定之間的關係

保護模式日誌傳送模式是否需要standby日誌?是否能和fast-start failover一起用
MAXPROTECTIONSYNC
MAXAVAILABILITYSYNC
MAXPERFORMANCEASYNC或ARCHASYNC時是

使用broker來設定保護模式也是通過edit configuration來操作

-- 先看下當前的設定,是MaxPerformanceDGMGRL> show configuration
Configuration
Name: FSF
Enabled: YES
Protection Mode: MaxPerformance
Fast-Start Failover: DISABLED
Databases:
torcla - Physical standby database

torclb - Primary database
-- 然後我們將它變更為MaxAvailabilityDGMGRL> edit configuration set protection mode as maxavailability;Operation requires shutdown of instance "torclb" on database "torclb"Shutting down instance "torclb"...Database closed.Database dismounted.ORACLE instance shut down.Operation requires startup of instance "torclb" on database "torclb"Starting instance "torclb"...ORACLE instance started.Database mounted.DGMGRL> show configuration
Configuration
Name: FSF
Enabled: YES
Protection Mode: MaxAvailability
Fast-Start Failover: DISABLED
Databases:
torcla - Physical standby database

torclb - Primary database
Current status for "FSF":SUCCESS

broker還是很聰明的,會自動的關閉primary資料庫然後將保護模式修改為MaxAvailability。


top不同的保護模式對broker操作的影響

1. 當升級保護模式的時候,broker會自動的重啟primary資料庫。降低保護模式級別的時候是不需要重啟資料庫的。
2. switchover操作不會改變當前的保護模式。
3. 做手工的failover之後,如果原來保護模式是MaxProtection的話會被自動降級為MaxPerformance;如果是其他模式的話則保持不變。
4. fast-start failover所作的自動的failover操作不會改變資料庫的保護模式。
5. 做disable操作或remove database之前,broker會檢查disable之後是否還能保證滿足當前的保護模式,如果不能的話disable/remove會失敗。
6. fast-start failover啟用的是很不能做disable configuration操作。


top資料庫監控狀態檢視

broker會自動的收集同一個配置之下的所有資料庫的健康狀態,管理員只需要通過簡單的show命令就可以檢視資料庫的狀態了。命令格式如下

show database db_unique_name statue_name

可用的狀態命令列表如下:

StatusReport
顯示所有broker檢查到的問題
LogXptStatus
顯示日誌傳送的狀態
InconsistentProperties
顯示不一致的資料庫屬性
InconsistentLogXptProps
顯示不一致的日誌傳送設定

命令操作示例

DGMGRL> show database torclb statusreportSTATUS REPORT
INSTANCE_NAME SEVERITY ERROR_TEXT
torclb ERROR ORA-16737: the redo transport service for standby database "torcla" has an error
DGMGRL> show database orclt1cn_a LogXptStatusLOG TRANSPORT STATUSPRIMARY_INSTANCE_NAME STANDBY_DATABASE_NAME STATUS
torcla torclb
DGMGRL> show database torcla InconsistentPropertiesINCONSISTENT PROPERTIES
INSTANCE_NAME PROPERTY_NAME MEMORY_VALUE SPFILE_VALUE BROKER_VALUE
DGMGRL> show database torcla InconsistentLogXptPropsINCONSISTENT LOG TRANSPORT PROPERTIES
INSTANCE_NAME STANDBY_NAME PROPERTY_NAME MEMORY_VALUE BROKER_VALUE
DGMGRL>

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

相關文章