久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Oracle dataGuard專題:利用冷備創(chuàng)建standby

 浸心閣 2015-04-07

本專題相關(guān)鏈接:

 Oracle dataGuard專題:Rman通過duplicate創(chuàng)建standby:http://ixdba.blog.51cto.com/2895551/654797

Oracle dataGuard專題:利用rman創(chuàng)建standby:http://ixdba.blog.51cto.com/2895551/642906

dataGuard是oracle提供的一種數(shù)據(jù)庫(kù)級(jí)別的HA方案,,最主要功能是冗災(zāi),、數(shù)據(jù)保護(hù)、故障恢復(fù)等,。當(dāng)然根據(jù)配置的不同,,DATA GUARD還可以具備以下特點(diǎn):高可用,、性能提升、數(shù)據(jù)保護(hù)以及故障恢復(fù)等,。
DATA GUARD可以分為物理STANDBY和邏輯STANDBY兩種,。二者的最大差別在于,物理STANDBY應(yīng)用的是主庫(kù)的歸檔日志,,而邏輯STANDBY應(yīng)用的是主庫(kù)的歸檔日志中提取的SQL語(yǔ)句,。由于二者這一點(diǎn)的區(qū)別,決定了物理STANDBY無論從邏輯結(jié)構(gòu)和物理結(jié)構(gòu)都是和主庫(kù)保持一致,,而邏輯STANDBY則只需保證邏輯結(jié)構(gòu)一致,,且邏輯STANDBY在應(yīng)用SQL語(yǔ)句的時(shí)候,數(shù)據(jù)庫(kù)可以處于打開的狀態(tài),。

 如果從DATA GUARD的保護(hù)模式分,,可以分為三種不同的保護(hù)模式:
最大性能(maximize performance):這是data guard默認(rèn)的保護(hù)模式。primay上的事務(wù)commit前不需要從standby上收到反饋信息,,該模式在primary故障時(shí)可能丟失數(shù)據(jù),,但standby對(duì)primary的性能影響最小。
最大可用(maximize availability):在正常情況下,,最大可用模式和最大保護(hù)模式一樣,;在standby不可用時(shí),最大可用模式會(huì)自動(dòng)降低成最大性能模式,,所以standby故障不會(huì)導(dǎo)致primay不可用,。只要至少有一個(gè)standby可用的情況下,即使primary down機(jī),,也能保證不丟失數(shù)據(jù),。
最大保護(hù)(maximize protection):最高級(jí)別的保護(hù)模式。primay上的事務(wù)在commit前必須確認(rèn)redo已經(jīng)傳遞到至少一個(gè)standby上,,如果所有standby不可用,,則primary會(huì)掛起。該模式能保證零數(shù)據(jù)丟失,。

下面就通過實(shí)例演示下如何利用冷備創(chuàng)建standby database,。

一、演示環(huán)境說明
primary server:
CentOS Linux4.4 + oracle 10.2.0.1
ORACLE_SID:orcl
主庫(kù)ip:192.168.60.144
ORACLE_HOME: /free/oracle/product/10.2.0/db_1/
standby server:
SUSE Linux9 + oracle 10.2.0.1
ORACLE_SID:orcl
備庫(kù)ip:192.168.60.253
ORACLE_HOME: /free/oracle/product/10.2.0/db_1/

二,、配置步驟
首先,,裝好primary和standby上的oracle,建SID同為orcl的庫(kù),,所有設(shè)置完全相同,。然后停止shutdown兩臺(tái)上的oracle,將primary上的所有數(shù)據(jù)文件,控制文件,,redo文件和password文件都copy到standby機(jī)器的相應(yīng)位置,。這樣,我們就擁有了兩臺(tái)完全一樣的oracle server,。

1. 在primary database上設(shè)置force logging
SQL>alter database force logging;
2. 修改primary databse的初始化參數(shù),,主要增加參數(shù)如下:
*.control_files='/free/oracle/oradata/orcl/control01.ctl','/free/oracle/oradata/orcl/control02.ctl','/free/oracle/oradata/orcl/control03.ctl'
*.service_names=’primary’  #這個(gè)參數(shù)指定了主庫(kù)的service name
*.log_archive_config='DG_CONFIG=(PRIMAYR,STANDBY)'
*.DB_UNIQUE_NAME='PRIMARY'
*.LOG_ARCHIVE_DEST_1= 'LOCATION=/free/oracle/orabak'
*.LOG_ARCHIVE_DEST_2= 'SERVICE=STANDBY VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STANDBY LGWR SYNC AFFIRM'  #如果不指定REOPEN,默認(rèn)為300
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.LOG_ARCHIVE_FORMAT='arc%s%t%r.arc'
*.FAL_SERVER=' STANDBY '
*.FAL_CLIENT=' PRIMARY '
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.standby_archive_dest='/free/oracle/orabak'

