您好,登錄后才能下訂單哦!
最近幾個項目上線前都要經過服務器的安全檢測,問題最大的就是oracle數據庫,一開始都是找相關部門的DBA幫忙,今年又上新項目,服務器到位部署完畢還是掃描出數據庫一堆漏洞。決定自己學學打補丁吧,對于數據庫入門級的我來說輕易真的不敢操作生產系統的數據庫,但是總要邁出這一步,先在虛擬機上練習,經過3天的查閱資源和閱讀官方的文檔,終于成功了。
在這里記錄下來,以備后用。
在這里首先感謝風哥提供的補丁和在安裝過程中給予的支持 目前正在學習風哥的RAC+DG的課程,風哥很多實戰中的經驗很值得我們新手借鑒。51CTO學院風哥介紹:http://edu.51cto.com/lecturer/index/user_id-8020378.html
操作系統:Linux redhat enterprise 6.4
數據庫:oracle 11gr2 11.2.0.4
補丁版本:2016年第一季度發布的 p22378146_112040_Linux-x86-64
opatch版本:p6880880_112000_Linux-x86-64
環境檢查:
SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE11.2.0.4.0Production TNS for Linux: Version 11.2.0.4.0 - Production NLSRTL Version 11.2.0.4.0 - Production
有些補丁必須要特定版本的opatch才能進行升級,我在第一次升級時就是報了opatch版本不能針對本次升級補丁包進行升級操作的錯誤信息,以下是我未升級前的opatch版本。如果你的opatch版本符合當前補丁要求可以略過opatch升級步驟。
[oracle@localhost ~]$ opatch version OPatch Version: 11.2.0.3.4 OPatch succeeded.
OPatch升級
1.我們需要首先升級OPatch。第一步是進行原有OPatch備份。
使用tar zcvf opatch_bk.tar OPatch 或者zip -r Opatch.zip OPatc/ 都可以
2.從官網支持網站下載最新的opatch包p6880880_112000_Linux-x86-64 解壓縮到$ORACLE_HOME下
3.執行opatch version查看最新版本
[oracle@localhost ~]$ opatch version OPatch Version: 11.2.0.3.6 OPatch succeeded.
數據庫升級
關閉監聽和停掉數據庫
將驅動上傳至oracle用戶目錄下
解壓縮后進入該補丁目錄
執行opatch apply進行安裝
成功后啟動監聽、啟動數據庫,查看是否能正常啟動
登陸數據庫執行@$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply
在dba_registry_history中,我們也可以看到記錄。
自2016年起,oracle的小版本號不再是以前那樣單個數字累加形式了,而是以日期的形式
下面是官方文檔我用有道翻譯的一些,也仍在這里算是備忘吧。最后打個廣告,胖哥也賣雜糧小米,有需要的加微信:aohanxiaomi
如果升級完畢,用PLSQL無法登陸,提示ORA-12526 所有適用例程都處于受限模式:請執行下面操作步驟
正常啟動。但是PL/SQL DEVELOPER 連不上。沒執行升級腳本。通過以下步驟升級成功。
SQL>@/home/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/catupgrd.sql
待catupgrd.sql腳本執行完成,大概花了半個多小時;腳本執行完會自動關閉庫,退出到oracle用戶下。
sqlplus /nolog
SQL>startup
啟動后用plsql鏈接成功,后面的步驟我就沒繼續操作,如果大家在升級中,到這步還是無法登陸可以繼續嘗試以下步驟。
執行腳本D:/oracle/product/10.2.0/db_1/RDBMS/ADMIN/utlrp.sql;
執行完畢后執行查詢所有重新編譯錯誤
SQL> select * from utl_recomp_errors;
未選定行(這里說明沒有錯誤)
執行檢查:
SQL> select name from v$database(確認ORACLE_SID正確,為orcl)
SQL> show user(確認當前使用者為SYS)
SQL> select tablespace_name, bytes from dba_data_files(對系統表空間大小進行確認)。
SQL> @d:/oracle/product/10.2.0/db_1/rdbms/admin/catalog.sql(重建SYS用戶視圖 )
(注:這步在我升級的時候語句全部報錯,應該可以忽略)
SQL>shutdown immediate
SQL>startup
數據庫啟動成功
To install the patch, follow these steps.
安裝補丁,遵循這些步驟。
Set your current directory to the directory where the patch is located and then run the OPatch utility by entering the following commands:
當前目錄設置為補丁所在的目錄,然后運行OPatch實用程序通過輸入以下命令:
$ cd <PATCH_TOP_DIR>/22139245
cd < PATCH_TOP_DIR > / 22139245美元
Install the patch by running the following command:
通過運行下面的命令安裝補丁:
$ opatch apply
美元opatch應用
Verify whether the patch has been successfully installed by running the following command:
驗證是否已成功安裝補丁通過運行下面的命令:
$ opatch lsinventory
美元opatch lsinventory
If apply fails for make target jox_refresh_knlopt when applying the patch to the database home, see Issue #1 in Section 8, "Known Issues" for more information.
如果不能申請目標jox_refresh_knlopt數據庫應用補丁時,看到問題# 1 8節,“已知問題”獲得更多信息。
Start the services from the Oracle home after all the nodes are patched.
啟動服務后從Oracle回家的所有節點是修補。
If there are errors, see Section 8, "Known Issues".
如果有錯誤,參見“已知的問題”。
4 Postinstallation
4 Postinstallation
The following steps load modified SQL files into the database. For an Oracle RAC environment, perform these steps on only one node.
以下步驟修改SQL文件加載到數據庫。在Oracle RAC環境中,只有一個節點上執行這些步驟。
Install the SQL portion of the patch by running the following command for a single instance environment.
安裝補丁的SQL部分通過運行下面的命令為單個實例的環境。
cd $ORACLE_HOME/sqlpatch/22139245
cd $ ORACLE_HOME / sqlpatch / 22139245
sqlplus /nolog
sqlplus / nolog
SQL> CONNECT / AS SYSDBA
SQL >連接/ SYSDBA
SQL> startup upgrade
SQL >啟動升級
SQL> @postinstall.sql
SQL > @postinstall.sql
SQL> shutdown
SQL >關閉
SQL> startup
SQL >啟動
For an Oracle RAC environment, reload the packages on one of the nodes using the following commands. Make sure no other instance of the database is up on the remote nodes.
對于一個Oracle RAC環境中,重載節點的包在一個使用以下命令。確保沒有其他實例數據庫的遠程節點上。
cd $ORACLE_HOME/sqlpatch/22139245
cd $ ORACLE_HOME / sqlpatch / 22139245
sqlplus /nolog
sqlplus / nolog
SQL> CONNECT / AS SYSDBA
SQL >連接/ SYSDBA
SQL> STARTUP
SQL >啟動
SQL> alter system set cluster_database=false scope=spfile;
SQL >改變系統設置cluster_database = false范圍= spfile;
SQL> SHUTDOWN
SQL >關閉
SQL> STARTUP UPGRADE
SQL >啟動升級
SQL> @postinstall.sql
SQL > @postinstall.sql
SQL> alter system set cluster_database=true scope=spfile;
SQL >改變系統集cluster_database = true范圍= spfile;
SQL> SHUTDOWN
SQL >關閉
SQL> STARTUP
SQL >啟動
After installing the SQL portion of the patch, some packages could become INVALID. This will get recompiled upon access or you can run utlrp. sql to get them back into a VALID state.
安裝補丁的SQL部分之后,一些包可能成為無效。這將會在訪問或您可以運行utlrp重新編譯。sql來讓他們回一個有效的狀態。
cd $ORACLE_HOME/rdbms/admin
cd $ ORACLE_HOME / rdbms / admin
sqlplus /nolog
sqlplus / nolog
SQL> CONNECT / AS SYSDBA
SQL >連接/ SYSDBA
SQL> @utlrp.sql
SQL > @utlrp.sql
If there are errors, see Section 8, "Known Issues".
如果有錯誤,參見“已知的問題”。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。