单节点升级:
第一:确保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_size和java_pool_size至少为150M大小,保证catupgrd.sql(10g)升级脚本运行正常(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
转载于:https://blog.51cto.com/yeluyide/1128492