Oracle 19c - 手動升級到 Non-CDB 19c 的完整核對清單 (Doc ID 2577572.1)

lhrbest發表於2020-05-07

Oracle 19c - 手動升級到 Non-CDB Oracle Database 19c 的完整核對清單 (Doc ID 2577572.1)


文件內容

用途
適用範圍
詳細資訊
步驟 1: 升級到資料庫 19c 的升級路徑
能夠直接升級到 Oracle 19c 的資料庫最小版本
以下的資料庫版本需要間接升級
19c版本的變化
步驟2: 推薦/需要在源庫上完成的
步驟 3: 推薦/需要在目標庫上完成的
步驟 4: 升級前檢查
清理資料庫
檢查所有的物化檢視
Schema-Only 的使用者以及升級密碼狀態為 EXPIRED 的使用者
複製 Transparent Encryption Oracle 錢包
理解密碼大小寫敏感
檢查 密碼大小寫不敏感 的賬號
對只讀表空間升級
為升級新的Oracle Home做準備
在Windows平臺為升級新的Oracle Home做準備
使用了 Oracle Label Security 和 Oracle Database Vault 的資料庫
使用 emremove.sql 手工刪除 DB control
確保升級前所有的檔案都沒有處於備份模式
清空回收站
效能方面
檢查時區設定
關於升級 Oracle OLAP Data Security Policies
步驟 5: Preupgrade 步驟
Preupgrade fixup 指令碼
Network Utility 包的依賴關係
檢查 Time zone 檔案版本
備份資料庫
備份檔案以保留降級和恢復選項
步驟 6: 升級資料庫到 19c
關閉資料庫
檢查升級狀態
編譯失效物件
步驟7: 升級後步驟
在 Linux 和 Unix 上設定環境變數
更新 oratab 檔案
Post-upgrade fixup 指令碼
使用 ORAPWD 建立或者遷移您的密碼檔案
在升級資料庫後升級 Recovery Catalog
在升級資料庫後升級 Time Zone檔案版本
升級那些使用 DBMS_STATS 建立的統計資訊表(Statistics Tables)
參考

適用於:

Oracle Database - Enterprise Edition - 版本 19.1.0.0.0 和更高版本
本文件所含資訊適用於所有平臺

用途

本文件可用作手工將 Oracle 11gR2 (11.2) 或者 Oracle 12c Release 1 (12.1) 或者 Oracle 12c Release 2 (12.2) 版本資料庫升級至 Oracle 19c 版本資料庫的指南與核對表。

適用範圍

資料庫管理人員, 技術支援

詳細資訊

步驟 1: 升級到資料庫 19c 的升級路徑

能夠直接升級到 Oracle 19c 的資料庫最小版本

升級矩陣
源資料庫 目標資料庫
11.2.0.4 19c
12.1.0.2 19c
12.2.0.1 19c
18.1 19c

以下的資料庫版本需要間接升級

間接升級矩陣
源資料庫 升級路徑 目標資料庫
12.1.0.1    --> 12.1.0.2/12.2.0.1 --> 19c
11.2.0.1/11.2.0.2/11.2.0.3 --> 11.2.0.4 --> 19c
11.1.0.6/11.1.0.7 --> 11.2.0.4 --> 19c
10.2.0.2, 10.2.0.3, 10.2.0.4, 10.2.0.5 --> 11.2.0.4/12.1.0.2 --> 19c
10.1.0.5 --> 11.2.0.4/12.1.0.2 --> 19c
9.2.0.8 或更低版本 --> 11.2.0.4 --> 19c

對於任何多步驟的升級,因為必須要升級兩次,所以需要執行 preupgrade 指令碼兩次:首先,對於中間升級版本執行指令碼一次,之後,對於最終升級到的版本執行指令碼一次。比如,如果要升級的資料庫是Oracle Database 10g,那麼按照下面的步驟

  • 按照 Oracle Database Upgrade Guide 12c Release 1 (12.1) 的步驟升級 10.2.0.5 到 12.1.0.2,包括為 12.1.0.2 執行 pre-upgrade 指令碼。
  • 直接升級 Oracle Database 12c release 1 (12.1.0.2) 到 Oracle Database 19c。按照Oracle Database Upgrade Guide的說明以及本文件,包括為 19c 執行 preupgrade 指令碼。

