![]() |

文檔內容
適用於:Oracle Database Cloud Schema Service - 版本 N/A 和更高版本Oracle Database Exadata Cloud Machine - 版本 N/A 和更高版本 Oracle Cloud Infrastructure - Database Service - 版本 N/A 和更高版本 Oracle Database Backup Service - 版本 N/A 和更高版本 Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本 本文檔所含信息適用於所有平台 用途本文旨在提供使用 DBUA 把數據庫升級到 19c 的指南。 適用范圍DBA, Support 詳細信息Database Upgrade Assistant (DBUA)Database Upgrade Assistant (DBUA) 交互式的引導我們完成升級數據庫的步驟。 DBUA適用於CDB和非CDB數據庫系統。是推薦的升級數據庫主要版本或者補丁集的方式。 您可以使用DBUA升級多租戶架構容器數據庫(CDB),可插拔數據庫(PDB)和非CDB數據庫。 過程是相同的,但您必須做出的選擇和DBUA的行為是不同的,具體取決於升級類型。 它會自動執行為了升級數據庫所需的所有步驟。 在 Oracle RAC 環境下, DBUA 升級集群中的所有節點上的數據庫以及配置文件。 DBUA 需要在新安裝的數據庫 19c 軟件的 ORACLE_HOME 下運行。在 Windows 環境下,需要使用 administrator 用戶或者軟件的屬主用戶來執行 DBUA。 在真正開始升級前,DBUA 會執行 Pre-Upgrade Tool 來做先決條件檢查。 當解決了所有預升級推薦/錯誤/警告后開始升級,DBUA 會顯示升級源庫各個組件的進展。 就像之前版本的DBUA,19c 的 DBUA 限制了對隱藏參數的設置。因為除了為了升級而由 Oracle 技術支持推薦的隱含參數外,Oracle 不推薦使用其它的隱藏參數。
SELECT name,description from SYS.V$PARAMETER WHERE name LIKE '\_%' ESCAPE '\';
DBUA 會在數據庫真正升級之前檢查一些項目;這些檢查也可以手工去做來減少升級的停機時間。
DBUA 提供下面的一些選項: - 升級 timezone。19c 默認的 timezone 版本是 32。 - 在升級前收集數據字典的統計信息。 - 把用戶表空間設置為只讀。 - 在升級前做 RMAN 備份。 - 為 Database Flashback 創建一個 Restore Point - 可以恢復數據庫備份來回退升級。 - 可以在升級前或升級后執行自定義的腳本。
- 顯示 alert log 和 DBUA log的路徑。 - 可以把已存在的 listener 升級到最新的 19c Home 下或者在 19c 目標庫 HOME 下創建一個新的 listener。 關於只讀 Oracle Homes
從Oracle Database 18c開始,您可以以只讀模式配置 Oracle Homes。
在只讀 Oracle Homes 中,所有配置數據和日志文件都位於只讀 Oracle Homes 之外。 此功能允許您將只讀 Oracle Homes 簡單的部署到多個服務器上。 升級路徑/19c 兼容性矩陣可以直接升級到 19c 的版本
以下的數據庫版本需要間接升級:
需要及推薦在源庫上完成的
- 在升級前確保所有 oracle 提供的組件和對象都是有效的。 - 在開始升級或者降級前,Oracle 推薦您先升級源數據庫和目標數據庫到最新的 Oracle bundle patch 或者 patch set update (BP 或者 PSU)。 - 確保在 sys 和 system schema 下沒有重復存在的對象。對於 1) 和 2),參照: - 如果安裝了APEX,則建議先升級源數據庫中的APEX組件,然后再升級DB - 源庫的 timezone 版本應當小於或等於目標數據庫 timezone 版本。 - 確保升級前擁有一個可用的源數據庫的備份。 - 禁用所有自定義的 before/after DDL 類型的觸發器,完成升級后再啟用它們。 - 在升級前檢查數據庫的升級/降級兼容性矩陣。 - 推薦在升級前啟用 archive log 模式,這樣 DBUA 在升級過程中可以創建/更新 archive log。 - 如果使用 DBUA 升級的是 RAC 數據庫,那么必須保持 CLUSTER_DATABASE 設置成 true。 - 在升級前確保運行了 pre-upgrade 工具。 檢查並且實施 preupgrade log 給出的建議。 - 在升級前原數據庫上的物化視圖應該被停掉 Doc ID 1406586.1 - How to Handle Materialized Views When You Upgrade or Clone a Database - 禁止掉客戶的計划作業以及 cron job。 - 升級數據庫到19.1的 COMPATIBLE 參數最小的值是"11.2.0",確認數據庫 COMPATIBLE 參數已被設置為 11.2.0 或者更高
推薦/需要在目標庫上完成的
- 先檢查您的硬件平台/操作系統是否兼容 19c 版本。
- 下載安裝 19c 軟件到一個新的 ORACLE_HOME 並確認沒有編譯錯誤。 - 如果有最新的 RU 的話,下載並安裝它們。 - 確保設置 ORACLE_HOME, PATH, LD_LIBRARY_PATH, LIBPATH 等指向到 19c 目標庫 HOME。 - 查看文章 "Patches to apply before upgrading Oracle GI and DB to 19c (Doc ID 2539751.1)" 中給出的補丁建議 在 Windows 上需要對 Oracle Home 做的准備及前提條件
在 Microsoft Windows 平台上升級數據庫之前,必須滿足以下這些前提條件。基於安全的考慮,為不同的 Oracle Home 配置的不同的 Microsoft Windows 用戶,不允許共享同一個 Oracle Base。 - 數據庫升級對於源數據庫和目標數據庫的 ORACLE_HOME 使用相同的 Windows 用戶是支持的。 - 數據庫升級對於源數據庫使用 Windows 自帶賬戶是支持的。Oracle Database 12c 之前的版本 (release 11.2 或者之前的版本) 在 Windows 上只支持使用 Windows 自帶的用戶來作為 Oracle Home 用戶。 - Oracle home 用戶可能無法訪問在它自己的 Oracle Base 和 Oracle home 之外的文件。如果出現這樣的情況,那么在升級時選擇不同的 Oracle Base,可能會出現 Oracle 數據庫服務無法訪問舊 Oracle Base 的情況。使用 DBUA 升級,需要確保 Oracle Home 用戶可以訪問它自己的 Oracle Base 和 Oracle Home 之外的文件。
升級前步驟
$Earlier_release_Oracle_home/jdk/bin/java -jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar [FILE|TERMINAL] [TEXT|XML] [DIR output_dir]
比如, 源Oracle Home : /refresh/home/oracle/ora_base/product/18.1 目標Oracle Home : /refresh/home/oracle/ora_base/product/19.0.0.0 $ export ORACLE_SID=orcl $ $ORACLE_HOME/jdk/bin/java -jar /refresh/home/oracle/ora_base/product/19.0.0.0/rdbms/admin/preupgrade.jar TERMINAL TEXT FILE ================== PREUPGRADE SUMMARY ================== /refresh/home/oracle/ora_base/product/18.1/cfgtoollogs/pdl/preupgrade/preupgrade.log /refresh/home/oracle/ora_base/product/18.1/cfgtoollogs/pdl/preupgrade/preupgrade_fixups.sql /refresh/home/oracle/ora_base/product/18.1/cfgtoollogs/pdl/preupgrade/postupgrade_fixups.sql 執行 fixup 腳本: 升級前: 登錄數據庫並執行 preupgrade fixups @/refresh/home/oracle/ora_base/product/18.1/cfgtoollogs/pdl/preupgrade/preupgrade_fixups.sql 升級后: 執行 postupgrade fixups @/refresh/home/oracle/ora_base/product/18.1/cfgtoollogs/pdl/preupgrade/postupgrade_fixups.sql Preupgrade complete: 2019-05-22T05:14:05
檢查 preupgrade.log 並且實施推薦
最新的19c對應的 preupgrade 工具可以參照如下文檔獲取 : How to Download and Run Oracle's Database Pre-Upgrade Utility (Doc ID 884522.1)
檢查源庫中失效的組件及對象
set pagesize500 select substr(object_name,1,40) object_name,substr(owner,1,15) owner,object_type from dba_objects where status='INVALID' order by owner,object_type; select owner,object_type,count(*) from dba_objects where status='INVALID' group by owner,object_type order by owner,object_type ;
或者
SET SERVEROUTPUT ON; EXECUTE DBMS_PREUP.INVALID_OBJECTS;
如果發現了任何無效組件或者對象,則執行下面的操作以使數據庫中的無效對象變為有效: 執行 utlrp.sql 以編譯數據庫中的無效對象。 您可以多次執行utlrp.sql腳本以編譯無效對象。
$ sqlplus "/ as sysdba"
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
收集優化器統計信息來減少數據庫停機時間
Oracle 強烈推薦升級前收集統計信息。Oracle 推薦使用 DBMS_STATS.GATHER_DICTIONARY_STATS 來收集統計信息,比如,執行下面的 SQL:
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
確認升級前物化視圖刷新都已經完成用下面的語句檢查當前是否有物化視圖正在刷新。在升級數據庫前,我們需要確認所有的物化視圖都已經完成了刷新。
SQL> SELECT o.name FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8;
How to Handle Materialized Views When You Upgrade or Clone a Database (Doc ID 1406586.1)
檢查 TIMESTAMP WITH TIMEZONE 類型的數據類型Oracle Database 19c 自帶的 time zone 文件版本是 32 情況1 源數據庫的 Timezone 版本等於或者小於 32。 如果源數據庫的 Timezone 版本小於 32,那么不需要打 DST 補丁到源數據庫 Home 或者目標 19c home。 情況2 源數據庫的 Timezone 版本高於 32。 如果源數據庫的 Timezone 版本高於 32,升級前必須打補丁把目標 19c $ORACLE_HOME 升級到源庫的 Timezone 版本一致。
確保沒有數據文件需要介質恢復(media recovery)或處於備份的狀態
執行下面的語句檢查備份的狀態: SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE'; 確保沒有文件需要介質恢復: SQL> SELECT * FROM v$recover_file;
升級前清空回收站
SQL> PURGE DBA_RECYCLEBIN; DBUA 也可以清空回收站。
使用了 Oracle Label Security 和 Oracle Database Vault 的數據庫Audit Table 升級前准備
ORACLE_HOME/rdbms/admin/olspreupgrade.sql
ORACLE_HOME/rdbms/admin/emremove.sql ORACLE_HOME/rdbms/olap/catnoamd.sql
SQL> GRANT DV_PATCH_ADMIN to SYS;
CONNECT SYS AS SYSDBA
ORACLE_HOME/rdbms/admin/olspreupgrade.sql
ORACLE_HOME/rdbms/admin/emremove.sql ORACLE_HOME/rdbms/admin/catnoamd.sql
SQL> REVOKE DV_PATCH_ADMIN from SYS;
對於使用了Database Vault的12.1數據庫,賦予SYS以DV_PATCH_ADMIN的角色
SQL> GRANT DV_PATCH_ADMIN to SYS;
備份 Oracle EM DB Control 配置及數據 (對於低於 12.1 版本的數據庫)如果在升級數據庫到 19c 版本后,有需要再降級,那么我們必須在升級前使用 emdwgrd 工具備份 Database Control 的文件,這樣在降級后可以恢復這些文件。 備份數據的步驟: 1. 安裝 19c 的數據庫軟件。
單實例數據庫:emdwgrd[sh|bat] -save -sid old_SID -path save_directory
Oracle Real Application Clusters (Oracle RAC) 數據庫:
emdwgrd -save -cluster -sid old_SID -path save_directory
7. 提供要升級的數據庫的 SYS 密碼。
使用 emremove.sql 刪除 DB control (對於低於 12.1 版本的數據庫)
警告:
下面的步驟不能在升級 Enterprise Manager Cloud Control Repository 時操作,否則 EM Cloud Control Repository 數據庫會不可用。 從 Oracle Database 12c 版本1 (12.1) 開始,作為升級的一部分,DB Control 會被刪除。 停掉DB Console: emctl stop dbconsole 執行 emremove.sql 腳本。腳本存放在目標 19.x 的 OH/rdbms/admin/。 SQL>SET ECHO ON 在 emremove.sql 執行完畢后,必須從系統中手工刪除 ORACLE_HOME/HOSTNAME_SID 和 ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_HOSTNAME_SID 目錄。
不再支持 OLAP Catalog (OLAP AMD) (對於低於 12.1 版本的數據)從 Oracle Database 12c 開始,OLAP Catalog (OLAP AMD) 不再支持,並且作為升級的一部分會從數據庫中刪除。為了減少停機時間,也可以在升級前手工刪除它。可以執行腳本 $ORACLE_HOME/olap/admin/catnoamd.sql 來刪除它。請不要在 UPGRADE 模式下執行這個腳本。
復制 Transparent Encryption Oracle 錢包如果使用了帶 Oracle 錢包的 Transparent Data Encryption (TDE),並且要使用 Database Upgrade Assistant (DBUA) 來升級數據庫,那么拷貝 thesqlnet.ora 和 wallet 文件到新的 19c Oracle home。 在升級前需要手工拷貝 sqlnet.ora 和 wallet 文件。
比如
SQL> STARTUP MOUNT; SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN;
檢查用戶使用了大小寫敏感的密碼的版本以管理員賬號登陸 SQL*Plus 並執行下面的語句 如果存在 10g 版本的密碼,建議參照 Oracle 文檔來解決 10g 版本問題,否則,升級完成后用戶會被鎖。
關於密碼大小寫敏感確保沒有設置廢棄的參數 SEC_CASE_SENSITIVE_LOGON 為 FALSE。
使用了 Oracle Warehouse Builder (OWB) 組件的數據庫的升級前要求必須單獨安裝Oracle Warehouse Builder。 從Oracle Database 12c開始,Oracle Warehouse Builder(OWB)未作為Oracle數據庫軟件的一部分安裝。可以從 Oracle Technology Network 下載。早期版本中可能存在的OWB組件未作為Oracle數據庫升級過程的一部分進行升級。
啟動 DBUADBUA ( 步驟1 )我們需要選擇要升級的數據庫的 SID,在這個例子里是 test11204
DBUA ( 步驟 2 )DBUA會執行 preupgrade 腳本(preupgrade.jar) 並且返回警告/錯誤。
DBUA ( 步驟3)一旦 pre-upgrade 警告被解決,下一個屏幕會顯示各種選項,比如啟用並行升級,在升級后的步驟里重新編譯失效對象,升級 timezone,升級前收集統計信息,在升級中把用戶表空間設置為只讀。當然,您也可以指定在升級前后要執行的任何SQL腳本。
DBUA ( 步驟4 )在選擇選項之后,下個屏幕會顯示一些 Recovery 選項,比如在哪里創建 Guaranteed Restore Point,或者做一個 RMAN 備份或者已經在 DBUA 外創建了備份,那么"I have my own backup and restore stratege "選項可以被選中。
DBUA ( 步驟5)在這個屏幕里,可以創建一個新的監聽或者升級當前的監聽到 19c
DBUA ( 步驟6) 這個屏幕來配置 EM express 或者注冊這個數據庫到 EM Cloud control。
DBUA ( 步驟7)這是在真正的升級開始前顯示的匯總頁面,點擊 Finish 來開始真正的升級。
DBUA ( 步驟8)DBUA 開始升級 test11204 數據庫,它會完成升級前步驟,升級以及升級后步驟。
DBUA 會升級數據庫的組件比如 Oracle server, XML等。
DBUA ( 步驟9)最后的屏幕會顯示升級的結果。
它會顯示日志的路徑以及升級的各個步驟花費的時間。
升級后步驟執行 dbupgdiag.sql 腳本來驗證對象以及組件的狀態 。 如果存在失效對象,那么運行 utlrp.sql 來編譯所有的失效對象: sql> connect / as sysdba sql> @?/rdbms/admin/utlrp.sql |