Oracle數據庫版本10.2.0.1升級到10.2.0.3
1、停止OEM/isqlplus/監聽/DB實例
$ emctl stop dbconsole $ isqlplusctl stop $ lsnrctl stop $ sqlplus / as sysdba SQL> shutdown immediate;
2、升級Oracle軟件
1) 備份ORACLE_HOME和oraInventory
升級前對要升級的ORACLE_HOME進行備份是必要的, 還有oraInventory目錄, 一
旦升級失敗便於回退
方法一,使用tar備份 $ cd $ORACLE_HOME/.. $ tar jcvf db_1_`date +%Y%m%d`.tar.bz2 db_1 $ cd $ORACLE_BASE $ tar jcvf oraInventory_`date +%Y%m%d`.tar.bz2 oraInventory 方法二,使用cp備份 $ cd $ORACLE_HOME $ cp -pr db_1 db_1_new (備份到新目錄, 且保留mode,ownership,timestamps等信息) $ cp -pr oraInventory oraInventory_new
2) 升級Oracle 軟件
2.1)通過response文件開始升級, 升級時間大概2-3分鍾.
$ cd /u01/software/10g/ $ unzip p5337014_10203_LINUX.zip $ cd Disk1 注意升級前要保證/tmp空間有2.5G空余空間 $ ./runInstaller -silent -responseFile /u01/software/10g/DISK1/response/patchset.rsp ORACLE_HOME=”/u01/app/oracle/product/10.2.0/db_1″ ORACLE_HOME_NAME=”OraDb10g_home1″ DECLINE_SECURITY_UPDATES=”true” 如果未使用默認的組oinstall, 則runInstaller命令后需再加一個參數: UNIX_GROUP_NAME=”oinstall” 各參數含義如下: -silent 表示以靜默方式安裝,不會有任何提示;
-responseFile 表示使用哪個響應文件,必需使用絕對路徑;
ORACLE_HOME=”/u01/app/oracle/product/10.2.0/db_1″ oracle安裝目錄;
ORACLE_HOME_NAME=”OraDb10g_home1″ ORACLE_HOME名;
DECLINE_SECURITY_UPDATES=”true” 是否需要安全更新, true表示不需要,
否則會要求輸入metalink賬號和聯網信息;(10.2.0.3中無此選項)
UNIX_GROUP_NAME=”oinstall” oracle用戶用於安裝軟件的組名;
2.2)設置DISPLAY=192.168.0.1:0.0 (設置圖形顯示,用的是xmanager的passive接收)
注意: 你也可以直接用./runInstaller運行,安裝程序會檢查和提示你一步一步的升級完成
3) 運行root.sh和changePerm.sh
升級結束后, 以root用戶執行$ORACLE_HOME下的root.sh(如有提示則一直回車): # /u01/app/oracle/product/10.2.0/db_1/root.sh 安裝PatchSet后新增的文件或目錄是限制訪問的, 其它用戶或第三方工具要訪問這些文件時會提示錯誤, 所以要修改權限: # su – oracle $ cd $ORACLE_HOME/install $ ./changePerm.sh $ tail -50f /tmp/changePerm_err.log
3、升級數據庫
$ lsnrctl start 確保內存足夠 SQL> ALTER SYSTEM SET SHARED_POOL_SIZE=’150M’ SCOPE=spfile; SQL> ALTER SYSTEM SET JAVA_POOL_SIZE=’150M’ SCOPE=spfile; $ sqlplus / as sysdba SQL> startup upgrade; (以升級模式啟動數據庫) SQL> SPOOL /tmp/patch102030.log SQL> @?/rdbms/admin/catupgrd.sql (重建數據字典, 若有問題可重復執行) SQL> SPOOL off
SQL> !egrep “ORA-|Error” /tmp/patch102050.log (查看是否有錯誤)
SQL> shutdown immediate;
SQL> startup;
SQL> @?/rdbms/admin/utlrp.sql (編譯失效PLSQL包對象, 盡管第一次訪問包是會自動編譯, 還是推薦操作)
注意: 這個編譯過程可能因為你數據庫里面的對象問題,有一些錯誤,你需要在plsql下
執行: select * from UTL_RECOMP_ERRORS 檢查無效的對象。有些是可以忽略的
4、開啟OEM/isqlplus/監聽
$ lsnrctl start
$ isqlplusctl start
$ emctl start dbconsole