DataGuard環境下備庫RMAN-05021問題有效性解決方案
Dataguard環境作為Oracle官方重要的HA功能元件,在實踐領域有非常多的應用場景和成功案例。同任何技術一樣,在配置過程中,會出現一些問題需要解決。本文主要介紹在修改Physical Standby備份Rman引數中出現的問題和解決策略。
1、問題描述
筆者環境為11.2.0.4的Dataguard環境,兩臺伺服器配置為雙單節點的Physical Standby。在配置備庫的RMAN資訊中,出現如下問題:
RMAN> connect target sys/oracle
connected to target database: VLIFE (DBID=4207470439)
using target database control file instead of recovery catalog
RMAN> show all;
RMAN configuration parameters for database with db_unique_name URESTB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
(篇幅原因,有省略……)
RMAN> configure retention policy to recovery window of 15 days;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of configure command at 12/31/2015 08:55:16
RMAN-05021: this configuration cannot be changed for a BACKUP or STANDBY control file
從提示資訊情況看,在Standby端的RMAN配置專案是不能進行修改的。從MOS資料上看,這個問題的根源在於Standby端的控制檔案control file是一個只讀檔案。在control file中,Oracle將資料檔案、日誌(歸檔和線上)、備份資訊都儲存在其中。對於Standby端,Control File是一個只讀的檔案內容,透過常規的修改配置手段,是不能夠修改配置內容的。
2、官方兩種處理策略
在MOS ID 1519386.1中,提出了兩種潛在的處理方法。第一種處理策略是在進行備份的時候,將配置內容直接寫在備份還原操作語句中。
RMAN> list backup summary;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
61 B A A DISK 21-DEC-15 1 1 NO TAG20151221T153209
62 B F A DISK 21-DEC-15 1 1 NO TAG20151221T153322
63 B F A DISK 21-DEC-15 1 1 NO TAG20151221T153347
64 B A A DISK 31-DEC-15 1 1 NO TAG20151231T091532
65 B F A DISK 31-DEC-15 1 1 NO TAG20151231T091548
66 B A A DISK 31-DEC-15 1 1 NO TAG20151231T091606
67 B F A DISK 31-DEC-15 1 1 NO TAG20151231T091607
按照當前的一份冗餘策略,就會刪除掉12月21日的記錄。
RMAN> delete obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
using channel ORA_DISK_1
Deleting the following obsolete backups and copies:
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set 61 21-DEC-15
Backup Piece 62 21-DEC-15
/u01/app/oracle/fast_recovery_area/VLIFESB/backupset/2015_12_21/o1_mf_annnn_TAG20151221T153209_c7hbry5x_.bkp
Backup Set 62 21-DEC-15
Backup Piece 63 21-DEC-15
/u01/app/oracle/fast_recovery_area/VLIFESB/backupset/2015_12_21/o1_mf_nnndf_TAG20151221T153322_c7hbt2l2_.bkp
Backup Set 63 21-DEC-15
Backup Piece 64 21-DEC-15
/u01/app/oracle/fast_recovery_area/VLIFESB/autobackup/2015_12_21/o1_mf_s_899017209_c7hbtvxo_.bkp
Do you really want to delete the above objects (enter YES or NO)? no
直接指定obsolete視窗在RMAN命令視窗。
RMAN> delete obsolete recovery window of 5 days;
using channel ORA_DISK_1
no obsolete backups found
第二種方法是從Primary中複製處一份全新的standby control file,之前修改好RMAN引數,之後轉移到Standby中。作為新的Standby進行處理載入。
這個方案,筆者進行了詳細測試,最後沒有成功。主要原因是修改內容太多,操作步驟過於複雜。
ü 對於切換過來的Standby Control File,所有的資料檔案、線上日誌都需要重新進行定位重新命名;
ü 在調整檔名過程中,還要終止檔案自動管理功能;
ü 備庫上所有的歸檔日誌、備份資訊和同步時間點資訊,都會丟失;
基於此,筆者並不推薦使用這種方法。
3、切換Switchover解決問題
經過思考,筆者提出了一種假說。如果Control File在Standby端是不允許進行修改,但是在Primary端允許修改的話。可否進行一次有準備的Switchover動作,讓Standby端臨時性變為可以修改的Control File。修改之後再Switchover就可以了。
實驗過程如下,首先在主庫上進行角色切換動作。
SQL> select open_mode, database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
READ WRITE PRIMARY
SQL> alter database commit to switchover to standby with session shutdown;
Database altered.
SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@vLIFE-URE-OT-DB-PRIMARY ~]$ ps -ef | grep pmon
oracle 30720 30659 0 10:40 pts/0 00:00:00 grep pmon
主庫切換之後,自動停機。下面進行備庫操作。
[oracle@vLIFE-URE-OT-DB-STANDBY ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Wed Jan 13 10:38:32 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> select open_mode, database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
READ ONLY WITH APPLY PHYSICAL STANDBY
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
SQL> alter database commit to switchover to primary with session shutdown;
Database altered.
SQL> select open_mode, database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
MOUNTED PRIMARY
SQL> alter database open;
Database altered.
原來的主庫(先備庫)啟動,進行Redo Apply過程。
[oracle@vLIFE-URE-OT-DB-PRIMARY ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Wed Jan 13 10:42:37 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 2471931904 bytes
Fixed Size 2255752 bytes
Variable Size 738198648 bytes
Database Buffers 1711276032 bytes
Redo Buffers 20201472 bytes
Database mounted.
SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.
--日誌傳輸正常。
SQL> select STATUS from v$archive_dest_status;
STATUS
---------
VALID
VALID
INACTIVE
修改原備庫RMAN專案。
[oracle@vLIFE-URE-OT-DB-STANDBY trace]$ rman nocatalog
Recovery Manager: Release 11.2.0.4.0 - Production on Wed Jan 13 10:48:47 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
RMAN> connect target /
connected to target database: VLIFE (DBID=4207470439)
using target database control file instead of recovery catalog
RMAN> show all;
RMAN configuration parameters for database with db_unique_name VLIFESB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> configure retention policy to recovery window of 15 days;
new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS;
new RMAN configuration parameters are successfully stored
RMAN> show all;
RMAN configuration parameters for database with db_unique_name VLIFESB are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
下面就可以使用相同的方法將原來的Primary和Standby關係切換回來。由於篇幅所限,不進行詳細說明。操作後,修改的引數生效。
[oracle@vLIFE-URE-OT-DB-STANDBY trace]$ rman nocatalog
Recovery Manager: Release 11.2.0.4.0 - Production on Wed Jan 13 11:11:18 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
RMAN> connect target /
connected to target database: VLIFE (DBID=4207470439)
using target database control file instead of recovery catalog
RMAN> show all;
RMAN configuration parameters for database with db_unique_name VLIFESB are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
3、結論
綜合上面的三種方法,理論上都能夠解決我們面臨的實際問題。但是在實踐環境,特別是投產系統中,我們要從系統停機視窗、備份方案可用性和操作複雜性等多個角度進行綜合評估,作出最好的判斷。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-1976242/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解決所有環境問題
- RAC和Dataguard環境下主備庫切換演練模板
- Oracle10g RAC環境下DataGuard備庫搭建例項Oracle
- Oracle10g RAC環境下DataGuard備庫搭建例項-eygleOracle
- webpack(1)安裝環境與解決環境問題Web
- 用conda安裝庫時遇到環境查詢失敗問題解決方案
- laravel線上環境表單驗證重定向問題解決方案Laravel
- CentOS環境下mysql遠端連線和問題解決CentOSMySql
- Oracle10g RAC環境下 DataGuard備庫搭建例項-3-eygleOracle
- Oracle10g RAC環境下 DataGuard備庫搭建例項-2-eygleOracle
- Oracle10g RAC環境下 DataGuard備庫搭建例項-1-eygleOracle
- 有贊環境解決方案
- Fabric 環境搭建遇到問題及解決
- RAC環境下dataguard的搭建
- Oracle10g RAC環境下 DataGuard備庫搭建例項-4-自己補Oracle
- 分散式環境下利用快取解決重複性問題分散式快取
- windows環境下學會使用conda 建立虛擬環境,解決python版本與庫不相容問題WindowsPython
- 【問題解決】單機搭建dataguard的問題
- 多執行緒環境下 PyQtGraph 繪畫解決方案執行緒QT
- Laravel 在 Docker 環境下訪問 storage 靜態資源 404 問題解決LaravelDocker
- ERP環境下,企業庫存管理有哪些問題?如何解決?
- Java環境變數配置的最佳實踐和常見問題解決方案Java變數
- Oracle DataGuard環境主備庫日誌組數和大小調整Oracle
- mac php環境終極解決方案MacPHP
- 行者APP適配國外環境問題解決APP
- Windows 10 下搭建 Homestead 環境 Vagrant up 所遇到的問題及解決Windows
- k8s 環境下Cannot assign requested address問題解決K8S
- PHP環境配置-虛擬機器配置及問題解決(VM下的NAT)PHP虛擬機
- 【PyCharm】解決虛擬環境pip無法使用問題PyCharm
- freebsd開發環境解決方案(轉)開發環境
- redhat環境下vnc使用若干問題RedhatVNC
- ORACLE RAC資料庫配置Dataguard環境(3)Oracle資料庫
- ORACLE RAC資料庫配置Dataguard環境(2)Oracle資料庫
- ORACLE RAC資料庫配置Dataguard環境(1)Oracle資料庫
- 吉特倉庫管理系統-.NET4.0環境安裝不上問題解決
- 【環境踩坑】ubuntu下jupyter的環境設定問題Ubuntu
- oracle RAC 環境解決sequence 不一致問題Oracle
- 跨域問題,解決方案 – CORS方案跨域CORS