使用DBUA升级数据库到11g R2的完整Checklist

s






 
使用DBUA升级数据库到11g R2的完整Checklist


DBUA使通常手动操作的升级过程自动化。
一些操作可以在数据库运行时提前完成,最小化升级的停机时间。

- DBUA
1 在升级过程中提供图形界面。
2 是ORACLE官方推荐的升级方法
3 自动化所有的升级步骤
4 对一些配置 如表空间、redo、优化器统计、时区文件等,进行合适的配置建议,用户可以应用这些建议,简单且界面友好。
5 原数据库的隐藏参数不会带到升级后的数据库中,因此oracle建议在升级前移除所有的隐藏参数。
  可以使用  AS  SYSDBA 连接到数据库,运行以下SQL来查看隐藏参数:

SELECT name,description from SYS.V$PARAMETER WHERE name LIKE '\_%' ESCAPE '\'


如使用DBUA,要特别注意处理隐藏参数。
如手动升级,需要在init.ora或spfile中修改这些参数。

DBUA会在数据库升级前进行一些检查:


=>无效的用户和角色
=>无效的数据类型或者对象
=>不支持的字符集
=>足够的资源,包括回滚段、表空间、剩余磁盘。
=>升级所需的SQL脚本
=>运行的监听 (如果OEM升级或配置)
=>DB Vault功能要关闭,否则升级时会报错,并提示关闭它。
=>过期的优化器统计信息。
=>时区文件版本
=>是否存在OEM负载仓库  (Enterprise Manager Database control Repository)

原数据库的建议:(resource database) 

1) 检查所有的ORACLE数据库组件、对象的状态 ,在升级前都是VALID   

2) 确认 SYS 和 SYSTEM schema下没有重复的对象:

以下是被允许重复的对象:

 OBJECT_NAME OBJECT_TYPE

------------------------------ -------------------
AQ$_SCHEDULES TABLE
AQ$_SCHEDULES_PRIMARY INDEX
DBMS_REPCAT_AUTH PACKAGE
DBMS_REPCAT_AUTH PACKAGE BODY

 可参考以下文档:.
NOTE.1030426.6 HOW TO CLEAN UP DUPLICATE OBJECTS OWNED BY SYS AND SYSTEM

3)禁用会在 DDL 前后触发的自定义 triggers  ,在升级完成后再启用.


升级目标数据库的建议:(target database)

  • 下载并在新的Oracle Home下安装l Oracle 11g Release 2 ,确认没有 relinking errors.
  • 安装最新的 Patchset from Metalink. 
  • 安装最新的 Critical Patch Update.
  • 升级前进行数据库冷备或者热备 (建议使用 cold backup).
  • 升级前检查数据库服务器升级/降级一致性(upgrade/downgrade compatibility)
  • --下面3个XDB相关,未使用的请无视。
  • Prior to Upgrading a database with XML Database(XDB) installed or  installing XDB, be sure to run the code mentioned in Note 1573175.1 "Upgrading or Installing XDB could result in data loss if XDB_INSTALLATION_TRIGGER exists "  to determine if any objects need to be dropped. Please note, failure to follow the steps listed below could result in data loss of user objects like tables, indexes
  • If you have XDB installed then  please install the PSE for 10368698 to the 11.2.0.2 Home before doing the upgrade . If there is not an existing one-off patch for your platform please open an SR to request the one-off patch. This defect can cause certain databases that are XDB enabled to take a great deal of time to upgrade. The bug 10368698 is fixed in 11.2.0.3 .
  • If you have XDB installed then  the install the fix for Bug 10419629 in the 11.2.0.2.0 home prior to  upgrade . Please refer  Note 1305561.1 While Upgrading From 10.2.0.4.0 To 11.2.0.2.0 Catupgrd.sql=ORA-31061 ORA-19202 LSX-23

Compatibility Matrix

可以直接升级到 Oracle 11g Release 2的最低数据库版本

Source Database                Target Database
9.2.0.8 or higher                    11.2.x
10.1.0.5 or higher                  11.2.x
10.2.0.2 or higher                  11.2.x
11.1.0.6 or higher                  11.2.x

以下的数据库版本需要间接升级  

Source Database ---> Upgrade Path for Target Database--->Target Database
7.3.3 (or lower)----->   7.3.4 --->   9.2.0.8 ---->11.2.x
8.0.5 (or lower)---->    8.0.6 --->    9.2.0.8 ---->11.2.x
8.1.7 (or lower)---->    8.1.7.4---> 10.2.0.4---->11.2.x
9.0.1.3 (or lower)----> 9.0.1.4-- ->10.2.0.4---->11.2.x
9.2.0.7(or lower)---->9.2.0.8---->11.2.x

例如:

原数据库版本为 8.1.7.0.0,升级路线如下:
8.1.7.0.0 --> 8.1.7.4 --> 10.2.0.4--> 11.2.x. 

NOTE: 如果使用非支持的最低版本进行升级,DBUA会报如下错误:
"The CEP File does not provide the version directive"


运行 Pre-Upgrade Information 工具来搜集升级前的信息:

参照下面文档来下载最新的 Pre-Upgrade Information 工具:

Note 884522.1: How to Download and Run Oracle's Database Pre-Upgrade Utility 

或者
从11g的Oracle Home下拷贝

Step 1
-------

  •  使用oracle用户登录操作系统  (11g Oracle Home的安装用户)
  •  从Oracle Home中拷贝出 Pre-Upgrade Information工具脚本 ( Oracle Database 11g Release 2 (11.2) ORACLE_HOME/rdbms/admin/utlu112i.sql) 到一个临时的文件夹

 

$ORACLE_HOME/rdbms/admin/utlu112i.sql



Step 2
-------

  •   在升级前,切换到 utlu112i.sql 脚本所在的目录下.
  •   启动 SQL*Plus 并以 SYSDBA权限连接到数据库. 运行并导出 utlu112i.sql 文件. 一定要确认是在原数据结构执行的。

 

$ sqlplus '/ as sysdba'
SQL> spool upgrade_info.log
SQL> @utlu112i.sql
SQL> spool off



查看导出文件的输出信息,会提示有哪些还需要调整。
For sample output, Click here

在原数据库中 检查无效的数据库组件和对象

在升级前使用以下SQL查询,并确认结果中没有INVALID的数据:

set pagesize500
set linesize 200
       
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 ;


如果发现有无效的组件或者对象,执行以下脚本使他们的状态变为 VALIDATE:

运行 $ORACLE_HOME/rdbms/admin/utlrp.sql  可以使无效的对象变为有效, utlrp.sql脚本可多次执行。

$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql 


如果未在升级前 完成oracle建议的检查,可能看到以下的警告信息:

Oracle Corporation strongly recommends that the following issues be resolved in the database "upgrade" before you start the database upgrade .

Database is using the old time zone file version. 
After the upgrade ,patch the database timezone file version using the DBMS_DST package to record the latest time zone file Version 

Database contains stale optimizer statistic. Refer to the Upgrade Guide for instruction to update statistics prior to upgrade the database 

Enterprise manager Database Control Repository exists  in the database . Direct downgrade of the Enterprise Manager Control is not supported . 
Refer to the 11g  Upgrade Guide for the instruction to save the Enterprise manager data prior to upgrade 

