oracle10g升級到oracle11g操作記錄

wxjzqym發表於2013-12-07
最近在測試環境做了一個資料庫的升級,將相關操作步驟簡要記錄如下:
1.將10.2.0.1升級到10.2.0.4
1.1更新oracle TimeZone版本
1.1.1查詢源庫TimeZone版本
SQL> select * from v$timezone_file;
FILENAME        VERSION
------------ ----------
timezlrg.dat          2

1.1.2檢查是否儲存含有TZ的使用者資料
select c.owner || '.' || c.table_name || '(' || c.column_name || ') -' || c.data_type || ' ' col
   from dba_tab_cols c, dba_objects o
  where c.data_type like '%TIME ZONE'
     and c.owner=o.owner
    and c.table_name = o.object_name
    and o.object_type = 'TABLE'
 order by col
 /
查詢結果的owner如果只包含sys和WMSYS則表示不包含使用者的TZ資料


查詢是否含有非標準的scheduler_job
SQL> SELECT object_name FROM dba_objects WHERE object_id IN (SELECT obj# FROM scheduler$_window);
 
OBJECT_NAME
----------------------------- 
WEEKNIGHT_WINDOW
WEEKEND_WINDOW
 
SQL> SELECT object_name FROM dba_objects WHERE object_id IN (SELECT obj# FROM scheduler$_job);
 
OBJECT_NAME
-----------------------------
PURGE_LOG
FGR$AUTOPURGE_JOB
GATHER_STATS_JOB
AUTO_SPACE_ADVISOR_JOB
RLM$EVTCLEANUP
RLM$SCHDNEGACTION
查詢結果中包含有以上結果之外的話表示含有非標準的scheduler_job,即使用者自定義scheduler_job
除了資料庫中既不包含TZ的使用者資料又沒有自定義的scheduler_job外,其餘任何情況都需要校驗哪些資料受時區影響

1.1.3查詢受時區影響的資料
1.1.3.1下載utltzpv4.sql指令碼
1.1.3.2執行utltzpv4.sql指令碼
1.1.3.3查詢執行結果
SQL> select * from sys.sys_tzuv2_temptab;
 
no rows selected
如果無結果返回則表示時區更新操作可以忽略,如果有返回資料則可以呼叫以下相應指令碼解決!
prepare_tzuv.sql:自動建立備份表
restore_tzuv.sql:更新完時區檔案後可以使用該指令碼還原原始資料
clean_tzuv.sql:  確認資料正確恢復後可以使用該指令碼刪除備份表

1.2停止oracle所有相關程式
emctl stop dbconsole
isqlplusctl stop
lsnrctl stop
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE

1.3備份系統
Oracle Inventory
Oracle 10g home

1.4安裝10.2.0.4 Patchset(覆蓋安裝)
./runInstaller

1.5更新Oracle database 10.2.0.1 to 10.2.0.4(可以使用dbua或者手動更新,這裡我選擇手動更新)
1.5.1執行更新前資訊工具
SQL> STARTUP UPGRADE
SQL> SPOOL upgrade_info.log 
SQL> @?/rdbms/admin/utlu102i.sql
SQL> SPOOL OFF
檢查upgrade_info.log日誌資訊,將相關警告及錯誤一一解決


1.5.2更新資料庫
lsnrctl start
sqlplus / as sysdba
SQL> STARTUP UPGRADE
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> SPOOL OFF
檢查patch.log日誌資訊,將相關警告及錯誤一一解決
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
SQL> @?/rdbms/admin/utlrp.sql
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
如果以上輸出的status都為valid則表示升級成功

2.將10.2.0.4升級到11.2.0.3
2.1安裝11.2.0.3的PATCHSET(安裝在新的ORACLE_HOME下)
2.2升級前的預檢查
sqlplus / as sysdba
SQL> SPOOL upgrade_info.log
SQL> @$11g_ORACLE_HOME/rdbms/admin/utlu112i.sql
SQL> SPOOL OFF
檢查upgrade_info.log日誌資訊,將相關警告及錯誤一一解決

2.3手動升級資料庫
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP UPGRADE
SQL> SPOOL upgrade.log
SQL> @catupgrd.sql
SQL> STARTUP
SQL> @utlu112s.sql
SQL> @catuppst.sql
SQL> @utlrp.sql
SQL> SELECT count(*) FROM dba_invalid_objects;
SQL> SELECT distinct object_name FROM dba_invalid_objects;

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

相關文章