如果您打算使用Data Pump export/import來升級,那麼這個限制就不存在了。

比如:

  • 如果您要升級的資料庫當前是 11.2.0.2 或者 11.1.0.7,那麼您必須先要升級到 Oracle Database 11g release 2 (11.2.0.4)。
  • 如果您要升級的資料庫當前是 10.2.0.2, 10.2.0.3, 10.2.0.4,10.2.0.5 或者 10.1.0.5,那麼您先要升級到版本 11.2. 或者 12.1
  • 如果您要升級的資料庫當前是 9.2.0.8, 那麼您必須先要升級到一箇中間版本:
  • 從 9.2.0.8 升級到 11.2.0.4,之後再從11.2升級到19c。

19c版本的變化

對 DBMS_JOB 的支援

Oracle繼續支援DBMS_JOB包。但是,您必須賦予提交 DBMS_JOB jobs 的使用者以 CREATE JOB 的許可權。

Oracle Scheduler 替代了 DBMS_JOB package。儘管仍然支援 DBMS_JOB 以實現向後相容,但 Oracle 強烈建議您從 DBMS_JOB 切換到 Oracle Scheduler。

  • 在DBMS_JOB中的每個作業的 19c 升級期間,將使用DBMS_SCHEDULER建立相應的條目
  • 舊的DBMS_JOB介面仍然有效。 但是使用它將總是在 scheduler 中建立相應的條目
  • preupgrade.jar 中的升級前檢查會檢查是否存在不一致或其它問題。

不再支援 Oracle Multimedia

Oracle Database 19c 中不再支援 Oracle Multimedia 功能,此功能已從 19c 中被移除。

作為影像處理和轉換的替代方案,Oracle建議您將多媒體內容儲存在 SecureFiles LOB 中,並且使用第三方產品,比如 Piction。 ORDIM 元件仍然可以在 registry 看到,並處於 VALID 狀態。Oracle Multimedia 的物件和 packages 也仍然保留在資料庫中。但是,這些物件和 packages 已不再起作用;如果嘗試使用它們,則會引發異常。 Oracle Locator 不受 Oracle 多媒體支援的影響。

不再支援 Oracle Streams

從 Oracle Database 19c(19.1)開始,不再支援 Oracle Streams 功能。 Oracle GoldenGate 是 Oracle 資料庫的複製解決方案。

請注意,Oracle Database Advanced Queuing 並未被棄用,Oracle Database 19c 完全支援 Oracle Database Advanced Queuing。 Oracle Streams 不支援 Oracle Database 12c (12.1) 及以後版本新加入的功能,比如 multitenant architecture, LONG VARCHAR, 以及其它功能。 Oracle Streams複製功能已被GoldenGate取代。

如果使用了 Oracle Streams,則 Preupgrade check “STREAMS_SETUP” 將發出警告。  要刪除 Oracle Streams,則請參閱對應版本的  Oracle documentation,Oracle Streams Concepts and Administration Guide 中的 "Removing an Oracle Streams Configuration" 部分。

 

步驟2: 推薦/需要在源庫上完成的

  • 對源庫做備份,冷備份或熱備份都可以。
  • 禁用所有自定義的 before/after DDL 型別的觸發器,完成升級後再啟用它們。
  • 在 11g 資料庫上定義的 Data security roles 不能自動轉換成 ORAS。 所以在升級前,需要刪除所有在 11g 資料庫上定義的 data security roles。升級後可以使用 Analytic Workspace Manager 19c 重新定義 data security roles。
  • 如果從 11g 升級到 19c 之前未刪除 data security roles,那麼所有的 data security policies 以及 data security role 都會在 19c 上失效。
  • 檢查目標資料庫的 time zone 檔案版本是否低於源庫的 time zone 檔案版本,如果是的話,需要升級目標資料庫的 time zone 檔案版本。 資料庫 DST 補丁可以參考   Note 412160.1
  • 如果源庫上已經安裝了 APEX 元件,那麼  升級資料庫前需要先在源庫上升級 APEX 元件。參考  Note 1088970.1
  • 源庫中沒有失效的物件/元件
  • 升級前執行 Preupgrade 指令碼並檢查 preupgrade 日誌。
  • 執行dbupgdiag.sql (可以從 Note 556610.1 下載這個指令碼)  確認是否有 SYS/SYSTEM 使用者下的失效物件或者失效元件。 如果存在的話,  那麼需要在升級前解決這些問題。 可以多次執行 utlrp.sql 來解決問題。如果在這樣做之後仍然存在失效物件,那麼開一個 SR 來解決這個問題。