Do you want to continue with upgrade ?


检查 TIMESTAMP WITH TIMEZONE的数据类型

  时区文件影响哪些使用   TIMESTAMP WITH TIME ZONE  类型的数据,目前的版本:
    Timezone  version 11 (在11.2.0.1版本的数据库) 、
   Timezone  version  14 ( 11.2.0.2/11.2.0.3 版本的数据库

注意 : 
从 11.2.0.2 之后的 DBUA 的升级过程中,已经加入以下选项,可以在GUI界面中勾选来升级时区文件 :

"Upgrade Timezone Version and TIMESTAMP WITH TIME ZONE Data"

但有时会遇到以下的问题 :

BUG 10209691 : SLOW PERFORMANCE ON ALL_TSTZ_TAB_COLS
BUG 12658443 :  SLOW PERFORMANCE UPGRADING TIMEZONE FROM 11 TO 14

因此 DBUA 可能会在 "Upgrading Timezone"  这个步骤中非常缓慢,  所以当前的建议是  不要勾选这个
在升级后进行手动升级 : 
Note 977512.1 : Updating the RDBMS DST version in 11g Release 2 (11.2.0.1 and up) using DBMS_DST

 在源库会有2种情况下,需要升级时区: 

Case 1
--------

pre-upgrade 脚本执行结果中出现 :

WARNING: -->Database is using a timezone file older than .....



如果源库中的时区文件版本低于或者等于 : 
- version 11  并且目标数据库是 11.2.0.1
或者
- version 14  并且目标数据库是 11.2.0.2/11.2.0.3


那么源库无需任何操作 , 建议在升级之后,使用 DBMS_DST包 升级时区文件 : 
Note 977512.1 : Updating the RDBMS DST version in 11gR2 (11.2.0.1 and up) using DBMS_DST 

Case 2
--------

 如pre-upgrade 脚本执行结果中出现  :

WARNING: --> Database is using a timezone file greater than ....


如源库中的时区文件 高于 :
- version 11 并且 目标数据库的版本为 11.2.0.1

- version 14 并且 目标数据库的版本为 11.2.0.2/11.2.0.3

那么在升级之前,必须在11gR2 $ORACLE_HOME 下,补上和源库相同版本的时区文件。

时区升级的细节参照如下 :

Note 815679.1 : Actions For DST Updates When Upgrading To 11.2.0.1 Base Release
Note 1201253.1 : Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset
Note 1358166.1 : Actions For DST Updates When Upgrading To Or Applying The 11.2.0.3 Patchset 
Note 1579838.1 : Actions For DST Updates When Upgrading To Or Applying The 11.2.0.4 Patchset


如要在目标数据库中,使用最后的 DST/TZ 补丁,参照 : 

Note 412160.1 :  Updated DST transitions and new Time Zones in Oracle Time Zone File patches

Note:
   如果时区文件不匹配, TIMESTAMP WITH TIME ZONE 数据在升级过程中可能会损坏。 



Audit records (审计记录)

 如FGA_LOG$  和 AUD$ 中的记录很多,在 10gr2 之后的 DBUA或catupgrd脚本 会消耗极大的时间来处理他们 。


见   Note 1062993.1 : 11.2.0.1 Catupgrd.sql Hangs While Running Procedure POPULATE_DBID_AUDIT 
对于 10.2 和之后的版本,可使用以下脚本来提前处理 : 
Note 1329590.1 : How to Pre-Process SYS.AUD$ Records Pre-Upgrade From 10.1 or later to 11gR1 or later. 

如不需要保留这些 11GR2 前的记录, 可直接truncate掉 :
truncate table sys.aud$;
truncate table sys.fga_log$;


Optimizer Statistics(优化器的统计信息)

在升级 11g Release 2 (11.2)时,  缺失的 数据字典 统计信息会被搜集,数据字典表很多的话 会消耗大量时间。
只有在升级中有缺少统计信息或者显著更改的表,才会发生信息搜集。

使用下面的文档脚本,来找到缺少统计信息的对象:

Note 560336.1  Script to Check Schemas with Stale Statistics


可以在数据库正式升级前搜集统计信息, 降低 总停机时间 。 在oracle 10gR1(10.1)版本,oracle推荐使用   DBMS_STATS.GATHER_DICTIONARY_STATS   存储过程来搜集信息。例如:

$ sqlplus "/as sysdba"
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;


如果是使用oracle 9i(9.2) 版本,  要使用 DBMS_STATS.GATHER_SCHEMA_STATS 存储过程,参照 附录D 来做。

Appendix D  中有一个例子, 包括建表, dictstattab, 导出统计信息。如果 特定的scheme组件 在 数据库 不存在、未安装或者无效 ,统计信息的搜集可能会返回错误。

备份当前已存在的统计信息,在升级成功后导入。

例如,在删除已有统计信息后,使用SYS用户执行下面 PL/SQL 存储过程导入:

SQL> EXEC DBMS_STATS.DELETE_SCHEMA_STATS('SYS');
SQL> EXEC DBMS_STATS.IMPORT_SCHEMA_STATS('SYS','dictstattab');



备份OEM数据 (Enterprise Manager Database Control Data)

如需在 升级之后 降级OEM,要在升级前提前保存   Database Control 文件和数据。   升级前使用 emdwgrd工具来保存一份控制文件的备份。 emdwgrd工具保存在11g  ORACLE_HOME/bin目录下。

1. 设置 ORACLE_HOME 为老的数据库( old Oracle Home).
2. 设置 ORACLE_SID 为需升级的 SID.
3.  设置  PATH, LD_LIBRARY_PATH 和 SHLIB_PATH  指向要升级数据库的   Oracle Home .
4. 进入 Oracle Database 11g release 2 (11.2) Home的目录下.
5. 运行以下命令:

a. 在单实例下运行以下命令:

$ emdwgrd -save -sid old_SID -path save_directory


 old_SID 是要升级数据的SID    save_directory 是保存OEM文件和数据的路径

请参照下面的文档:

Note 870877.1  How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release ?


b.如果是 RAC, 需要跨节点远程拷贝。声明一个环境变量指向远程拷贝的位置。 例如: setenv EM_REMCP /usr/bin/scp

$ emdwgrd -save -cluster -sid old_SID -path save_directory


Note:如是在共享设备上的10g Oracle Home, 在上面的命令行后加  -shared 

上面的命令在 HP-UX Itanium 平台可能会产生 core dump,更多的信息参照下面的OMS文章:

Note 562980.1  - emdwgrd core dumps : emdwgrd[228]: 10366 Memory fault(coredump)


6. 为要升级的数据库输入SYS密码。 
Note: On RAC databases you will be prompted to run '/tmp/racdwgrd_dbctl.sh' on each of the nodes.


禁用 Oracle Database Vault 

如果是从10.2版本升级,并启用了DB  Vault  功能,那么要在升级到11g之前禁用它。在升级完成之后可以再次启用。
如果升级前  DB  Vault是启用的,在升级中 DBUA 会提示禁用它。

一定要确保在升级前关闭 DB  Vault,升级后才可以开启。

参照下面的文档来禁用/启用 Oracle Database Vault:

 Disabling and Enabling Oracle Database Vault

或者 

参照OMS上的以下文章在升级之前禁用掉它:
 

Note 803948.1 -  How To Uninstall Or Reinstall Database Vault in 11g (UNIX)
Note 453902.1  - Enabling and Disabling Oracle Database Vault in WINDOWS
Note 1085051.1 - 11gR2 DBUA Errors - Database Vault Option Is Enabled


检查 不支持的 CONNECT 角色


在9.2或者10.1版本的数据库升级到11.2之后, CONNECT 角色只有   CREATE SESSION权限; CONNECT 角色中的 其他的权限在升级中被移除。
使用下面的语句 可以确认哪些用户或角色被授权了 CONNECT  角色。

SELECT grantee FROM dba_role_privs
WHERE granted_role = 'CONNECT' and
grantee NOT IN (
'SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP',
'LOGSTDBY_ADMINISTRATOR', 'ORDSYS',
'ORDPLUGINS', 'OEM_MONITOR', 'WKSYS', 'WKPROXY',
'WK_TEST', 'WKUSER', 'MDSYS', 'LBACSYS', 'DMSYS',
'WMSYS', 'EXFSYS', 'SYSMAN', 'MDDATA',
'SI_INFORMTN_SCHEMA', 'XDB', 'ODM');


如用户或角色需要授予 CREATE SESSION之外的权限,  要在升级之前 准确授予所需权限。
升级脚本只调整了ORACLE内部用户的权限。 

在 Oracle 9.2.x 和10.1.x 的版本中, CONNECT 角色包含了以下的权限:

SELECT GRANTEE,PRIVILEGE
FROM DBA_SYS_PRIVS
WHERE GRANTEE ='CONNECT'

GRANTEE PRIVILEGE
------- ----------------------
CONNECT CREATE VIEW
CONNECT CREATE TABLE
CONNECT ALTER SESSION
CONNECT CREATE CLUSTER
CONNECT CREATE SESSION
CONNECT CREATE SYNONYM
CONNECT CREATE SEQUENCE
CONNECT CREATE DATABASE LINK


自从 Oracle 10.2 起, 'CONNECT' 角色只包含了 'CREATE SESSION' 权限.

使用 Oracle Net Configuration Assistant

 a) 停数据库监听.

