這篇文章主要講解了“Oracle的快照standby有什么特點”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Oracle的快照standby有什么特點”吧!
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供豐鎮(zhèn)網(wǎng)站建設(shè)、豐鎮(zhèn)做網(wǎng)站、豐鎮(zhèn)網(wǎng)站設(shè)計、豐鎮(zhèn)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、豐鎮(zhèn)企業(yè)網(wǎng)站模板建站服務(wù),十多年豐鎮(zhèn)做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
眾所周知,Oracle的standby數(shù)據(jù)庫有三種模式:物理standby數(shù)據(jù)庫、邏輯standby數(shù)據(jù)庫和快照standby數(shù)據(jù)庫。在這里主要講述快照standby數(shù)據(jù)庫的特點,數(shù)據(jù)庫版本為11gR2。
一、快照standby數(shù)據(jù)庫的特點
快照standby數(shù)據(jù)庫有如下特點:
1、能在讀寫模式打開,是完全可更新的standby數(shù)據(jù)庫
2、從主數(shù)據(jù)庫接收相關(guān)日志,但不應(yīng)用
3、當(dāng)轉(zhuǎn)換為物理standby數(shù)據(jù)庫時,首先會拋棄所有之前的更新,然后應(yīng)用接收到的redo數(shù)據(jù)
4、不能作為switchver或者failover的目標(biāo)。在執(zhí)行角色轉(zhuǎn)換之前,必須首先轉(zhuǎn)換為物理standby數(shù)據(jù)庫
5、在最大保護Data Guard配置中,快照standby數(shù)據(jù)庫不能是唯一的standby數(shù)據(jù)庫。
注意:使用Flashback Database技術(shù)的任何操作都是不可逆的,F(xiàn)lashback Database將阻止一個快照standby轉(zhuǎn)換為物理standby
二、快照standby數(shù)據(jù)庫的搭建
1、物理standby數(shù)據(jù)庫搭建
快照standby數(shù)據(jù)庫由物理standby數(shù)據(jù)庫轉(zhuǎn)換而來。因此首先搭建物理standby數(shù)據(jù)庫,過程略。
2、將物理standby數(shù)據(jù)庫轉(zhuǎn)換為快照standby數(shù)據(jù)庫
1)主庫上查看目的地的數(shù)據(jù)庫模式、恢復(fù)模式和保護模式
SQL> select dest_id,database_mode,recovery_mode,protection_mode from v$archive_dest_status where dest_id = 2;
DEST_ID DATABASE_MODE RECOVERY_MODE PROTECTION_MODE
---------- --------------- ----------------------- --------------------
2 OPEN_READ-ONLY MANAGED REAL TIME APPLY MAXIMUM PERFORMANCE
可看到standby數(shù)據(jù)庫以只讀方式打開,在最高可用性級別實時應(yīng)用redo
2)停止物理standby數(shù)據(jù)庫的Redo Apply
SQL> alter database recover managed standby database cancel;
Database altered.
3)如果物理standby數(shù)據(jù)庫是RAC,則只保留一個實例,其他關(guān)閉。本環(huán)境中物理standby數(shù)據(jù)庫是單實例。
4)確保閃回恢復(fù)區(qū)被配置
SQL> show parameter db_recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /opt/app/oracle/fast_recovery_area
db_recovery_file_dest_size big integer 4182M
否則在轉(zhuǎn)換時會報錯:
ORA-38784: Cannot create restore point 'SNAPSHOT_STANDBY_REQUIRED_10/24/2018 10:41:21'.
ORA-38786: Recovery area is not enabled.
5)將物理standby數(shù)據(jù)庫轉(zhuǎn)換為快照standby數(shù)據(jù)庫
備庫上執(zhí)行:
SQL> alter database convert to snapshot standby;
Database altered.
可看到數(shù)據(jù)庫創(chuàng)建了一個還原點:
SQL> select name,storage_size from v$restore_point;
NAME STORAGE_SIZE
----------------------------------------------- ------------
SNAPSHOT_STANDBY_REQUIRED_10/24/2018 10:43:28 1073741824
此時數(shù)據(jù)庫處于mounted狀態(tài):
SQL> select name,
2 database_role,
3 switchover_status,
4 open_mode,
5 protection_mode
6 from v$database;
NAME DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE PROTECTION_MODE
-------------------- -------------------- ------------------------------ -------------------- --------------------
BDDEV2 SNAPSHOT STANDBY NOT ALLOWED MOUNTED MAXIMUM PERFORMANCE
6)打開備庫
SQL> select name,
2 database_role,
3 switchover_status,
4 open_mode,
5 protection_mode
6 from v$database;
此時備庫已轉(zhuǎn)換完成:
NAME DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE PROTECTION_MODE
-------------------- -------------------- ------------------------------ -------------------- --------------------
BDDEV2 SNAPSHOT STANDBY NOT ALLOWED READ WRITE MAXIMUM PERFORMANCE
三、快照standby轉(zhuǎn)換為物理standby
1.將備庫重啟到mount模式
SQL> startup force mount
ORACLE instance started.
2.備庫執(zhí)行語句,轉(zhuǎn)換為物理standby
SQL> alter database convert to physical standby;
Database altered.
轉(zhuǎn)換后數(shù)據(jù)庫被卸載,需要重啟
3.重啟數(shù)據(jù)庫
SQL> startup force;
ORACLE instance started.
4.恢復(fù)redo應(yīng)用
SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.
SQL> select name,
2 database_role,
3 switchover_status,
4 open_mode,
5 protection_mode
6 from v$database;
NAME DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE PROTECTION_MODE
-------------------- -------------------- ------------------------------ -------------------- --------------------
BDDEV2 PHYSICAL STANDBY RECOVERY NEEDED READ ONLY MAXIMUM PERFORMANCE
四、快照standby數(shù)據(jù)庫測試
1.測試是否可讀寫
1)對表scott.tb_test進行更新:
SQL> delete from scott.tb_test where object_id = 20;
1 row deleted.
2)刪除表scott.tb_test:
SQL> drop table scott.tb_test purge;
Table dropped.
此時表scott.tb_test在備庫中已經(jīng)不存在了,但在主庫中還存在
3)創(chuàng)建新表
SQL> create table scott.tb_test2(id int);
Table created.
2.測試是否能接收日志且不應(yīng)用
主庫:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/app/oracle/archivelog/
Oldest online log sequence 77
Next log sequence to archive 79
Current log sequence 79
可看到主庫當(dāng)前日志序號為79
備庫:
SQL> SELECT PROCESS,
2 PID,
3 STATUS,
4 SEQUENCE#,
5 DELAY_MINS
6 FROM V$MANAGED_STANDBY;
PROCESS PID STATUS SEQUENCE# DELAY_MINS
------------------------------ ---------- -------------------- ---------- ----------
ARCH 25422 CLOSING 78 0
ARCH 25425 CONNECTED 0 0
ARCH 25427 CLOSING 76 0
ARCH 25429 CLOSING 77 0
RFS 26020 IDLE 0 0
RFS 26023 IDLE 0 0
RFS 26026 IDLE 79 0
可看到備庫RFS進程正在接收的redo序號也為79,因此備庫此時可以接收日志;備庫中MRP進程沒有啟動,因此可斷定此時日志沒有應(yīng)用
3.將快照standby轉(zhuǎn)換為物理standby,看scott.tb_test是否能恢復(fù)
按照三中的步驟,將快照standby轉(zhuǎn)換為物理standby,此時查看備庫中是否有scott.tb_test:
SQL> select count(1) from scott.tb_test;
COUNT(1)
----------
86415
查看之前在備庫建的表scott.tb_test2還是否存在:
SQL> desc scott.tb_test2
ERROR:
ORA-04043: object scott.tb_test2 does not exist
綜上,說明快照standby轉(zhuǎn)換到物理standby時,會拋棄在快照standby狀態(tài)時所做的更改。
感謝各位的閱讀,以上就是“Oracle的快照standby有什么特點”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Oracle的快照standby有什么特點這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!