步驟 3: 推薦/需要在目標庫上完成的

  • 需要先檢查您的硬體平臺/作業系統是否相容 19c.  點選   here 來確定相容性。
  • 安裝資料庫軟體 19c, 並確保沒有安裝方面的問題。
  • 如果有的話,下載並應用最新的 RU 
  • 從源庫的 ORACLE_HOME/dbs 下拷貝 spfile 或者 pfile 到目標庫
    • 從引數檔案中刪除所有廢棄的引數
    • 注意升級 19c 的 COMPATIBLE 引數的最小值為“11.2.0”, 確保您的 COMPATIBLE 引數設定為11.2.0或更高
  • 檢視文章 "Patches to apply before upgrading Oracle GI and DB to 19c ( Doc ID 2539751.1)"  中給出的補丁建議
  • 在目標庫上應用 Patch 29213893 來避免已知問題。參考 Database Upgrade to 12.2, 18c, 19c fails with ORA-01422, ORA-06512 for SYS.DBMS_STATS ( Doc ID 2525596.1)

步驟 4: 升級前檢查

清理資料庫

清空回收站
檢查 SYS 及 SYSTEM 使用者的失效物件
檢查 SYS 及 SYSTEM 使用者下的重複物件
檢查失效的、必需的、廢棄的元件

注意: preupgrade.jar 也會提醒這些問題。

檢查所有的物化檢視

檢查所有的物化檢視的狀態,重新整理所有沒有重新整理的物化檢視。
檢查物化檢視日誌的大小,如果物化檢視日誌的行數非零,那麼重新整理物化檢視。
檢查 direct loader 日誌以及 PMOP 日誌(分割槽維護操作日誌),如果 direct loader log 或者 PMOP 日誌非空,那麼重新整理日誌顯示的物化檢視。升級資料庫前,必須確保所有的物化檢視都已經重新整理完畢。

執行下面的 SQL 查詢:

SQL> SELECT o.name FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8; 

注意:preupgrade.jar 也會提醒這些問題,請您注意檢查 preupgrade 日誌。

Schema-Only 的使用者以及升級密碼狀態為 EXPIRED 的使用者

在開始升級之前,請確定是否要對密碼處於EXPIRED狀態且其帳戶處於LOCKED狀態的預設Oracle資料庫帳戶使用密碼身份驗證。

在升級到 Oracle Database 19c 之後,預設的 Oracle 賬號(沒有設定密碼並且處於 EXPIRED 和 LOCKED 狀態)會被置為  NO AUTHENTICATION 狀態。

由於此新功能,這些預設賬號會變為 schema-only 帳戶,並無法使用密碼驗證。此功能的好處是管理員不再需要定期修改這些Oracle預設賬號的密碼。

此功能還可以降低未授權者使用預設密碼侵入這些帳戶的安全風險。



如果要在升級期間阻止將這些Oracle帳戶設定為僅 schema-only 帳戶,則必須在開始升級之前為該帳戶設定有效的強密碼,或者在升級後為這些帳戶設定有效的強密碼, 或者在升級前解鎖帳戶。

升級後,管理員還可以為僅 schema-only 啟用密碼身份驗證。 但是,為了更好的安全性,Oracle建議您將這些帳戶保留為 schema-only 賬號。

複製 Transparent Encryption Oracle 錢包

如果使用了帶 Oracle 錢包的 Transparent Data Encryption (TDE),那麼拷貝 thesqlnet.ora 和 wallet 檔案到新的Oracle home。在升級前需要手工拷貝 sqlnet.ora 和 wallet 檔案。

  1. 以授權使用者身份登入。
  2. 手工拷貝 sqlnet.ora,wallet 檔案以及 ewallet.p12,到新的 Oracle home。