LOCK_NAME_SPACE
---這是參數(shù)當(dāng)主數(shù)據(jù)庫(kù)和備用數(shù)據(jù)在同一臺(tái)機(jī)上時(shí)要設(shè)該參數(shù),,設(shè)為備用數(shù)據(jù)庫(kù)的SID

3. 設(shè)置primary database為archivelog模式
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open,;
4. 在primary database上創(chuàng)建standby database的控制文件
SQL>shutdown immedaite;
SQL>startup mount;   
SQL>alter database create standby controlfile as ‘/free/oracle/oradata/orcl/controlstandby.ctl’
SQL>alter database open;
然后將該controlfile復(fù)制到standby server的對(duì)應(yīng)位置。

5. 修改standby databse的初始化參數(shù)
*.service_names=’standby’ #這個(gè)參數(shù)指定了備庫(kù)的service name
*.control_files='/free/oracle/oradata/orcl/controlstandby.ctl'
*.log_archive_config='DG_CONFIG=(PRIMARY,STANDBY)'
*.LOG_ARCHIVE_DEST_1= 'LOCATION=/free/oracle/orabak VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STANDBY'
*.LOG_ARCHIVE_DEST_2= 'SERVICE=primary VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRIMARY LGWR SYNC AFFIRM REOPEN=10' #如果不指定REOPEN,,默認(rèn)為300
#*.LOG_ARCHIVE_DEST_2= 'SERVICE=standby VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STANDBY LGWR SYNC REOPEN=10'
*.db_unique_name='STANDBY'
*.FAL_CLIENT='STANDBY'
*.FAL_SERVER='PRIMARY'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.STANDBY_ARCHIVE_DEST='/free/oracle/orabak'
*.STANDBY_FILE_MANAGEMENT='AUTO'
DB_FILE_NAME_CONVERT ----當(dāng)primary和standby的數(shù)據(jù)文件路徑不一致時(shí)使用
LOG_FILE_NAME_CONVERT ----當(dāng)primary和standby的數(shù)據(jù)文件路徑不一致時(shí)使用
LOCK_NAME_SPACE ----當(dāng)主數(shù)據(jù)庫(kù)和備用數(shù)據(jù)在同一臺(tái)機(jī)上時(shí)設(shè)為備用數(shù)據(jù)庫(kù)的SID
具體參數(shù)的說明請(qǐng)參考o(jì)racle在線文檔

6. 設(shè)置primary database和standby database的tnsnames.ora,主備庫(kù)兩者的tnsnames.ora配置文件相同,。
primary =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.60.144)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = primary) #這個(gè)primayr為主庫(kù)的 service name
)
)

standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.60.253)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby) #這個(gè)standby為備庫(kù)的service name
)
)

7. 啟動(dòng)standby database

SQL>startup nomount
SQL>alter database mount standby database; #執(zhí)行此命令后備庫(kù)會(huì)處于手動(dòng)恢復(fù)狀態(tài)。

8. 啟動(dòng)primary database
SQL>startup

9. 啟動(dòng)standby database到recover manage模式

SQL>alter database recover managed standby database disconnect,;
#執(zhí)行此命令后,,備庫(kù)會(huì)切換到自動(dòng)恢復(fù)模式。
如果要啟動(dòng)到實(shí)時(shí)日志應(yīng)用模式
SQL>alter database recover managed standby database using current logfile; #切換備庫(kù)到適時(shí)應(yīng)用日志模式,,即real-time apply,。執(zhí)行這個(gè)命令后光標(biāo)會(huì)停止在那里。
或者alter database recover managed standby database using current logfile disconnect from session;  #執(zhí)行這個(gè)命令后,,會(huì)切斷這個(gè)session,,執(zhí)行的功能與上面相同。

但是之前需要先創(chuàng)建standby logfile,使用如下命令創(chuàng)建standby logfile:

