1. 程式人生 > >Oracle 11G DataGuard ORA-16086問題修復詳細過程

Oracle 11G DataGuard ORA-16086問題修復詳細過程

1,問題描述,standby從庫沒有應用redo日誌
Tue Jul 22 09:05:07 2014
RFS[8852]: Assigned to RFS process 12956
RFS[8852]: Identified database type as 'physical standby': Client is ARCH pid 16028
Tue Jul 22 09:05:09 2014
RFS[8853]: Assigned to RFS process 12958
RFS[8853]: Identified database type as 'physical standby': Client is LGWR SYNC pid 15950

Primary database is in MAXIMUM AVAILABILITY mode
Standby controlfile consistent with primary
Standby controlfile consistent with primary
RFS[8853]: No standby redo logfiles selected (reason:7)
Errors in file /oracle/app/oracle/diag/rdbms/pddgunq/powerdes/trace/powerdes_rfs_12958.trc:
ORA-16086: Redo data cannot be written to the standby redo log

Tue Jul 22 09:11:07 2014
RFS[8854]: Assigned to RFS process 12976
RFS[8854]: Identified database type as 'physical standby': Client is ARCH pid 16028
Tue Jul 22 09:11:07 2014
RFS[8855]: Assigned to RFS process 12978
RFS[8855]: Identified database type as 'physical standby': Client is LGWR SYNC pid 15950
Primary database is in MAXIMUM AVAILABILITY mode

Standby controlfile consistent with primary
Standby controlfile consistent with primary
RFS[8855]: No standby redo logfiles selected (reason:7)
Errors in file /oracle/app/oracle/diag/rdbms/pddgunq/powerdes/trace/powerdes_rfs_12978.trc:
ORA-16086: Redo data cannot be written to the standby redo log

2,在從庫檢視redo日誌資訊
SQL> show parameter log_file_name_convert;                                                                                                                                                     

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert     string /home/oradata/powerdes, /home/
oradata/powerdes
SQL>                                                                                                                                                                                           
SQL>                                                                                                                                                                                           
SQL> select group#,member from v$logfile;                                                                                                                                                      

    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
3
/home/oradata/powerdes/redo03.log

2
/home/oradata/powerdes/redo02.log

1
/home/oradata/powerdes/redo01.log


SQL> select GROUP#,FIRST_CHANGE#,SEQUENCE#,STATUS from v$log;                                                                                                                                  

    GROUP# FIRST_CHANGE#  SEQUENCE# STATUS
---------- ------------- ---------- ----------------
1    1.0533E+10      23999 CLEARING_CURRENT
2    1.0533E+10      23997 CLEARING
3    1.0533E+10      23998 CLEARING

SQL>                        


SQL> select group#,bytes/1024/1024,members,status from v$log;                                                                                                                                  

    GROUP# BYTES/1024/1024    MEMBERS STATUS
---------- --------------- ---------- ----------------
1 50    1 CLEARING
2 50    1 CLEARING_CURRENT
3 50    1 CLEARING

SQL> 

先暫停redo log日誌:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

執行更新日誌操作:
alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;

SQL> alter database clear logfile group 1;                                                                                                                                                     
alter database clear logfile group 1
*
ERROR at line 1:
ORA-01156: recovery or flashback in progress may need access to files

報錯是因為MFS程序鎖定日誌了,所以需要先停應用再更新日誌操作
alter database recover managed standby database cancel;
SQL> alter database recover managed standby database cancel;                                                                                                                                   
Database altered.
SQL> alter database clear logfile group 1;                                                                                                                                                                                                                                                                                                                                                    
Database altered.
SQL> alter database clear logfile group 2;                                                                                                                                                     
Database altered.
SQL> alter database clear logfile group 3;                                                                                                                                                     
Database altered.
SQL>   

然後再執行redo應用
SQL> alter database recover managed standby database disconnect from session;                                                                                                                  
Database altered.
SQL>

檢視redo應用情況
SQL> select name,creator,sequence#,applied,completion_time from v$archived_log; 
都是NO

3,重建redo log
再檢視下看一下現在的redo log狀態
select group#,bytes/1024/1024,members,status from v$log;
SQL> select group#,bytes/1024/1024,members,status from v$log;                                                                                                                                  


    GROUP# BYTES/1024/1024    MEMBERS STATUS
---------- --------------- ---------- ----------------
1 50    1 UNUSED
2 50    1 CLEARING
3 50    1 CLEARING_CURRENT

redo log損壞,但是clear不管用,因為是備庫 read-only不讓切換日誌
重建redo日誌檔案,先停redo應用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

alter database add logfile group 4 ('/home/oradata/powerdes/redo04.log') size 50M;
alter database add logfile group 5 ('/home/oradata/powerdes/redo05.log') size 50M;
alter database add logfile group 6 ('/home/oradata/powerdes/redo06.log') size 50M;

日誌管理是自動的,所以不能操作,要先設定成手動管理的
SQL> alter system set standby_file_management='manual'; 
System altered.
SQL> alter database add logfile group 4 ('/home/oradata/powerdes/redo04.log') size 50M; 
Database altered.
SQL> alter database add logfile group 5 ('/home/oradata/powerdes/redo05.log') size 50M; 
Database altered.
SQL> alter database add logfile group 6 ('/home/oradata/powerdes/redo06.log') size 50M;  
Database altered.
SQL> 

