天天看點

AIX 5.3下 更新更新檔到10.2.0.5步驟

轉自同僚ROBIN的部落格

環境AIX5.3, 原oracle版本 10.2.0.1

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目錄, 一

旦更新失敗便于回退

$ 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 oraInventor

另外一個備份的方法

$ cp -pr db_1 db_1_new                    (備份到新目錄, 且保留mode,ownership,timestamps等資訊)

$ diff -q -r db_1 db_1_new                (比較兩個目錄, 應該隻有日志檔案發生變化)

2) 更新Oracle 軟體

通過response檔案開始更新, 更新時間大概2-3分鐘.

設定DISPLAY=192.168.0.1:0.0  (設定圖形顯示,用的是xmanager的passive接收)

安裝之前會提醒你 安裝/usr/sbin/slibclean   這個一定要跑啊。。

$ cd /u01/software/10g/

$ unzip p8202632_10205_AIX64-5L_1of2.zip

$ unzip p8202632_10205_AIX64-5L_2of2.zip

$ cd Disk1

注意更新前要保證/tmp空間有2。5G空餘空間

$ ./runInstaller -silent -responseFile $DISTRIB/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賬号和聯網資訊;

UNIX_GROUP_NAME="oinstall" oracle使用者用于安裝軟體的組名;

注意: 你也可以直接用。/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

...

Do you wish to continue (y/n) [n]: y

$ tail -50f /tmp/changePerm_err.log

ü 更新軟體後檢查:

$ sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Sat May 8 14:34:51 2010

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

SQL> exit;

3 更新資料庫

$ sqlplus / as sysdba

SQL> startup upgrade;                     (以更新模式啟動資料庫)

SQL> SPOOL /tmp/patch102050.log

SQL> @?/rdbms/admin/catupgrd.sql          (重建資料字典, 若有問題可重複執行)

Total Upgrade Time: 00:23:34              (資料庫大小110G)

SQL> SPOOL off

SQL> !egrep "ORA-|Error" /tmp/patch102050.log   (檢視是否有錯誤)

SQL> startup;

SQL> select count(1) from dba_objects where status='INVALID';

  COUNT(1)

----------

       484

SQL> @?/rdbms/admin/utlrp.sql             (編譯失效PLSQL包對象, 盡管第一次通路包是會自動編譯, 還是推薦操作)

OBJECTS WITH ERRORS

-------------------

ERRORS DURING RECOMPILATION

---------------------------

注意: 這個編譯過程可能因為你資料庫裡面的對象問題,有一些錯誤,你需要在plsql下

執行: select * from UTL_RECOMP_ERRORS 檢查無效的對象。有些是可以忽略的

4 開啟OEM/isqlplus/監聽

$ lsnrctl start

$ isqlplusctl start

$ emctl start dbconsole