最近在测试环境做了一个数据库的升级,将相关操作步骤简要记录如下:
1.将10.2.0.1升级到10.2.0.4
1.1更新oracle TimeZone版本
1.1.1查询源库TimeZone版本
SQL> select * from v$timezone_file;
FILENAME VERSION
------------ ----------
timezlrg.dat 2
1.1.2检查是否存储含有TZ的用户数据
select c.owner || '.' || c.table_name || '(' || c.column_name || ') -' || c.data_type || ' ' col
from dba_tab_cols c, dba_objects o
where c.data_type like '%TIME ZONE'
and c.owner=o.owner
and c.table_name = o.object_name
and o.object_type = 'TABLE'
order by col
/
查询结果的owner如果只包含sys和WMSYS则表示不包含用户的TZ数据
查询是否含有非标准的scheduler_job
SQL> SELECT object_name FROM dba_objects WHERE object_id IN (SELECT obj# FROM scheduler$_window);
OBJECT_NAME
-----------------------------
WEEKNIGHT_WINDOW
WEEKEND_WINDOW
SQL> SELECT object_name FROM dba_objects WHERE object_id IN (SELECT obj# FROM scheduler$_job);
OBJECT_NAME
-----------------------------
PURGE_LOG
FGR$AUTOPURGE_JOB
GATHER_STATS_JOB
AUTO_SPACE_ADVISOR_JOB
RLM$EVTCLEANUP
RLM$SCHDNEGACTION
查询结果中包含有以上结果之外的话表示含有非标准的scheduler_job,即用户自定义scheduler_job
除了数据库中既不包含TZ的用户数据又没有自定义的scheduler_job外,其余任何情况都需要校验哪些数据受时区影响
1.1.3查询受时区影响的数据
1.1.3.1下载utltzpv4.sql脚本
1.1.3.2运行utltzpv4.sql脚本
1.1.3.3查询运行结果
SQL> select * from sys.sys_tzuv2_temptab;
no rows selected
如果无结果返回则表示时区更新操作可以忽略,如果有返回数据则可以调用以下相应脚本解决!
prepare_tzuv.sql:自动创建备份表
restore_tzuv.sql:更新完时区文件后可以使用该脚本还原原始数据
clean_tzuv.sql: 确认数据正确恢复后可以使用该脚本删除备份表
1.2停止oracle所有相关进程
emctl stop dbconsole
isqlplusctl stop
lsnrctl stop
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE
1.3备份系统
Oracle Inventory
Oracle 10g home
1.4安装10.2.0.4 Patchset(覆盖安装)
./runInstaller
1.5更新Oracle database 10.2.0.1 to 10.2.0.4(可以使用dbua或者手动更新,这里我选择手动更新)
1.5.1运行更新前信息工具
SQL> STARTUP UPGRADE
SQL> SPOOL upgrade_info.log
SQL> @?/rdbms/admin/utlu102i.sql
SQL> SPOOL OFF
检查upgrade_info.log日志信息,将相关警告及错误一一解决
1.5.2更新数据库
lsnrctl start
sqlplus / as sysdba
SQL> STARTUP UPGRADE
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> SPOOL OFF
检查patch.log日志信息,将相关警告及错误一一解决
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
SQL> @?/rdbms/admin/utlrp.sql
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
如果以上输出的status都为valid则表示升级成功
2.将10.2.0.4升级到11.2.0.3
2.1安装11.2.0.3的PATCHSET(安装在新的ORACLE_HOME下)
2.2升级前的预检查
sqlplus / as sysdba
SQL> SPOOL upgrade_info.log
SQL> @$11g_ORACLE_HOME/rdbms/admin/utlu112i.sql
SQL> SPOOL OFF
检查upgrade_info.log日志信息,将相关警告及错误一一解决
2.3手动升级数据库
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP UPGRADE
SQL> SPOOL upgrade.log
SQL> @catupgrd.sql
SQL> STARTUP
SQL> @utlu112s.sql
SQL> @catuppst.sql
SQL> @utlrp.sql
SQL> SELECT count(*) FROM dba_invalid_objects;
SQL> SELECT distinct object_name FROM dba_invalid_objects;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20801486/viewspace-1062624/,如需转载,请注明出处,否则将追究法律责任。