開啟資料庫 wallet。

例如:

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

 

理解密碼大小寫敏感

從 Oracle Database 12c release 2 (12.2) 開始,預設的基於密碼驗證的協議排除了大小寫不敏感的 10g 版本的密碼。預設的SQLNET.ORA檔案中引數SQLNET.ALLOWED_LOGON_VERSION_SERVER被設定成了 12 (排他模式)。

為了安全起見,Oracle建議使用大小寫敏感的密碼驗證。這是預設的設定。但是在升級資料庫的時候可以短暫的關閉大小寫敏感的密碼驗證。在升級後,可以再決定是否啟用大小寫敏感的密碼驗證。

在升級前,Oracle建議您檢查是否新的密碼驗證會影響您的應用。可以做下面的檢查:

  • 檢查是否有使用者使用了 10g 大小寫不敏感的密碼驗證方式。
  • 檢查是否使用了尚未安裝 CPUOct2012 補丁的11.2.0.3或者更早版本的客戶端,或者應用了這個補丁但尚未啟用大小寫敏感的密碼版本。
  • 確認您並未設定SEC_CASE_SENSITIVE_LOGON成FALSE。設定SEC_CASE_SENSITIVE_LOGON為FALSE就無法啟用大小寫敏感的密碼版本了(11G和12C的密碼版本)

更多資訊請參考  19c Oracle database documentation

 

檢查 密碼大小寫不敏感 的賬號

確定要升級的Oracle資料庫是否存在使用了不區分大小寫密碼版本的帳戶。

從 Oracle Database 12c release 2 (12.2) 開始,預設的基於密碼驗證的協議排除了大小寫不敏感的 10g 版本的密碼。

如果未將 SQLNET.ALLOWED_LOGON_VERSION_SERVER 設定為允許不區分密碼大小寫版本的協議,並且您不希望將使用不區分大小寫的密碼版本進行身份驗證的使用者帳戶鎖定在資料庫之外,那麼您必須識別受影響的帳戶,並確保他們使用區分大小寫的密碼版本。

更多資訊請參考  19c Oracle database documentation

對只讀表空間升級

以 -T 引數使用 Parallel Upgrade Utility 可以在升級時把使用者表空間置為只讀。 因為資料庫可以讀取之前版本建立的資料檔案 header, 所以在升級時我們不需要做額外的操作。當升級完成後,表空間被置為讀寫時,檔案 header 會自動被更新。如果升級失敗,無法把表空間重新 online,那麼檢查升級日誌。日誌中包含把表空間重新 online 的語句。可以在資料庫中或者每個pdb裡手工執行來 online 表空間。

在升級日誌檔案中找到表空間相關的命令

如果升級失敗可以檢查升級的日誌  (Oracle_base/cfgtoologs/dbua), 並且手工執行日誌中的命令來 online 表空間。可以檢查如下日誌:

     Non-CDB 升級: catupgrd0.log
     PDB 資料庫: catupgrdpdbname0.log, 這裡 pdbname 是要升級的 pdb 的名字。

在每個日誌檔案的開始部分,可以找到把表空間置為只讀的命令:

SQL> ALTER TABLESPACE <Tablespace Name> READ ONLY;
Tablespace altered.

而在每個日誌檔案的結尾部分,可以找到把表空間置為讀寫的SQL命令:

SQL> ALTER TABLESPACE <Tablespace Name> READ WRITE;
Tablespace altered.

 

為升級新的Oracle Home做準備

  • 從要升級的資料庫 Home 拷貝配置檔案到新的版本的Oracle Home中。
  • 如果您有一個 password 檔案,那麼把它從舊的 Oracle home 拷貝到新的 Oracle home。推薦重建 password 檔案以利用 orapwd 的新功能,如果有的話。
  • 從引數檔案中刪除所有廢棄的引數。在新的版本的資料庫裡有一些引數已經被廢棄。從要啟動新版本的資料庫的引數檔案中刪除所有被廢棄的引數,否則會在啟動時產生錯誤。同時,修改那些在新版本里格式已經被改變的引數。
  • 如果要升級的是叢集資料庫,那麼需要在升級前修改引數 CLUSTER_DATABASE 為 FALSE。

 

