一、 升級前準備工作
1、 確認數(shù)據(jù)庫版本
使用dba登陸查詢當前數(shù)據(jù)庫的版本
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for 64-bit Windows: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 – Production
2、 查詢補丁安裝信息
SQL> select * from dba_registry_history;
沒有任何記錄一般是未安裝補丁,也可以在環(huán)境設置以后用opatch lsinventory opatch 命令查詢當前補丁安裝情況。
3、 查詢數(shù)據(jù)庫失效對象個數(shù),這個數(shù)字記下來記為N1
SQL> SELECT sum(OBJECT_NAME)N1 FROM DBA_OBJECTS WHERE STATUS= 'INVALID';
如果存在失效對象最好先編譯一遍
Sql >@?/rdbms/admin/utlrp.sql
編譯完成后重新執(zhí)行下下面語句,查看當前的實效對象記為N2
SQL> SELECT sum(OBJECT_NAME)N2 FROM DBA_OBJECTS WHERE STATUS= 'INVALID';
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS= 'INVALID';--將該結果存入excel或者表中,便于補丁完后進行核對。
4、 補丁類型
Oracle數(shù)據(jù)庫補丁一般分為兩種CPU和PSU補丁。
Oracle PSU的全稱是Patch Set Update,Oracle對于其產品每個季度發(fā)行一次的補丁包,包含了bug的修復。Oracle選取被用戶下載數(shù)量多,且被驗證過具有較低風險的補丁放入到每個季度的PSU中。在每個PSU中不但包含Bug的修復而且還包含了最新的CPU。PSU通常隨CPU一起發(fā)布。PSU通常是增量的,大部分PSU可以直接安裝,但有些PSU則必須要求安裝了上一 個版本的PSU之后才能繼續(xù)安裝,要仔細看各個PSU的Readme文檔。
Oracle CPU的全稱是Critical Patch Update, Oracle對于其產品每個季度發(fā)行一次安全補丁包,通常是為了修復產品中的安全隱患。CPU是累積的(Cumulative),即最新的CPU補丁已經包含以往的CPU補丁,所以只要安裝最新的CPU補丁即可。
安全漏洞整改時我們要安裝的是CPU補丁。
5、 查詢補丁信息
登陸oracle官網(wǎng)安全專題http://www.oracle.com/technetwork/topics/security點擊learn More,找到Critical Path Update Advisory
打開以后可以看到oracle發(fā)布的補丁的列表,里面包含了oracle產品發(fā)布的補丁。
6、 補丁下載
例如我們當前的oracle的版本為10.2.0.5,該版本的最后更新補丁為2013年 7月份,點擊上圖紅色鏈接后可以看到10.2.0.5的數(shù)據(jù)庫補丁。
注:下載使用metalink的賬號,依照服務器的類型下載相應版本的補丁即可。如果沒有oracle 的metalink賬號無法下載補丁。
7、 數(shù)據(jù)庫備份工作
在補丁升級前做好數(shù)據(jù)庫的備份工作,使用rman或者導出數(shù)據(jù)文件方式進行數(shù)據(jù)庫的全備。條件允許的情況下操作系統(tǒng)最好也進行一次備份。
所有以上操作做完后我們可以進行補丁安裝工作了。
二、 補丁安裝操作
1、 閱讀補丁安裝要求
每個補丁下載后的壓縮包均會包含一份README.html 在安裝前需要仔細閱讀。一般會標明該補丁適用的數(shù)據(jù)庫版本和操作系統(tǒng)版本,修復了哪些BUG等,還會有相關的提示信息。
2、 環(huán)境設置
2.1、Windows環(huán)境下
進入計算機屬性→高級系統(tǒng)設置→系統(tǒng)屬性→環(huán)境變量
編輯path在path末尾加上%ORACLE_HOME%\OPatch或者在cmd 下set path=%path%;%ORACLE_HOME%\OPatch;
2.2、Linux下的環(huán)境變量設置
使用oracle 安裝用戶,設置ORACLE_HOME以后export PATH=$ORACLE_HOME/OPatch:$PATH。
2.3、OPATCH命令測試
環(huán)境變量設置成功后測試OPatch命令是否可用,終端下opatch –help,可以看到相關信息表示環(huán)境變量設置成功。
3、 查詢補丁安裝信息
操作系統(tǒng)下查看當前補丁安裝情況opatch lsinventory –patch
4、 停掉監(jiān)聽和oracle服務
4.1、Windows下關閉服務
在服務里關閉Oracle相關服務進程,停掉監(jiān)聽和oracle服務。關閉PLSQL客戶端,關閉SQLPLUS界面。
4.2、Linux下關閉服務
shutdown 掉所有實例,關閉監(jiān)聽和oracle 相關進程。如果有安裝GI和其他使用Oracle 的應用一并停止,退出SQLPLUS界面。
5、 安裝補丁
在補丁目錄下執(zhí)行opatch apply。例如我的補丁解壓在E:\13460968,那就先CD到該目錄,然后執(zhí)行opatch apply
注意:windows下有時候會出現(xiàn)所有oracle進程關閉,但是命令執(zhí)行后依然會出現(xiàn)D:\oracle\product\10.2.0\db_1\bin\oci.dll 占用的錯誤。
linux下出現(xiàn)進程占用時一般是sqlplus 進程未關閉,可以用fuser查詢是什么用戶占用,但是強制kill時候數(shù)據(jù)庫啟動的時候可能會報錯。
去到該目錄找到該文件改名,例如改成oci.dllbak,如果執(zhí)行過補丁回退操作記得改回來,重新執(zhí)行opatch apply。
選擇y,下一步等待補丁安裝完畢即可。
6、 啟動數(shù)據(jù)庫
Windows先在服務中啟動oracle的服務和監(jiān)聽。以sysdba登陸系統(tǒng)。
Linux 下正常啟動oracle實例和監(jiān)聽。以sysdba登陸系統(tǒng)。
7、 執(zhí)行腳本,更新補丁信息到數(shù)據(jù)庫
執(zhí)行補丁包中的目錄下的腳本,等待腳本運行完畢即可。Linux找到補丁目錄執(zhí)行即可。
sql>@E:\13460968\files\Bundle\Patch14\catcpu.sql
注意:不同補丁集位置可能有所不同,但一般都是有該腳本。
8、 編譯失效對象,執(zhí)行以下語句
Sql >@?/rdbms/admin/utlrp.sql
注意:大部分失效對象錯誤是可以忽略的,具體類型可以用如下命令去檢查。
SQL> SELECT sum (OBJECT_NAME)N3 FROM DBA_OBJECTS WHERE STATUS='INVALID';
查看N3和第一張第3節(jié)的N2比對下,看是否新增失效對象,如果有查看具體的失效對象是什么,利用第一章節(jié)3小節(jié)得到的列表比對,如果不能處理咨詢數(shù)據(jù)庫管理員處理。
9、 查詢補丁更新的信息
select * from dba_registry_history;
可以查看到剛剛安裝的補丁的相關信息。(這里我安裝了一次,卸載了一次,最后是剛剛安裝成功的信息都記錄到了數(shù)據(jù)庫)。命令行下執(zhí)行Opatch lsinventory opatch
整個安裝流程結束,數(shù)據(jù)庫正常。
三、 回滾操作
一般情況下在不確定問題原因的情況下咨詢DBA進行檢查,確定問題原因,在無法查證原因的情況下可以回退,具體的回滾操作命令如下。
1、如果補丁應用后數(shù)據(jù)庫異常或者發(fā)生BUG,可以利用Opatch回滾補丁更新的操作。
2、關閉oracle相關服務,參照第二節(jié)2小節(jié)設置環(huán)境變量,執(zhí)行如下命令,紅色部分為安裝補丁的ID。
opatch rollback -id 13460968
3、執(zhí)行完畢后 啟動oracle相關服務,windows記得恢復重命名的dll文件。
4、查詢數(shù)據(jù)庫是否可以正常啟動。
5、回滾完畢以后使用sysdba用戶執(zhí)行roolback腳本
Sql>@E:\13460968\files\Bundle\Patch14\ catcpu_rollback.sql
6、檢查數(shù)據(jù)庫是否正常。
注意:數(shù)據(jù)庫補丁升級工作需要停應用和相關服務,在升級前一定要進行數(shù)據(jù)庫的備份工作。
以上所述是小編給大家介紹的Oracle數(shù)據(jù)庫opatch補丁操作流程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- Oralce 歸檔日志開啟與關閉示例
- 設置oralce自動內存管理執(zhí)行步驟
- 提取oralce當天的alert log的shell腳本代碼
- Oralce數(shù)據(jù)導入出現(xiàn)(SYSTEM.PROC_AUDIT)問題處理方法
- mysql數(shù)據(jù)庫遷移至Oracle數(shù)據(jù)庫
- Oracle數(shù)據(jù)庫ORA 54013錯誤的解決辦法
- VMware Workstation/Fusion 中安裝 Fedora 23/24 及其他 Linux 系統(tǒng)時使用 Open VM Tools 代替 VMware Tools 增強工具的方法
- oracle 創(chuàng)建字段自增長實現(xiàn)方式
- Oracle觸發(fā)器trigger詳解
- oracle 數(shù)據(jù)按主鍵刪除慢問題的解決方法
- Linux 自動備份oracle數(shù)據(jù)庫詳解
- ORACLE實現(xiàn)自定義序列號生成的方法
- ReactNative (API)AsyncStorage存儲詳解及實例
- 查詢Oracle中正在執(zhí)行和執(zhí)行過的SQL語句
- oralce和db2兼容開發(fā)注意事項