Oracle 19c - 使用 DBUA 升級數據庫到 Oracle Database 19c (19.x) 的完整覈對清單

文檔內容

  用途
  適用範圍
  詳細信息
  Database Upgrade Assistant (DBUA)
  關於只讀 Oracle Homes
  升級路徑/19c 兼容性矩陣
  需要及推薦在源庫上完成的
  推薦/需要在目標庫上完成的 
  在 Windows 上需要對 Oracle Home 做的準備及前提條件
  升級前步驟
  檢查源庫中失效的組件及對象
  收集優化器統計信息來減少數據庫停機時間
  確認升級前物化視圖刷新都已經完成
  檢查 TIMESTAMP WITH TIMEZONE 類型的數據類型
  確保沒有數據文件需要介質恢復(media recovery)或處於備份的狀態
  升級前清空回收站
  使用了 Oracle Label Security 和 Oracle Database Vault 的數據庫
  備份 Oracle EM DB Control 配置及數據 (對於低於 12.1 版本的數據庫)
  單實例數據庫:
  Oracle Real Application Clusters (Oracle RAC) 數據庫:
  使用 emremove.sql 刪除 DB control (對於低於 12.1 版本的數據庫)
  不再支持 OLAP Catalog (OLAP AMD) (對於低於 12.1 版本的數據)
  複製 Transparent Encryption Oracle 錢包
  檢查用戶使用了大小寫敏感的密碼的版本
  關於密碼大小寫敏感
  使用了 Oracle Warehouse Builder (OWB) 組件的數據庫的升級前要求
  啓動 DBUA
  DBUA ( 步驟1 ) 
  DBUA ( 步驟 2 ) 
  DBUA ( 步驟3) 
  DBUA ( 步驟4 ) 
  DBUA ( 步驟5) 
  DBUA ( 步驟7) 
  DBUA ( 步驟8) 
  DBUA ( 步驟9) 
  升級後步驟
  Known Issues

 

適用於:

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 來做先決條件檢查。
但是,爲了減少停機時間,Oracle建議您在升級計劃中運行 Pre-Upgrade Tool,以便分析數據庫的先決條件檢查,並在計劃的升級日期之前採取主動措施。

當解決了所有預升級推薦/錯誤/警告後開始升級,DBUA 會顯示升級源庫各個組件的進展。

就像之前版本的DBUA,19c 的 DBUA 限制了對隱藏參數的設置。因爲除了爲了升級而由 Oracle 技術支持推薦的隱含參數外,Oracle 不推薦使用其它的隱藏參數。
要檢查數據庫中已設置的隱藏參數,可以使用 AS SYSDBA 權限執行下面的命令:

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 的版本
源數據庫 目標數據庫
11.2.0.4 及更高版本 19.x
12.1.0.2

19.x

12.2.0.1

19.x

18.1

19.x

 

以下的數據庫版本需要間接升級:

 
源數據庫   升級路徑   目標數據庫
11.2.0.1/11.2.0.2/11.2.0.3 --> 11.2.0.4 --> 19.x
11.1.0.6/11.1.0.7 --> 11.2.0.4 --> 19.x
10.2.0.2, 10.2.0.3, 10.2.0.4, 10.2.0.5 --> 11.2.0.4/12.1.0.2 --> 19.x
10.1.0.5 --> 11.2.0.4/12.1.0.2 --> 19.x
9.2.0.8 或之前版本 --> 11.2.0.4 --> 19.x
 
12.1.0.1 --> 12.1.0.2/12.2.0.1 --> 19.x

 

需要及推薦在源庫上完成的

 

- 在升級前確保所有 oracle 提供的組件和對象都是有效的。

- 在開始升級或者降級前,Oracle 推薦您先升級源數據庫和目標數據庫到最新的 Oracle bundle patch 或者 patch set update (BP 或者 PSU)。

- 確保在 sys 和 system schema 下沒有重複存在的對象。對於 1) 和 2),參照:
      Doc Id 556610.1 - Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql)
- dbupgdiag.sql 是可以在升級前或者升級後對數據庫的狀態進行診斷並提供用戶友好的輸出結果的一些 SQL 語句;它會創建一個名爲  db_upg_diag_<sid>_<timestamp>.log 的輸出文件。

- 如果安裝了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]

 


FILE|TERMINAL - 使用 FILE 選項把腳本輸出定向到一個文件。使用 TERMINAL 選項把腳本輸出打印到屏幕上。如果沒有指定,那麼默認是 FILE 選項。
DIR - Log 會創建在指定的目錄裏。如果不指定那麼會創建 log 到默認的路徑:如果定義了 ORACLE_BASE 環境變量,那麼日誌創建在 $ORACLE_BASE/cfgtoollogs/<dbname>/preupgrade/ 否則會創建在 $ORACLE_HOME/cfgtoollogs/db_name/preupgrade/。

 