在Windows平臺為升級新的Oracle Home做準備

在 Microsoft Windows 平臺升級資料庫前需要先確保系統已經滿足升級條件。

出於安全考慮,不同的 Windows 賬戶配置為 Oracle home 不允許共享同一個 Oracle Base。

  • 當源庫和目標庫的 Oracle home 使用同一個 Windows 賬戶作為 oracle home 使用者,資料庫升級是支援的。
  • 資料庫升級對於源資料庫使用 Windows 自帶賬戶是支援的。Oracle Database 12c 之前的版本 (release 11.2 或者之前的版本) 在 Windows 上只支援使用 Windows 自帶的使用者來作為 Oracle Home 使用者。
  • Oracle home 使用者可能沒有許可權訪問自己的 Oracle Base 和 Oracle home 之外的檔案。因此,如果您的升級使用不同的 Oracle Base,Oracle 資料庫服務可能沒有許可權訪問舊的 Oracle Base 下的檔案。 使用DBUA進行資料庫升級需要確保Oracle主使用者可以訪問其自己的Oracle Base及其自己的Oracle主目錄之外的檔案。
  • 在手工升級或者在需要訪問舊的Oracle Base之外的檔案(比如,wallets, 配置檔案及其它檔案)之前,需要確保 Oracle Home 使用者可以訪問這些檔案;或者拷貝這些檔案到新的 Oracle Base。

 

使用了 Oracle Label Security 和 Oracle Database Vault 的資料庫

Audit Table升級及歸檔的要求

如果要升級的源庫版本低於12.1並且安裝了 Oracle Label Security和Oracle Database Vault,那麼必須執行 OLS preprocess olspreupgrade.sql 指令碼。

如果要升級使用了 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 步驟了。

olspreupgrade.sql 指令碼會在 SYS 使用者下建立臨時的表PREUPG_AUD$,並把 SYSTEM.AUD$ 的記錄移到 SYS.PREUPG_AUD$。安全起見,Oracle推薦您在執行 olspreupgrade.sql 前歸檔您的審計記錄。

 



升級前在 11.2 資料庫上執行 OLS preprocess 指令碼:

如果要升級的資料庫安裝有 Oracle Label Security,那麼賦予SYS以DV_PATCH_ADMIN的角色

升級前在 11.2 資料庫上執行 OLS preprocess 指令碼:

1.    從 19c 的 Oracle Home 下拷貝以下指令碼到源庫的 Oracle Home(11.2) 下。

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


2.    啟動 SQL*Plus 並以 DVOWNER 登入到要升級的資料庫。

3.    執行下面的SQL:

    SQL> GRANT DV_PATCH_ADMIN to SYS;


4.    使用 SYS as SYSDBA 登陸資料庫:

    CONNECT SYS AS SYSDBA


5.    執行 Data Vault preprocess 指令碼:

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



6.    執行完畢後,以 DVOWNER 登陸資料庫

7.    執行下面的SQL:

    SQL> REVOKE DV_PATCH_ADMIN from SYS;

對於Database Vault,賦予SYS以DV_PATCH_ADMIN的角色

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

以 DVOWNER 登陸要升級的資料庫

執行下面的SQL:

    SQL> GRANT DV_PATCH_ADMIN to SYS;

 

使用 emremove.sql 手工刪除 DB control

關閉 DB control

emctl stop dbconsole

   
使用 sysdba 登陸

SQL>SET ECHO ON
SQL>SET SERVEROUTPUT ON
SQL>@emremove.sql >> Script located in new 12c ORACLE_HOME/rdbms/admin

 從系統中手工刪除 ORACLE_HOME/HOSTNAME_SID/ 和 ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_HOSTNAME_SID 目錄
如果是 windows 系統則刪除 DB Console 的系統服務  OracleDBConsoleSID

確保升級前所有的檔案都沒有處於備份模式

執行下面的語句:

SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';   

清空回收站

要清空回收站,執行下面的語句:

SQL> PURGE DBA_RECYCLEBIN

注意: 升級前務必清空回收站來避免 ORA-00600 錯誤並且減少升級時間。