$ lsnrctl stop


以前版本的监听不支持使用Oracle数据库11 g版本2(11.2)数据库。但可使用新版本的监听与先前版本的Oracle数据库。
9i 数据库要在升级数据库之前运行netca(   Oracle Net Configuration Assistant )

操作分2个步骤.
首选,要在旧的 Oracle Home 下运行netca来移除旧监听.
- 运行 Netca
- 选择 Listener Configuration
- 选择 Delete
- 选择要删除的监听.

然后,在新的 Oracle Database 11g Release 2 (11.2) Home下再次运行netca 来建立新的监听.

- 运行 Netca
- 选择 Listener Configuration
- 选择 Add
- 填写监听所需的配置明细.

在建立新监听前一定要移除旧的,如果试图在新的ORACLE Home 下建立新的监听,并且和原先旧的监听使用一样的名字和端口,netca会返回错误。

Note: 如手动升级RAC数据库,这是唯一的选择。

 

注意:

如果DBUA不能在升级之前解析正确的  LOCAL_LISTENER  或  REMOTE_LISTENER  配置 ,在DBUA的日志中会看到:

ORA-00119: invalid specification for system parameter LOCAL_LISTENER (or REMOTE_LISTENER)
ORA-00132: syntax error or unresolved network name 'xxxxxxx'
ORA-01078: failure in processing system parameters


这会阻止DBUA启动数据库   (ORA-01034)    来处理用户和账号。在这种情况下,DBUA 认为所有的账号 (除了SYS 和 SYSTEM 外)  都是“新”账号,并因为密码过期而锁定它们。

这是一个已知的问题 (见  Note 1363624.1 : DBUA : Are All User Accounts Except SYS And SYSTEM Locked After The Upgrade Using DBUA ?)

一旦DBUA升级数据库,所有的用户都因密码过期而被锁定  

 LOCAL_LISTENER 的错误配置 可能是 : 

1) 错误的值 (tns 别名)  或者 错误的(全部)  LOCAL_LISTENER 初始化参数描述
或者
2)  在 tnsnames.ora 中, LOCAL_LISTENER  的值    ( 别名 ) 未知
或者
3)  tnsnames.ora 文件无法找到, LOCAL_LISTENER的值不能匹配.



b) 停止 dbconsole, isqlplus等 之类的程序.

$ emctl stop dbconsole
$ isqlplusctl stop


密码保护角色(Password protected roles)

在11.2 版本中,password protected roles 默认情况下不再可用。
如果任何应用程序依赖于这样的角色(默认启用),不 采取任何措施,允许 用户 使用set role命令 输入密码,那么建议移除 这些角色的 密码, 允许对现有权限仍然可用,更多信息见:

Note 745407.1 : What Roles Can Be Set as Default for a User?
Oracle Database Security Guide 10g Release 2 (10.2) Part Number B14266-07
Oracle Database Security Guide 11g Release 1 (11.1) Part Number B28531-15
Oracle Database Security Guide 11g Release 2 (11.2) Part Number E16543-09


内存设置

保证 SHARED_POOL_SIZE , LARGE_POOL_SIZE, JAVA_POOL_SIZE 大于 150MB (如果运行XDB的话,最少 250MB)
否则会碰到这样的问题 : 

Note 789779.1 : DBUA Error ORA-04031 unable to allocate 4120 bytes of shared memory, ORA-01034: ORACLE not available, ORA-00600: internal error code, arguments: [504] 
Note 1127179.1 ORA-07445 [qmkmgetConfig()+52] During Catupgrd.sql (11.2.0.1). 
 

环境变量

确保以下环境变量指向Oracle 11g Release 2 (11.2) 目录:

- ORACLE_BASE
- ORACLE_HOME
- PATH, LD_LIBRARY_PATH, SHLIB_PATH and LIBPATH ( for AIX )


开始使用 DBUA 进行升级:


 Linux 或者 UNIX 平台下, 在 Oracle Database 11g Release 2 (11.2.0.x) 环境中执行下面的命令:

确保是从目标数据库的Oracle Home下启动DBUA程序 .

在目标 Oracle home的 $ORACLE_HOME/bin 目录下运行 

% cd $ORACLE_HOME/bin
% ./dbua


或者 

在设定了目标数据库 ORACLE_BASE ,ORACLE_HOME 和 PATH环境变量后,任何目录下执行:

% dbua


Note:
  dbua 执行程序通常在 $ORACLE_HOME/bin 目录下.

如果是windows操作系统:

Start > Programs > Oracle - HOME_NAME > Configuration and Migration Tools > Database Upgrade Assistant.

 DBUA的欢迎界面就会出现.

 

升级后需完成的步骤 

在数据库升级完成后,完成下面的任务 :

1)  检查下面的环境变量,已经设置在 11.2.0.x 下:

ORACLE_BASE
ORACLE_HOME
PATH

Note: DBUA 自动在oratab中指定新的 Oracle Home.但是无论用哪种方式升级,客户端脚本必须检查.

如果升级的是集群环境的数据库, 要在所有的节点进行检查。

2) 升级 Recovery Catalog

