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】Oracle Dataguard nologging 塊修復Oracle
- Oracle dataguard failover 實戰OracleAI
- Oracle Dataguard故障轉移(failover)操作OracleAI
- Oracle之11g DataGuardOracle
- Oracle dataguard報錯:Error 1017 received logging on to the standbyOracleError
- Oracle 11g dg broker自動failoverOracleAI
- Performing a Failover to a Physical Standby DatabaseORMAIDatabase
- Oracle 11g dataguard 配置簡約步驟Oracle
- Oracle:Failover 到物理備庫OracleAI
- dataguard 搭建 oracle_sid相同 2節點 primary+standbyOracle
- dataguard 搭建 oracle_sid不同 2節點 primary+standbyOracle
- Oracle 19c透過recover standby database from service修復GAP案例OracleDatabase
- Oracle 11g RAC DG備庫gv$dataguard_stats apply lag值較大OracleAPP
- Oracle 10g/11g下如何將物理Standby庫臨時啟用用於災備測試Oracle 10g
- ORACLE 11G DATAGUARD 日誌中斷處理方案Oracle
- 【DATAGUARD】Oracle Dataguard物理備庫切換最佳實踐(sqlplus)OracleSQL
- DATAGUARD手記(PRIMARY+2STANDBY)(一)
- DATAGUARD手記(PRIMARY+2STANDBY)(二)
- Oracle 19C CBD Active DataGuard Standby passwd file 注意事項 ORA-01017Oracle
- 【ASK_ORACLE】手動配置DataGuard的自動化Client Failover(故障轉移)的serviceOracleclientAI
- 如何修復mysql資料庫MySql資料庫
- Jtti:如何修復Oracle資料庫執行過程的問題JttiOracle資料庫
- oracle 11g dg broker 開啟fast-start failover自動故障切換OracleASTAI
- 記錄一次Dataguard的修復過程
- 伺服器Oracle資料庫損壞修復伺服器Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- 【DG】DataGuard健康檢查 for 11g
- DataGuard---->物理StandBy的角色切換之switchover
- standby_file_management為manual造成dataguard延遲
- Oracle 11g刪除庫重建Oracle
- 【DATAGUARD】Oracle 通過Dataguard指定恢復時間用於找回丟失資料Oracle
- Oracle 12.2 physical standby備庫收集AWR報告Oracle
- Oracle的快照standbyOracle
- ORA-19909(一次DataGuard Failover導致的故障AI
- Oracle 19C Data Guard基礎運維-07 failover後閃回恢復dg架構Oracle運維AI架構
- phpStudy 後門如何檢測和修復PHP
- Oracle 11g 052題庫解析1Oracle