Oracle的快照standby
眾所周知,Oracle的standby資料庫有三種模式:物理standby資料庫、邏輯standby資料庫和快照standby資料庫。在這裡主要講述快照standby資料庫的特點,資料庫版本為11gR2。
一、快照standby資料庫的特點
快照standby資料庫有如下特點:
1、能在讀寫模式開啟,是完全可更新的standby資料庫
2、從主資料庫接收相關日誌,但不應用
3、當轉換為物理standby資料庫時,首先會拋棄所有之前的更新,然後應用接收到的redo資料
4、不能作為switchver或者failover的目標。在執行角色轉換之前,必須首先轉換為物理standby資料庫
5、在最大保護Data Guard配置中,快照standby資料庫不能是唯一的standby資料庫。
注意:使用Flashback Database技術的任何操作都是不可逆的,Flashback Database將阻止一個快照standby轉換為物理standby
二、快照standby資料庫的搭建
1、物理standby資料庫搭建
快照standby資料庫由物理standby資料庫轉換而來。因此首先搭建物理standby資料庫,過程略。
2、將物理standby資料庫轉換為快照standby資料庫
1)主庫上檢視目的地的資料庫模式、恢復模式和保護模式
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資料庫以只讀方式開啟,在最高可用性級別實時應用redo
2)停止物理standby資料庫的Redo Apply
SQL> alter database recover managed standby database cancel;
Database altered.
3)如果物理standby資料庫是RAC,則只保留一個例項,其他關閉。本環境中物理standby資料庫是單例項。
4)確保閃回恢復區被配置
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
否則在轉換時會報錯:
ORA-38784: Cannot create restore point 'SNAPSHOT_STANDBY_REQUIRED_10/24/2018 10:41:21'.
ORA-38786: Recovery area is not enabled.
5)將物理standby資料庫轉換為快照standby資料庫
備庫上執行:
SQL> alter database convert to snapshot standby;
Database altered.
可看到資料庫建立了一個還原點:
SQL> select name,storage_size from v$restore_point;
NAME STORAGE_SIZE
----------------------------------------------- ------------
SNAPSHOT_STANDBY_REQUIRED_10/24/2018 10:43:28 1073741824
此時資料庫處於mounted狀態:
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;
此時備庫已轉換完成:
NAME DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE PROTECTION_MODE
-------------------- -------------------- ------------------------------ -------------------- --------------------
BDDEV2 SNAPSHOT STANDBY NOT ALLOWED READ WRITE MAXIMUM PERFORMANCE
三、快照standby轉換為物理standby
1.將備庫重啟到mount模式
SQL> startup force mount
ORACLE instance started.
2.備庫執行語句,轉換為物理standby
SQL> alter database convert to physical standby;
Database altered.
轉換後資料庫被解除安裝,需要重啟
3.重啟資料庫
SQL> startup force;
ORACLE instance started.
4.恢復redo應用
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資料庫測試
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在備庫中已經不存在了,但在主庫中還存在
3)建立新表
SQL> create table scott.tb_test2(id int);
Table created.
2.測試是否能接收日誌且不應用
主庫:
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
可看到主庫當前日誌序號為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程式沒有啟動,因此可斷定此時日誌沒有應用
3.將快照standby轉換為物理standby,看scott.tb_test是否能恢復
按照三中的步驟,將快照standby轉換為物理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轉換到物理standby時,會拋棄在快照standby狀態時所做的更改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31544156/viewspace-2217333/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- snapshot standby快照備庫角色
- 建立oracle快照的步驟Oracle
- Oracle physical standbyOracle
- 獨立開啟Oracle的Standby庫Oracle
- ORACLE10G 物理standby轉為邏輯standbyOracle
- Oracle DG Standby Database型別OracleDatabase型別
- Oracle DG建立Physical Standby DatabaseOracleDatabase
- Oracle cascading standby ParametersOracle
- oracle Physical Standby failover stepOracleAI
- Oracle Standby系統相關Oracle
- oracle 之dataguard standby 切換Oracle
- Oracle Standby資料庫建立Oracle資料庫
- Oracle 9I dataguard(standby)Oracle
- 【ASK_ORACLE】Oracle Data Guard(四)快照備庫的概念和優勢Oracle
- oracle awr快照點不記錄問題Oracle
- Oracle AWR II -- 歷史快照保留時間Oracle
- Oracle Dataguard Standby Redo Log的兩個實驗Oracle
- oracle 11g中的snapshot standby特性Oracle
- Oracle DG建立Logical Standby DatabaseOracleDatabase
- Oracle10g RAC配置standbyOracle
- 建立Local Physical Standby Oracle9i standby 資料庫筆記Oracle資料庫筆記
- Oracle11g生成手動的快照報告報錯Oracle
- Oracle AWR無法生成快照(ORA-32701)Oracle
- 快照是什麼?揭祕儲存快照的實現
- Oracle Standby 以及其中的引數解釋 (zt)Oracle
- Oracle physical standby中的邏輯備份(exp命令)Oracle
- 聊聊Oracle 11g的Snapshot Standby Database(上)OracleDatabase
- 聊聊Oracle 11g的Snapshot Standby Database(下)OracleDatabase
- ORACLE DUPLICATE建立物理standby資料庫Oracle資料庫
- 【DataGuard】Oracle 11g physical standby switchoverOracle
- Oracle10G Physical Standby Database setupOracleDatabase
- 建立Oracle 11g logical standbyOracle
- Oracle Standby系統管理與維護Oracle
- Oracle10g logical standby 建立Oracle
- Create Logical Standby For Oracle 10GOracle 10g
- Oracle10g_RAC_Standby_MAA 3.0Oracle
- Oracle 11g Cross platform Active StandbyOracleROSPlatform
- Oracle Standby Redo Log實驗兩則Oracle