完整的升级  recovery catalog 信息和命令,参照  Oracle Database Backup and Recovery User's Guide .

3) 升级 Time Zone File Version

 Pre-Upgrade Information 工具中如指示 在数据库升级完成后升级时区文件, 就使用 DBMS_DST PL/SQL 包来进行升级时区文件.

Note 977512.1 Updating the RDBMS DST version in 11gR2 (11.2.0.1 and up) using DBMS_DST


4) 升级DBMS_STATS 包创建的统计信息表

如用 DBMS_STATS.CREATE_STAT_TABLE 存储过程建立了统计表,使用下面的存储过程来升级它们:

EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('scott', 'stat_table');


在这个例子中, SCOTT 是 statistics table的所有者, STAT_TABLE 是统计表的名字. Perform this procedure for each
为每个 statistics table执行这样的存储过程.

5)  升级外部认证的 SSL 用户

如果是从 Oracle9i R2 (9.2) 或 Oracle 10g R1(10.1) 进行升级,并使用外部认证的 SSL 用户,就要运行 SSL 外部用户转换  (extusrupgrade) 脚本来升级这些用户.
脚本语法如下:

ORACLE_HOME/rdbms/bin/extusrupgrade --dbconnectstring
<hostname:port_no:sid> --dbuser <db admin> --dbuserpassword
<password> -a

 

Note:  如果从 Oracle Database 10g Release 2 (10.2) 或更高的版本升级, 无需运行这些命令.

6) 启用Database Vault

参照如下 MOS 文档:

Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX
Note 453902.1 - Enabling and Disabling Oracle Database Vault in WINDOWS

 

7) 为外部网络服务( External Network Services) 配置 Fine-Grained Access  

当执行 UTL(Network related Packages)包时,为了避免 "ORA-24247: network access denied by access control list (ACL)" ,用户必须使用这些包授予访问权限.

下面的例子中 首先寻找任何当前分配给 host_name的ACL.
如果找到1条,就在ACL中为 user_name 授予 CONNECT权限(如果这个用户还没有这个权限). 
如果 host_name的  ACL已存在, 那么建立一个新的名为 ACL_name的ACL,为 user_name 授予  CONNECT 权限, 向 host_name分配ACL.

DECLARE
acl_path VARCHAR2(4000);
BEGIN
SELECT acl INTO acl_path FROM dba_network_acls
WHERE host = 'host_name' AND lower_port IS NULL AND upper_port IS NULL;
IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(acl_path,'principal','privilege') IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl_path,'principal', is_grant, 'privilege');
END IF;
EXCEPTION
WHEN no_data_found THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('ACL_name.xml','ACL description', 'principal', is_grant, 'privilege');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('ACL_name.xml','host_name');
END;

COMMIT;

 
acl_name.xml => Enter a name for the access control list XML file.
ACL description => 'file description',
principal => 'user_or_role',
is_grant => TRUE|FALSE,
privilege => 'connect|resolve',
host_name => host name

下面的文档介绍了 DBMS_NETWORK_ACL_ADMIN 包的使用  和 避免 ORA-24247: network access denied by access control list (ACL):

Note 453786.1 ORA-24247 When Executing UTL_HTTP UTL_INADDR Packages

 

8) 在升级后的新版本数据库上,修改 compatible 参数.

升级到 Oracle Database 11g Release 2 (11.2)后, 可通过设置 COMPATIBLE初始化参数来使版本号匹配到新的版本. 这样会启用新版本数据库的所有的特性, 注意修改后无法降级到之前的版本.

Oracle 建议: 只有在升级后的数据库完全测试后, 再提升COMPATIBLE 参数 .

提升 COMPATIBLE 参数后, 数据库无法降低到原来的版本.

已知的问题

Note 1066828.1 11GR2 DBUA ORA-06550 PLS-00201 IDENTIFIER SYS.DBMS_JAVA MUST BE DECLARED

 有用的升级文档

Note 1561791.2 Upgrade / Downgrade Assistant: Oracle Database/Client
Note 1351112.2 Information Center: Upgrading and Migration Oracle Database
Note 785351.1 Oracle 11gR2 Upgrade Companion
Note 251.1 Database Upgrade Planner from 10.2 to 11.2
Note 264.1 Database Upgrade Planner from 9.2 to 11.2

修改历史 
03-Sep-2009 Article Created

 

 参考

NOTE:453902.1 - How To Enable And/Or Disable Oracle Database Vault
NOTE:884522.1 - How to Download and Run Oracle's Database Pre-Upgrade Utility
NOTE:870877.1 - How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release ?
NOTE:1085051.1 - 11gR2 DBUA Errors - Database Vault Option Is Enabled
NOTE:414590.1 - Time Zone IDs for 7 Time Zones Changed in Time Zone Files Version 3 and Higher, Possible ORA-1882 After Upgrade
NOTE:745407.1 - What Roles Can Be Set as Default for a User?
NOTE:789779.1 - DBUA Error ORA-04031 unable to allocate 4120 bytes of shared memory, ORA-01034: ORACLE not available, ORA-00600: internal error code, arguments: [504]
NOTE:1127179.1 - ORA-07445 [qmkmgetConfig()+52] During Catupgrd.sql (11.2.0.1)
BUG:10209691 - SLOW PERFORMANCE ON ALL_TSTZ_TAB_COLS
NOTE:1329590.1 - How to Pre-Process SYS.AUD$ Records Pre-Upgrade From 10.1 or later to 11gR1 or later.

BUG:12658443 - SLOW PERFORMANCE UPGRADING TIMEZONE FROM 11 TO 14
NOTE:815679.1 - Actions For DST Updates When Upgrading To 11.2.0.1 Base Release
NOTE:453903.1 - Enabling and Disabling Oracle Database Vault in UNIX
NOTE:1066828.1 - 11GR2 DBUA ORA-06550 PLS-00201 IDENTIFIER SYS.DBMS_JAVA MUST BE DECLARED
NOTE:412160.1 - Updated DST transitions and new Time Zones in Oracle Time Zone File patches
NOTE:359145.1 - Impact of 2007 USA daylight saving changes on the Oracle database
NOTE:803948.1 - How To Uninstall Or Reinstall Database Vault in 11g
NOTE:1358166.1 - Actions For DST Updates When Upgrading To Or Applying The 11.2.0.3 Patchset
NOTE:431437.1 - 10g DBUA Failed To Bring Up 9i Database. ORA-00119 ORA-00132 ORA-01078
NOTE:453786.1 - ORA-24247 When Executing UTL_HTTP UTL_INADDR Packages
NOTE:560336.1 - Script To Check Schemas With Stale Statistics
NOTE:562980.1 - DB Control 11g: emdwgrd core dumps : emdwgrd[228]: 10366 Memory fault(coredump)
NOTE:1201253.1 - Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset
NOTE:1062993.1 - 11.2.0.1 Catupgrd.sql Hangs While Running Procedure POPULATE_DBID_AUDIT
NOTE:975140.1 - 11G DBUA Error: Database Vault option is enabled in Oracle Home: “

NOTE:977512.1 - Updating the RDBMS DST version in 11g Release 2 (11.2.0.1 and up) using DBMS_DST
NOTE:1561791.2 - Upgrade / Downgrade Assistant: Oracle Database/Client
  




 
使用DBUA升级数据库到11g R2的完整Checklist