alter database add standby logfile group 4
‘/free/oracle/oradata/orcl st_redo4.log’ size 50M
同時(shí)還需要修改主庫(kù)的參數(shù)LOG_ARCHIVE_DEST_2的配置
由于事先已經(jīng)配置好了備庫(kù)的LOG_ARCHIVE_DEST_2參數(shù),,這里無需在進(jìn)行配置,。
關(guān)于standby redo file文件,一些特性簡(jiǎn)單說明如下:
當(dāng)dataguard運(yùn)行在max protection 或max availability時(shí),,因?yàn)楸仨毷褂肔GWR日志傳輸方式 即時(shí)的將日志傳送到standby,,因此需要用到standby redo log。
其實(shí)主庫(kù)產(chǎn)生的日志會(huì)同步寫到主庫(kù)的redo log 和備庫(kù)的standby redo log上,。同時(shí)主庫(kù)日志切換時(shí),,standby redo log也會(huì)進(jìn)行日志切換,因此standby redo log中的信息是與主庫(kù)的redo file是 適時(shí)同步的,,在備庫(kù)進(jìn)行恢復(fù)的時(shí)候,,是利用standby redo log進(jìn)行的,因此也可以說standby redo log是主庫(kù)和備庫(kù)直接同步的一個(gè)橋梁,。
創(chuàng)建的standby redo log大小必須和主庫(kù)的redo大小相等,,創(chuàng)建的組數(shù)量 建議比主庫(kù)的redo file多一組,這樣做的目的是日后備用,,這也是oracle官方的建議,。
但是根據(jù)我的測(cè)試,我創(chuàng)建四組standby redo log,真正利用的只有兩組,。
10. 切換standby database到read only模式

SQL> alter database recover managed standby database cancel;    #首先取消備庫(kù)的自動(dòng)恢復(fù)模式
SQL>alter database open read only;
如果要切換回recover manage模式
SQL> alter database recover managed standby database disconnect from session;

三、功能切換
Switchover狀態(tài)切換

首先在primary上操作:
1. 首先查看切換狀態(tài):
SQL>select switchover_status from v$database
switchover_status的值如果是To standby,,可以直接switchover,,如果是sessions active, 則需要在switchover的命令后面加上    ,。
2. 執(zhí)行切換主庫(kù)到備庫(kù):
SQL>alter database commit to switchover to physical standby;
3.關(guān)閉數(shù)據(jù)庫(kù):
SQL>shutdown immediate;
4. 啟動(dòng)到mount狀態(tài):
SQL>startup mount;

然后在standby上操作
1.查看切換狀態(tài):
SQL> select switchover_status from v$database,;
switchover_status的值如果是To primary,可以直接switchover,,如果是sessions active,, 則需要在switchover的命令后面加上with session shutdown
2. 執(zhí)行切換備庫(kù)到主庫(kù):
SQL>alter database commit to switchover to primary;
3.關(guān)閉備庫(kù):
SQL>shutdown immediate;
4.重新啟動(dòng)備庫(kù)
SQL>startup;

小竅門:要想順利的實(shí)現(xiàn)switchover,最好在每臺(tái)server上都同時(shí)設(shè)置好primary和standby的一些初始化參數(shù),,雖然其中一些參數(shù)只有在primary或者standby其中之一上起作用,。

Failover狀態(tài)切換
在備庫(kù)上進(jìn)行切換:
1.首先停止備庫(kù)的自動(dòng)恢復(fù)狀態(tài):
SQL>alter database recover managed standby database finish;
如果沒有使用過standby redo log的話執(zhí)行:
SQL>alter database recover managed standby database finish skip standby logfile;
2.切換備庫(kù)到主庫(kù):
SQL>alter database commit to switchover to primary;
3. 關(guān)閉數(shù)據(jù)庫(kù):
SQL>shutdown immediate;
4. 啟動(dòng)數(shù)據(jù)庫(kù):
SQL>startup;
Active狀態(tài)切換:
Active是從8i延續(xù)過來的,其實(shí)不建議采用:

在備庫(kù)上執(zhí)行切換:
1:alter database recover managed standby database cancel;
2:alter database activate standby database;
3:shutdown immediate

總結(jié)一下Failover 和 Switchover 的區(qū)別

在9i 的dataguad環(huán)境中:
1:執(zhí)行Switch Over 必須是Primary 正常,,并且是必須Primary 主動(dòng)先Switch成 standby.然后standby 才能switch 成primary,。
2:如果需要作成primary出問題,standby 能接管的話,,必須作 failover ,而不是SwitchOver,。

Failover
將主數(shù)據(jù)庫(kù)offline,備用數(shù)據(jù)庫(kù)online,,這種操作由系統(tǒng)和軟件失敗引起,。 即使在備用數(shù)據(jù)庫(kù)上應(yīng)用重做日志,也可能出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象,,除非備用數(shù)據(jù)庫(kù)運(yùn)行在 guaranteed protection 模式,。
原主數(shù)據(jù)庫(kù)重新使用時(shí)必須重新啟動(dòng)實(shí)例。
其它的備用數(shù)據(jù)庫(kù)也需重新啟動(dòng)實(shí)例,。