效能方面

儲存效能相關指標
檢查網路效能
收集優化器統計資訊

收集統計資訊可以減少停機時間,Oracle建議使用   DBMS_STATS.GATHER_DICTIONARY_STATS 來收集這些統計資訊,比如:

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

檢查時區設定

源庫的 time zone 檔案版本應該小於或者等於目標庫的 time zone 檔案版本。如果源庫的 time zone 檔案版本更高,那麼需要升級目標庫的 time zone 檔案版本來對應源庫的 time zone 檔案。

 

關於升級 Oracle OLAP Data Security Policies

在 11g 資料庫上定義的 Data security roles 不能自動轉換成 ORAS。所以在升級前,需要刪除所有在 11g 資料庫上定義的 data security roles。升級後可以使用新版本的 Analytic Workspace Manager 重新定義 data security roles。

如果從 11g 升級到 12c 之前未刪除 data security roles,那麼所有的 data security policies 以及 data security role 都會在新版本上失效。

 

步驟 5: Preupgrade 步驟

在源庫執行 Preupgrade 指令碼

$Earlier_release_Oracle_home/jdk/bin/java -jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar FILE TEXT DIR output_dir

FILE - 使用這個引數把輸出寫入輸出檔案
TEXT - 使用這個引數指定日誌格式為 TEXT 模式(如果不指定的話則為 XML 格式)
DIR - 日誌會建立在<output_dir>指定的這個目錄中

注意: 您可以從此文件中下載最新的 preupgrade 指令碼 -  How to Download and Run Oracle's Database Pre-Upgrade Utility ( Doc ID 884522.1)

Pre-Upgrade 工具 (preupgrade.jar) 會建立以下的檔案:

    日誌檔案  preupgrade.log.
     preupgrade_fixups_pdbname.sql (使用 PDBs 的情況下,這裡 pdbname 就是 PDB 的名字) 或者 preupgrade_fixups.sql 指令碼 (Non-CDB databases).
     postupgrade_fixups_pdbname.sql (使用 PDBs 的情況下,這裡 pdbname 就是 PDB 的名字) 或者 postupgrade_fixups.sql 指令碼 (Non-CDB databases)。升級完成後執行這個指令碼。

推薦執行 pre-upgrade fixup 指令碼

Preupgrade fixup 指令碼

在升級開始前,在SQL*Plus中手工執行 preupgrade fixups ( preupgrade_fixups.sql) 指令碼來解決 preupgrade tool 發現的問題。

Network Utility 包的依賴關係

執行 preupgrade 指令碼後,檢查 preupgrade 日誌

WARNING: --> Database contains schemas with objects dependent on network packages.
.... Refer to the Database Upgrade Guide for instructions to configure Network ACLs.
.... USER WKSYS has dependent objects.
.... USER SYSMAN has dependent objects.
.... USER FLOWS_010600 has dependent objects.

執行下面的語句

SQL> SELECT * FROM DBA_DEPENDENCIES WHERE referenced_name IN ('UTL_TCP','UTL_SMTP','UTL_MAIL','UTL_HTTP','UTL_INADDR','DBMS_LDAP') AND owner NOT IN ('SYS','PUBLIC','ORDPLUGINS');

在升級測試中,確保使用新的訪問控制。在升級後確保這些包是可用的,在升級後,根據源庫的使用情況賦予正確的許可權。

檢查 Time zone 檔案版本

檢查目標資料庫的 time zone 檔案版本是否低於源庫的 time zone 檔案版本,如果是的話,需要升級目標資料庫的 time zone 檔案版本。  資料庫 DST 補丁可以從   Note 412160.1 下載。

備份資料庫

建議在執行 Pre-Upgrade Information Tool 之後備份資料庫。建立 guaranteed flashback restore point。  測試備份,確保出現問題後有回退方案。

    rman "target / nocatalog"

    RUN
    {
        ALLOCATE CHANNEL chan_name TYPE DISK;
        BACKUP DATABASE FORMAT 'some_backup_directory%U' TAG before_upgrade;
        BACKUP CURRENT CONTROLFILE FORMAT 'controlfile location and name';
    }

備份檔案以保留降級和恢復選項