DBUA使通常手动操作的升级过程自动化。
一些操作可以在数据库运行时提前完成,最小化升级的停机时间。

- DBUA
1 在升级过程中提供图形界面。
2 是ORACLE官方推荐的升级方法
3 自动化所有的升级步骤
4 对一些配置 如表空间、redo、优化器统计、时区文件等,进行合适的配置建议,用户可以应用这些建议,简单且界面友好。
5 原数据库的隐藏参数不会带到升级后的数据库中,因此oracle建议在升级前移除所有的隐藏参数。
  可以使用  AS  SYSDBA 连接到数据库,运行以下SQL来查看隐藏参数:

SELECT name,description from SYS.V$PARAMETER WHERE name LIKE '\_%' ESCAPE '\'


如使用DBUA,要特别注意处理隐藏参数。
如手动升级,需要在init.ora或spfile中修改这些参数。

DBUA会在数据库升级前进行一些检查:


=>无效的用户和角色
=>无效的数据类型或者对象
=>不支持的字符集
=>足够的资源,包括回滚段、表空间、剩余磁盘。
=>升级所需的SQL脚本
=>运行的监听 (如果OEM升级或配置)
=>DB Vault功能要关闭,否则升级时会报错,并提示关闭它。
=>过期的优化器统计信息。
=>时区文件版本
=>是否存在OEM负载仓库  (Enterprise Manager Database control Repository)

原数据库的建议:(resource database) 

1) 检查所有的ORACLE数据库组件、对象的状态 ,在升级前都是VALID   

2) 确认 SYS 和 SYSTEM schema下没有重复的对象:

以下是被允许重复的对象:

 OBJECT_NAME OBJECT_TYPE

------------------------------ -------------------
AQ$_SCHEDULES TABLE
AQ$_SCHEDULES_PRIMARY INDEX
DBMS_REPCAT_AUTH PACKAGE
DBMS_REPCAT_AUTH PACKAGE BODY

 可参考以下文档:.
NOTE.1030426.6 HOW TO CLEAN UP DUPLICATE OBJECTS OWNED BY SYS AND SYSTEM

3)禁用会在 DDL 前后触发的自定义 triggers  ,在升级完成后再启用.


升级目标数据库的建议:(target database)

  • 下载并在新的Oracle Home下安装l Oracle 11g Release 2 ,确认没有 relinking errors.
  • 安装最新的 Patchset from Metalink. 
  • 安装最新的 Critical Patch Update.
  • 升级前进行数据库冷备或者热备 (建议使用 cold backup).
  • 升级前检查数据库服务器升级/降级一致性(upgrade/downgrade compatibility)
  • --下面3个XDB相关,未使用的请无视。
  • Prior to Upgrading a database with XML Database(XDB) installed or  installing XDB, be sure to run the code mentioned in Note 1573175.1 "Upgrading or Installing XDB could result in data loss if XDB_INSTALLATION_TRIGGER exists "  to determine if any objects need to be dropped. Please note, failure to follow the steps listed below could result in data loss of user objects like tables, indexes
  • If you have XDB installed then  please install the PSE for 10368698 to the 11.2.0.2 Home before doing the upgrade . If there is not an existing one-off patch for your platform please open an SR to request the one-off patch. This defect can cause certain databases that are XDB enabled to take a great deal of time to upgrade. The bug 10368698 is fixed in 11.2.0.3 .
  • If you have XDB installed then  the install the fix for Bug 10419629 in the 11.2.0.2.0 home prior to  upgrade . Please refer  Note 1305561.1 While Upgrading From 10.2.0.4.0 To 11.2.0.2.0 Catupgrd.sql=ORA-31061 ORA-19202 LSX-23

Compatibility Matrix

可以直接升级到 Oracle 11g Release 2的最低数据库版本

Source Database                Target Database
9.2.0.8 or higher                    11.2.x
10.1.0.5 or higher                  11.2.x
10.2.0.2 or higher                  11.2.x
11.1.0.6 or higher                  11.2.x

以下的数据库版本需要间接升级  

Source Database ---> Upgrade Path for Target Database--->Target Database
7.3.3 (or lower)----->   7.3.4 --->   9.2.0.8 ---->11.2.x
8.0.5 (or lower)---->    8.0.6 --->    9.2.0.8 ---->11.2.x
8.1.7 (or lower)---->    8.1.7.4---> 10.2.0.4---->11.2.x
9.0.1.3 (or lower)----> 9.0.1.4-- ->10.2.0.4---->11.2.x
9.2.0.7(or lower)---->9.2.0.8---->11.2.x

例如:

原数据库版本为 8.1.7.0.0,升级路线如下:
8.1.7.0.0 --> 8.1.7.4 --> 10.2.0.4--> 11.2.x. 

NOTE: 如果使用非支持的最低版本进行升级,DBUA会报如下错误:
"The CEP File does not provide the version directive"


运行 Pre-Upgrade Information 工具来搜集升级前的信息:

参照下面文档来下载最新的 Pre-Upgrade Information 工具:

Note 884522.1: How to Download and Run Oracle's Database Pre-Upgrade Utility 

或者
从11g的Oracle Home下拷贝

Step 1
-------

  •  使用oracle用户登录操作系统  (11g Oracle Home的安装用户)
  •  从Oracle Home中拷贝出 Pre-Upgrade Information工具脚本 ( Oracle Database 11g Release 2 (11.2) ORACLE_HOME/rdbms/admin/utlu112i.sql) 到一个临时的文件夹

 

$ORACLE_HOME/rdbms/admin/utlu112i.sql



Step 2
-------

  •   在升级前,切换到 utlu112i.sql 脚本所在的目录下.
  •   启动 SQL*Plus 并以 SYSDBA权限连接到数据库. 运行并导出 utlu112i.sql 文件. 一定要确认是在原数据结构执行的。

 

$ sqlplus '/ as sysdba'
SQL> spool upgrade_info.log
SQL> @utlu112i.sql
SQL> spool off



查看导出文件的输出信息,会提示有哪些还需要调整。
For sample output, Click here

在原数据库中 检查无效的数据库组件和对象

在升级前使用以下SQL查询,并确认结果中没有INVALID的数据:

set pagesize500
set linesize 200
       
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 ;


如果发现有无效的组件或者对象,执行以下脚本使他们的状态变为 VALIDATE:

运行 $ORACLE_HOME/rdbms/admin/utlrp.sql  可以使无效的对象变为有效, utlrp.sql脚本可多次执行。

$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql 


如果未在升级前 完成oracle建议的检查,可能看到以下的警告信息:

Oracle Corporation strongly recommends that the following issues be resolved in the database "upgrade" before you start the database upgrade .

Database is using the old time zone file version. 
After the upgrade ,patch the database timezone file version using the DBMS_DST package to record the latest time zone file Version 

Database contains stale optimizer statistic. Refer to the Upgrade Guide for instruction to update statistics prior to upgrade the database 

Enterprise manager Database Control Repository exists  in the database . Direct downgrade of the Enterprise Manager Control is not supported . 
Refer to the 11g  Upgrade Guide for the instruction to save the Enterprise manager data prior to upgrade 

