Oracle 11.2.0.1.0升級到11.2.0.4.7案例一則

darren__chan發表於2015-10-29

總體思路:
(1) 備份資料庫
(2) 備份oracle目錄   
(3) 執行11.2.0.4.0  patchset,升級oracle 軟體
(4) 執行dbua 或者指令碼升級例項,從11.2.0.1.0升級到11.2.0.4.0             
(5) 使用opatch打小補丁,從 11.2.0.4.0升級到11.2.0.4.7                      
(6) 檢查升級後的版本資訊和無效物件




一.備份資料庫

run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup as compressed backupset full  database format='/backup/rman/db%d_%s_%p';
sql 'alter system archive log current';
backup format='/backup/rman/ac%d_%s_%p' archivelog all delete all input;
backup current controlfile format='/backup/rman/con%d_%s_%p';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}


二. purge dba_recylebin;

三.shutdown immediate
   lsnrctl stop LISTENER_FMS

四. 備份ORACLE_HOME 
tar cvf product.zip /oracle/product/
tar cvf oraInventory.zip /oracle/oraInventory/


五.上傳安裝包並解壓安裝
1. 上傳11.2.0.4.0 patch set
2. export DISPLAY=192.168.12.12:0.0
3.  ./runInstaller
4.忽略郵件
5.選擇第三個選項,skip software update,
6.選擇upgrade an existing database。


7.安裝位置
  原安裝目錄是/oracle/product/11.2.0/dbhome_1 ,改成了/oracle/product/11.2.0.4/dbhome_1 即將oracle 安裝到其他位置,這樣可以減少當機時間,也是oracle 推薦的方法。
8.Inventory directory:如有,將安裝檔案存放到其他目錄:/oracle/oraInventory2。

9.執行指令碼:裡面的路徑可覆蓋,最好另起目錄  /oracle/product/11.2.0.4/dbhome_1/root.sh

10.配置監聽:
   這裡會提示配置監聽,因為監聽之前已經存在,所以這裡取消監聽配置。選擇skip


11.跳過監聽配置之後,便是使用dbua工具升級,這個可預設按提示一路預設next,
或是,跳過dbua直接完成安裝,而後選擇指令碼升級。


六.使用圖形介面DBUA工具完成升級,僅需要環境變數和複製network目錄。

1. 修改Oracle的.profile 檔案

 我們重新指定了ORACLE_HOME,需要更新到.profile 裡。
ORACLE_HOME=/oracle/product/11.2.0.4/dbhome_1


