【DATAGUARD 學習】管理影響備庫的主庫事件
版本 11g 主庫 ORCL 備庫 TESTDG
1新增資料檔案或表空間
2刪除資料檔案或表空間
3使用可傳輸表空間
4重新命名資料檔案
5新增或刪除重做日誌
6使用NOLOGGING或unrecoverable子句操作ddl或dml
7更改初始化引數
一 新增資料檔案或表空間
1 standby_file_management =AUTO 時
主庫上的操作
ORCL>
ORCL>col tsname for a20
ORCL>col dfname for a50
ORCL>select ts.name tsname,df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- --------------------------------------------------
SYSTEM F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
SYSAUX F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
USERS F:\ORCL\ORADATA\ORCL\USERS01.DBF
EXAMPLE F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
TESTDG>alter database recover managed standby database disconnect from session;
資料庫已更改。
TESTDG>select ts.name tsname , df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- -------------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
--建立表空間或資料檔案
ORCL>create tablespace dg_tbs datafile 'f:\orcl\oradata\orcl\dg_tbs01.dbf'
size 100 m;
表空間已建立。
ORCL>select ts.name tsname,df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- ---------------------------------------
SYSTEM F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
SYSAUX F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
USERS F:\ORCL\ORADATA\ORCL\USERS01.DBF
EXAMPLE F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
DG_TBS F:\ORCL\ORADATA\ORCL\DG_TBS01.DBF
已選擇6行。
ORCL>alter system switch logfile;
系統已更改。
TESTDG>--applied redo logs
TESTDG>select ts.name tsname , df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- --------------------------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS01.DBF ---已成功應用redo
已選擇6行。
---當standby_file_management=manual時,在主庫端新增資料檔案
TESTDG>---設定standby_file_management =manual
TESTDG>alter system set standby_file_management=manual;
系統已更改。
ORCL>alter tablespace dg_tbs add datafile
'f:\orcl\oradata\orcl\dg_tbs02.dbf' size 100m;
表空間已更改。
ORCL>select ts.name tsname,df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- ----------------------------------------
SYSTEM F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
SYSAUX F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
USERS F:\ORCL\ORADATA\ORCL\USERS01.DBF
EXAMPLE F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
DG_TBS F:\ORCL\ORADATA\ORCL\DG_TBS01.DBF
DG_TBS F:\ORCL\ORADATA\ORCL\DG_TBS02.DBF
已選擇7行。
ORCL>alter system switch logfile;
系統已更改。
TESTDG>select ts.name tsname , df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
select ts.name tsname , df.name dfname
*
第 1 行出現錯誤:
ORA-01089: 正在執行立即關閉 - 不允許進行任何操作 ---
程式 ID: 2580
會話 ID: 170 序列號: 11
TESTDG>select process,status,thread#,sequence#,block#,blocks
2 from v$managed_standby;
ERROR:
ORA-03114: 未連線到 ORALCE
TESTDG>conn system/yang as sysdba
已連線。
TESTDG>select process,status,thread#,sequence#,block#,blocks
2 from v$managed_standby;
PROCESS STATUS THREAD# SEQUENCE# BLOCK# BLOCKS
--------- ------------ ---------- ---------- ---------- ----------
ARCH CONNECTED 0 0 0 0
ARCH CLOSING 1 36 2049 981
ARCH CLOSING 1 37 1 189
ARCH CLOSING 1 38 2049 1405
TESTDG>select ts.name tsname , df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- ----------------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS01.DBF
DG_TBS F:\ORCL\PRODUCT\11.1.0\DB_1\DATABASE\UNNAMED00007
已選擇7行。
TESTDG>select recovery_mode from v$archive_dest_status where dest_id =2;
RECOVERY_MODE
-----------------------
IDLE
TESTDG>--最後一條的資料檔名稱為系統自己命名的。要dba手工重新命名到正確的路徑
TESTDG>alter database create datafile 'f:\orcl\product\11.1.0\db_1\database\unnamed00007' as 'd:\oracle\testdgdata\dg_tbs02.dbf';
資料庫已更改。
TESTDG>select ts.name tsname , df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- ---------------------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS02.DBF
已選擇7行。
TESTDG>---記得上面的那個錯吧,由於自動建立的資料檔案路徑不對,應用redo資料失敗導致整個redo應用都被中止,解決了此問題後要記得啟動redo應用。
TESTDG>alter database recover managed standby database disconnect from session;
資料庫已更改。
ORCL>-- 刪除表空間
ORCL>drop tablespace dg_tbs including contents and datafiles;
表空間已刪除。
ORCL>select ts.name tsname,df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- ----------------------------------------
SYSTEM F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
SYSAUX F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
USERS F:\ORCL\ORADATA\ORCL\USERS01.DBF
EXAMPLE F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
ORCL>select sequence# from v$log;
SEQUENCE#
----------
37
38
39
ORCL>alter system switch logfile;
系統已更改。
TESTDG>--刪除表空間
TESTDG>alter system set standby_file_management=auto;
系統已更改。
TESTDG>select ts.name tsname , df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- ---------------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
----當standb_file_management=manual時,刪除表空間和資料檔案
ORCL>create tablespace dg_tbs datafile 'f:\orcl\oradata\orcl\dg_tbs01.dbf' size 10 m;
表空間已建立。
ORCL>alter system switch logfile;----使備庫應用redo。
系統已更改。
TESTDG>select ts.name tsname , df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- -----------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS01.DBF
已選擇6行。
ORCL>drop tablespace dg_tbs including contents and datafiles;
表空間已刪除。
ORCL>select ts.name tsname,df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- --------------------------------------------
SYSTEM F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
SYSAUX F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
USERS F:\ORCL\ORADATA\ORCL\USERS01.DBF
EXAMPLE F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
ORCL>alter system switch logfile;
系統已更改。
ORCL>select sequence# from v$log;
SEQUENCE#
----------
40
41
42
ORCL>alter system switch logfile;
系統已更改。
ORCL>select sequence# from v$log;
SEQUENCE#
----------
43
41
42
ORCL>alter system switch logfile;
系統已更改。
ORCL>alter system set log_archive_dest_state_2 =defer;
系統已更改。
文件上說當使在主庫使用drop tablespace including contents and datafiles語句來在主庫上同時刪除資料檔案,必須要使用standby_file_management=auto,沒有給出如果使用manual會怎麼樣,在備庫上刪除表空間時提示錯誤,因為是read only的,所以不應該在備庫上進行產生redo的操作。我做的實驗過程如下:
TESTDG>select ts.name tsname , df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- -------------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS01.DBF
已選擇6行。
TESTDG>select sequence# from v$log;
SEQUENCE#
----------
40
42
41
TESTDG>select sequence# from v$log;
SEQUENCE#
----------
43
42
41
TESTDG>drop tablespace dg_tbs include contents and datafiles;
drop tablespace dg_tbs include contents and datafiles
*
第 1 行出現錯誤:
ORA-02173: 無效的 DROP TABLESPACE 選項
TESTDG>drop tablespace dg_tbs including contents and datafiles;
drop tablespace dg_tbs including contents and datafiles
*
第 1 行出現錯誤:
ORA-01109: 資料庫未開啟
TESTDG>alter database recovery managed standby database cancel;
alter database recovery managed standby database cancel
*
第 1 行出現錯誤:
ORA-02231: ALTER DATABASE 選項缺失或無效
TESTDG>alter database recover managed standby database cancel;
alter database recover managed standby database cancel
*
第 1 行出現錯誤:
ORA-16136: 受管備用恢復未啟用
TESTDG>alter system set standby_file_management=auto;
系統已更改。
TESTDG>select process,status,thread#,sequence#,block#,blocks
2 from v$managed_standby;----檢視redo 應用情況。
PROCESS STATUS THREAD# SEQUENCE# BLOCK# BLOCKS
--------- ------------ ---------- ---------- ---------- ----------
ARCH CLOSING 1 42 1 205
ARCH CLOSING 1 39 1 758
ARCH CLOSING 1 40 1 982
ARCH CLOSING 1 41 1 304
RFS IDLE 0 0 0 0
RFS IDLE 1 43 7977 2
RFS IDLE 0 0 0 0
已選擇7行。
---在備庫上手工刪除時,提示錯誤!
TESTDG>alter database recover managed standby database cancel;
alter database recover managed standby database cancel
*
第 1 行出現錯誤:
ORA-16136: 受管備用恢復未啟用
TESTDG>alter database recover managed standby database disconnect from session;
資料庫已更改。
TESTDG>drop tablespace dg_tbs including contents and datafiles;
drop tablespace dg_tbs including contents and datafiles
*
第 1 行出現錯誤:
ORA-16000: 開啟資料庫以進行只讀訪問
TESTDG>select process ,client_process,sequence#,status from v$managed_standby;
PROCESS CLIENT_P SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH ARCH 42 CLOSING
ARCH ARCH 43 CLOSING
ARCH ARCH 40 CLOSING
ARCH ARCH 41 CLOSING
RFS UNKNOWN 0 IDLE
MRP0 N/A 44 WAIT_FOR_LOG
RFS LGWR 44 IDLE
RFS UNKNOWN 0 IDLE -----說明現在沒有在應用redo並且在等等44號歸檔redo
已選擇8行。
TESTDG>alter database recover managed standby database cancel;
資料庫已更改。
TESTDG>shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
TESTDG>exit
-----第二次開啟備庫時,重新應用redo
TESTDG>alter database recover managed standby database disconnect from session;
資料庫已更改。
TESTDG>select thread#,sequence#,applied from v$archived_log;
THREAD# SEQUENCE# APP
---------- ---------- ---
1 33 YES
1 31 YES
1 32 YES
1 34 YES
1 35 YES
1 36 YES
1 37 YES
1 38 YES
1 39 YES
1 40 YES
1 41 YES
1 42 YES
1 43 YES
1 44 YES
1 45 YES
1 46 YES
1 47 YES
1 48 YES
1 49 NO ---再次查詢時為YES,應用redo需要時間的
已選擇19行。
TESTDG>show parameter standby
NAME TYPE VALUE
------------------------------------ ----------- --------------------------
standby_archive_dest string %ORACLE_HOME%\RDBMS
standby_file_management string AUTO
TESTDG>select name from v$datafile;
NAME
---------------------------------------------------------------------------
D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
D:\ORACLE\TESTDGDATA\USERS01.DBF
D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
----發現在手工沒有刪除DG_TBS 的情況下,備庫已經成功應用了主機的日誌,刪除了表空間DG_TBS!
TESTDG>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
49
----三思的書中也是說需要手工使用系統命令刪除刪除在主機上已經被刪除的資料檔案。不過我的沒有這麼做!:
---重新命名資料檔案,主庫對資料檔案重新命名時,此修改並不會自動傳播到standby資料庫。不管是auto還是manual,都得DBA手工操作。
ORCL>create tablespace test datafile 'f:\orcl\oradata\orcl\test01.dbf' size 200m;
表空間已建立。
ORCL>select name from v$datafile;
NAME
--------------------------------------------------
F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
F:\ORCL\ORADATA\ORCL\USERS01.DBF
F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
F:\ORCL\ORADATA\ORCL\TEST01.DBF
已選擇6行。
ORCL>alter system switch logfile;
系統已更改。
---重新命名資料檔案
ORCL>alter tablespace test offline;
表空間已更改。
ORCL>host rename f:\orcl\oradata\orcl\test01.dbf test02.dbf
ORCL>alter tablespace test rename datafile
2 'f:\orcl\oradata\orcl\test01.dbf' to
3 'f:\orcl\oradata\orcl\test02.dbf';
表空間已更改。
ORCL>alter tablespace test online;
表空間已更改
ORCL>alter system switch logfile;
系統已更改。
ORCL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
51
TESTDG>select name from v$datafile;
NAME
-----------------------------------------------------------------------
D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
D:\ORACLE\TESTDGDATA\USERS01.DBF
D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
D:\ORACLE\TESTDGDATA\TEST01.DBF--沒有改變
已選擇6行。
TESTDG>select thread#,sequence#,applied from v$archived_log
2 where sequence#=51;
THREAD# SEQUENCE# APP
---------- ---------- ---
1 51 YES
---首先停止應用。
TESTDG>alter database recover managed standby database cancel;
資料庫已更改。
---手工更改名稱
TESTDG>host rename d:\oracle\testdgdata\test01.dbf test02.dbf
TESTDG>alter database rename file
2 'd:\oracle\testdgdata\test01.dbf' to
3 'd:\oracle\testdgdata\test02.dbf';
alter database rename file
*
第 1 行出現錯誤:
ORA-01511: 重新命名日誌/資料檔案時出錯
ORA-01275: 自動進行備用檔案管理時, 不允許進行 RENAME 操作。
TESTDG>alter system set standby_file_management=manual;
系統已更改。
TESTDG>alter database rename file
2 'd:\oracle\testdgdata\test01.dbf' to
3 'd:\oracle\testdgdata\test02.dbf';
資料庫已更改。
TESTDG>select name from v$datafile;
NAME
-----------------------------------------
D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
D:\ORACLE\TESTDGDATA\USERS01.DBF
D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
D:\ORACLE\TESTDGDATA\TEST02.DBF
已選擇6行。
---修改後重新開始應用redo
TESTDG>alter system set standby_file_management=auto;
系統已更改。
TESTDG>alter database recover managed standby database disconnect from session;
資料庫已更改。
ORCL>alter system switch logfile;
系統已更改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-674734/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【DATAGUARD】Oracle Dataguard物理備庫切換最佳實踐(sqlplus)OracleSQL
- Oracle資料庫由dataguard備庫引起的log file sync等待Oracle資料庫
- 【Dataguard】Oracle多租戶環境對Dataguard的影響Oracle
- Oracle-DG最大保護模式下,dg備庫出現問題對主庫有什麼影響?Oracle模式
- MySQL 5.7 主庫崩潰切備庫MySql
- NVM作為主存上對資料庫管理系統的影響資料庫
- 11 管理邏輯備庫
- 資料庫學習:許可權管理資料庫
- dg主庫建立檔案備庫未同步解決方法
- 變更OS時間對資料庫的影響資料庫
- 容器化對資料庫的效能有影響嗎?資料庫
- 磁碟排序對Oracle資料庫效能的影響PT排序Oracle資料庫
- 10 管理物理和快照備庫
- SQL資料庫備份管理SQL資料庫
- 資料庫的統計(select)確實會影響資料庫的更新(update)的資料庫
- Oracle DataGuard 主備切換 (switchover) oracle11gOracle
- 【DG】Data Guard主備庫Failove切換AI
- 【DG】Data Guard主備庫Switchover切換
- Polardb資料庫掛庫後,如何恢復主備關係資料庫
- 資料庫伺服器備份儲存更換不受任何影響的便捷操作方法資料庫伺服器
- 物理DATAGUARD庫上的KSVCREATE: PROCESS(M000)
- Oracle 11g 測試停庫對job的影響Oracle
- Postgresql MVCC架構對從庫長查詢的影響SQLMVC架構
- 聊聊虛擬化和容器對資料庫的影響資料庫
- UIResponder事件響應鏈學習筆記UI事件筆記
- Java進階學習之事件響應Java事件
- Oracle ADG 備庫新增備庫Oracle
- 萬里GreatDB資料庫的學習之路--GreatDB資料庫的管理和使用(2)資料庫
- 資料庫調優和資料遷移是如何影響資料庫的RY資料庫
- 案例:DG主庫未設定force logging導致備庫壞塊
- SQLServer2012映象主庫掛掉如何切換到映象備庫SQLServer
- Oracle 11g RAC DG備庫gv$dataguard_stats apply lag值較大OracleAPP
- 關於資料庫開啟大頁對效能的影響資料庫
- 聊聊分散式資料庫中單節點故障的影響分散式資料庫
- 亞馬遜庫存管理系統,大賣庫存管理必備軟體亞馬遜
- dataguard主備延遲多長時間的2種查詢方法
- 影像Resize方式對深度學習模型效果的影響深度學習模型
- 是什麼影響了資料庫索引選型?資料庫索引
- CIRAA:2021全球智庫影響力評價報告