Do you want to continue with upgrade ?


检查 TIMESTAMP WITH TIMEZONE的数据类型

  时区文件影响哪些使用   TIMESTAMP WITH TIME ZONE  类型的数据,目前的版本:
    Timezone  version 11 (在11.2.0.1版本的数据库) 、
   Timezone  version  14 ( 11.2.0.2/11.2.0.3 版本的数据库

注意 : 
从 11.2.0.2 之后的 DBUA 的升级过程中,已经加入以下选项,可以在GUI界面中勾选来升级时区文件 :

"Upgrade Timezone Version and TIMESTAMP WITH TIME ZONE Data"

但有时会遇到以下的问题 :

BUG 10209691 : SLOW PERFORMANCE ON ALL_TSTZ_TAB_COLS
BUG 12658443 :  SLOW PERFORMANCE UPGRADING TIMEZONE FROM 11 TO 14

因此 DBUA 可能会在 "Upgrading Timezone"  这个步骤中非常缓慢,  所以当前的建议是  不要勾选这个
在升级后进行手动升级 : 
Note 977512.1 : Updating the RDBMS DST version in 11g Release 2 (11.2.0.1 and up) using DBMS_DST

 在源库会有2种情况下,需要升级时区: 

Case 1
--------

pre-upgrade 脚本执行结果中出现 :

WARNING: -->Database is using a timezone file older than .....



如果源库中的时区文件版本低于或者等于 : 
- version 11  并且目标数据库是 11.2.0.1
或者
- version 14  并且目标数据库是 11.2.0.2/11.2.0.3


那么源库无需任何操作 , 建议在升级之后,使用 DBMS_DST包 升级时区文件 : 
Note 977512.1 : Updating the RDBMS DST version in 11gR2 (11.2.0.1 and up) using DBMS_DST 

Case 2
--------

 如pre-upgrade 脚本执行结果中出现  :

WARNING: --> Database is using a timezone file greater than ....


如源库中的时区文件 高于 :
- version 11 并且 目标数据库的版本为 11.2.0.1

- version 14 并且 目标数据库的版本为 11.2.0.2/11.2.0.3

那么在升级之前,必须在11gR2 $ORACLE_HOME 下,补上和源库相同版本的时区文件。

时区升级的细节参照如下 :

Note 815679.1 : Actions For DST Updates When Upgrading To 11.2.0.1 Base Release
Note 1201253.1 : Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset
Note 1358166.1 : Actions For DST Updates When Upgrading To Or Applying The 11.2.0.3 Patchset 
Note 1579838.1 : Actions For DST Updates When Upgrading To Or Applying The 11.2.0.4 Patchset


如要在目标数据库中,使用最后的 DST/TZ 补丁,参照 : 

Note 412160.1 :  Updated DST transitions and new Time Zones in Oracle Time Zone File patches

Note:
   如果时区文件不匹配, TIMESTAMP WITH TIME ZONE 数据在升级过程中可能会损坏。 



Audit records (审计记录)

 如FGA_LOG$  和 AUD$ 中的记录很多,在 10gr2 之后的 DBUA或catupgrd脚本 会消耗极大的时间来处理他们 。


见   Note 1062993.1 : 11.2.0.1 Catupgrd.sql Hangs While Running Procedure POPULATE_DBID_AUDIT 
对于 10.2 和之后的版本,可使用以下脚本来提前处理 : 
Note 1329590.1 : How to Pre-Process SYS.AUD$ Records Pre-Upgrade From 10.1 or later to 11gR1 or later. 

如不需要保留这些 11GR2 前的记录, 可直接truncate掉 :
truncate table sys.aud$;
truncate table sys.fga_log$;


Optimizer Statistics(优化器的统计信息)

在升级 11g Release 2 (11.2)时,  缺失的 数据字典 统计信息会被搜集,数据字典表很多的话 会消耗大量时间。
只有在升级中有缺少统计信息或者显著更改的表,才会发生信息搜集。

使用下面的文档脚本,来找到缺少统计信息的对象:

Note 560336.1  Script to Check Schemas with Stale Statistics


可以在数据库正式升级前搜集统计信息, 降低 总停机时间 。 在oracle 10gR1(10.1)版本,oracle推荐使用   DBMS_STATS.GATHER_DICTIONARY_STATS   存储过程来搜集信息。例如:

$ sqlplus "/as sysdba"
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;


如果是使用oracle 9i(9.2) 版本,  要使用 DBMS_STATS.GATHER_SCHEMA_STATS 存储过程,参照 附录D 来做。

Appendix D  中有一个例子, 包括建表, dictstattab, 导出统计信息。如果 特定的scheme组件 在 数据库 不存在、未安装或者无效 ,统计信息的搜集可能会返回错误。

备份当前已存在的统计信息,在升级成功后导入。

例如,在删除已有统计信息后,使用SYS用户执行下面 PL/SQL 存储过程导入:

SQL> EXEC DBMS_STATS.DELETE_SCHEMA_STATS('SYS');
SQL> EXEC DBMS_STATS.IMPORT_SCHEMA_STATS('SYS','dictstattab');



备份OEM数据 (Enterprise Manager Database Control Data)

如需在 升级之后 降级OEM,要在升级前提前保存   Database Control 文件和数据。   升级前使用 emdwgrd工具来保存一份控制文件的备份。 emdwgrd工具保存在11g  ORACLE_HOME/bin目录下。

1. 设置 ORACLE_HOME 为老的数据库( old Oracle Home).
2. 设置 ORACLE_SID 为需升级的 SID.
3.  设置  PATH, LD_LIBRARY_PATH 和 SHLIB_PATH  指向要升级数据库的   Oracle Home .
4. 进入 Oracle Database 11g release 2 (11.2) Home的目录下.
5. 运行以下命令:

a. 在单实例下运行以下命令:

$ emdwgrd -save -sid old_SID -path save_directory


 old_SID 是要升级数据的SID    save_directory 是保存OEM文件和数据的路径

请参照下面的文档:

Note 870877.1  How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release ?


b.如果是 RAC, 需要跨节点远程拷贝。声明一个环境变量指向远程拷贝的位置。 例如: setenv EM_REMCP /usr/bin/scp

$ emdwgrd -save -cluster -sid old_SID -path save_directory


Note:如是在共享设备上的10g Oracle Home, 在上面的命令行后加  -shared 

上面的命令在 HP-UX Itanium 平台可能会产生 core dump,更多的信息参照下面的OMS文章:

Note 562980.1  - emdwgrd core dumps : emdwgrd[228]: 10366 Memory fault(coredump)


6. 为要升级的数据库输入SYS密码。 
Note: On RAC databases you will be prompted to run '/tmp/racdwgrd_dbctl.sh' on each of the nodes.


禁用 Oracle Database Vault 

如果是从10.2版本升级,并启用了DB  Vault  功能,那么要在升级到11g之前禁用它。在升级完成之后可以再次启用。
如果升级前  DB  Vault是启用的,在升级中 DBUA 会提示禁用它。

一定要确保在升级前关闭 DB  Vault,升级后才可以开启。

参照下面的文档来禁用/启用 Oracle Database Vault:

 Disabling and Enabling Oracle Database Vault

或者 

参照OMS上的以下文章在升级之前禁用掉它:
 

Note 803948.1 -  How To Uninstall Or Reinstall Database Vault in 11g (UNIX)
Note 453902.1  - Enabling and Disabling Oracle Database Vault in WINDOWS
Note 1085051.1 - 11gR2 DBUA Errors - Database Vault Option Is Enabled


检查 不支持的 CONNECT 角色


在9.2或者10.1版本的数据库升级到11.2之后, CONNECT 角色只有   CREATE SESSION权限; CONNECT 角色中的 其他的权限在升级中被移除。
使用下面的语句 可以确认哪些用户或角色被授权了 CONNECT  角色。

SELECT grantee FROM dba_role_privs
WHERE granted_role = 'CONNECT' and
grantee NOT IN (
'SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP',
'LOGSTDBY_ADMINISTRATOR', 'ORDSYS',
'ORDPLUGINS', 'OEM_MONITOR', 'WKSYS', 'WKPROXY',
'WK_TEST', 'WKUSER', 'MDSYS', 'LBACSYS', 'DMSYS',
'WMSYS', 'EXFSYS', 'SYSMAN', 'MDDATA',
'SI_INFORMTN_SCHEMA', 'XDB', 'ODM');


如用户或角色需要授予 CREATE SESSION之外的权限,  要在升级之前 准确授予所需权限。
升级脚本只调整了ORACLE内部用户的权限。 

在 Oracle 9.2.x 和10.1.x 的版本中, CONNECT 角色包含了以下的权限:

SELECT GRANTEE,PRIVILEGE
FROM DBA_SYS_PRIVS
WHERE GRANTEE ='CONNECT'

GRANTEE PRIVILEGE
------- ----------------------
CONNECT CREATE VIEW
CONNECT CREATE TABLE
CONNECT ALTER SESSION
CONNECT CREATE CLUSTER
CONNECT CREATE SESSION
CONNECT CREATE SYNONYM
CONNECT CREATE SEQUENCE
CONNECT CREATE DATABASE LINK


自从 Oracle 10.2 起, 'CONNECT' 角色只包含了 'CREATE SESSION' 权限.

使用 Oracle Net Configuration Assistant

 a) 停数据库监听.

