DBUA升級至19C NON-CDB

      網友投稿 878 2025-04-01

      一、前言


      由于11G已經被Oracle淘汰,不再更新補丁,官方建議升級到最新穩定版 19C,因此了解下升級方式。

      本文將介紹其中一種方式:DBUA

      Complete Checklist to Upgrade the Database to 11gr2 Using DBUA(Doc ID 870814.1)

      Complete Checklist for Upgrading to Oracle Database 12c Release 1 using DBUA(Doc ID 1516557.1)

      Complete Checklist for Upgrading to Oracle Database 12c Release 2 (12.2) using DBUA(Doc ID 2189854.1)

      Oracle 18c - Complete Checklist for Upgrading to Oracle Database 18c (18.x) using DBUA(Doc ID 2418576.1)

      Oracle 19c - Complete Checklist for Upgrading to Oracle Database 19c (19.x) using DBUA(Doc ID 2545064.1)

      參考MOS文檔:Oracle 19c - Complete Checklist for Upgrading to Oracle Database 19c (19.x) using DBUA (Doc ID 2545064.1)

      **DBUA也支持靜默方式:Oracle 19c - DBUA In Silent Mode (Doc ID 2548985.1)?? ?**

      參考文章:使用DBUA升級 Oracle 11.2.0.4到Oracle 19C的問題記錄

      Database Upgrade Assistant (DBUA) provides a graphical user interface to guide you through the upgrade of Oracle Database.

      Oracle對主機版本支持:

      11GR2:

      19C:

      Notes:19C對操作系統支持最低要求為Linux7,如果11GR2主機版本為Linux 6,則需要一臺新主機Linux7安裝19C。

      升級路線:

      Direct Upgrade to 19.x:

      19.x

      19.x

      19.x

      Indirect Upgrade to 19.x:

      二、環境準備

      DBUA升級至19C NON-CDB

      本次測試盡量按照生產環境升級進行模擬,故而使用2臺主機進行測試:

      注意:源庫為生產環境,目標庫為升級環境,需要通過rman的將生產環境實例備份恢復到目標庫,保留生產環境用于失敗回退。

      測試環境安裝過程忽略,可參考:

      10分鐘!一鍵部署Oracle 11GR2單機

      源庫

      11GR2:

      cd /soft ./OracleShellInstall.sh -i 10.211.55.100 `#Public ip`\ -n dbua11g `# hostname`\ -o lucifer `# oraclesid`\ -op oracle `# oracle user password`\ -b /u01/app `# install basedir`\ -s AL32UTF8 `# characterset`\ -opa 31537677 `# oracle psu number`

      目標庫:

      11GR2:

      cd /soft ./OracleShellInstall.sh -i 10.211.55.100 `#Public ip`\ -n dbua19c `# hostname`\ -o lucifer `# oraclesid`\ -op oracle `# oracle user password`\ -b /u01/app `# install basedir`\ -s AL32UTF8 `# characterset`\ -opa 31537677 `# oracle psu number` \ -w Y

      30分鐘!一鍵部署Oracle 19C單機CDB+PDB

      19C:

      cp /home/oracle/.bash_profile /home/oracle/.bash_profile_11G cd /soft ./OracleShellInstall.sh -i 10.211.55.100 `#Public ip`\ -n dbua19c `# hostname`\ -o lucifer `# oraclesid`\ -op oracle `# oracle user password`\ -b /u01/app `# install basedir`\ -s AL32UTF8 `# characterset`\ -m Y

      手動安裝Oracle軟件和補丁:

      ##解壓替換OPatch包 unzip -o p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/db/ chown -R oracle:oinstall /u01/app/oracle/product/19.3.0/db/OPatch ##解壓DB RU補丁 unzip p32545013_190000_Linux-x86-64.zip chown -R oracle:oinstall 32545013 ##安裝19c Oracle軟件 cd $ORACLE_HOME ./runInstaller -applyRU /soft/32545013/

      腳本使用和下載可參考Github:https://github.com/pc-study/InstallOracleshell

      安裝結束。

      源庫:

      目標庫:

      11GR2:

      19C:

      RMAN備份恢復到目標庫11GR2中:

      #!/bin/sh source ~/.bash_profile backtime=`date +"20%y%m%d%H%M%S"` rman target / log=/backup/level0_backup_${backtime}.log<

      恢復至目標庫11GR2:

      ##源端生成pfile參數文件 create pfile='/backup/11gpfile.ora' from spfile; ##拷貝備份至目標庫 scp * 10.211.55.100:/backup/ ##恢復至目標端11GR2中 mkdir -p /u01/app/oracle/fast_recovery_area/lucifer mkdir -p /u01/app/oracle/admin/lucifer/adump mkdir -p /oradata/lucifer/ chown -R oracle:oinstall /u01/app/oracle/fast_recovery_area chown -R oracle:oinstall /u01/app/oracle/admin/lucifer/adump chown -R /oradata/lucifer/ ##啟動數據庫實例到nomount狀態 su - oracle source .bash_profile_11G sqlplus / as sysdba startup nomount pfile='/backup/11gpfile.ora' ##rman進行恢復 restore controlfile from '/backup/backlv0_LUCIFER_20210518_1072888737_3_1'; alter database mount; ##注冊備份目錄 catalog start with '/backup/'; ##恢復數據 restore database; ##將源庫開啟到readonly模式 alter system switch logfile; shutdown immediate startup mount alter database open read only ##拷貝歸檔日志到目標端 cd /archivelog scp * 10.211.55.100:/backup ##注冊歸檔日志 catalog start with '/backup/'; recover database; ##打開數據庫 alter database open resetlogs;

      至此,測試環境搭建完畢。

      三、升級前準備

      對源數據庫的要求和建議:

      1.確保數據庫組件和對象均為有效。

      --檢查無效對象和組件 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 ; BEGIN dbms_preup.invalid_objects; END; --ReBuild sqlplus / as sysdba @$ORACLE_HOME/rdbms/admin/utlrp.sql

      2.確保源庫和目標庫補丁均升級為最新(包括APEX)。

      Doc ID 556610.1-收集數據庫升級/遷移診斷信息的腳本(dbupgdiag.sql)

      Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) (Doc ID 556610.1)

      3.如果已安裝APEX,則建議先升級源DB中的APEX,然后再升級DB。

      下載APEX:?http://www.oracle.com/technetwork/developer-tools/apex/all-archives-099381.html

      升級APEX:

      ##1.解壓APEX包 unzip apex_19.2.zip chown -R oracle:oinstall /soft/apex ##2.查看當前APEX版本 SELECT comp_name, status, version FROM dba_registry WHERE comp_name = 'Oracle Application Express'; --3.2.1.00.12 ##3.進入APEX解壓目錄進行升級 cd /soft/apex sqlplus / as sysdba @apexins.sql SYSAUX SYSAUX TEMP /i/ ##4.升級完后查看APEX版本 --19.2.0.00.18 ##5.編譯無效對象 sqlplus / as sysdba @$ORACLE_HOME/rdbms/admin/utlrp.sql

      4.時區應小于或等于目標數據庫時區版本,19C為 32

      SELECT version FROM v$timezone_file; --14

      5.升級之前,請確保對源數據庫進行有效備份。

      run { allocate channel c1 device type disk; allocate channel c2 device type disk; crosscheck backup; crosscheck archivelog all; sql"alter system switch logfile"; delete noprompt expired backup; delete noprompt obsolete device type disk; backup database include current controlfile format '/backup/backlucifer_%d_%T_%t_%s_%p'; backup archivelog all DELETE INPUT; release channel c1; release channel c2; }

      6.禁用將在DDL語句之前/之后執行的所有自定義觸發器。 升級后重新啟用。

      7.升級數據庫之前,請檢查數據庫服務器升級/降級兼容性列表。

      8.開啟日志歸檔功能。

      9.對于Oracle RAC,如果使用DBUA升級群集數據庫,則必須將CLUSTER_DATABASE初始化參數設置為TRUE。

      ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE;

      10.確保在升級數據庫之前運行升級前的檢查腳本,并按照建議進行調整。

      How to Download and Run Oracle’s Database Pre-Upgrade Utility (Doc ID 884522.1)

      su - oracle export Earlier_release_Oracle_home=/u01/app/oracle/product/11.2.0/db export New_release_Oracle_home=/u01/app/oracle/product/19.3.0/db/ $Earlier_release_Oracle_home/jdk/bin/java -jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar TERMINAL TEXT DIR /soft

      根據 /soft/preupgrade.log列出的內容進行修復:

      alter system set processes=1500 scope=spfile; alter system set sga_max_size=4G scope=spfile; alter system set sga_target=2G scope=spfile; shutdown immediate startup

      select name from v$datafile; select name from v$tempfile; alter tablespace SYSAUX add datafile '/oradata/lucifer/sysaux02.dbf' size 200M autoextend off; alter tablespace SYSTEM add datafile '/oradata/lucifer/system02.dbf' size 600M autoextend off; alter tablespace UNDOTBS1 add datafile '/oradata/lucifer/undotbs02.dbf' size 300M autoextend off; alter tablespace TEMP add tempfile '/oradata/lucifer/temp02.dbf' size 200M autoextend off;

      sqlplus / as sysdba @?/rdbms/admin/catnoexf.sql

      手動修復完后,執行preupgrade_fixups.sql腳本自動修復:

      cd /soft sqlplus / as sysdba @/soft/preupgrade_fixups.sql

      Notes:由于沒有物化視圖,所以忽略。

      11.在升級之前,應停止源數據庫中的物化視圖。

      Doc ID 1406586.1 - How to Handle Materialized Views When You Upgrade or Clone a Database

      Database Preupgrade tool check list. (Doc ID 2380601.1)

      SELECT o.name FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8; select owner, mview_name from all_mviews where staleness = 'STALE'; select owner, mview_name from all_mviews where staleness not in ('FRESH', 'STALE', 'UNKNOWN') or compile_state not in ('VALID'); SELECT u.name owner, o.name mview_name FROM sys.obj$ o, sys.user$ u, sys.sum$s WHERE o.type# = 42 AND o.owner# = u.user# and s.obj# = o.obj# and bitand(s.mflags, 8) = 8;

      12.禁用計劃的數據庫自定義JOB和crontab計劃任務。

      13.升級19.1的COMPATIBLE參數的最小值為“ 11.2.0”,請確保您將COMPATIBLE參數設置為11.2.0或更高。

      show parameter compatible --11.2.0.4.0

      14.收集數據字典統計信息以減少Oracle數據庫停機時間。

      EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

      15.確保當前沒有備份或者恢復的文件。

      --Execute below query to check for the status of the backup: SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE'; --Ensure that no files require media recovery: SQL> SELECT * FROM v$recover_file;

      16.升級前清空回收站。

      PURGE DBA_RECYCLEBIN;

      17.使用emremove.sql刪除EM(適用于12.1之前的Oracle數據庫版本)。

      ##停止em emctl stop dbconsole ##將以下腳本腳本從新安裝的Oracle主目錄(19c)復制到需要升級的數據庫的Oracle主目錄(11.2) ORACLE_HOME/rdbms/admin/olspreupgrade.sql ORACLE_HOME/rdbms/admin/emremove.sql ORACLE_HOME/olap/admin/catnoamd.sql ##執行腳本 sqlplus / as sysdba @?/rdbms/admin/emremove.sql

      18.取消對OLAP目錄(OLAP AMD)的支持(適用于12.1之前的Oracle數據庫版本)。

      ##執行腳本 sqlplus / as sysdba @?/rdbms/admin/catnoamd.sql

      19.檢查用戶當前不區分大小寫的密碼版本。

      --如果有10g版本,建議您參考Oracle文檔來修復10g版本,如果不這樣做,升級完成后具有LOCKED的用戶帳戶。 SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS; --查看隱含參數_optimizer_cartesian_enabled,確保設置為TRUE SELECT name,description from SYS.V$PARAMETER WHERE name LIKE '\_%' ESCAPE '\'; alter system set "_optimizer_cartesian_enabled"=TRUE;

      20.PFILE參數文件去除所有隱含參數和event事件。

      對目標數據庫的要求和建議:

      1.驗證您的操作系統/平臺是否通過了19.x版本的認證。

      2.在新的Oracle_Home中下載并安裝Oracle 19c(19,x),并確保沒有relink錯誤。

      3.確保從My Oracle Support(MOS)下載并安裝最新的可用RU或RUR。

      4.確保將ORACLE_HOME,PATH,LD_LIBRARY_PATH,LIBPATH等設置為19.x目標主目錄。

      5.查看文章“在將Oracle GI和DB升級到19c或降級到以前的版本(文檔ID 2539751.1)之前要應用的補丁”中給出的補丁建議。

      四、開始DBUA升級

      因為19C已安裝RU補丁,升級完后README的腳本還需要跑一遍。

      sqlplus / as sysdba @?/rdbms/admin/utlrp.sql

      環境變量切換到19C并運行DBUA:

      echo $ORACLE_HOME /u01/app/oracle/product/19.3.0/db # dbua

      如果按照上述步驟之后出現這種情況,通常是因為RMAN恢復的數據庫實例未注冊到/etc/oratab中,手動添加:

      cat <> /etc/oratab lucifer:/u01/app/oracle/product/11.2.0/db:N EOF

      添加后,點擊刷新即可。

      選中需要升級的數據庫實例,點擊下一步。

      以上警告可以忽略,點擊下一步。

      點擊下一步。

      這里由于已經有RMAN備份,故而選擇RMAN Backup,點擊下一步。

      提前創建19C監聽,端口為1522,升級完之后記得改回1521,點擊下一步。

      不安裝EM,點擊下一步。

      點擊FINISH。

      由于RMAN恢復的實例,不存在該目錄,需要手動創建并授權:

      mkdir -p /u01/app/oracle/admin/lucifer/dpdump chown -R oracle:oinstall /u01/app/oracle/admin/lucifer/dpdump

      坑爹,需要重新啟動DBUA進行升級。

      成功進入,等待自動升級完成。

      執行 /soft/postupgrade_fixups.sql腳本:

      sqlplus / as sysdb @/soft/postupgrade_fixups.sql

      更新后檢查和修復:

      1、運行dbupgdiag.sql檢查19C數據庫情況:

      Doc ID 556610.1-收集數據庫升級/遷移診斷信息的腳本(dbupgdiag.sql)

      Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) (Doc ID 556610.1)

      chown -R oracle:oinstall /soft/dbupgdiag.sql su - oracle cd /soft sqlplus / as sysdba @dbupgdiag.sql --1.填寫輸出目錄:/soft

      2、編譯無效對象

      ##檢查無效對象 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 ; ##編譯無效對象 sqlplus / as sysdba @?/rdbms/admin/utlrp.sql

      3.刪除原11GR2環境相關文件

      rm -rf /home/oracle/.bash_profile_11G rm -rf /u01/app/oracle/product/11.2.0/db ##關閉11G監聽 ps -ef|grep tns kill -9 $spid

      4.修改19C監聽端口號為1521

      ##修改LOCAL_LISTENER alter system reset local_listener; shutdown immediate startup ##Notes:如果不將LOCAL_LISTENER設置為空,動態監聽無法注冊。 lsnrctl stop cd $TNS_ADMIN ##修改listener.ora文件: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbua19c)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) lsnrctl start

      5.配置sqlnet.ora

      cd $TNS_ADMIN cat <>sqlnet.ora SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8 SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 EOF

      6.檢查所有組件

      select substr(comp_id,1,15) comp_id,substr(comp_name,1,30) comp_name,substr(version,1,10) version,status from dba_registry order by modified;

      7.修改COMPATIBLE參數

      ALTER SYSTEM SET COMPATIBLE="19.0.0" SCOPE=SPFILE; shutdown immediate startup

      Oracle 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何在WPS表格里面將時長轉換成數字。比如5:30=5.5小時(wps表格時間分鐘換算成小時)
      下一篇:ERP實施成功因素-1
      相關文章
      亚洲男人的天堂在线va拉文| 亚洲欧美日韩国产精品一区| 亚洲欧美日韩国产成人| 亚洲视频在线观看视频| 黑人精品videos亚洲人| 亚洲情a成黄在线观看| 亚洲av无码成人精品区一本二本 | 日韩亚洲国产综合久久久| 亚洲国产系列一区二区三区| 亚洲AV无码专区在线亚| 亚洲精品亚洲人成在线播放| 国产色在线|亚洲| 亚洲综合国产成人丁香五月激情| 亚洲AV综合色区无码二区爱AV| www.亚洲成在线| 国产v亚洲v天堂a无| 亚洲国产成人久久精品app| 亚洲国产人成在线观看| 亚洲av无码片区一区二区三区| 亚洲AV无码乱码麻豆精品国产| 亚洲av永久无码精品天堂久久 | 亚洲成?v人片天堂网无码| jjzz亚洲亚洲女人| 亚洲国产成人影院播放| 久久亚洲中文字幕精品一区| 亚洲精品夜夜夜妓女网| 亚洲色欲色欲www在线丝 | 亚洲愉拍一区二区三区| 亚洲女女女同性video| 亚洲AV成人无码网天堂| 亚洲国产婷婷综合在线精品| 免费亚洲视频在线观看| 亚洲人成无码网站久久99热国产| 亚洲一区二区三区在线视频| 亚洲精品无码永久中文字幕| 久久精品国产精品亚洲艾草网| 亚洲视频一区在线| 久久亚洲精品国产精品婷婷| 亚洲成在人线在线播放无码| 亚洲国产精品激情在线观看| 亚洲熟女一区二区三区|