程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle11g數據庫升級數據庫升級

oracle11g數據庫升級數據庫升級

編輯:Oracle教程

oracle11g數據庫升級數據庫升級


Oracle支持周期

wKioL1RwrpvyBukyAAMkClSTeao691.jpg

 

Oracle對自己產品也一樣,對於自己的產品在不同的時期,支持的強度是不一樣的。
大體分來,支持的強度分為三個級別:Premier Support(最高優先級的支持),Extended Support(中等優先級的支持),Sustaining Support(最低優先級的支持)

1.從產品發布為期5年的標准支持服務期-Premier support

2.隨後為期3年的延展支持服務期---------extended support

3.接下來進入持久支持服務期--------------sustaining support

不過根據不同的周期劃分,Oracle的支持費用將會不同,在延展服務器內,第一年將會加收10%的費用提供支持,第二年加收20%的費用提供支持,第三年也是加收20%的費用提供支持。

Oracle11g數據庫的推出,oracle數據庫的升級成為必然。升級包括數據庫軟件的升級和數據庫的升級兩部分。

升級路線圖

wKiom1RwrmjSXODJAAITOSDSG4c601.jpg

 

大概的升級步驟:

(1) 備份數據庫

(2) 運行patchset,升級oracle 軟件

(3) 准備新的ORACLE_HOME

(4) 運行dbua 或者腳本升級實例

(5) 檢查升級後的版本信息和無效對象

升級補丁包選擇

Metalink文檔id:1922396.1會更新需要的補丁號

wKioL1RwrxricNIJAAOWwmqw9J4760.jpg

升級方法選擇

關於方法有很多,每種有各自的特點,根據特點選擇合適的升級方式。

 

wKiom1RwrtewdeArAAQ_nAkHjZs922.jpg

 

wKioL1Rwr5nSrTalAAJMXvvLJe0792.jpg

可以選擇參考文檔id 1674333.1和1602485.1分別是9i和11g升級到最新的11gR2

wKiom1Rwr2fB0BrVAASB_rjEEMs949.jpg

 

第 1 步
======
下載 11.2.0.2 或更高版本的 RDBMS 軟件。

第 2 步
======
將最新的 11.2 RDBMS 軟件安裝到新的 ORACLE_HOME 中。

運行Patchset 的runInstaller。

./runInstaller

wKioL1Rwr_vCGaASAAIf8YPSwq0800.jpg

這裡要注意,我們之前講過11gR2的Patchset 可以直接用來安裝。在這個界面就可以選擇操作類型,這個功能比較方便,從而也導致patchset 越來越大,我們這裡選擇upgrade an existing database。

wKioL1RwsCCSa55BAALMX8XdHTg352.jpg

注意這裡的安裝位置,我之前的安裝目錄是11.2.0. 這裡我改成了11.2.0.4. 即將oracle安裝到其他位置,這樣可以減少宕機時間,也是oracle 推薦的方法。

第 3 步
======
安裝最新的 11.2 RDBMS 軟件之後,用以前的 ORACLE_HOME 中啟動 11.2.0.1實例,對正在運行的以前的實例執行 11.2.0.2 的$ORACLE_HOME/rdbms/admin/utlu112i.sql腳本,並將輸出 spool 至一個文件。原來目錄執行新腳本。
不論您是使用 DBUA 還是手動升級,均必須運行 Pre-Upgrade Information Tool。否則可能會遇到錯誤:

1. Log in to the system as theowner of the environment of the database being upgraded.

Important:

The Pre-UpgradeInformation Tool must be copied to and must be run from the environment of thedatabase being upgraded.

注意,這裡必須調用新的ORACLE_HOME 下腳本。

2. Start SQL*Plus.

3. Connect to the databaseinstance as a user with SYSDBA privileges.

4. Set the system to spool resultsto a log file for later analysis:

SQL> SPOOL upgrade_info.log

5. Run the Pre-Upgrade InformationTool:

SQL>@/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlu112i.sql

6. Turn off the spooling of scriptresults to the log file:

SQL> SPOOL OFF

第 4 步
======
運行以下 My Oracle Support 文章中的 dbupgdiag.sql 腳本,驗證 dba_registry中的所有組件有效並且 dba_objects 中沒有無效的數據字典對象。