$ lsnrctl stop


以前版本的监听不支持使用Oracle数据库11 g版本2(11.2)数据库。但可使用新版本的监听与先前版本的Oracle数据库。
9i 数据库要在升级数据库之前运行netca(   Oracle Net Configuration Assistant )

操作分2个步骤.
首选,要在旧的 Oracle Home 下运行netca来移除旧监听.
- 运行 Netca
- 选择 Listener Configuration
- 选择 Delete
- 选择要删除的监听.

然后,在新的 Oracle Database 11g Release 2 (11.2) Home下再次运行netca 来建立新的监听.

- 运行 Netca
- 选择 Listener Configuration
- 选择 Add
- 填写监听所需的配置明细.

在建立新监听前一定要移除旧的,如果试图在新的ORACLE Home 下建立新的监听,并且和原先旧的监听使用一样的名字和端口,netca会返回错误。

Note: 如手动升级RAC数据库,这是唯一的选择。

 

注意:

如果DBUA不能在升级之前解析正确的  LOCAL_LISTENER  或  REMOTE_LISTENER  配置 ,在DBUA的日志中会看到:

ORA-00119: invalid specification for system parameter LOCAL_LISTENER (or REMOTE_LISTENER)
ORA-00132: syntax error or unresolved network name 'xxxxxxx'
ORA-01078: failure in processing system parameters


这会阻止DBUA启动数据库   (ORA-01034)    来处理用户和账号。在这种情况下,DBUA 认为所有的账号 (除了SYS 和 SYSTEM 外)  都是“新”账号,并因为密码过期而锁定它们。

这是一个已知的问题 (见  Note 1363624.1 : DBUA : Are All User Accounts Except SYS And SYSTEM Locked After The Upgrade Using DBUA ?)

一旦DBUA升级数据库,所有的用户都因密码过期而被锁定  

 LOCAL_LISTENER 的错误配置 可能是 : 

1) 错误的值 (tns 别名)  或者 错误的(全部)  LOCAL_LISTENER 初始化参数描述
或者
2)  在 tnsnames.ora 中, LOCAL_LISTENER  的值    ( 别名 ) 未知
或者
3)  tnsnames.ora 文件无法找到, LOCAL_LISTENER的值不能匹配.



b) 停止 dbconsole, isqlplus等 之类的程序.

$ emctl stop dbconsole
$ isqlplusctl stop


密码保护角色(Password protected roles)

在11.2 版本中,password protected roles 默认情况下不再可用。
如果任何应用程序依赖于这样的角色(默认启用),不 采取任何措施,允许 用户 使用set role命令 输入密码,那么建议移除 这些角色的 密码, 允许对现有权限仍然可用,更多信息见:

Note 745407.1 : What Roles Can Be Set as Default for a User?
Oracle Database Security Guide 10g Release 2 (10.2) Part Number B14266-07
Oracle Database Security Guide 11g Release 1 (11.1) Part Number B28531-15
Oracle Database Security Guide 11g Release 2 (11.2) Part Number E16543-09


内存设置

保证 SHARED_POOL_SIZE , LARGE_POOL_SIZE, JAVA_POOL_SIZE 大于 150MB (如果运行XDB的话,最少 250MB)
否则会碰到这样的问题 : 

Note 789779.1 : DBUA Error ORA-04031 unable to allocate 4120 bytes of shared memory, ORA-01034: ORACLE not available, ORA-00600: internal error code, arguments: [504] 
Note 1127179.1 ORA-07445 [qmkmgetConfig()+52] During Catupgrd.sql (11.2.0.1). 
 

环境变量

确保以下环境变量指向Oracle 11g Release 2 (11.2) 目录:

- ORACLE_BASE
- ORACLE_HOME
- PATH, LD_LIBRARY_PATH, SHLIB_PATH and LIBPATH ( for AIX )


开始使用 DBUA 进行升级:


 Linux 或者 UNIX 平台下, 在 Oracle Database 11g Release 2 (11.2.0.x) 环境中执行下面的命令:

确保是从目标数据库的Oracle Home下启动DBUA程序 .

在目标 Oracle home的 $ORACLE_HOME/bin 目录下运行 

% cd $ORACLE_HOME/bin
% ./dbua


或者 

在设定了目标数据库 ORACLE_BASE ,ORACLE_HOME 和 PATH环境变量后,任何目录下执行:

% dbua


Note:
  dbua 执行程序通常在 $ORACLE_HOME/bin 目录下.

如果是windows操作系统:

Start > Programs > Oracle - HOME_NAME > Configuration and Migration Tools > Database Upgrade Assistant.

 DBUA的欢迎界面就会出现.

 

升级后需完成的步骤 

在数据库升级完成后,完成下面的任务 :

1)  检查下面的环境变量,已经设置在 11.2.0.x 下:

ORACLE_BASE
ORACLE_HOME
PATH

Note: DBUA 自动在oratab中指定新的 Oracle Home.但是无论用哪种方式升级,客户端脚本必须检查.

如果升级的是集群环境的数据库, 要在所有的节点进行检查。

2) 升级 Recovery Catalog

