使用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 '\'
=>无效的用户和角色 =>无效的数据类型或者对象 =>不支持的字符集 =>足够的资源,包括回滚段、表空间、剩余磁盘。 =>升级所需的SQL脚本 =>运行的监听 (如果OEM升级或配置) =>DB Vault功能要关闭,否则升级时会报错,并提示关闭它。 =>过期的优化器统计信息。 =>时区文件版本 =>是否存在OEM负载仓库 (Enterprise Manager Database control Repository) 原数据库的建议:(resource database) 2) 确认 SYS 和 SYSTEM schema下没有重复的对象: 以下是被允许重复的对象: OBJECT_NAME OBJECT_TYPE
------------------------------ -------------------
AQ$_SCHEDULES TABLE AQ$_SCHEDULES_PRIMARY INDEX DBMS_REPCAT_AUTH PACKAGE DBMS_REPCAT_AUTH PACKAGE BODY 可参考以下文档:. 3)禁用会在 DDL 前后触发的自定义 triggers ,在升级完成后再启用.
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_HOME/rdbms/admin/utlu112i.sql
$ sqlplus '/ as sysdba'
SQL> spool upgrade_info.log SQL> @utlu112i.sql SQL> spool off
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 ;
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba" SQL> @utlrp.sql
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
版本的数据库
)
注意 :
WARNING: -->Database is using a timezone file older than .....
WARNING: --> Database is using a timezone file greater than ....
时区升级的细节参照如下 : 见 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
Note 870877.1 How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release ?
$ emdwgrd -save -cluster -sid old_SID -path save_directory
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');
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
$ lsnrctl stop
以前版本的监听不支持使用Oracle数据库11 g版本2(11.2)数据库。但可使用新版本的监听与先前版本的Oracle数据库。
9i 数据库要在升级数据库之前运行netca(
Oracle Net Configuration Assistant
)
操作分2个步骤.
- 运行 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). 环境变量
% cd $ORACLE_HOME/bin
% ./dbua
% dbua
Start > Programs > Oracle - HOME_NAME > Configuration and Migration Tools > Database Upgrade Assistant.
DBUA的欢迎界面就会出现. 升级后需完成的步骤在数据库升级完成后,完成下面的任务 : 1) 检查下面的环境变量,已经设置在 11.2.0.x 下: ORACLE_BASE
如果升级的是集群环境的数据库, 要在所有的节点进行检查。
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
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
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; 下面的文档介绍了 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:453902.1 - How To Enable And/Or Disable Oracle Database VaultNOTE: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 '\'
=>无效的用户和角色 =>无效的数据类型或者对象 =>不支持的字符集 =>足够的资源,包括回滚段、表空间、剩余磁盘。 =>升级所需的SQL脚本 =>运行的监听 (如果OEM升级或配置) =>DB Vault功能要关闭,否则升级时会报错,并提示关闭它。 =>过期的优化器统计信息。 =>时区文件版本 =>是否存在OEM负载仓库 (Enterprise Manager Database control Repository) 原数据库的建议:(resource database) 2) 确认 SYS 和 SYSTEM schema下没有重复的对象: 以下是被允许重复的对象: OBJECT_NAME OBJECT_TYPE
------------------------------ -------------------
AQ$_SCHEDULES TABLE AQ$_SCHEDULES_PRIMARY INDEX DBMS_REPCAT_AUTH PACKAGE DBMS_REPCAT_AUTH PACKAGE BODY 可参考以下文档:. 3)禁用会在 DDL 前后触发的自定义 triggers ,在升级完成后再启用.
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_HOME/rdbms/admin/utlu112i.sql
$ sqlplus '/ as sysdba'
SQL> spool upgrade_info.log SQL> @utlu112i.sql SQL> spool off
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 ;
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba" SQL> @utlrp.sql
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
版本的数据库
)
注意 :
WARNING: -->Database is using a timezone file older than .....
WARNING: --> Database is using a timezone file greater than ....
时区升级的细节参照如下 : 见 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
Note 870877.1 How To Save Oracle Enterprise Manager Database Control Data Before Upgrading The Single Instance Database To Other Release ?
$ emdwgrd -save -cluster -sid old_SID -path save_directory
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');
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
$ lsnrctl stop
以前版本的监听不支持使用Oracle数据库11 g版本2(11.2)数据库。但可使用新版本的监听与先前版本的Oracle数据库。
9i 数据库要在升级数据库之前运行netca(
Oracle Net Configuration Assistant
)
操作分2个步骤.
- 运行 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). 环境变量
% cd $ORACLE_HOME/bin
% ./dbua
% dbua
Start > Programs > Oracle - HOME_NAME > Configuration and Migration Tools > Database Upgrade Assistant.
DBUA的欢迎界面就会出现. 升级后需完成的步骤在数据库升级完成后,完成下面的任务 : 1) 检查下面的环境变量,已经设置在 11.2.0.x 下: ORACLE_BASE
如果升级的是集群环境的数据库, 要在所有的节点进行检查。
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
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
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; 下面的文档介绍了 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:453902.1 - How To Enable And/Or Disable Oracle Database VaultNOTE: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 |