ORACLE 11G DataGuard Failover後如何修復standby庫
failover後的問題場景:
由於做failover測試,一個standby已經被我變成了primary庫,如何將這個新的primary庫(原來的standby)變回來重新成為standby
兩個都是primary,p1,p2,如何將一個primary庫1設定成p1,而另外一個primary庫p2設定成p1的standby庫呢?
1,問題描述
原來的primary庫:
SQL> select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
READ WRITE PRIMARY
SQL>
新的做了failover變成了primary(原來是standby庫)p2,
SQL> select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
READ WRITE PRIMARY
SQL>
除了重新clone做standby外,還有別的辦法將p2重新變成p1的standby呢?
比較簡單的方法是,備庫開啟flashback database
然後在failover以後,透過flashback回退到切換前的時間點
如果沒有開啟的話,大概只能重新克隆做備庫了
2,解決方案
去standby上檢視下資料庫是否開啟了,
SQL> SELECT FLASHBACK_ON FROM v$database;
FLASHBACK_ON
------------------
NO
SQL>
閃回沒有開啟,物理dg一般不開閃回,而且一般oracle資料庫預設閃回都不開啟,需要手動開啟。
物理dg方便重建,但是redo應用不能及時更新。
只能重新進行clone重建。
3,選擇clone重新搭建standby
3.1,先確認primary庫處於歸檔模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 362
Next log sequence to archive 364
Current log sequence 364
SQL>
3.2,新增standby檔案
因為以前已經是dg模式,所以standby檔案一直處於工作狀態
select * from v$logfile order by 1;
3.3 生成引數檔案
生成pfile
create pfile from spfile;
shutdown immediate;
檢查引數檔案,因為是在曾經的dg環境重建,所以引數檔案不需要做太大的修改,例行檢查一下OK。
vim $ORACLE_HOME/dbs/initpowerdes.ora
*.db_unique_name=pdunq
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=powerdesXDB)'
*.fal_client='pdunq'
*.fal_server='pdunq_dg'
*.standby_file_management='AUTO'
*.db_file_name_convert='/home/oradata/powerdes','/home/oradata/pwerdes'
*.log_file_name_convert='/home/oradata/powerdes','/home/oradata/powerdes'
*.log_archive_config='DG_CONFIG=(pdunq,pdunq_dg)'
*.log_archive_dest_2='SERVICE=pdunq_dg lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq_dg'
*.log_archive_dest_state_2='ENABLE'
慣例生成新的spfile
shutdown
create pfile from spfile;
startup
3.4,重新註冊監聽模式
按照慣例的修改primary上的listener.ora以及tnsnames.ora都不需要修改了,因為原來的dg環境都已經配置好了。
配置最大可用模式:
配置最大可用模式:
SQL>startup
SQL>alter database set standby database to maximize availability;
3.5,在新的primary上備份資料庫
RMAN> backup database plus archivelog;
RMAN> backup current controlfile for standby;
RMAN> exit
3.6,備份集合、引數檔案、控制檔案同步
包括dump檔案目錄,資料檔案目錄,透過show parameter dest;,由於standby原來就有,所以各種目錄都不用重新建立,這一步驟省略
從從primary上copy資料檔案到standby上
在primary庫上執行:
ps:在primary上執行
copy閃回區內容
copy閃迴檔案
cd /oracle/app/oracle/flash_recovery_area/
scp -r ./* 192.168.121.218:/oracle/app/oracle/flash_recovery_area/
copy引數檔案
cd /oracle/app/oracle/product/11.2.0/dbhome_1/dbs
scp -r ./* 192.168.121.218:/oracle/app/oracle/product/11.2.0/dbhome_1/dbs
copy監聽檔案,由於原來的dg環境已經有了,所以不必copy過去,下面的步驟可以省略。
cd /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
scp -r ./* 192.168.121.218:/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
PS:至此以下操作基本在standby上操作,如有額外會有提示
4,在standby上修改配置檔案
在standby庫 修改配置檔案 在standby上修改,主要修改db_unique_name以及log_archive_dest_2,其它引數可以不變化,保持原狀,如下所示:
[oracle@powerlong5 admin]$ vim listener.ora
*.db_unique_name='pdunq_dg' #這裡填寫的是standby的db_unique_name名字
*.log_archive_dest_2='SERVICE=pdunq_dg lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq' # 這裡填寫的是primary的db_unique_name,主要是為了switchover的時候用。
PS:將*.log_archive_dest_2=後面的DB_UNIQUE_NAME改成primary的DB_UNIQUE_NAME值改為pdunq,這樣在做switchover的時候,新的primary能透過這個將redo日誌傳到新的standby上面去。
log_archive_dest_N 目的是告訴資料庫,把歸檔放到那裡去可選項,首先是本地,然後考慮遠端的從庫,所以,假設A是主庫,B是從庫,切換之後B是主庫,A是從庫,所以,log_archive_dest_N需要設定為對方
4.1,重啟監聽 standby上
lsnrctl stop;
lsnrctl start;
4.2,恢復資料庫
在standby上面操作
先關閉oracle,生成引數檔案,然後將oracle啟動到nomount狀態,然後rman操作恢復
SQL> shutdown immediate;
SQL> create pfile from spfile;
SQL> startup nomount
[oracle@powerlong5 admin]$ rman target sys/syspl1758@pdunq_dg auxiliary /
RMAN> run {
allocate auxiliary channel c1 device type disk;
allocate auxiliary channel c2 device type disk;
duplicate target database for standby nofilenamecheck dorecover;
release channel c1;
release channel c2;
}
4.3,關閉oracle
shutdown immediate
啟動資料庫
startup nomount;
alter database mount standby database;
alter database add standby logfile;
alter database add standby logfile;
alter database add standby logfile;
alter database recover managed standby database using current logfile disconnect from session;
4.4,primary、standby上驗證redo日誌應用狀態
archive log list;
standby庫上異常如下所示:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 0
Next log sequence to archive 0
Current log sequence 0
SQL>
redo日誌沒有被傳輸過來
4.5,檢視歸檔引數,重新設定下:
alter system set log_archive_dest_2='SERVICE=pdunq_dg lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq_dg';
select open_mode , database_role from v$database;
然後再去看primary上的alert日誌,有如下資訊:
***********************************************************************
Fatal NI connect error 12514, connecting to:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.218)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=pdunq_dg)(CID=(PROGRAM=oracle)(HOST=powerlong4)(USER=oracle))))
VERSION INFORMATION:
TNS for Linux: Version 11.2.0.1.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production
Time: 10-FEB-2015 16:11:34
Tracing not turned on.
Tns error struct:
ns main err code: 12564
TNS-12564: TNS:connection refused
ns secondary err code: 0
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Error 12514 received logging on to the standby
Errors in file /oracle/app/oracle/diag/rdbms/pdunq/powerdes/trace/powerdes_arc3_6627.trc:
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
PING[ARC3]: Heartbeat failed to connect to standby 'pdunq_dg'. Error is 12514.
4.6,去check standby庫 ,檢視name狀況,發現db_unique_name沒有設定對,如下所示
SQL> show parameter name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string /home/oradata/powerdes, /home/
oradata/powerdes
db_name string powerdes
db_unique_name string pdunq
global_names boolean FALSE
instance_name string powerdes
lock_name_space string
log_file_name_convert string /home/oradata/powerdes, /home/
oradata/powerdes
service_names string pdtest
SQL>
standby庫的db_unique_name不對,需要修改。
4.7,去standby庫上修改spfile引數
SQL> create pfile from spfile;
SQL> shutdown immediate;
[oracle@powerlong5 dbs]$ cp $ORACLE_HOME/dbs/initpowerdes.ora $ORACLE_HOME/dbs/initpowerdes.ora.bak
[oracle@powerlong5 dbs]$ vim $ORACLE_HOME/dbs/initpowerdes.ora
*.db_unique_name='pdunq_dg'
SQL> create spfile from pfile;
SQL> startup mount;
4.8,再check standby歸檔情況,正常,如下所示:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 31
Next log sequence to archive 0
Current log sequence 32
SQL>
check下primary歸檔情況,如下所示:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 30
Next log sequence to archive 32
Current log sequence 32
SQL>
OK,現在可以將standby庫open起來
5,開啟資料庫,啟動redo應用
alter database open;
啟動redo 應用
alter database recover managed standby database using current logfile disconnect ;
primary庫做alter system switch logfile;操作,檢查standby是否有新的日誌。
primary庫:
SQL> alter system switch logfile;
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 31
Next log sequence to archive 33
Current log sequence 33
SQL>
standby庫:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 32
Next log sequence to archive 0
Current log sequence 33
SQL>
ok,歸檔日誌及時傳遞到standby庫,failover後新的standby的重建工作順利完成。
----------------------------------------------------------------------------------------------------------------
<版權所有,文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任!>
原部落格地址: http://blog.itpub.net/26230597/viewspace-1433720/
原作者:黃杉 (mchdba)
----------------------------------------------------------------------------------------------------------------
<版權所有,文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任!>
原部落格地址: http://blog.itpub.net/26230597/viewspace-1433720/
原作者:黃杉 (mchdba)
----------------------------------------------------------------------------------------------------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127689/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DataGuard:Physical Standby FailoverAI
- dataguard之物理standby庫failover 切換AI
- DataGuard:Logical Standby FailoverAI
- Oracle DataGuard環境failover後通過舊備份建立物理StandbyOracleAI
- 【DataGuard】Oracle 11g physical standby switchoverOracle
- 【DataGuard】Oracle 11g DataGuard 新特性之 Snapshot Standby DatabaseOracleDatabase
- 【DATAGUARD】Oracle Dataguard nologging 塊修復Oracle
- ORACLE 11G透過SCN做增量備份修復standby庫詳細過程Oracle
- ORACLE 11G通過SCN做增量備份修復standby庫詳細過程Oracle
- 【DataGuard】Oracle 11g物理Data Guard之Snapshot Standby資料庫功能Oracle資料庫
- dataguard備庫出現GAP修復
- dataguard主庫壞塊的修復
- Dataguard(Standby) 後臺程式
- oracle Physical Standby failover stepOracleAI
- Oracle dataguard failover 實戰OracleAI
- Oracle 11g Data Guard (physical standby - active dataguard) [final]Oracle
- 【轉】【DataGuard】Oracle 11g物理Data Guard之Snapshot Standby資料庫功能Oracle資料庫
- 【DATAGUARD 學習】如何停止standby資料庫資料庫
- Linux平臺Oracle 11g DataGuard Physical Standby 非正常關閉後的啟動LinuxOracle
- 【DG】利用閃回資料庫(flashback)修復Failover後的DG環境資料庫AI
- 【DataGuard】Oracle 11g DataGuard 新特性之 Active Standby:Real-Time Apply+QueryOracleAPP
- Oracle 11g Data guard 物理備庫應急切換(failover)後原有主庫的重建(通過RMAN恢復)OracleAI
- 【DATAGUARD】 將11g物理備庫轉換為Snapshot Standby
- Oracle 11G DataGuard ORA-16086問題修復詳細過程Oracle
- 11g DataGuard實現故障轉移(Failover)AI
- oracle 之dataguard standby 切換Oracle
- Oracle 9I dataguard(standby)Oracle
- Oracle Dataguard故障轉移(failover)操作OracleAI
- 【DataGuard】手工冷備搭建 Oracle 11g DataGuard 物理備庫Oracle
- 11g Dataguard中的snapshot standby特性
- 【DataGuard】Oracle 11g DataGuard 角色轉換(一)物理備庫SwitchoverOracle
- oracle11g dataguard完全手冊--failover &active dataguard(完)OracleAI
- 11g DataGuard通過ABMR自動修復主庫壞塊 - Automatic Block Media RepairBloCAI
- oracle 11g dataguardOracle
- 一步一步學DataGuard(15)邏輯standby之failoverAI
- 11R2-DataGuard Scenarios.Failover後配置邏輯備庫iOSAI
- Oracle DataGuard Standby database ID mismatch錯誤OracleDatabase
- DG物理standby,Failover之後原primary重回DGAI