資料庫升級

zhangsharp20發表於2015-03-09
CPU(critical patch update)級:

1.下載相應的patch,將patch複製到資料庫伺服器相應的目錄中並解壓
2.關閉資料庫服務和監聽,進入到解壓的包的路徑下,透過圖形化介面對資料庫軟體進行升級
3.升級完資料庫軟體之後對資料庫檔案的資料字典進行更新
  1.以startup upgrade的方式開啟資料庫
  2.執行@?/rdbms/admin/catupgrd.sql
  3.shutdown資料庫以正常方式開啟資料庫,重新編譯失效物件@?/rdbms/admin/utlrp.sql
4.試執行已經升級過的資料庫看是否會發生錯誤
  如果出現錯誤,則可以透過startup downgrade後執行@?/rdbms/admin/catdwgrd.sql(10.2版)進行回退
  如果沒有出現錯誤,則要修改引數compatible的值(這個引數值一旦修改就無法再次更改,因此,修改需要慎之又慎)


PSU(patch set update)

1.PSU的升級需要一個oracle自帶的一個OPatch的工具,並且OPatch的版本必須必要升級的PSU的版本要高才能夠實現升級操作,如果oracle自帶的OPatch版本不夠,可以去官網下載高版本的OPatch。
2.進入到解壓後的Patch目錄下,執行命令/../OPatch/opatch apply,根據提示輸入相應的提示即可。
3.以上為對資料庫軟體進行的升級,還要對資料庫庫檔案的資料字典進行升級
  1.以startup方式啟動資料庫
  2.執行指令碼@?/rdbms/admin/catbundle.sql psu apply
  3.編譯無效物件@?/rdbms/admin/utlrp.sql
4.重新編譯CPU相關檢視(如果是PSU可略過此步驟),該步驟在資料庫上永遠只需要執行一次,是為了完成在2008年1月份第一次釋出CPU補丁時的後續工作,如果在安裝以前的PSU或者CPU時執行過這個步驟那麼就可以無需再次執行,另外,即使不執行該步驟,資料庫也是正常執行的,只不過意味著2008年1月份的CPU補丁沒有正常結束安裝。
   程式碼如下:
   SQL>select * from registry$history where ID='6452863';
   上面這條語句用於判斷是否已經執行過,如果有行數返回,說明已經執行過,可跳過該步驟;如果沒有行數返回,則可根據以下步驟重新編譯CPU/PSU相關檢視:
   程式碼如下:
   sqlplus / as sysdba
   SQL>@?/cpu/view/recompile/recompile_precheck_jan2008cpu.sql
   SQL>shutdown immediate
   SQL>startup upgrade
   SQL>@?/cpu/view/recompile/view_recompile_jan2008cpu.sql
   SQL>shutdown;
   SQL>startup;
   SQL>quit
5.事後檢查
  spool post_check.log
  SQL>select instance_name,status from v$instance;
  SQL>select comp_id,comp_name,version,status from dba_registry;
  SQL>select action_time,action,comments from dba_registry_history;
  SQL>select owner,object_name,object_type,status from dba_objects where status<>'VALID';
  SQL>select count(*) from dba_objects where status<>'VALID';
  SQL>spool off;

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

相關文章