Switchover
故意將主數(shù)據(jù)庫(kù)offline,,而將另一備用數(shù)據(jù)庫(kù)online,它能夠切換到備用數(shù)據(jù)庫(kù)而不需同步操作,。如:可使用 Switchover 完成系統(tǒng)的平滑升級(jí),。 即使在備用數(shù)據(jù)庫(kù)上不應(yīng)用重做日志,也不會(huì)造成數(shù)據(jù)的丟失,。
數(shù)據(jù)庫(kù)不需重新啟動(dòng)實(shí)例,。這使主數(shù)據(jù)庫(kù)幾乎能立即在備用數(shù)據(jù)庫(kù)上恢復(fù)它的功能,因此可經(jīng)常進(jìn)行定期維護(hù)而不需中斷操作,。
Failover和Switchover的區(qū)別為:
當(dāng)Failover發(fā)生,,備用數(shù)據(jù)庫(kù)切換為主數(shù)據(jù)庫(kù)之后,它丟失了備用數(shù)據(jù)庫(kù)的所有能力,也就是說,,不能再返回到備用模式,;而Switchover可以,備用數(shù)據(jù)庫(kù)可切換為主數(shù)據(jù)庫(kù),,也可從主數(shù)據(jù)庫(kù)再切換回備用數(shù)據(jù)庫(kù),。

四、相關(guān)視圖
v$archive_dest
v$archive_dest_status
v$log_history
v$archvied_log
v$managed_standby
v$archive_gap

五,、常見問題

1. 日志無法傳送
SQL>select dest_name,status,error from v$archive_dest;
察看相應(yīng)的歸檔路徑的狀態(tài)是否valid,,否則根據(jù)error信息進(jìn)行處理
2. 無法使用alter database重命名data file
   在standby上,當(dāng)設(shè)置standby_file_management為auto時(shí),,不允許下列操作
alter database rename
alter database add/drop logfile
alter database add/drop standby logfile member
alter database create datafile as
3. switchover失敗
SQL>alter database commit to switchover to physical standby
錯(cuò)誤:ORA-01093:alter database close only permitted with no session connected
可以察看引起該錯(cuò)誤的活動(dòng)session
SQL> select sid,process,program from v$session where type='USER' and
sid<>(select distinct sid from v$mystat);
然后根據(jù)查出的sid結(jié)合v$session視圖最后用
alter system kill session ‘sid,serial’ 來kill掉進(jìn)程,,斷開該session
或者使用如下命令來做switchover
SQL>alter database commit to switchover to physical standby with session shutdown;
4. 在standby database的read only模式下做report時(shí)出現(xiàn)錯(cuò)誤:
ora-01220:file base sort illegal before database is open.
可能原因:standby database沒有temporary tablespace
5:當(dāng)主機(jī)和備機(jī)在運(yùn)行過程中,把備機(jī)停下來,,主機(jī)的歸檔日志將不能傳到備機(jī),,當(dāng)把備機(jī)服務(wù)起來后,主機(jī)的歸檔日志也不能傳到備機(jī),,需要把主機(jī)的所有服務(wù)都重啟一次才可以傳日志,。
請(qǐng)問為什么需要把主機(jī)要重啟一次呢?有沒有不需要重啟主機(jī)就可以解決此問題呢,?
發(fā)生這種情況時(shí),,核查幾處:
(1). show parameter log_archive_dest;
(2). select REOPEN_SECS,MAX_FAILURE from V$ARCHIVE_DEST;
察看是否是因?yàn)橛捎趥錂C(jī)沒有開機(jī),,造成primary node無法正常傳送archived log,,并且達(dá)到了最大允許的失敗次數(shù)。如果是這樣,,可以通過alter system set log_archive_dest...來重置屬性值,,恢復(fù)日志的正常傳送。
也可以手工傳送相關(guān)的日志到備機(jī),,
     對(duì)于物理standby:ALTER DATABASE REGISTER LOGFILE '/xxx/xxx/arcr_xxx.arc'
     對(duì)于邏輯standby: ALTER DATABASE REGISTER LOGICAL LOGFILE '/xxx/xxx/arcr_xxx.arc'

(3). 執(zhí)行SELECT MESSAGE FROM V$DATAGUARD_STATUS; 察看相關(guān)信息,,還有根據(jù)dataguard的不同類型來察看相關(guān)的view來確定當(dāng)前的狀態(tài),具體參見dataguard的官方文檔,。
 

本文出自 “技術(shù)成就夢(mèng)想” 博客,,請(qǐng)務(wù)必保留此出處http://ixdba.blog.51cto.com/2895551/641184

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多