Oracle DataGuard 升級(jí) [11.2.0.1 -> 11.2.0.4]
Primary: 11.2.0.1 單機(jī),Site A。
Standby: 11.2.0.1 單機(jī),Site B、Site C。
當(dāng)前DG環(huán)境示意圖:
需求:升級(jí)至11.2.0.4
升級(jí)思路:
主庫暫停歸檔傳輸;備庫安裝新版本軟件,備庫啟動(dòng)到mount;主庫安裝軟件,主庫升級(jí)數(shù)據(jù)庫,主庫啟用歸檔傳輸,備庫開啟日志恢復(fù)。
注意:
11g新版本軟件安裝到一個(gè)新目錄下,注意copy之前的spfile、密碼文件、network file等(監(jiān)聽配置文件的靜態(tài)監(jiān)聽部分需要修改);
備庫只升級(jí)軟件版本。數(shù)據(jù)庫升級(jí)是通過主庫升級(jí)后通過應(yīng)用主庫歸檔完成升級(jí)和同步的。
1.主庫暫停歸檔向備庫傳輸
show parameter log_archive_dest_state_X
alter system set log_archive_dest_state_X=defer scope=both sid='*';
這里是暫停Site A的主庫的log_archive_dest_state_2和log_archive_dest_state_3
show parameter log_archive_dest_state_2show parameter log_archive_dest_state_3alter system set log_archive_dest_state_2=defer scope=both sid='*';alter system set log_archive_dest_state_3=defer scope=both sid='*';
2.備庫在新目錄下安裝新版本軟件
2.1 關(guān)閉數(shù)據(jù)庫,監(jiān)聽。
shutdown immediate lsnrctl stop
2.2 備庫在新目錄下安裝Oracle 11.2.0.4 軟件。
兩個(gè)備庫操作方法一樣,以Site C為例:
--Site C:
--創(chuàng)建新的$ORACLE_HOME目錄 $ mkdir -p /u01/app/oracle/product/11.2.0.4/dbhome_1 --編輯oracle用戶環(huán)境變量,修改ORACLE_HOME變量值為新的目錄 vi ~/.bash_profile export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1
3.備庫啟動(dòng)到mount狀態(tài)
環(huán)境變量修改為新目錄 ORACLE_HOME 11.2.0.4
新目錄注意copy之前的spfile和network file(tnsnames.ora listener.ora)等
兩個(gè)備庫操作方法一樣,以Site C為例:
--Site C:
--network file(tnsnames.ora listener.ora sqlnet.ora) [oracle@oracle2 admin]$ cp /u01/app/oracle/product/11.2.0/network/admin/*.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/ --SPFILE cp /u01/app/oracle/product/11.2.0/dbs/spfileorcl.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/
啟動(dòng)數(shù)據(jù)庫到mount狀態(tài),啟動(dòng)監(jiān)聽。
4.主庫安裝軟件,升級(jí)數(shù)據(jù)庫
安裝、升級(jí)相關(guān)過程:
4.1 備份數(shù)據(jù)庫
升級(jí)是一個(gè)很大的動(dòng)作,升級(jí)前需要事先備份數(shù)據(jù)庫。
--rman.sql more rman.sql run{ allocate channel d1 TYPE disk; allocate channel d2 TYPE disk; allocate channel d3 TYPE disk; allocate channel d4 TYPE disk; backup as compressed backupset database format '/home/oradata/rman/data_%d_%T_%s.bak' plus archivelog format '/home/oradata/rman/arch_%d_%T_%s.bak'; release channel d1; release channel d2; release channel d3; release channel d4; } --rman.sh cat rman.sh#!/bin/bashexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0export ORACLE_SID=orclexport LD_LIBRARY_PATH=$ORACLE_HOME/libexport PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin rman target / @/home/oradata/rman/rman.sql log=/home/oradata/rman/rman.log --nohup 執(zhí)行 備份數(shù)據(jù)庫 nohup sh rman.sh &
4.2 關(guān)閉數(shù)據(jù)庫,監(jiān)聽
停止監(jiān)聽,關(guān)閉數(shù)據(jù)庫:
$ lsnrctl stopSQL> shutdown immediate
4.3 新目錄下安裝新版本軟件
主庫:
./runInstaller 圖形安裝新版本軟件(upgrade)。
root需要執(zhí)行的腳本按提示執(zhí)行。
注意,監(jiān)聽程序不需要配置。
4.4 舊版本軟件執(zhí)行升級(jí)檢查
在11.2.0.1的sqlplus 執(zhí)行11.2.0.4的utlu112i.sql,進(jìn)行升級(jí)檢查。
$ sqlplus / as sysdba SQL> startup SQL> SPOOL upgrade_info.log SQL> @/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlu112i.sql SQL> SPOOL OFF
根據(jù)提示修正不符合升級(jí)條件的地方。
--purge DBA_RECYCLEBIN; select count(*) from DBA_RECYCLEBIN; purge DBA_RECYCLEBIN; --EXECUTE dbms_stats.gather_dictionary_stats;EXECUTE dbms_stats.gather_dictionary_stats;
4.5 升級(jí)前確認(rèn)無效對(duì)象數(shù)量
select count(*) from dba_objects where status<>'VALID'; 這里是0。--正常關(guān)閉數(shù)據(jù)庫:shutdown immediate
4.6 新版本軟件對(duì)應(yīng)的環(huán)境變量
修改環(huán)境變量中指定11.2.0.4,并用source或者重新使用oracle用戶登錄生效
export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME= /u01/app/oracle/product/11.2.0.4/dbhome_1
4.7 新版本軟件環(huán)境,spfile,密碼文件和網(wǎng)絡(luò)配置相關(guān)文件
copy 參數(shù)文件spfile, network file「tnsnames.ora listener.ora sqlnet.ora」, 密碼文件,
--拷貝參數(shù)文件spfile: [oracle@oracle1 ~]$ cp /u01/app/oracle/product/11.2.0/dbs/spfileorcl.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/ --拷貝密碼文件: [oracle@oracle1 ~]$ cp /u01/app/oracle/product/11.2.0/dbs/orapworcl /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/orapworcl --拷貝網(wǎng)絡(luò)配置相關(guān)文件「tnsnames.ora listener.ora sqlnet.ora」 [oracle@oracle1 ~]$ cp /u01/app/oracle/product/11.2.0/network/admin/*.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/ --修正DG listener.ora 中靜態(tài)監(jiān)聽內(nèi)容(ORACLE_HOME),然后重啟監(jiān)聽文件 SID_LIST_LISTENER= (SID_DESC=(GLOBAL_DBNAME = orcl)(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/dbhome_1)(SID_NAME = orcl) )
4.8 升級(jí)數(shù)據(jù)庫
--upgrade模式打開數(shù)據(jù)庫 SQL> startup UPGRADE SQL> @?/rdbms/admin/catupgrd.sql SQL> startup SQL> @?/rdbms/admin/utlu112s.sql SQL> select count(*) from dba_objects where status<>'VALID'; 460SQL> @?/rdbms/admin/utlrp.sql0SQL> shutdown immediate SQL> startup
5.主庫啟用歸檔向備庫傳輸
show parameter log_archive_dest_state_X
alter system set log_archive_dest_state_X=enable scope=both sid='*';
alter system set log_archive_dest_state_2=enable scope=both sid='*';alter system set log_archive_dest_state_3=enable scope=both sid='*';show parameter log_archive_dest_state_2show parameter log_archive_dest_state_3
6.備庫開啟日志恢復(fù)
備庫mount狀態(tài)下開啟日志恢復(fù),等待恢復(fù)完成,終止日志恢復(fù)然后將數(shù)據(jù)庫在open狀態(tài)后再開啟日志恢復(fù)。
--mount狀態(tài)下開啟日志恢復(fù)startup mountalter database recover managed standby database disconnect from session;--等待恢復(fù)完成...--取消日志恢復(fù)alter database recover managed standby database cancel;--打開數(shù)據(jù)庫alter database open;--open狀態(tài)下開啟日志恢復(fù)alter database recover managed standby database using current logfile disconnect from session;
7.檢查備庫、主庫升級(jí)情況
select ACTION_TIME,ACTION,NAMESPACE,VERSION,ID from registry$history;
select ACTION_TIME,ACTION,NAMESPACE,VERSION,ID from registry$history ACTION_TIME ACTION NAMESPACE VERSION ID--------------------------------------------------------------------------- ------------------------------ ------------------------------ ------------------------------ ----------08-FEB-17 03.39.36.894771 AM VIEW INVALIDATE 828960108-FEB-17 03.39.36.926136 AM UPGRADE SERVER 11.2.0.4.0
8.定時(shí)任務(wù)檢查修正
檢查各機(jī)器是否有定時(shí)任務(wù),比如這里有定時(shí)任務(wù)有定期刪除歸檔的任務(wù)。
需要根據(jù)新環(huán)境的變量修改腳本中ORACLE_HOME變量值。
以Site A為例,確認(rèn)對(duì)應(yīng)變量都是新版本數(shù)據(jù)庫的變量值:
[oracle@oracle1 admin]$ crontab -l0 0 * * * sh /home/oradata/scripts/delarch.sh > /dev/null 2&>1#[oracle@oracle1 admin]$ cat /home/oradata/scripts/delarch.sh#!/bin/bashexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1export ORACLE_SID=orclexport PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin rman target / @/home/oradata/scripts/delarch.sql log=/home/oradata/scripts/delarch.log [oracle@oracle1 admin]$ cat /home/oradata/scripts/delarch.sql crosscheck archivelog all; delete noprompt archivelog all completed before "sysdate-7"; [oracle@oracle1 admin]$
至此,Oracle DataGuard 從版本11.2.0.1成功升級(jí)到版本11.2.0.4。
AlfredZhao?版權(quán)所有「從Oracle起航,領(lǐng)略精彩的IT技術(shù)?!?/p>
http://www.cnblogs.com/jyzhao/p/6380386.html