如何將 12c 資料庫降級為以前的版本 (文件 ID 1602889.1)
適用於:
Oracle Database - Standard Edition - 版本 12.1.0.1 和更高版本Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本
本文件所含資訊適用於所有平臺
目標
目的
本文件旨在提供指南和核對清單,用於將之前升級的資料庫從 Oracle 12c 降級回以前的版本: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 從 Oracle 11.1.0.6 升級到 Oracle 12c (12.1.0),則不能降級到 Oracle 11.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 捆綁補丁程式示例,其過程為:
解除安裝補丁程式
示例: $ opatch auto /u01/app/oracle/patches/14103267 -rollback
回退任何在補丁程式應用過程中應用的 SQL:
示例: SQL> @rdbms/admin/catbundle_EXA_<資料庫 SID>_ROLLBACK.sql,用於回退 SQL 更改。
解決方案
降級前步驟
-
- XML DB 元件在 12c 中是必需的。
在升級到 12c 期間,將安裝 XML DB 元件(如果未安裝)。
從 12c 降級將刪除安裝的 XDB 元件 -
- Enterprise Manager 不支援降級。在降級之前,請重新配置 Oracle EM 控制元件。請參閱
Oracle Database Upgrade Guide 12c Release 1 (12.1) E17642-10
6 Downgrading Oracle Database to an Earlier Release
6.6.5 Restoring Oracle Enterprise Manager after Downgrading Oracle Database
- 升級到 12c 期間,將刪除 Database Control 資料檔案庫。降級之後,請重新配置 DB Control。
Note 870877.1 How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release ?
Note 876353.1 How To Restore The Oracle Enterprise Manager Data To Downgrade The Single Instance Database To Previous/Source Release ? - - compatible 引數不能已經更改到 12.1.0。
-
- 禁用 Data Vault(如果已啟用)。
Note 803948.1 How To Uninstall Or Reinstall Database Vault in 11g (UNIX)
Note 453902.1 Enabling and Disabling Oracle Database Vault in WINDOWS - - 如果資料庫使用 Oracle Label Security,則在新 Oracle Database 12c Oracle 主目錄中執行 Oracle Label Security (OLS) 預處理降級 olspredowngrade.sql 指令碼(在 $ORACLE_HOME/rdbms/admin 上提供)。注意!此步驟僅在需要降級到12c之前的版本時才需要
- - 時區版本應相同。
- - 取消設定並指向 12c 主目錄的 ORA_TZFILE(如果已設定)。
- - 如果資料庫上有 Oracle Application Express,則必須將 apxrelod.sql 檔案從 Oracle Database 12c $ORACLE_HOME/apex/ 目錄複製到 Oracle 主目錄之外的目錄,例如系統上的臨時目錄以稍後執行。
- - 如果基於固定物件建立了物件,則刪除這些物件以避免可能的 ORA-00600 錯誤。您可以在降級之後重新建立這些物件。
- - 如果降級叢集資料庫,則徹底關閉例項並將 CLUSTER_DATABASE 初始化引數更改為 FALSE。降級之後,必須將此引數設定回 TRUE。
滿足以上先決條件之後,可以繼續進行降級。
資料庫的降級步驟
1) 確保所有資料庫元件有效。只能從成功升級的資料庫執行降級。要驗證資料庫元件狀態,請執行以下查詢
以 SYS 使用者身份連線到資料庫
col comp_id format a10
col comp_name format a30
col version format a10
col status format a8
select substr(comp_id,1,15) comp_id,substr(comp_name,1,30) comp_name,substr(version,1,10) version,status from dba_registry
2) 驗證沒有屬於 sys/system 的無效物件
如果計數為零,則可以繼續降級。
如果有無效物件,則執行 utlrp.sql 多次,如果物件無法解析為有效狀態,則不能繼續降級。建立 SR 或在 DBA 社群上發帖以尋求幫助。
或者,對於 1 和 2,執行以下指令碼:
3) 關閉資料庫
4) 對 12c 資料庫做備份
5) 以降級模式啟動資料庫
6) 執行降級指令碼
Sql> Spool downgrade.log
Sql> @$ORACLE_HOME/rdbms/admin/catdwgrd.sql
注:
$ORACLE_HOME 應指向 12c 主目錄
catdwgrd.sql 指令碼將資料庫中的所有元件降級到支援的主版本或補丁集版本(您最初升級時的版本)
Sql> spool off
Sql> shutdown immediate
Exit SQL Plus
Sql> exit;
7) 如果作業系統為 LINUX/UNIX:
將以下環境變數更改為要降級到的源資料庫:
ORACLE_HOME
PATH
編輯 /etc/oratab or /var/opt/oracle/oratab 以更改
將資料庫對映到源資料庫 Oracle 主目錄
如果作業系統是 Windows,則完成以下步驟:
a. 停止所有 Oracle 服務,包括 Oracle Database 12c 資料庫的 OracleServiceSID Oracle 服務,其中 SID 是例項名稱。
例如,如果 SID 為 ORCL,則在命令列提示符中輸入以下內容:
b. 在命令提示符下,透過執行 ORADIM 命令刪除 Oracle 服務。如果出現提示,則輸入此 Windows 系統上活動標準使用者帳戶的口令。
例如,如果 SID 為 ORCL,則輸入以下命令:
c. 在命令提示符下,使用 ORADIM 命令建立要降級的資料庫的 Oracle 服務。
C:\> ORADIM -NEW -SID SID -INTPWD PASSWORD -MAXUSERS USERS
-STARTMODE AUTO -PFILE ORACLE_HOME\DATABASE\INITSID.ORA
8) 還原配置檔案
將配置檔案(口令檔案、引數檔案等)還原到降級版本的 ORACLE_HOME。
9) 如果這是 Oracle RAC 資料庫,則執行以下命令以將資料庫修改為單例項模式:
SET CLUSTER_DATABASE=FALSE
10) 從降級版本 $ORACLE_HOME/rdbms/admin 目錄執行 catrelod 指令碼。
啟動 sqlplus,以具有 sysdba 許可權的使用者 SYS 身份連線到資料庫例項,然後以升級模式啟動資料庫:
: cd $ORACLE_HOME/rdbms/admin
: sqlplus
sql> connect sys as sysdba
sql> startup upgrade
sql> spool catrelod.log
sql> @?/rdbms/admin/catrelod.sql
sql> spool off
catrelod.sql 指令碼在降級的資料庫中重新載入各個資料庫元件的合適版本。
11) 執行 utlrp.sql 指令碼:
SQL> @utlrp.sql
Sql> exit;
utlrp.sql 指令碼重新編譯先前處於 INVALID 狀態的所有現有 PL/SQL 模組,例如 package、procedure、type 等。
12) 檢查已降級資料庫的狀態:
此 sql 指令碼是一組查詢語句,用於提供使用者友好的輸出,以在升級前後診斷資料庫的狀態。指令碼將建立名為 db_upg_diag_<sid>_<時間戳>.log 的檔案。
13) 降級之後,可能在 sys 使用者下發現無效的 QT 檢視。這是因為檢視已從基表中選擇了錯誤的列。您需要重新建立這些檢視。
請參閱說明:
降級後步驟:
1)如果您是降級到 Oracle Database 11g 版本 1 (11.1.0.7) 並且資料庫中有 Oracle Application Express,則轉到您將 apxrelod.sql 指令碼複製到的目錄(在降級前步驟中)。
執行 apxrelod.sql 指令碼以手動重新載入 Oracle Application Express:
執行 apxrelod.sql 指令碼以避免程式包 APEX_030200.WWV_FLOW_HELP 由於以下錯誤而成為 INVALID 狀態:
2) 如果資料庫中啟用了 Oracle Label Security,則執行以下指令碼
a. 從 Oracle Database 12c 的 Oracle 主目錄下將 olstrig.sql 指令碼複製到要將資料庫降級到的版本的 Oracle 主目錄。
b. 從降級到的版本的 Oracle 主目錄,執行 olstrig.sql 以在表上使用 Oracle Label Security 策略重新建立 DML 觸發器:
3) 如果降級叢集資料庫,則必須執行以下命令以降級 Oracle Clusterware database 配置:
其中 db-unique-name 是資料庫名稱(而非例項名稱),oraclehome 是已降級資料庫的舊 Oracle 主目錄的位置,to_version 是資料庫所降級到的資料庫版本
因為程式碼的改變,現在-to_version對應的值如下:
RDBMS Version -to_version Value
9.2.0.* 9.2.0.0.0
10.1.0.* 10.0.0.0.0
10.2.0.* 10.2.0.0.0
11.1.0.* 11.0.0.0.0
11.2.0.1 11.2.0.1.0
11.2.0.2 11.2.0.2.0
11.2.0.3 11.2.0.3.0
11.2.0.4 11.2.0.4.0
4) 如果發現失效的SYS/SYETEM的物件,那麼可以使用下面的方法來編譯這些失效物件
$ sqlplus "/ as sysdba"
SQL> startup upgrade
SQL> spool catout.log
SQL> @?/rdbms/admin/catproc.sql
SQL> @?/rdbms/admin/utlrp.sql
SQL> spool off
SQL> shutdown immediate
參考
NOTE:1351112.1 - Information Center: Upgrading and Migration Oracle DatabaseNOTE:1520299.1 - Master Note For Oracle Database 12c Release 1 (12.1) Database/Client Installation/Upgrade/Migration Standalone Environment (Non-RAC)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31393455/viewspace-2128106/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MOS】手動升級到資料庫 12c 版本1(12.1)的完整核對清單 (文件 ID 2047701.1)資料庫
- 如何將SQL Server 2000備份的資料庫檔案還原(升級)為SQL Server 2005或更高版本的資料庫?SQLServer資料庫
- android資料庫如何進行版本升級?架構之資料庫框架升級Android資料庫架構框架
- 如何在Windows Server 2012及更高版本中將域控制器降級WindowsServer
- wordpress升級後後悔了可以使用外掛將wordpress降級為低版本
- 為什麼DBA需要資料庫廠商的資料庫概念文件資料庫
- Node 快速切換版本、版本回退(降級)、版本更新(升級)
- python如何將資料插入資料庫Python資料庫
- 降級MySQL(參考MySQL官方文件)MySql
- 如何將 Ubuntu 版本升級到新版本Ubuntu
- Pre-Upgrade Utility---下載並執行Oracle資料庫預升級實用程式 (文件 ID 1577379.1)Oracle資料庫
- 【資料庫升級】Oracle指令碼升級12c CDB to 19c CDB資料庫Oracle指令碼
- 如何將 EXCEL 資料寫入資料庫Excel資料庫
- oracle 12C以上 版本資料庫訪問 ORA-28040 ORA-03134Oracle資料庫
- 【RAC】Oracle 12c以及以上版本的diagsnap是什麼? (Doc ID 2469643.1)Oracle
- 【轉載】TortoiseSVN怎麼恢復到以前版本-恢復到以前版本的方法
- 資料庫界的Swagger:一鍵生成資料庫文件!資料庫Swagger
- ORACLE 12C RAC資料庫的啟停Oracle資料庫
- 如何將Excl內資料匯入資料庫?資料庫
- 將資料庫中資料匯出為excel表格資料庫Excel
- Oracle 12c資料庫安裝Oracle資料庫
- 如何將 Mac 恢復還原到以前的日期Mac
- 如何將資料庫中的資料導成 excel 檔案資料庫Excel
- 我們為什麼要遠離資料庫生成的ID?- Tugberk Ugurlu資料庫
- iOS CoreData (二) 版本升級和資料庫遷移iOS資料庫
- 將Oracle 12c資料庫註冊到Oracle 19c Grid InfrastructureOracle資料庫ASTStruct
- 資料庫主鍵 ID 生成策略資料庫
- 【MOS】從 11.2.0.N 版本非原地手動升級到最新的 11.2.0.N (文件 ID 1602485.1)
- indexedDB 資料庫版本Index資料庫
- Express 文件(資料庫整合)Express資料庫
- Oracle 12C RAC CDB資料庫部署Oracle資料庫
- 如何將Rust的“struct”轉換為資料流?RustStruct
- GitLab 如何降級安裝?Gitlab
- Oracle 12c系列(九) | 通過unplug與plug方式升級pdb資料庫Oracle資料庫
- 企業資料庫工作2:團隊培養,如何高效閱讀資料庫文件資料庫
- win10專業版系統怎麼隱藏資料夾“以前的版本”Win10
- [資料庫][分庫分表]分庫分表之後,id主鍵如何處理資料庫
- 【MOS】如何利用RMAN可傳輸表空間遷移資料庫到不同位元組序的平臺(文件 ID 1983639.1)資料庫
- 12c 傳統資料庫的ADG初體驗資料庫