如果 dbupgdiag.sql 腳本報告了任意無效對象,則運行$ORACLE_HOME/rdbms/admin/utlrp.sql(可能需要多次)以使數據庫中的無效對象變為有效,直至無效對象數不發生變化為止。

第 5 步
=====
禁用所有批處理和 cron 作業,然後執行數據庫的完整備份。

1. 登錄 RMAN:
rman "target / nocatalog"
2. 運行以下 RMAN 命令:
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';
}

第 6 步
=======
干淨的關閉數據庫。

操作步驟:

wKiom1RwsBHjRjz8AACCbN-ez6w930.jpg

第 7 步(僅限 Windows 平台)
========================
1) 將環境變量 ORACLE_HOME 設置為指向 11.2.0.1 安裝。
2) 停止指向 11.2.0.1 安裝的 Oracle 數據庫服務。

C:\> NET STOP OracleServiceORCL
3) 使用 %ORACLE_HOME%\bin\ORADIM 可執行程序刪除 11.2.0.1 Oracle 服務。

C:\> ORADIM -DELETE -SID ORCL
4) 將環境變量 ORACLE_HOME 設置為指向 11.2.0.2 安裝。

5) 將 init.ora/spfile 和口令文件 (orapw<sid>.ora) 從 11.2.0.1 %ORACLE_HOME%/database 復制到 11.2.0.2 %ORACLE_HOME%/database。
6) 將網絡配置文件(listener.ora、sqlnet.ora、tnsnames.ora 等)從 11.2.0.1 %ORACLE_HOME%\network\admin(或 $TNS_ADMIN)位置復制到 11.2.0.2 %ORACLE_HOME%\network\admin(或%TNS_ADMIN%)位置。
7) 如果配置並使用了 DB Console/DB Control,將以下兩個目錄及其內容從 11.2.0.1 復制到 11.2.0.2。(如果未配置 DB Console/DB Control,則這些目錄可能不存在。)
ORACLE_HOME/<hostname_dbname>
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname_dbname>
8) 使用 11.2.0.2 的可執行程序,在命令提示符下創建 Oracle 11.2.0.2 服務。

%ORACLE_HOME%\bin\ ORADIM
C:\> ORADIM -NEW -SID SID -SYSPWD PASSWORD -STARTMODE AUTO -PFILE %ORACLE_HOME%\DATABASE\INIT<SID>.ORA
例如:

C:\> ORADIM -NEW -SID ORCL -SYSPWD pass_with_sysdba_priv -STARTMODE AUTO -PFILE %ORACLE_HOME%\DATABASE\INIT<SID>.ORA

PASSWORD = 新數據庫實例的口令。這是使用 SYSDBA 權限連接的用戶的口令。-SYSPWD 選項並非必需。如果未指定該項,則將使用操作系統驗證,並且不需要口令
第 8 步(Unix 和 Linux)
=================
配置目標 11.2.0.2 ORACLE_HOME
1) 確保環境變量 ORACLE_BASE、ORACLE_HOME、PATH、NLS_10 和 LIBRARY_PATH 設置為指向 11.2.0.2 安裝。
將 ORACLE_SID 設置為 11.2.0.1數據庫名以升級。
修改 /etc/oratab 文件指向您的 11.2.0.2 ORACLE_HOME。
2) 禁用 Database Vault

Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX
3) 將 init.ora/spfile 和口令文件 (orapw<sid>.ora) 從 11.2.0.1 $ORACLE_HOME/dbs 復制到 11.2.0.2 $ORACLE_HOME/dbs
4) 將網絡配置文件(listener.ora、sqlnet.ora、tnsnames.ora 等)從 11.2.0.1 $ORACLE_HOME/network/admin(或 $TNS_ADMIN)位置復制到 11.2.0.2 $ORACLE_HOME/network/admin(或$TNS_ADMIN)位置
5) 如果配置了並使用了 DB Console/DB Control,將以下兩個目錄及其內容從 11.2.0.1 復制到 11.2.0.2。(如果未配置 DB Console/DB Control,則這些目錄可能不存在。)
ORACLE_HOME/<hostname_dbname>
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname_dbname>
請為 <hostname_dbname> 指定實際的名稱
6) 確保為 Oracle Database 11g 版本 2 (11.2) 正確設置了 COMPATIBLE 初始化參數。如果未正確設置COMPATIBLE,則 Pre-Upgrade Information Tool 會在“Database”部分中顯示警告。
7) 將初始化參數的值調整到至少為 Pre-Upgrade Information Tool 指示的最小值。對於安裝了 JVM 的客戶,必須在升級前將 java_pool_size 和 shared_pool_size 至少設置為 250MB,否則 JVM 升級可能會失敗,並出現以下錯誤:

