Oracle从10g升级到11g详细步骤

来源:这里教程网 时间:2026-02-27 13:11:04 作者:

Oracle从10g升级到11g详细步骤数据库旧版本:10.2.0.4数据库新版本:11.2.0.2OS 版本: Solaris 10参考文档:Complete Checklist

oracle从10g升级到11g详细步骤数据库旧版本:10.2.0.4
数据库新版本:11.2.0.2
os 版本: solaris 10
参考文档:complete checklist for manual upgrades to 11gr2 [id 837570.1]
第一部分 - 安装11gr2软件
这里对软件的安装就不详细说明了,可以参考相应的文档。
这里需要注意的是:如果你想在11gr2上打上最新的psu或cpu,可以先在软件级别上打上psu或cpu,这样就不用跑两次catbundle.sql,减少停机时间。
第二部分 - 初步检查
1. 在升级之前,确保所有的组件和对象都是valid:
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; --针对对象
如果有invalid的对象,运行utlrp.sql重新编译对象。
2. 确保sys和system下没有重复的对象:
select object_name, object_type from dba_objects where object_name||object_type in (select object_name||object_type  from dba_objects where wner = 'sys') and wner = 'system';
上面这条语句只能返回以下4条记录:
object_name                              object_type
---------------------------------------- ---------------
dbms_repcat_auth                         package body
dbms_repcat_auth                         package
aq$_schedules_primary                    index
aq$_schedules                            table
如果有其它记录返回,则必须根据下面这篇文档把重复记录删除:
how to clean up duplicate objects owned by sys and system schema [id 1030426.6]
第三部分 - 升级前工作
step 1.
从11gr2的oracle home下拷贝以下文件至一个临时文件夹:
$oracle_home/rdbms/admin/utlu112i.sql

step 2.
登陆数据库,运行:

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

生成的upgrade_info.log里的内容很重要,后续步骤要根据该文件的内容做相应的修改,因此一定要保留下来。

Step 3.
从下面这篇文档里可以下载到脚本dbupgdiag.sql:
Script. to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) [ID 556610.1]
运行这个脚本:

cd
$ sqlplus / as sysdba
sql> alter session set nls_language='American';
sql> @dbupgdiag.sql
sql> exit
如果该脚本报告有invalid对象,运行以下命令重编译无效对象:

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

Step 4.
从10.2开始,CONNECT角色的权限变少了,,所以如果你是从10.2之前升级到11g的话,升级之后,需要重新授予缺少的权限,但是如果是从10.2及之后升级到11g的话,就不需要重新赋权限了,本例是从10.2.0.4升级到11g的,因此不需要该步骤。

Step 5.
生成重建dblink的脚本,以防万一数据库需要降级。和Step 4一样,本例是从10.2.0.4升级到11g的,因此不需要该步骤。

相关推荐