Oracle Data Guard Broker配置檔案和降級

升級到Oracle Database 19c及更高版本後,要保留降級到早期版本的功能,必須備份Data Guard broker 配置檔案。

在Oracle Database 19c之前的版本中,Oracle Data Guard broker 的屬性在Oracle Data Guard broker 配置檔案中維護,並且可以使用DGMGRL 命令進行修改。 但是,從Oracle Database 19c開始,這些資料庫設定不再儲存在 broker 配置檔案中。 作為此更改的結果,儘管您可以繼續使用DGMGRL修改這些屬性,但您修改的值不再儲存在Oracle Data Guard broker 配置檔案中。 相反,DGMGRL命令直接修改這些Oracle Data Guard Broker 屬性對映到的Oracle資料庫初始化引數。

由於對屬性設定的管理方式進行了此更改,因此,如果使用Oracle Data Guard broker,則Oracle建議您在開始升級之前將早期版本的Oracle Data Guard broker 配置檔案匯出到安全的備份位置。 如果在升級之前未備份Oracle Data Guard broker配置檔案,則在升級之後,您無法降級到早期版本並保留先前為Oracle Data Guard選擇的屬性設定。

匯出 Broker 配置

使用 EXPORT CONFIGURATION 命令把 broker 配置資訊的後設資料匯出到一個文字檔案中。

Oracle 程式必須可以訪問儲存 broker 配置檔案的目錄。

連線到 primary 資料庫。

DGMGRL> CONNECT sysdg@North_Sales.example.com;
Password: password
Connected to "North_Sales"
Connected as SYSDG.
Export the broker configuration.

以下命令匯出 broker  配置並將其儲存在 trace 目錄中名為myconfig.txt的檔案中。

DGMGRL> EXPORT CONFIGURATION TO 'myconfig.txt';
Succeeded.

 

步驟 6: 升級資料庫到 19c

關閉資料庫

SQL> SHUTDOWN IMMEDIATE

 

Windows平臺的步驟 :

如果作業系統是Windows,那麼完成下面的步驟:

a. 停掉要升級的資料庫 OracleServiceSID Oracle service,這裡的SID是例項名。比如,如果SID是ORCL,那麼執行下面的命令:

C:\> NET STOP OracleServiceORCL

b. 使用ORADIM來刪除 Oracle service。請參考平臺相關的文件來獲取ORADIM命令的格式。比如,如果您的SID是ORCL,那麼執行下面的命令

C:\> ORADIM -DELETE -SID ORCL

c. 使用新ORACLE軟體的ORADIM來建立 service。
比如:

C:\> ORADIM -NEW -SID SID -SYSPWD PASSWORD -MAXUSERS USERS  -STARTMODE AUTO -PFILE ORACLE_HOME\DATABASE\INITSID.ORA

 

對於 Unix/Linux

設定環境變數指向目標 ORACLE_HOME

export ORACLE_HOME=<path to Oracle 19c>
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE=<path to Oracle_Base set during installation>

從舊的Oracle home下拷貝 SPFILE.ORA 或者 INIT.ORA到目標Oracle home

使用目標 ORACLE_HOME(設定 ORACLE_HOME 為目標 ORACLE_HOME)啟動資料庫到 upgrade 模式

CONNECT / AS SYSDBA
SQL> startup upgrade;
SQL> exit

在 Linux/Unix 上

cd $ORACLE_HOME/bin
./dbupgrade   

在 Windows 上

cd %ORACLE_HOME%\bin
dbupgrade

執行 Post-Upgrade Status 工具, utlusts.sql 並且檢查升級的日誌。在新的版本下執行 Post-Upgrade Status 工具。

$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @utlusts.sql

注意: 之前版本的 utluNNNs.sql 在 19c 上被替換為 utlusts.sql

注意: 如果執行 utlusts.sql 時碰到錯誤 " ORA-06502: PL/SQL: numeric or value error: character string buffer too small" ,那麼執行


$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @utlusts.sql TEXT

 

如果使用了Oracle Clusterware,設定了 CLUSTER_DATABASE=TRUE 那麼你必須升級資料庫對應的 Oracle Clusterware keys。在19c上執行 srvctl 來做這件事,比如:

ORACLE_HOME/bin/srvctl upgrade database -db name -o ORACLE_HOME

檢查升級狀態

執行 dbupgdiag.sql 並檢查日誌。可以從  Note 556610.1 下載這個指令碼。

編譯失效物件

執行 utlrp.sql (多次) 來使它們生效,直到失效物件的個數不再改變。

$ sqlplus "/ AS SYSDBA"
SQL> @Oracle_home/rdbms/admin/utlrp.sql

步驟7: 升級後步驟

 

在 Linux 和 Unix 上設定環境變數

確保下面的環境變數指向了新的 ORACLE_HOME 對應的目錄:

ORACLE_HOME
PATH

 

更新 oratab 檔案

修改 /etc/oratab 檔案對應的條目指向新的 ORACLE_HOME 目錄

Post-upgrade fixup 指令碼

執行 pre-upgrade 產生的 post-upgrade fixup 指令碼

SQL> @postupgrade_fixups.sql

使用 ORAPWD 建立或者遷移您的密碼檔案

如果REMOTE_LOGIN_PASSWORDFILE初始化引數設定為EXCLUSIVE,則使用ORAPWD建立或遷移密碼檔案。 Oracle Database 12c及更高版本為ORAPWD提供了一個新選項,用於從現有資料庫遷移密碼檔案。

對於Oracle Database 12c第2版(12.2)及更高版本,如果REMOTE_LOGIN_PASSWORDFILE設定為SHARED,則會收到升級前檢查驗證警告。 您可以選擇以下選項之一來解決此問題:

    通過設定REMOTE_LOGIN_PASSWORDFILE = NONE完全禁用基於密碼檔案的身份驗證

    通過設定REMOTE_LOGIN_PASSWORD = EXCLUSIVE限制基於密碼檔案的身份驗證

在升級資料庫後升級 Recovery Catalog

如果使用的recovery catalog版本低於rman客戶端的版本,我們必須升級它。可以通過命令 UPGRADE CATALOG 來升級 Recovery catalog。

關於具體的步驟資訊,請參照Oracle文件中的 Upgrading the Recovery Catalog。

在升級資料庫後升級 Time Zone檔案版本

如果 Pre-Upgrade Information Tool 要求我們在升級資料庫後升級 time zone 檔案,那麼使用 DBMS_DST PL/SQL package 來升級 RDBMS DST(timezone)版本

以下指令碼隨Oracle Database 18c及以上版本一起提供

    $ORACLE_HOME/rdbms/admin/utltz_countstats.sql
    指令碼使用統計資訊提供在資料庫中TIMESTAMP WITH TIME ZONE資料的數量。 無需重啟。
    
    $ORACLE_HOME/rdbms/admin/utltz_countstar.sql
    指令碼使用COUNT(*)查詢每個具有TSTZ列的表來計算資料庫中的TIMESTAMP WITH TIME ZONE資料的數量。 使用DBMS_DST包或utlz_upg_check.sql和utlz_upg_apply.sql指令碼時,此指令碼非常有用。
    
    $ORACLE_HOME/rdbms/admin/utltz_upg_check.sql
    時區升級檢查指令碼
    
    ?/rdbms/admin/utltz_upg_apply.sql
    時區應用指令碼。 警告:此指令碼將重新啟動資料庫並調整時區資料。

升級那些使用 DBMS_STATS 建立的統計資訊表(Statistics Tables)

如果我們使用 DBMS_STATS.CREATE_STAT_TABLE 手工建立了一些統計資訊表(statistics tables),那麼執行下面的命令來升級這些表(如果沒有建立過統計資訊表,那這一步驟可以忽略)。例如:

EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('SYS', 'dictstattab');

對每個統計資訊表都要執行一遍上面的命令。

 






About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub、部落格園、CSDN和個人微 信公眾號( DB寶)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群號: 230161599 、618766405

● 微 信群:可加我微 信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2020-05-01 06:00 ~ 2020-05-30 24:00 在西安完成

● 最新修改時間:2020-05-01 06:00 ~ 2020-05-30 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客戶端掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2690452/,如需轉載,請註明出處,否則將追究法律責任。

相關文章