檢視一下日誌狀態
SQL> select group#,bytes/1024/1024,members,status from v$log;                                                                                                                                  
    GROUP# BYTES/1024/1024    MEMBERS STATUS
---------- --------------- ---------- ----------------
1 50    1 CLEARING_CURRENT
2 50    1 CLEARING
3 50    1 CLEARING
4 50    1 UNUSED
5 50    1 UNUSED
6 50    1 UNUSED

6 rows selected.

清空redo日誌組
SQL>   
alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;

SQL>                                                                                                                                                                                           
alter database clear logfile group 1;                                                                                                                                                          
alter database clear logfile group 2;                                                                                                                                                          
alter database clear logfile group 3;                                                                                                                                                          

Database altered.

SQL>                                                                                                                                                                                           
Database altered.

SQL>                                                                                                                                                                                           
Database altered.

SQL> 

檢視redo 日誌組資訊
SQL> select group#,bytes/1024/1024,members,status from v$log;                                                                                                                                  
    GROUP# BYTES/1024/1024    MEMBERS STATUS
---------- --------------- ---------- ----------------
1 50    1 CURRENT
2 50    1 UNUSED
3 50    1 UNUSED
4 50    1 UNUSED
5 50    1 UNUSED
6 50    1 UNUSED

6 rows selected.

alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;

SQL>                                                                                                                                                                                           
alter database drop logfile group 1;                                                                                                                                                           
alter database drop logfile group 2;                                                                                                                                                           
alter database drop logfile group 3;                                                                                                                                                           

Database altered.

SQL>                                                                                                                                                                                           
Database altered.

SQL> alter database drop logfile group 3
*
ERROR at line 1:
ORA-01623: log 3 is current log for instance powerdes (thread 1) - cannot drop
ORA-00312: online log 3 thread 1: '/home/oradata/powerdes/redo03.log'

SQL>   

4,檢查歸檔檔案是否完整
從庫redo log損壞了的話,只要從庫的歸檔日誌在,還是可以修復的,不用重新做Standy。
從庫上執行check:
SQL> SELECT DISTINCT THREAD#,max(SEQUENCE#) OVER(PARTITION BY THREAD#) A FROM V$ARCHIVED_LOG;                                                                                                  
   THREAD#    A
---------- ----------
1 23826
SQL> 

主庫上執行check:
SQL> SELECT DISTINCT THREAD#,max(SEQUENCE#) OVER(PARTITION BY THREAD#) A FROM V$ARCHIVED_LOG;                                                                                                  
   THREAD#    A
---------- ----------
1 24022

SQL>  
取出primary和standy庫上各執行緒已經歸檔檔案最大序列號,看到兩者不相同,必須將多出的序列號對應的歸檔檔案複製到standy庫。
也就是說主庫從庫的歸檔日誌相差蠻大的。

如何檢視歸檔路徑,最高可用模式的時候 dg會盡力的讓日誌應用到standby
去查一下
SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
從庫:
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;                                                                                                                       
no rows selected
SQL>

主庫:
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;                                                                                                                       
no rows selected
SQL> 
表名從庫的standby log都空的,需要重建standby log。

5,確定歸檔日誌有沒有寫到從庫:
所以用的lgwr程序,用lgwr程序進行傳輸日誌,而其他模式用arch傳輸日誌是等到日誌寫到歸檔的過程中傳輸過去,最近你沒有改過從庫的保護模式吧。
主庫上檢視下redo log的大小:
select GROUP#,BYTES/1024/1024,STATUS from v$log;
SQL> select GROUP#,BYTES/1024/1024,STATUS from v$log;                                                                                                                                          

相關推薦

Oracle 11G DataGuard ORA-16086問題修復詳細過程

1,問題描述,standby從庫沒有應用redo日誌Tue Jul 22 09:05:07 2014RFS[8852]: Assigned to RFS process 12956RFS[8852]: Identified database type as 'physical

oracle 11g dataguard 出現ORA-16143: 終端恢復過程中或之後不允許進行 RFS 連線解決方法

oracle 11g 備庫不小心執行了“ Alter database recover managed standby database finish; ”,出現ORA-16143: 終端恢復過程中或

oracle 11g錯誤ora-01033:oracle initialization or shutdown in progress解決辦法

想要 文件 area .net total rop shutdown 一個 pro 原文出自:http://blog.csdn.net/liverliu/article/details/6410287 一、首先:問題的產生原因,先前我在f:/llh/目錄創建的一個book

oracle 11g dataguard之dgmgrl

dgmgrl snapshot環境概述:搭好Dataguard,搭建參考:http://blog.51cto.com/snowhill/1923591源:db_name:db rac備:db_name:sbdb1 單機 1 啟用dgmgrl相關參數: dg_broker_startdg_broker_con

Oracle 11g Dataguard 暫停物理備庫的日誌傳輸

oracleOracle 11g Dataguard 暫停物理備庫的日誌傳輸分類: Oracle2017-07-18 10:03:17這兩天生產端的日誌產生過多導致災備端的歸檔日誌目錄滿的現象,在清除災備端的日誌後發現log_archive_dest_2處於error狀態,需要將其enable。在實際生產系統

【轉】Oracle 11g Dataguard 參數詳解

異步模式 正常 10g enable ffi sys 過程 tnsnames async 轉自:https://www.jb51.net/article/52269.htm 這篇文章主要介紹了Oracle 11g Dataguard參數詳解,包含了獨立參數、主庫參數、備

oracle 11G dataguard 恢復

檢查主備機的sys 密碼是否一致,忘記密碼可以修改,同步 。alter user sys identified by xxx; orapwd file=oraxxx.ora password=admin entries=40 force=y;  檢查靜態tnsnames.ora 和

Oracle 11g Dataguard引數詳解

這篇文章主要介紹了Oracle 11g Dataguard引數詳解,包含了獨立引數、主庫引數、備庫引數的詳細說明,需要的朋友可以參考下 注:本文譯自《Oracle Data Guard 11g Handbook》 Page 78 – Page 88 就Data Guard(後面都寫成DG)來

Oracle資料庫的啟動和關閉詳細過程

一、資料庫開啟  startup資料庫正常啟動 1.startup nomount   啟動 Oracle DB 例項:NOMOUNT ,建立sga,建立了alert日誌,用於create db,create controlfile 啟動資料庫例項時,請選擇例項啟動時所處

Oracle 11g DataGuard Physical Standby 測試環境搭建 For windows

參考了官方文件和網上資料,自己也做了一下在windows平臺上關於Oracle 11g的測試環境搭建,把其中的過程和碰見問題後怎麼解決的記錄下來跟大家分享。 測試環境: 作業系統平臺:Windows7 旗艦版64位 Oracle版本:11.2.0.1.0 32bit (32

Oracle 11g Dataguard 基礎介紹

Dataguard介紹     Dataguard作為專門保護Oracle資料,可提供最高級別的資料保護和可用性的同時,使Oracle保持最卓越的效能。     Oracle Dataguard的配置為一個primary資料庫和一個或者多個standby資料庫的組合。Dat

ORACLE 11G 中採用rman備份異機恢復資料庫詳細過程

場景:        有一個生產庫的使用者下面所有的表都不見了,懷疑人為被刪除了,現在需要用備份去恢復下,找出原來的表,線上是oracle dataguard環境,有全庫備份檔案,準備去測試庫恢復一下。1,從生產庫上copy好全備份檔案恢復資料庫需要準備的檔案:rman完整備

ORACLE 11g 通過ASH結合AWR實戰解決cpu高負載的詳細過程

select * from ( select this_.dly_note_id as dly1_396_0_, this_.created_center_cd as created2_396_0_, this_.created_date as created3_396_0_, this_.created

ORACLE 11G 搭建dataguard詳細步驟(所有操作總結)

http://blog.itpub.net/26230597/viewspace-1432637/ https://wenku.baidu.com/view/c323c0a30975f46526d3e103.html

ORACLE11G 將dataguard的rman備份恢復到測試環境的單機oracle中的詳細過程

1,從生產庫上copy好全備份檔案1.1,檢視引數檔案資訊RMAN> list backup of spfile;從一大推list資訊找出最近的備份資訊/pddata2/oracle/backup/data/ctl_auto/c-3391761643-20150820-

zabbix3.0.2 監控oracle高可用dataguard的standby庫狀態詳細過程

1,判斷standby複製實時的標準判斷標準是,通過sqlplus執行select sequence#,applied from v$archived_log order by sequence#;如果全是YES則表明standby庫已經實時複製了,primary和stand

oracle 11g expdp impdp詳細使用方法

無法登錄 目錄 expdp like tempfile spa ase 平臺 ads 11G中有個新特性,當表無數據時,不分配segment,以節省空間 解決方法如下圖: 二、oracle10g以後提供了expdp/impdp工具,同樣可以解決此問題 1、導出expdp工

ORACLE 11G DB RAC ORA-00257archiver error解決辦法

orcale11g rac   ora00257   處理asm磁盤空間不足問題ORA-00257archiver error解決辦法1.之前有處理單機過oracle 11.2.0.4歸檔日誌磁盤空間不足的問題 ,但是沒有處理過ORACLE RAC的歸檔日誌磁盤空間不足的問題 所以沒

centos 7 下面安裝oracle 11g r2 過程分享

java blog tails 方法 執行 article 訪問外網 修改 並且 本人對LINUX等很多還不熟悉,如果有不對的地方還請各位指正。謝謝。 打算學習下ORACLE,RMAN備份與還原功能,所以安裝了虛擬機,用的是centos7 X86_64-1611版本,ora

ORACLE 11G在存儲過程裏面遍歷遊標, 調用job任務定時運行

epo pla style rop fontsize || ont iss subst ORACLE存儲過程裏遊標遍歷、調用job定時運行 1,第一種使用For 循環for循環是比較簡單有用的方法。 首先。它會自己主動open和close遊標。攻克了你忘記打開或關閉遊標