當前位置:成語大全網 - 新華字典 - 如何升級oracle版本

如何升級oracle版本

本文檔旨在提供指南和核對清單,用於將之前升級的數據庫從Oracle12c降級回以前的版本:11.2.0.3,11.2.0.2,11.1.0.7  必須加以說明的是,將數據庫實例從當前版本降級到升級前的版本時,數據庫不會返回到升級前的完全相同狀態。根據所涉及的版本,升級過程會進行不可逆的更改。用戶使用降級過程可以打開和訪問以前版本的數據庫實例。這通常便已足夠。  可能需要采取其他更正操作(例如卸載/重新安裝或重新升級到當前補丁集級別來解決降級後的遺留問題。如果目標是讓實例返回與升級前完全相同的狀態,則還應使用包括完全恢復到升級前狀態在內的其他過程。  本文中討論的過程是基於腳本的降級。本文不介紹使用導出/導入、數據泵或其他方法將數據從壹個版本移動到另壹個版本。  您所降級到的版本的Oracle二進制文件,在開始降級過程之前應該在服務器上可用/已安裝。如果您卸載了要降級到的Oracle可執行文件,請重新安裝Oracle二進制文件到正確的版本/補丁程序級別以降級。  此過程旨在降級已成功升級到12c的數據庫,並非用於從失敗的升級退回。您只能降級到升級前所用的版本和補丁程序級別。  直接升級可以在版本10.2.0.5、11.1.0.7或版本11.2.0.2及更高版本上執行。可以對這些版本中除10.2.0.5之外的版本進行降級。  例如,如果通過應用中間補丁程序11.1.0.7從Oracle11.1.0.6升級到Oracle12c(12.1.0),則不能降級到Oracle11.1.0.6。降級只能對直接升級版本執行。  例外:  雖然可以對10.2.0.5直接升級,但降級不適用於10.2.0.5。  這是因為在升級過程中,compatible參數已設置為最低11.0.0。這使得無法降級到10.2.0.5。可以降級的版本為11.1.0.7、11.2.0.2、11.2.0.3或更高版本。  如果有任何補丁程序應用到了從升級後的主目錄運行的源數據庫,則需要先回退,然後才能開始降級過程。  卸載和回退補丁程序的步驟記錄在所涉及補丁程序的自述文件中。  未能卸載和回退補丁程序可能會導致無法降級,包括無法重新驗證字典對象。  Exadata捆綁補丁程序示例,其過程為:  卸載補丁程序  示例:$opatchauto/u01/app/oracle/patches/14103267-rollback  回退任何在補丁程序應用過程中應用的SQL:  示例:SQL>@rdbms/admin/catbundle_EXA__ROLLBACK.sql,用於回退SQL更改。  解決方案  降級前步驟  -XMLDB組件在12c中是必需的。  在升級到12c期間,將安裝XMLDB組件(如果未安裝)。  從12c降級將刪除安裝的XDB組件  -EnterpriseManager不支持降級。在降級之前,請重新配置OracleEM控件。請參閱  OracleDatabaseUpgradeGuide12cRelease1(12.1)E17642-10  6DowngradingOracleDatabasetoanEarlierRelease  6.6.5RestoringOracleEnterpriseManagerafterDowngradingOracleDatabase  -升級到12c期間,將刪除DatabaseControl資料檔案庫。降級之後,請重新配置DBControl。    Note870877.1HowToSaveOracleEnterpriseManagerDatabaseControlDataBeforeUpgradingTheSingleInstanceDatabaseToOtherRelease?  Note876353.1HowToRestoreTheOracleEnterpriseManagerDataToDowngradeTheSingleInstanceDatabaseToPrevious/SourceRelease?  -compatible參數不能已經更改到12.1.0。  -禁用DataVault(如果已啟用)。    Note803948.1HowToUninstallOrReinstallDatabaseVaultin11g(UNIX)  Note453902.1EnablingandDisablingOracleDatabaseVaultinWINDOWS  -如果數據庫使用OracleLabelSecurity,則在新OracleDatabase12cOracle主目錄中運行OracleLabelSecurity(OLS)預處理降級olspredowngrade.sql腳本(在$ORACLE_HOME/rdbms/admin上提供)。  -時區版本應相同。  -取消設置並指向12c主目錄的ORA_TZFILE(如果已設置)。  -如果數據庫上有OracleApplicationExpress,則必須將apxrelod.sql文件從OracleDatabase12c$ORACLE_HOME/apex/目錄復制到Oracle主目錄之外的目錄,例如系統上的臨時目錄以稍後執行。  -如果基於固定對象創建了對象,則刪除這些對象以避免可能的ORA-00600錯誤。您可以在降級之後重新創建這些對象。  -如果降級集群數據庫,則徹底關閉實例並將CLUSTER_DATABASE初始化參數更改為FALSE。降級之後,必須將此參數設置回TRUE。  滿足以上先決條件之後,可以繼續進行降級。  數據庫的降級步驟  1)確保所有數據庫組件有效。只能從成功升級的數據庫執行降級。要驗證數據庫組件狀態,請執行以下查詢  以SYS用戶身份連接到數據庫  colcomp_idformata10  colcomp_nameformata30  colversionformata10  colstatusformata8  selectsubstr(comp_id,1,15)comp_id,substr(comp_name,1,30)comp_name,substr(version,1,10)version,statusfromdba_registry  2)驗證沒有屬於sys/system的無效對象  selectowner,count(object_name)"Invalidobjectcount"fromdba_objectswherestatus!='VALID'andownerin('SYS','SYSTEM')groupbyowner;  如果計數為零,則可以繼續降級。  如果有無效對象,則執行utlrp.sql多次,如果對象無法解析為有效狀態,則不能繼續降級。建立SR或在DBA社區上發帖以尋求幫助。  或者,對於1和2,運行以下腳本:  Note556610.1ScripttoCollectDBUpgrade/MigrateDiagnosticInformation(dbupgdiag.sql)  3)關閉數據庫  Shutdownimmediate  4)對12c數據庫做備份  5)以降級模式啟動數據庫  Startupdowngrade;  6)執行降級腳本  Sql>Spooldowngrade.log  Sql>@$ORACLE_HOME/rdbms/admin/catdwgrd.sql  註:  $ORACLE_HOME應指向12c主目錄  catdwgrd.sql腳本將數據庫中的所有組件降級到支持的主版本或補丁集版本(您最初升級時的版本)  Sql>spooloff  Sql>shutdownimmediate  ExitSQLPlus  Sql>exit;  7)如果操作系統為LINUX/UNIX:  將以下環境變量更改為要降級到的源數據庫:  ORACLE_HOME  PATH  編輯/etc/oratabor/var/opt/oracle/oratab以更改  將數據庫映射到源數據庫Oracle主目錄  如果操作系統是Windows,則完成以下步驟:  a.停止所有Oracle服務,包括OracleDatabase12c數據庫的OracleServiceSIDOracle服務,其中SID是實例名稱。  例如,如果SID為ORCL,則在命令行提示符中輸入以下內容:  C:\>NETSTOPOracleServiceORCL  b.在命令提示符下,通過運行ORADIM命令刪除Oracle服務。如果出現提示,則輸入此Windows系統上活動標準用戶帳戶的口令。  例如,如果SID為ORCL,則輸入以下命令:  C:\>ORADIM-DELETE-SIDORCL  c.在命令提示符下,使用ORADIM命令創建要降級的數據庫的Oracle服務。  C:\>ORADIM-NEW-SIDSID-INTPWDPASSWORD-MAXUSERSUSERS  -STARTMODEAUTO-PFILEORACLE_HOME\DATABASE\INITSID.ORA  8)還原配置文件  將配置文件(口令文件、參數文件等)還原到降級版本的ORACLE_HOME。  9)如果這是OracleRAC數據庫,則執行以下命令以將數據庫修改為單實例模式:  SETCLUSTER_DATABASE=FALSE  10)從降級版本$ORACLE_HOME/rdbms/admin目錄執行catrelod腳本。  啟動sqlplus,以具有sysdba權限的用戶SYS身份連接到數據庫實例,然後以升級模式啟動數據庫:  :cd$ORACLE_HOME/rdbms/admin  :sqlplus  sql>connectsysassysdba  sql>startupupgrade  sql>spoolcatrelod.log  sql>@?/rdbms/admin/catrelod.sql  sql>spooloff  catrelod.sql腳本在降級的數據庫中重新加載各個數據庫組件的合適版本。  11)運行utlrp.sql腳本:  SQL>@utlrp.sql  Sql>exit;  utlrp.sql腳本重新編譯先前處於INVALID狀態的所有現有PL/SQL模塊,例如package、procedure、type等。  12)檢查已降級數據庫的狀態:  Note556610.1ScripttoCollectDBUpgrade/MigrateDiagnosticInformation(dbupgdiag.sql)  此sql腳本是壹組查詢語句,用於提供用戶友好的輸出,以在升級前後診斷數據庫的狀態。腳本將創建名為db_upg_diag__.log的文件。  13)降級之後,可能在sys用戶下發現無效的QT視圖。這是因為視圖已從基表中選擇了錯誤的列。您需要重新創建這些視圖。  請參閱說明:  Note1520209.1QT_*BUFERViewsInvalidafterdowngradefrom12C  降級後步驟:  1)如果您是降級到OracleDatabase11g版本1(11.1.0.7)並且數據庫中有OracleApplicationExpress,則轉到您將apxrelod.sql腳本復制到的目錄(在降級前步驟中)。  運行apxrelod.sql腳本以手動重新加載OracleApplicationExpress:  SQL>@apxrelod.sql  運行apxrelod.sql腳本以避免程序包APEX_030200.WWV_FLOW_HELP由於以下錯誤而成為INVALID狀態:  PLS-00201:identifier'CTX_DDL'mustbedeclared  2)如果數據庫中啟用了OracleLabelSecurity,則執行以下腳本  a.從OracleDatabase12c的Oracle主目錄下將olstrig.sql腳本復制到要將數據庫降級到的版本的Oracle主目錄。  b.從降級到的版本的Oracle主目錄,運行olstrig.sql以在表上使用OracleLabelSecurity策略重新創建DML觸發器:  SQL>@olstrig.sql  3)如果降級集群數據庫,則必須運行以下命令以降級OracleClusterwaredatabase配置:  $srvctldowngradedatabase-ddb-unique-name-ooraclehome-tto_version  其中db-unique-name是數據庫名稱(而非實例名稱),oraclehome是已降級數據庫的舊Oracle主目錄的位置,to_version是數據庫所降級到的數據庫版本