单节点升级:

第一:确保system表空间有10M空间可用

 

   使用如下语句检查表空间使用率:

col "tablespacename" for a20

col "userd_%" for a10

SELECT UPPER(F.TABLESPACE_NAME) "tablespacename",

        D.TOT_GROOTTE_MB "tablespace_size",

        D.TOT_GROOTTE_MB-F.TOTAL_BYTES "userd_tablespace_size(M)",                TO_CHAR(ROUND((D.TOT_GROOTTE_MB-F.TOTAL_BYTES)/D.TOT_GROOTTE_MB*100,2),'990.99') "userd_%",

        F.TOTAL_BYTES "free_size(M)"

FROM (SELECT TABLESPACE_NAME,

               ROUND(SUM(BYTES)/1024/1024) TOTAL_BYTES,

               ROUND(MAX(BYTES)/(1024*1024),2) MAX_BYTES

       FROM SYS.DBA_FREE_SPACE

       GROUP BY TABLESPACE_NAME) F,

       (SELECT DD.TABLESPACE_NAME,

               ROUND(SUM(BYTES)/1024/1024) TOT_GROOTTE_MB

       FROM SYS.DBA_DATA_FILES DD

       GROUP BY DD.TABLESPACE_NAME) D

WHERE D.TABLESPACE_NAME=F.TABLESPACE_NAME

ORDER BY 2 DESC;

 

第二:确保参数shared_pool_sizejava_pool_size至少为150M大小,保证catupgrd.sql10g)升级脚本运行正常(9i版本中是catpatch.sql

SQL>show parameter shared_pool_size

SQL>show parameter java_pool_size

SQL>alter system set shared_pool_size='200M' scope=spfile;

SQL>alter system set java_pool_size='200M' scope=spfile;

为了加快升级速度,临时调大这两个参数

 

第三:停止所有进程,关闭实例

SQL>shutdown immediate

 

第四:备份oracle软件,备份数据库(controlfile,redologfile,dbffile)

tar -cvf $ORACLE_BASE /oraclebackup

cp *.dbf con*.ora redo*.log /oraclebackup

 

第五:运行升级程序

oracle用户下执行./runIstanller

 

升级完毕,到root用户下执行root.sh脚本

 

第六:更新数据字典

SQL>startup upgrade

SQL>spool patch.log

SQL>@?/rdbms/admin/catupgrd.sql

SQL>spool off

 

第七:重编译失效对象

SQL>shutdown immediate

SQL>startup

SQL>@?/rdbms/admin/utlrp.sql

 

第八:检查升级版本,以及升级情况

SQL>select comp_name,version,status from sys.dba_registry;

 

SQL>select * from UTL_RECOMP_ERRORS;

 

第九:检查完毕,重启实例

SQL>shutdown immediate

SQL>startup

 

第十:如果升级失败,可以尝试回退机制

SQL>startup downgrade

SQL>spool downgrade.log

SQL>@catdwgrd.sql (10.2.10运行的是这个,而10.1降级用的是d92000.sql,即dold_release.sql)

SQL>spool off

SQL>shutdown immediate