2.複製配置檔案
具體操作步驟: cp /oracle/product/11.2.0/dbhome_1/dbs/* /oracle/product/11.2.0.4/dbhome_1/dbs/  (使用dbua跳過此步)

 cp -R /oracle/product/11.2.0/dbhome_1/network/admin/* /oracle/product/11.2.0.4/dbhome_1/network/admin/

3.必要時再執行升級檢查指令碼:
sqlplus / as sysdba
startup upgrade;
spool /home/oracle/utlu112i_check.txt
@?/rdbms/admin/utlu112i.sql   --檢查
spool off;


注意此時oracle 例項是執行在新的ORACLE_HOME下.


七. 如選擇手工執行指令碼升級,在以上五後按以下步驟。 


1. 修改Oracle的.profile 檔案
 我們重新指定了ORACLE_HOME,需要更新到.profile 裡。
ORACLE_HOME=/oracle/product/11.2.0.4/dbhome_1


2. 修改/etc/oratab 中的 ORACLE_HOME路徑為新的路徑。
vi /etc/oratab


3.複製配置檔案
具體操作步驟: cp /oracle/product/11.2.0/dbhome_1/dbs/* /oracle/product/11.2.0.4/dbhome_1/dbs/  

 cp -R /oracle/product/11.2.0/dbhome_1/network/admin/* /oracle/product/11.2.0.4/dbhome_1/network/admin/




4.執行升級檢查指令碼:
sqlplus / as sysdba
startup upgrade;
spool /home/oracle/utlu112i_check.txt
@?/rdbms/admin/utlu112i.sql   --檢查
spool off;


5.如有不滿足
則進行修改
alter system set xxx=xxx scope=spfile;


shutdown immeidate;
startup mount;
alter database flashback on;

select * from v$restore_point;
@?/rdbms/admin/utlu112i.sql 


6.升級
shutdown immediate;
startup upgrade;


set echo on 
spool /home/oracle/upgrade.log
set time on;
@?rdbms/admin/catupgrd.sql


spool off;


八.完成11.2.0.1.0升級11.2.0.4.0後便是進行PSU到11.2.0.4.7

1.備份原有OPatch: mv OPatch OPatch_bak

2.解壓新的OPatch,unzip  升級11.2.0.4.7要求至少是 11.2.0.3.6版本的opatch.

3.解壓opatch 補丁包。

4.cd 到補丁目錄下,執行以下命令,進行補丁檢測。
/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

5. sqlplus / as sysdba
   shutdown immediate
   並退出所有sqlplus 視窗


6.打補丁:在補丁目錄下   /oracle/product/11.2.0.4/dbhome_1/OPatch/opatch apply

是否繼續? [y|n]
y
User Responded with: Y
All checks passed.
提供電子郵件地址以用於接收有關安全問題的通知, 安裝 Oracle Configuration Manager 並啟動它。如果您使用 My Oracle
Support 電子郵件地址/使用者名稱, 操作將更簡單。
有關詳細資訊, 請訪問 。
電子郵件地址/使用者名稱: 

尚未提供電子郵件地址以接收有關安全問題的通知。
是否不希望收到有關安全問題 (是 [Y], 否 [N]) [N] 的通知:  y

本地系統是否已準備打補丁? [y|n]
y
User Responded with: Y
Backing up files...
Applying sub-patch '17478514' to OH '/opt/app/oracle/product/11.2.0/dbhome_1'

7.完成,並檢查log。
Composite patch 20760982 successfully applied.
OPatch Session completed with warnings.
Log file location: /oracle/product/11.2.0.4/dbhome_1/cfgtoollogs/opatch/opatch2015-10-15_20-50-03PM_1.log


OPatch completed with warnings.


8.例項打補丁


cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
startup
@catbundle.sql psu apply


9.完成例項打補丁,檢查日誌
Check the following log file for errors:
/oracle/product/11.2.0.4/dbhome_1/cfgtoollogs/catbundle/catbundle_PSU_FMSS_APPLY_2015Oct15_20_55_14.log






10.驗證補丁是否應用成功:
[/oracle/product/11.2.0.4/dbhome_1/rdbms/admin]#cd ../../OPatch
[/oracle/product/11.2.0.4/dbhome_1/OPatch]#./opatch lspatches
20760982;Database Patch Set Update : 11.2.0.4.7 (20760982)


11.查詢版本資訊
select * from dba_registry_history;
12.編譯失效物件。
@?/rdbms/admin/utlrp.sql

13.重啟監聽 :lsnrctl start 

14.在執行一段時間後正常,更改compatible引數



oracle升級回退方案

一.回退版本到11.2.0.1.0

1.恢復ORACLE相關的目錄。

2.使用閃回功能進行回退(在未更改compatible引數前提下)

 --在升級庫前確定閃回是否開啟。
   select flashback_on from v$database;
   --alter database flashback on;

 --建立閃回點
   alter database 
   create restore point UPGRADE_ROLLBACK guarantee flashback database;
   select * from v$restore_point;
 
  --升級失敗後執行閃回資料庫到閃回點。
    sqlplus / as sysdba
    shutdown immediate;
    startup mount;
    flashback database to restore point UPGRADE_ROLLBACK;
    alter database open resetlogs;
 
 --刪除恢復點,無論需不需要閃回記得刪除。
   select * from v$restore_point;
   drop restore point grpt;
 
3.升級前後都做一次全庫rman 備份,保證資料遭到損壞時可以恢復。


二.回退opatch 到11.2.0.4.0
1.停止資料庫

停止監聽
lsnrctl status
lsnrctl stop
清理LOCAL=NO的程式
ps -ef| grep LOCAL=NO | grep -v grep | awk '{print "kill -9 " $2}' | sh
停止資料庫
SQL> alter system checkpoint;
SQL> shutdown immediate

確保所有與oracle相關的程式都被停掉,包括本地的sqlplus連線也需要退出

2.補丁回退
su – oracle
$ORACLE_HOME/OPatch/opatch rollback -id 20760982

$ORACLE_HOME/OPatch/opatch lsinventory –bugs_fixed | grep -i database

3.回退資料註冊資訊
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle_PSU_FMSS_ROLLBACK.sql
SQL> QUIT










來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-1818053/,如需轉載,請註明出處,否則將追究法律責任。

相關文章