完整的升级  recovery catalog 信息和命令,参照  Oracle Database Backup and Recovery User's Guide .

3) 升级 Time Zone File Version

 Pre-Upgrade Information 工具中如指示 在数据库升级完成后升级时区文件, 就使用 DBMS_DST PL/SQL 包来进行升级时区文件.

Note 977512.1 Updating the RDBMS DST version in 11gR2 (11.2.0.1 and up) using DBMS_DST


4) 升级DBMS_STATS 包创建的统计信息表

如用 DBMS_STATS.CREATE_STAT_TABLE 存储过程建立了统计表,使用下面的存储过程来升级它们:

EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('scott', 'stat_table');


在这个例子中, SCOTT 是 statistics table的所有者, STAT_TABLE 是统计表的名字. Perform this procedure for each
为每个 statistics table执行这样的存储过程.

5)  升级外部认证的 SSL 用户

如果是从 Oracle9i R2 (9.2) 或 Oracle 10g R1(10.1) 进行升级,并使用外部认证的 SSL 用户,就要运行 SSL 外部用户转换  (extusrupgrade) 脚本来升级这些用户.
脚本语法如下:

ORACLE_HOME/rdbms/bin/extusrupgrade --dbconnectstring
<hostname:port_no:sid> --dbuser <db admin> --dbuserpassword
<password> -a

 

Note:  如果从 Oracle Database 10g Release 2 (10.2) 或更高的版本升级, 无需运行这些命令.

6) 启用Database Vault

参照如下 MOS 文档:

Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX
Note 453902.1 - Enabling and Disabling Oracle Database Vault in WINDOWS

 

7) 为外部网络服务( External Network Services) 配置 Fine-Grained Access  

当执行 UTL(Network related Packages)包时,为了避免 "ORA-24247: network access denied by access control list (ACL)" ,用户必须使用这些包授予访问权限.

下面的例子中 首先寻找任何当前分配给 host_name的ACL.
如果找到1条,就在ACL中为 user_name 授予 CONNECT权限(如果这个用户还没有这个权限). 
如果 host_name的  ACL已存在, 那么建立一个新的名为 ACL_name的ACL,为 user_name 授予  CONNECT 权限, 向 host_name分配ACL.

DECLARE
acl_path VARCHAR2(4000);
BEGIN
SELECT acl INTO acl_path FROM dba_network_acls
WHERE host = 'host_name' AND lower_port IS NULL AND upper_port IS NULL;
IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(acl_path,'principal','privilege') IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl_path,'principal', is_grant, 'privilege');
END IF;
EXCEPTION
WHEN no_data_found THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('ACL_name.xml','ACL description', 'principal', is_grant, 'privilege');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('ACL_name.xml','host_name');
END;

COMMIT;

 
acl_name.xml => Enter a name for the access control list XML file.
ACL description => 'file description',
principal => 'user_or_role',
is_grant => TRUE|FALSE,
privilege => 'connect|resolve',
host_name => host name

下面的文档介绍了 DBMS_NETWORK_ACL_ADMIN 包的使用  和 避免 ORA-24247: network access denied by access control list (ACL):

Note 453786.1 ORA-24247 When Executing UTL_HTTP UTL_INADDR Packages

 

8) 在升级后的新版本数据库上,修改 compatible 参数.

升级到 Oracle Database 11g Release 2 (11.2)后, 可通过设置 COMPATIBLE初始化参数来使版本号匹配到新的版本. 这样会启用新版本数据库的所有的特性, 注意修改后无法降级到之前的版本.

Oracle 建议: 只有在升级后的数据库完全测试后, 再提升COMPATIBLE 参数 .

提升 COMPATIBLE 参数后, 数据库无法降低到原来的版本.

已知的问题

Note 1066828.1 11GR2 DBUA ORA-06550 PLS-00201 IDENTIFIER SYS.DBMS_JAVA MUST BE DECLARED

 有用的升级文档

Note 1561791.2 Upgrade / Downgrade Assistant: Oracle Database/Client
Note 1351112.2 Information Center: Upgrading and Migration Oracle Database
Note 785351.1 Oracle 11gR2 Upgrade Companion
Note 251.1 Database Upgrade Planner from 10.2 to 11.2
Note 264.1 Database Upgrade Planner from 9.2 to 11.2

修改历史 
03-Sep-2009 Article Created

 

 参考

NOTE:453902.1 - How To Enable And/Or Disable Oracle Database Vault
NOTE:884522.1 - How to Download and Run Oracle's Database Pre-Upgrade Utility
NOTE:870877.1 - How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release ?
NOTE:1085051.1 - 11gR2 DBUA Errors - Database Vault Option Is Enabled
NOTE:414590.1 - Time Zone IDs for 7 Time Zones Changed in Time Zone Files Version 3 and Higher, Possible ORA-1882 After Upgrade
NOTE:745407.1 - What Roles Can Be Set as Default for a User?
NOTE:789779.1 - DBUA Error ORA-04031 unable to allocate 4120 bytes of shared memory, ORA-01034: ORACLE not available, ORA-00600: internal error code, arguments: [504]
NOTE:1127179.1 - ORA-07445 [qmkmgetConfig()+52] During Catupgrd.sql (11.2.0.1)
BUG:10209691 - SLOW PERFORMANCE ON ALL_TSTZ_TAB_COLS
NOTE:1329590.1 - How to Pre-Process SYS.AUD$ Records Pre-Upgrade From 10.1 or later to 11gR1 or later.

BUG:12658443 - SLOW PERFORMANCE UPGRADING TIMEZONE FROM 11 TO 14
NOTE:815679.1 - Actions For DST Updates When Upgrading To 11.2.0.1 Base Release
NOTE:453903.1 - Enabling and Disabling Oracle Database Vault in UNIX
NOTE:1066828.1 - 11GR2 DBUA ORA-06550 PLS-00201 IDENTIFIER SYS.DBMS_JAVA MUST BE DECLARED
NOTE:412160.1 - Updated DST transitions and new Time Zones in Oracle Time Zone File patches
NOTE:359145.1 - Impact of 2007 USA daylight saving changes on the Oracle database
NOTE:803948.1 - How To Uninstall Or Reinstall Database Vault in 11g
NOTE:1358166.1 - Actions For DST Updates When Upgrading To Or Applying The 11.2.0.3 Patchset
NOTE:431437.1 - 10g DBUA Failed To Bring Up 9i Database. ORA-00119 ORA-00132 ORA-01078
NOTE:453786.1 - ORA-24247 When Executing UTL_HTTP UTL_INADDR Packages
NOTE:560336.1 - Script To Check Schemas With Stale Statistics
NOTE:562980.1 - DB Control 11g: emdwgrd core dumps : emdwgrd[228]: 10366 Memory fault(coredump)
NOTE:1201253.1 - Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset
NOTE:1062993.1 - 11.2.0.1 Catupgrd.sql Hangs While Running Procedure POPULATE_DBID_AUDIT
NOTE:975140.1 - 11G DBUA Error: Database Vault option is enabled in Oracle Home: “

NOTE:977512.1 - Updating the RDBMS DST version in 11g Release 2 (11.2.0.1 and up) using DBMS_DST
NOTE:1561791.2 - Upgrade / Downgrade Assistant: Oracle Database/Client
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值