標籤:資料庫 rac 升級 opatch oem
環境:10.2.0.4叢集資料庫zlm10g(雙節點,zlm10g1,zlm10g2)
系統:Windows 2003 Server 64Bit
記憶體:2G RAM
儲存:ASM
目標:把叢集資料庫從10.2.0.4升級到10.2.0.5,包括叢集軟體和OEM的Patch安裝
一、升級前準備:
1. 查看是否存在無效對象
SQL> select object_name,status from dba_objects where
status=‘INVALID‘;
目的是為了可以判斷這些無效對象是由升級過程產生的,還是升級前就已經存在的
2. 檢查資料庫中的時區 (Time Zone) 資訊
SQL> select version from v$timezone_file;
2.1 返回值為4
此時資料庫中如果含有TZ資訊,在升級中無需額外的操作
2.2 返回值大於4
請查閱[ID 553812.1]文檔
2.3 如果返回值小於4
執行以下步驟
@?/rdbms/admin/utltzpv4.sql;
select * from sys.sys_tzuv2_temptab;
如果沒有返回行,那麼在升級過程無需額外操作
如果返回包含TZ的具體列資訊,那麼升級操作會影響到該TZ資訊
如果SYS使用者有擁有SCHEDULER對象,那麼在升級過程中可以忽略,但是如果有使用者資料或使用者建立的job,則需要在升級前對這些資料進行備份,升級後刪除全部使用者建立的job,然後再重建
兩種升級的方式:
滾動升級(無停機時間)
非滾動升級(有停機時間)
二、升級叢集資料庫軟體
1. 首先,準備好10.2.0.5的Patch介質:
p8202632_10205_MSWIN-x86-64
2. 停止所有節點的Oracle相關服務和進程
2.1 停止crs資源
emctlstop dbconsole
isqlplusctlstop
lsnrctlstop
srvctlstop service -d zlm10g
srvctlstop databse -d zlm10g
srvctlstop asm -n rac1
srvctlstop asm -n rac2
srvctlstop listener -n rac1
srvctlstop listener -n rac2
srvctlstop nodeapps -n rac1
srvctlstop nodeapps -n rac2
crs_stat-t檢查叢集資源是否已經全部關閉
srvctlstop crs
2.2 停止服務
運行services.msc,查看Oracle相關服務是否全部已經關閉,另外有
一個Distributed TransactionCoordinator服務也要停止
2.3 停止進程
查看工作管理員中是否有oracle相關的進程在運行,全部關閉之,如:one.exe
3. 備份以下目錄(copy至其他路徑):
%ORACLE_CRS_HOME%
%ORACLE_HOME%
%ORACLE_INVENTORY%
注意:推薦先對資料庫進行RMAN備份
4. 安裝叢集軟體Patch
安裝時,直接選取覆蓋原路徑安裝,即crs_1目錄
軟體安裝完畢後,分別在節點1和節點2運行patch102.bat完成實際安裝過程,運行完指令碼後,系統會自動運行CRS相關服務
5. 檢查叢集Patch是否正確安裝
crsctlquery crs softwareversion
crsctlquery crs activeversion
如果叢集Patch正常安裝完畢,這2個命令的輸出應該都是10.2.0.5.0
三、資料庫軟體Patch安裝
1. 安裝介質和升級ClusterWare時用的是同一個:
p8202632_10205_MSWIN-x86-64
2. 關閉Oracle相關服務和進程
2.1 停止crs資源
emctlstop dbconsole
isqlplusctlstop
lsnrctlstop
srvctlstop service -d zlm10g
srvctlstop databse -d zlm10g
srvctlstop asm -n rac1
srvctlstop asm -n rac2
srvctlstop listener -n rac1
srvctlstop listener -n rac2
2.2 停止服務
運行services.msc,查看Oracle相關服務是否全部已經關閉,另外有
一個Distributed TransactionCoordinator服務也要停止
2.3 停止進程
查看工作管理員中是否有oracle相關的進程在運行,全部關閉之,如:one.exe
3. 安裝Oracle資料庫軟體的Patch
安裝直接選取之前裝資料庫軟體的同一個目錄,即db_1目錄
4. 修改叢集資料庫參數
裝完後以sysdba登入系統,修改cluster_database參數為False
sqlplus/nolog
SQL>alter system set cluster_database=falsescope=spfile;
SQL>shutdown immediate
5. 在節點1跑升級指令碼,對資料庫進行升級
5.1 進入升級模式:
SQL>startup upgrade
5.2 預檢一下升級是否符合條件:
SQL>spool patch_info.log
SQL> @?\rdbms\admin\utlu102i.sql
SQL>spool off
關於預檢這個指令碼,官網對於每個版本,有更多的補充指令碼,會提供更新、更詳細的預檢內容,詳情可以查閱 [ID 884522.1]
5.3 開始執行正式的升級指令碼:
SQL>spool patch.log
SQL> @?\rdbms\admin\utlupgrd.sql
10gR2該過程持續約30分鐘,11gR2大約需要50分鐘
5.4 編譯升級後產生的無效對象
SQL>spool rp.log
SQL> @?\rdbms\admin\utlrp.sql
SQL>spool off
5.5 檢查升級後資料庫各組件是否有效
SQL> select comp_id,comp_name,status from sys.dba_registry;
如果升級正常完成,全部組件的status列的值應該都是VALID
四、用OPatch安裝10.2.0.5以後的補丁
1. 介質準備及說明
p8350262_10205_Generic (OEM補丁)
p12429524_10205_MSWIN-x86-64
這裡要說明一下,打該補丁主要目的,是為了能正常使用OEM對資料庫進行管理,由於OEM在10.2.0.4和10.2.0.5上正常運行存在一個bug,詳見:[ID1222603.1]
如果不打該OEM補丁,那麼在執行dbca,dbua,emca配置OEM時,都會提示無法配置EM,啟動Database Control失敗,原因是根憑證CA在31-DEC-2010失效,而無法使用SSL協議進行通訊,導致無法啟動,該bug僅限於以上2個版本的PSR
這裡第2個介質,p12429524_10205_MSWIN-x86-64包含了更多的fixed bug,所以如果直接安裝12429524這個PSU,那麼也可以不用安裝8350262,二者選一即可
2. OPatch安裝
對於Oracle所有的Interim Patch,即我們說的經常所說的小補丁(PSU),都可以用OPatch來進行安裝,這是Oracle官方提供的一個補丁安裝指令碼,使用起來很簡單,目錄就放在ORACLE_HOME\OPatch
下面,Windows平台的可執行檔為opatch.bat,把需要安裝的補丁解壓到某個目錄,然後執行“opatch apply +解壓目錄路徑”就可以了,也可以進入解壓出來的那個一串數位目錄中,直接執行opatch apply來安裝補丁,如果要查看資料庫之前了哪些補丁,可以執行opatch lsinventory[-detail],具體命令可以加-help查閱
3. 重新設定OEM
裝完補丁以後,如果直接去啟動DBconsole還是會遇到無法正常啟動,這裡需要對其進行重新設定,主要就是3個步驟:
3.1 節點1執行
emctlsecure dbconsole -reset
3.2 節點2執行
emctlsecure dbconsole
注意,是不帶-reset參數的命令
3.3 節點1(或節點2)啟動dbconsole
emctlstart dbconsole
五、收尾
至此,全部升級工作順利結束,檢查一下是否有遺漏的Oracle服務和進程未開啟,如果有的話,全部開啟
services.msc
crs_stat -t
emctlstart dbconsole
isqlplusctlstart
lsnrctlstart
srvctlstart service -d zlm10g
srvctlstart database -d zlm10g
srvctlstart instance -d zlm10g-i zlm10g1
srvctlstart instance -d zlm10g-i zlm10g2
srvctlstart listener -n rac1
srvctlstart listener -n rac2
srvctlstart asm -n rac1
srvctlstart asm -n rac2
srvctlstart nodeapps -n rac1
srvctlstart nodeapps -n rac2
以上命令可選,並非都需要執行一遍,如果crs資源都ONLINE了,那就不需要執行了