ORA-07445: exception encountered: core dump [qmkmgetConfig()+52] [SIGSEGV] [ADDR:0x18] [PC:0x103FFEC34] [Address not mapped to object] []

具體操作步驟:

 

操作步驟:(復制偵聽,密碼文件)
wKioL1RwsK2x9useAALAXsLbYQQ584.jpg

編輯環境變量

wKiom1RwsE7Q-dCcAAHnGXapzGg452.jpg

修 改/etc/oratab,該目錄下也有ORACLE_HOME

[oracle@dave db_1]$ cat /etc/oratab

wKiom1RwsGbjr0zzAACJMg_xfuk216.jpg

如果配置了並使用了 DB Console/DB Control,將以下兩個目錄及其內容從 11.2.0.1 復制到 11.2.0.2。(如果未配置 DB Console/DB Control,則這些目錄可能不存在。)
ORACLE_HOME/<hostname_dbname>
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname_dbname>

確保為 Oracle Database 11g 版本 2 (11.2) 正確設置了 COMPATIBLE 初始化參數。如果未正確設置 COMPATIBLE,則 Pre-Upgrade Information Tool 會在“Database”部分中顯示警告。

必須在升級前將 java_pool_size 和 shared_pool_size 至少設置為 250MB,

加入參數:

create pfile from spfile ;

修改參數

wKioL1RwsPrh1ei_AABvmZ626wc752.jpg

最後生成spfile

SQL> create spfile from pfile ;

第 9 步
======
手動升級數據庫。
1) 啟動 sqlplus 並從新安裝的目標 $ORACLE_HOME/rdbms/admin 下運行catupgrd.sql 腳本

sqlplus " / as sysdba "
SQL> spool /tmp/upgrade.log
SQL> startup upgrade
SQL> set echo on
SQL> @$ORACLE_HOME/rdbms/admin /catupgrd.sql;
SQL> spool off
SQL> Shutdown immediate

這個非常重要的步驟可以確保新的數據庫軟件的完整性和一致性。如果在啟動數據庫時碰到錯誤說參數文件中含有被廢棄的初始化參數,那麼從初始化參數文件中刪除這些參數。如果需要的話,可以把 spfile 轉換成 pfile 之後就可以編輯 pfile 並刪除相關參數了。
執行 Post-Upgrade Status Tool $ORACLE_HOME/rdbms/admin/utlu112s.sql,它會提供一個關於升級的總結. 它會顯示升級後各個數據庫組件的狀態和各個組件升級花費的時間。任何在升級中碰到的錯誤也會被列出,這些錯誤必須得到妥善的處理。

$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @utlu112s.sql
運行 $ORACLE_HOME/rdbms/admin 目錄下的 catuppst.sql,完成不需要在數據庫處於 UPGRADE 模式下操作的其它升級的動作:

SQL> @catuppst.sql
這個腳本可以和 utlrp.sql 並行運行. 在另一個 session 裡運行 utlrp.sql 來重新編譯剩下的 PL/SQL 和 Java代碼:

SQL> @utlrp.sql
運行從下面文檔中得到的 dbupgdiag.sql 來檢查升級後數據庫的完整性。

Note 556610.1 Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql)
如果 dbupgdiag.sql 發現了一些失效對象,那麼多次執行 $ORACLE_HOME/rdbms/admin/utlrp.sql 來重新編譯這些失效對象,直到失效對象的數目不再變化。
在重新編譯這些失效對象之後,再次運行 dbupgdiag.sql 確認一切都是正常的。

升級後步驟
===================

1) 升級集群配置

如果您使用的是 Oracle 集群,那麼您必須更新集群配置。

從 11.2.0.2 開始,upgrade 命令會將配置更新為正在運行的軟件的版本。

您可以使用 srvctl 命令,例如:

srvctl upgrade database

這個命令會將數據庫及其對應服務的配置信息更新至正在運行的軟件的版本。

語法及選項如下:

srvctl upgrade database -d db_unique_name -o Oracle_home
Table A-161 srvctl upgrade database Options
選項描述
-d db_unique_name
數據庫的 unique name
-o Oracle_home
ORACLE_HOME 的路徑

2) 使用 DBMS_DST 將時區升級到最新版本。

Note 1201253.1
Title: Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset
3) 升級 Recovery Catalog
有關升級 Recovery Catalog 和 UPGRADE CATALOG 命令的完整信息,請參閱《Oracle Database Backup and Recovery User's Guide》中的介紹這些過程的主題。
4) 升級 DBMS_STATS 程序包創建的 Statistics Table
如果使用 DBMS_STATS.CREATE_STAT_TABLE 創建了 statistics table,則通過運行以下命令來升級這些表:

EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('scott', 'stat_table');
在示例中,SCOTT 是 statistics table 的所有者,STAT_TABLE 是 statistics table 的名稱。對每個 statistics table 都需要執行此命令。
5) 啟用 Oracle Database Vault 並收回 DV_PATCH_ADMIN 角色。
如果您使用了 Oracle Database Vault,並按照之前的指示在升級前先禁用了它,現在您需要:
啟用 Database Vault。

Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX
收回 SYS 用戶的 Database Vault DV_PATCH_ADMIN 角色。
參考http://download.oracle.com/docs/cd/E11882_01/server.112/e17222.pdf

6). 數據庫中的 Oracle Warehouse Builder (OWB) 組件不會在升級過程中安裝。升級後,有幾個步驟升級該組件。

7)最後調用一下dbca 重建一下OEM。

如果dbca 顯示OEM 已經配置過,rm 掉如下2個目錄,再次運行就ok了。

ORACLE_HOME/hostname_dbname

ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_hostname_dbname

wKioL1RwsGPiLEGAAAIlewOpb_8430.jpg

最後驗證一下各個組件的版本和狀態:

Sql> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY

COMP_NAME VERSION STATUS

---------------------------------------- --------------- ----------------------

OWB 11.2.0.1.0 VALID

Oracle Application Express 3.2.1.00.10 VALID

Oracle Enterprise Manager 11.2.0.4.0 VALID

OLAP Catalog 11.2.0.4.0 VALID

Spatial 11.2.0.4.0 VALID

Oracle Multimedia 11.2.0.4.0 VALID

Oracle XML Database 11.2.0.4.0 VALID

Oracle Text 11.2.0.4.0 VALID

Oracle Expression Filter 11.2.0.4.0 VALID

Oracle Rules Manager 11.2.0.4.0 VALID

Oracle Workspace Manager 11.2.0.4.0 VALID

Oracle Database Catalog Views 11.2.0.4.0 VALID

Oracle Database Packages and Types 11.2.0.4.0 VALID

JServer JAVA Virtual Machine 11.2.0.4.0 VALID

Oracle XDK 11.2.0.4.0 VALID

Oracle Database Java Packages 11.2.0.4.0 VALID

OLAP Analytic Workspace 11.2.0.4.0 VALID

Oracle OLAP API 11.2.0.4.0 VALID

18 rows selected.

至此,通過命令升級操作結束。

如果在升級過程中遇到問題,可以重新執行升級腳本,步驟如下:

1.Shut down the database as follows:

SQL> SHUTDOWNIMMEDIATE

2.Restart the databasein UPGRADE mode:

SQL> STARTUP UPGRADE

3.Set the system to spool results to a logfile for later verification of success:

SQL> SPOOLupgrade.log

4.Rerun catupgrd.sql:

SQL>@catupgrd.sql

Note:

You can rerunthe catupgrd.sql script as many times as necessary. The first timeyou run the script, there should be no error messages returned. If you rerunthe script, then the ORA-00001 messageis displayed. You can safely ignore this message.

5.Rerun utlu112s.sql:

SQL>@utlu112s.sql

圖形化升級

圖形化升級更為簡單,到調用圖形化界面後一路回車完成升級。

wKiom1RwsKXBxG2mAAJwHNl9sxE835.jpg

 

接著,是最重要的,通過DBUA進行數據庫的升級,然後OUI會提示,升級ASM還是數據庫,如果數據庫是安裝在asm上的要先升級asm,後升級數據庫。最後會匯總升級信息進行確認即可開始升級。數據庫升級時一個耐心的活,因為可能很慢。升級過程中最好有Data Guard或RAC環境,優先提供服務。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved