oracle 9i升級到oracle9208資料庫

zhengbao_jun發表於2009-03-30

背景:在windows 2003 server安裝Oracle 9.2.0.1.0,現打算將其升級到9.2.0.8版本,並打上最新的安全補丁April 2008版。
1.升級oracle(administrator使用者許可權)
  (1)到metalink下載升級壓縮包,patch號為4547809,壓縮包名稱為 p4547809_92080_WINNT.zip,for windows 32bit。
  (2)解壓縮zip,下邊包含一個Disk1和readme.html檔案。安裝升級補丁之前,在管理中停掉所有的oracle相關服務,在命令提示符中lsnrctl stop,停掉監聽器。
  (3)在雙擊Disk下的setup.exe前,確保環境變數中有ORACLE_HOME變數,並已正確設定。否則會出現錯誤(錯誤忘了)。
  (4)雙擊setup.exe,自動升級到9.2.0.8,命令提示符提示安裝完成後,說明元件已經安裝上。
  (5)4步並沒有update元件,所以還需要update.此時需要開啟Oracle的服務,最好是重起電腦,Oracle預設服務會自啟動。
  (6)以sysdba身份登入資料庫後,SQL>startup 安裝oracle有有jvm和xdb的使用者確保init.ora中的引數SHARED_POOL_SIZE 和JAVA_POOL_SIZE 為150m。方法是檢視現有兩個引數大小
   SQL>SHOW PARAMETER SHARED_POOL_SIZE
   SQL>SHOW PARAMETER JAVA_POOL_SIZE
   如果大小不是150m,進行設定:
   SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;
   SQL> ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile;
   設定成功後shutdown immediate關閉資料庫。
  (7)以sysdba登入資料庫
   執行 SQL> STARTUP MIGRATE
 SQL> SPOOL patch.log
 SQL> @ORACLE_BASE\ORACLE_HOME\rdbms\admin\catpatch.sql
 SQL> SPOOL OFF
    spool patch.log是把做升級日誌到patch.log,供以後察看。
   其中ORACLE_BASE\ORACLE_HOME表示你的oracle目錄,假設oracle安裝目錄為c:\oracle\ora92,則第三句應為:
   SQL>@c:\oracle\ora92\rrdbms\admin\catpatch.sql  其中@表示執行以下指令碼。
   這個過程持續大概20分鐘。
  (8)完成後shutdown資料庫,然後startup,執行另外一個指令碼
   SQL> @ORACLE_BASE\ORACLE_HOME\rdbms\admin\utlrp.sql,完成後升級補丁打完!!
  (8)重起資料庫,登陸後select * from v$version;可以看到oracle升到了9208。
2.oracle打安全補丁
 (1)補丁資訊:Critical Patch Update Note  Release 9.2.0.8 for Microsoft Windows (32-Bit),patch號為6867138。
 (2)CPU是過渡性補丁,需要用Oracle的安裝工具opatch安裝。
   安裝CPU之前,檢視相應的opatch版本應為1.0.0.0.57,9.2.0.1版oracle自帶版本為55的,到metalink下載57版本的,壓縮包名為p2617419_10102_GENERIC。解壓縮後將OPATCH目錄覆蓋%oracle_home%\opatch就行了。
 (3)在用OPATCH安裝安全補丁之前,停掉所有的oracle服務,但是實踐中發現,程式中仍會有相關的dll被未知(我未知)的程式佔用,導致couldn't copy一些.dll檔案。因此建議重啟伺服器,進入安全模式進行。
 (4)在安全模式下,在命令提示符中直接Opatch apply %補丁所在位置%,比如在我的電腦中補丁在 D:\software\oracle9\p6867138_92080_WINNT\6867138中,則我在命令提示符中輸入 Opatch apply D:\software\oracle9\p6867138_92080_WINNT\6867138,自動安裝安全補丁。
 (5)安裝完成後,補丁還不算打成功,都快哭了~~~~。咬牙,接著來
  跑remove_demo.js指令碼來移除不穩定的Oracle HTTP Server demos.命令提示符中cd到6867138目錄。
  >cscript. //nologo remove_demo.js
 (6)把修改過的 .sql檔案匯入資料庫:
   啟動oracle服務,cd %ORACLE_HOME%\cpu\CPUApr2008 然後以sysdba登入後執行SQL>@catcpu.sql
   如果在這個過程中報有invalid的物件,則需要執行(7),否則直接執行(8).
 (7)cd %ORACLE_HOME%\rdbms\admin後以sysdba登入,執行@utlrp.sql,之後你可以用
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS= 'INVALID';檢查,可以看到已沒有invalid物件。
 (8)重新編譯資料庫中的檢視
  cd %ORACLE_HOME%\cpu\view_recompile然後sysdba登入,執行SQL> @recompile_precheck_jan2008cpu.sql 這個是計算下需要執行的時間等。
  shutdown資料庫,以migrate方式startup,SQL>startup migrate 然後SQL> @view_recompile_jan2008cpu.sql 關閉資料庫。如果有invalid物件,手動compile,但是一般沒有。

  總結:oracle不同的補丁還有不同的打法,實在是很不智慧,所以之前要仔細的閱讀readme,是個很鬱悶的活!而且安裝完了不是真正的安裝完!!崩潰了吧~~~上邊的操作是新建資料庫之後就直接進行的,因此也沒有考慮到資料庫備份等工作。如果你已經在使用資料庫做了一些工作,建議先備份資料庫,以免補丁沒有打上,影響資料庫的使用。

 

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

相關文章