背景:
閱讀新聞
11.2.0.3物理 Data Guard主備庫切換(附加:ORA-16139錯誤的解決)
[日期:2014-03-25]
來源:Linux社區(qū)
作者:panfelix
[字體:大 中 小]
DG分為主庫和備庫,我們也猜測其屬于primary與standby 之間的互動,那么在primary 和standby 之間的切換:
然而切換又分為switchover和failovers,前者是無損切換,不會丟失數(shù)據(jù),而后者則有可能會丟失數(shù)據(jù),并且切換后原primary數(shù)據(jù)庫也不再是該data guard配置的一部分了。
針對不同standby(邏輯或物理)的處理方式也不盡相同。
角色轉(zhuǎn)換前的準(zhǔn)備工作:
1檢查各數(shù)據(jù)庫的初始化參數(shù),主要確認(rèn)對不同角色相關(guān)的初始化參數(shù)都進(jìn)行了正確的配置。
2確??赡艹蔀閜rimary數(shù)據(jù)庫的standby服務(wù)器已經(jīng)處于archivelog模式。
3確保standby數(shù)據(jù)庫的臨時文件存在并匹配primary數(shù)據(jù)庫的臨時文件
4確保standby數(shù)據(jù)庫的RAC實例只有一個處于open狀態(tài)。(對于rac結(jié)構(gòu)的standby數(shù)據(jù)庫,在角色轉(zhuǎn)換時只能有一個實例startup。其它rac實例必須統(tǒng)統(tǒng)shutdown,待角色轉(zhuǎn)換結(jié)束后再startup)
Switchover;
無損轉(zhuǎn)換,通常是用戶手動觸發(fā)或者有計劃的讓其自動觸發(fā),比如硬件升級,軟件升級之類的。通常它給你帶來的工作量非常小并且都是可預(yù)計的。其執(zhí)行分兩個階段,第一步, primary數(shù)據(jù)庫轉(zhuǎn)換為tandby角色,第二步,standby數(shù)據(jù)庫(之一)轉(zhuǎn)換為primary角色,primary和standby只是簡單的角色互換,
Failover:
不可預(yù)知原因?qū)е聀rimary 數(shù)據(jù)庫故障并且短期內(nèi)不能恢復(fù)就需要failover。如果是這種切換那你就要小心點了,有可能只是虛驚一場,但如果運氣不好又沒有完備的備份恢復(fù)策略而且primary 數(shù)據(jù)并非處于最大數(shù)據(jù)保護或最高可用性模式地話,這種情況下呢丟失數(shù)據(jù)有可能是難免的,并且如果其故障未能修復(fù),那它甚至連快速修復(fù)成為standby 的機會也都失去了;
在執(zhí)行failover 之前,盡可能將原primary 數(shù)據(jù)庫的可用redo 都復(fù)制到standby 數(shù)據(jù)庫。
注意,如果要轉(zhuǎn)換角色的standby處于maximum protection模式,需要你首先將其切換為maximum performance模式
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZEPERFORMANCE;
等standby 切換為新的primary 之后,你可以再隨意更改數(shù)據(jù)庫的保護模式。
maximum protection模式需要確保絕無數(shù)據(jù)丟失,因此其對于提交事務(wù)對應(yīng)的redo 數(shù)據(jù)一致性要求非常高,另外,如果處于maximum protection模式的primary數(shù)據(jù)庫仍然與standby數(shù)據(jù)庫有數(shù)據(jù)傳輸,此時alter database語句更改standby數(shù)據(jù)庫保護模式會失敗,這也是由maximum protection 模式特性決定的。
一、物理standby的 Switchover
注意操作步驟的先后,很關(guān)鍵的喲。
1、檢查是否支持switchover 操作--primary 數(shù)據(jù)庫操作。
2、登陸primary 數(shù)據(jù)庫,查詢v$database 視圖的switchover_status 列。
情況(一):存在gap問題
解決物理standby Gap問題
SQL> SELECT * FROM V$ARCHIVE_GAP;
THREAD#LOW_SEQUENCE# HIGH_SEQUENCE#
----------- ------------- --------------
1 7 10
--到主庫查詢,確認(rèn)一下:
SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1AND DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 10;
NAME
--------------------------------------------------------------------------------
/primary/thread1_dest/arcr_1_7.arc
/primary/thread1_dest/arcr_1_8.arc
/primary/thread1_dest/arcr_1_9.arc
--把這些歸檔copy到物理standby,并使用ALTERDATABASE REGISTER LOGFILE應(yīng)用這些歸檔:
SQL> ALTER DATABASE REGISTER LOGFILE'/physical_standby1/thread1_dest/arcr_1_7.arc';
SQL> ALTER DATABASE REGISTER LOGFILE'/physical_standby1/thread1_dest/arcr_1_8.arc';
SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_9.arc';
情況(二):沒有g(shù)ap
SQL>selects witchover_status from v$database;
SWITCHOVER_STATUS
----------------------------------------
TO STANDBY
如果該列值為"TO STANDBY"則表示primary數(shù)據(jù)庫支持轉(zhuǎn)換為standby角色,否則的話你就需要重新檢查一下Data Guard配置,比如看看LOG_ARCHIVE_DEST_n之類參數(shù)值是否正確有效等等。
2、啟動switchover --primary 數(shù)據(jù)庫操作
首先將primary 轉(zhuǎn)換為standby 的角色,通過下列語句:
SQL> alter database commit to switchover to physical standby
Database altered.
01:57:06 SQL>shutdown immediate;
ORA-01092: Oracle instance terminated. Disconnection f九度快排系統(tǒng) https://www.190seo.comorced
SQL>startup mount;
ORACLE instance started.
Total System Global Area 417546240bytes
Fixed Size 2228944bytes
Variable Size 289410352bytes
Database Buffers 121634816bytes
Redo Buffers 4272128bytes
Database mounted.
語句執(zhí)行完畢后,primary數(shù)據(jù)庫將會轉(zhuǎn)換為standby數(shù)據(jù)庫,并自動備份控制文件到trace
推薦閱讀:
RMAN 配置歸檔日志刪除策略 http://www.linuxidc.com/Linux/2013-11/92670.htm
Oracle基礎(chǔ)教程之通過RMAN復(fù)制數(shù)據(jù)庫 http://www.linuxidc.com/Linux/2013-07/87072.htm
RMAN備份策略制定參考內(nèi)容 http://www.linuxidc.com/Linux/2013-03/81695.htm
RMAN備份學(xué)習(xí)筆記 http://www.linuxidc.com/Linux/2013-03/81892.htm
Oracle數(shù)據(jù)庫備份加密 RMAN加密 http://www.linuxidc.com/Linux/2013-03/80729.htm
更多Oracle相關(guān)信息見Oracle 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=12