比如,

源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
$ export ORACLE_BASE=/refresh/home/oracle/ora_base
$ export ORACLE_HOME=/refresh/home/oracle/ora_base/product/18.1

$ $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
set linesize 100
select substr(comp_name,1,40) comp_name, status, substr(version,1,10) version from dba_registry order by comp_name;

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 Label Security (OLS) 和 Oracle Database Vault 的低於 12.1 版本的數據庫,必須運行 OLS preprocess 腳本, olspreupgrade.sql,來處理 aud$ 表的內容。 它會把 AUD$ 從 SYSTEM 用戶遷移到 SYS 用戶下。

如果要升級的數據庫低於12.1,並且使用了 Oracle Label Security (OLS) 和 Oracle Database Vault,那麼在升級前運行 olspreupgrade.sql 是必須的。一旦數據庫升級到了12.1,那麼就不需要執行OLS preprocessing 步驟了。

升級前在 11.2 數據庫上執行 OLS preprocess 腳本:

如果在要升級的早期版本中安裝了Oracle Label Security,則將DV_PATCH_ADMIN角色授予SYS。


1.    從 19c 的 $ORACLE_HOME/rdbms/admin 下拷貝如下腳本到 11.2 源庫的 $ORACLE_HOME/rdbms/admin 下。

        ORACLE_HOME/rdbms/admin/olspreupgrade.sql
        ORACLE_HOME/rdbms/admin/emremove.sql
        ORACLE_HOME/rdbms/olap/catnoamd.sql


2.    使用 DVOWNER 用戶通過 SQL*Plus 連接至源數據庫。

3.    執行下面的 SQL:

    SQL> GRANT DV_PATCH_ADMIN to SYS;


4.    執行下面的 SQL:

    CONNECT SYS AS SYSDBA


5.    運行 preprocess 腳本

    ORACLE_HOME/rdbms/admin/olspreupgrade.sql
    ORACLE_HOME/rdbms/admin/emremove.sql
    ORACLE_HOME/rdbms/admin/catnoamd.sql



6.    在 OLS 預處理腳本成功運行後,使用 DVOWNER 用戶通過 sqlplus 登錄數據庫。

7.    執行下面的 SQL:

    SQL> REVOKE DV_PATCH_ADMIN from SYS;

對於使用了Database Vault的12.1數據庫,賦予SYS以DV_PATCH_ADMIN的角色

如果啓用了Database Vault,那麼也需要做對應的檢查,檢查步驟需要執行下面的SQL腳本 - olspreupgrade.sql, emremove.sql, catnoamd.sql

  以 DVOWNER 登陸要升級的數據庫

    執行下面的SQL:

    SQL> GRANT DV_PATCH_ADMIN to SYS;

 

 

備份 Oracle EM DB Control 配置及數據 (對於低於 12.1 版本的數據庫)

如果在升級數據庫到 19c 版本後,有需要再降級,那麼我們必須在升級前使用 emdwgrd 工具備份 Database Control 的文件,這樣在降級後可以恢復這些文件。

備份數據的步驟:

     1. 安裝 19c 的數據庫軟件。
     2. 設置 ORACLE_HOME 到舊的數據庫版本。
     3. 設置 ORACLE_SID 爲要升級的數據庫 SID。
     4. 設置 PATH, LD_LIBRARY_PATH 和 SHLIB_PATH 到舊的 ORACLE_HOME 相關的目錄下。
     5. 切換目錄到目標數據庫軟件。
     6. 執行 emdwgrd

 

單實例數據庫:

emdwgrd[sh|bat] -save -sid old_SID -path save_directory

 

Oracle Real Application Clusters (Oracle RAC) 數據庫:


需要跨節點遠程拷貝。定義一個環境變量 EM_REMCP 來指向遠程拷貝的命令,比如: export EM_REMCP /usr/bin/scp

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
SQL>SET SERVEROUTPUT ON
SQL>@emremove.sql >> 腳本放在新的 19c ORACLE_HOME/rdbms/admin

在 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 文件。
1. 以授權用戶身份登錄。
2. 手工拷貝 sqlnet.ora,wallet 文件以及 ewallet.p12,到新的 Oracle home
3. 以 mount 模式打開數據庫 wallet。

比如
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN;

 

檢查用戶使用了大小寫敏感的密碼的版本

以管理員賬號登陸 SQL*Plus 並執行下面的語句
SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;

如果存在 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數據庫升級過程的一部分進行升級。

使用DBCA進行升級

執行 dbupgdiag.sql 腳本來驗證對象以及組件的狀態 。 如果存在失效對象,那麼運行 utlrp.sql 來編譯所有的失效對象:

sql> connect / as sysdba

sql> @?/rdbms/admin/utlrp.sql

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章