12下一頁
ORA-16456錯誤,由于備庫未mount而在主庫執(zhí)行切換,解決辦法詳解
ORA-12705: Cannot access NLS data files or invalid environment specified 另類解決方案
相關(guān)資訊
Data Guard ORA-16139
物理Data Guard的日常維護 (今 14:44)
Data Guard高級應(yīng)用:通過閃回恢復(fù) (09/01/2016 16:26:41)
手工搭建Data Guard (08/02/2016 20:24:13)
Oracle Data Guard的配置 (今 14:41)
Data Guard跳歸檔恢復(fù)的案例 (08/16/2016 11:28:15)
Data Guard中快速Switchover, (06/18/2016 20:54:44)
本文評論
查看全部評論 (0)
表情: 
姓名:
匿名
字?jǐn)?shù)
同意評論聲明
評論聲明
尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
本站管理人員有權(quán)保留或刪除其管轄留言中的任意內(nèi)容
本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用您的評論
參與本評論即表明您已經(jīng)閱讀并接受上述條款
最新資訊
物理Data Guard的日常維護
Oracle Data Guard的配置
Oracle臨時表空間的恢復(fù)
Windows下為PHP5.6安裝Redis擴展和
SpringMVC4 注解配置實例
SpringMVC+Spring+Hibernate 框架整合實例
Spring注解配置實例
Linux安裝memcached及memcache擴展
最后一位登月宇航員Gene Cernan去世
CentOS7下Firewalld防火墻使用實例
背景:
閱讀新聞
ORA-12705: Cannot access NLS data files or invalid environment specified 另類解決方案
[日期:2014-03-25]
來源:Linux社區(qū)
作者:wgw335363240
[字體:大 中 小]
ant 1.8.2部署在241機器,Oracle 11g部署在242機器上,今天用ant 1.8.2 通過oracle驅(qū)動向oracle 11g的環(huán)境插入數(shù)據(jù)時報下面的錯誤:
builddb:
BUILD FAILED
/home/build.xml:10: java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:28
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:785)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:362)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at org.apache.tools.ant.taskdefs.JDBCTask.getConnection(JDBCTask.java:370)
at org.apache.tools.ant.taskdefs.SQLExec.getConnection(SQLExec.java:942)
at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:614)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at java.lang.reflect.Method.invoke(libgcj.so.7rh)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.Main.runBuild(Main.java:809)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Total time: 2 seconds
根據(jù)“ ORA-12705”錯誤號,發(fā)現(xiàn)很多人給出了下面的解決方案:
.檢查以下變量是否設(shè)置正確(invalid environment specified)
NLS_LANG, ORA_NLSxx, or ORACLE_HOME
2.檢查$ORACLE_HOME/nls/data目錄中的nlb文件(NLS data files)是否損壞,可以先把文件備份,再從其他相同的環(huán)境中copy這些文件
解決方法1排除了,原因是以前是好好的最近也未曾改過環(huán)境變量.
查找$ORACLE_HOME目錄有了驚人的發(fā)現(xiàn),讓俺既是驚喜又是振奮,驚喜的是終于發(fā)現(xiàn)了NLS目錄丟失了,振奮的是自己還有一臺機器也安裝有Oracle11g. 看來這年頭操作系統(tǒng)也靠不近了,不用說copy一份過來。
根據(jù)上述的解決方案,檢查oracle服務(wù)器(242)機器“NLS_LANG, ORA_NLSxx, or ORACLE_HOME”參數(shù),發(fā)現(xiàn)前兩個參數(shù)沒有設(shè)置,于是設(shè)置這兩個參數(shù),設(shè)置完后,問題依舊(重啟機器后仍然沒有解決問題)。
于是找了第三臺機器(記為243機器),在243機器上執(zhí)行同樣的ant腳本,發(fā)現(xiàn)可以正確執(zhí)行。初步懷疑是241機器和243機器的環(huán)境變量不同造成的,通過env命令,比較兩臺機器的環(huán)境變量,發(fā)現(xiàn)243機器設(shè)置了java_home,而241機器沒有設(shè)置java_home,于是乎快速設(shè)置java_home的值(java_home的設(shè)置參考: http://www.linuxidc.com/Linux/2014-03/98859.htm )。之后,斷掉以前的連接,新建一個連接,執(zhí)行ant命令,數(shù)據(jù)插入成功。
總結(jié):這里走了彎路,主要是ORA-12705的錯誤給人太多的錯誤信息了,期間嘗試讀過jdbc的驅(qū)動,沒有發(fā)現(xiàn)什么特別的問題。在關(guān)鍵信息解決不了問題的時候,笨方法(比較法)往往還是很能湊效的。
更多Oracle相關(guān)信息見Oracle 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=12

11.2.0.3物理 Data Guard主備庫切換(附加:ORA-16139錯誤的解決)
MySQL權(quán)威指南學(xué)習(xí)筆記
相關(guān)資訊
ORA-12705
本文評論
查看全部評論 (0)
表情: 
姓名:
匿名
字?jǐn)?shù)
同意評論聲明
評論聲明
尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
本站管理人員有權(quán)保留或刪除其管轄留言中的任意內(nèi)容
本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用您的評論
參與本評論即表明您已經(jīng)閱讀并接受上述條款
最新資訊
Oracle官方并行邏輯備份工具mysqlpump
MySQL 5.7 mysqlpump 備份工具說明
MySQL5.7.11 mysqlpump 多線程邏輯備份工具
MySQL 5.6 XtraBackup 全量和增量的備份和
基于XtraBackup 2.3.5 的 MySQL全量備份與
Chrome OS 現(xiàn)可支持簡易密碼解鎖
NSA的代碼遭到教授的嘲笑
Fedora 25將默認(rèn)使用Wayland
Nagios 監(jiān)控 SNMP 溫度計
JavaScript函數(shù)定義與函數(shù)作用域詳解
背景:
閱讀新聞
Linux下設(shè)置Java Home
[日期:2014-03-25]
來源:Linux社區(qū)
作者:Linux
[字體:大 中 小]
添加JAVA_HOME/JRE_HOME環(huán)境變量:
編輯用戶目錄下(root用戶的目錄為/root)的.bashrc或.profile文件。如果你想在所有用戶的shell下都生效,就編輯/etc/profile文件。同樣都是加入以下內(nèi)容:
export JAVA_HOME=/home/jdk1.6.0_17
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

在樹莓派上獲取天氣預(yù)報
使用IntelliJ IDEA 12創(chuàng)建Maven多模塊項目
相關(guān)資訊
Linux下設(shè)置Java Home
本文評論
查看全部評論 (0)
表情: 
姓名:
匿名
字?jǐn)?shù)
同意評論聲明
評論聲明
尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
本站管理人員有權(quán)保留或刪除其管轄留言中的任意內(nèi)容
本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用您的評論
參與本評論即表明您已經(jīng)閱讀并接受上述條款
最新資訊
Nagios 監(jiān)控 SNMP 溫度計
JavaScript函數(shù)定義與函數(shù)作用域詳解
Java培訓(xùn):對象和類
Java培訓(xùn):基本數(shù)據(jù)類型
Java培訓(xùn):變量類型
Java培訓(xùn):增強for循環(huán)、switch
Java培訓(xùn):Number類、Character類
Python 操作消息隊列
Python迭代器和生成器
Spark源碼分析之SparkContext概述