本文转自ML的Blog:
http://www.oracledatabase12g.com/archives/oracle%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8D%87%E7%BA%A7%E5%89%8D%E5%BF%85%E8%A6%81%E7%9A%84%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C.html
Oracle数据库升级向来是一门纷繁复杂的工程,DBA需要为产品数据库的升级耗费大量时间精力在准备工作上;因为其升级复杂度高,所以即便做了较为充分的准备仍可能在升级过程中遇到意想不到的问题,为了更高效地完成升级任务和减少停机时间,我们有必要为升级工作营造一种”舒适的”防御式的数据库”氛围”:
1.为了保障升级后的数据库性能,我们有必要在升级前有效地收集数据库的性能统计信息,以便升级后若发生性能问题可以做出对比:
(1)为了保证性能统计信息真实有效,有必要在数据库升级前的一个月即开展收集工作
(2)收集的性能统计信息应当尽可能的精确真实
(3)在Oracle 8i/9i中使用Statspack性能报表,将快照级别设置为6或更高,设置快照间隔为30分钟,在具体升级前将perfstat用户使用exp工具导出,参考Metalink文档Note:466350.1介绍了若何对比升级前后的Statspack快照
(4)在Oracle 10g/11g中使用AWR自动负载仓库性能报告,保证采集30天左右的快照,快照间隔最好为30-60分钟;之后可以使用dbms_swrf_internal.awr_extract存储过程将AWR导出到dumpfile文件,在升级完成后载入这部分AWR信息,并可以使用DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTML函数对比升级前后的性能
2.正式升级前的防御性措施:
(1)过多的审计信息可能会导致升级速度下降,可以在升级前将审计数据导出,并清理审计字典基表:
截断SYS.AUD$基表:
SQL>TRUNCATETABLE SYS.AUD$;
Oracle 11g 的审计,更多内容参考:
Oracle11g 默认审计选项 说明
http://blog.csdn.net/tianlesoftware/article/details/6707887
(2)同样的有必要清理10g后出现的回收站:
清理DBA回收站:
SQL>purge DBA_RECYCLEBIN;
(3)移除一些”过期”的参数,设置这些参数的原因很有可能是为了修正原版本上的一些问题,例如我们都会做的设置event参数;但在新版本中这些参数是否仍有必要设置是一个值得讨论的问题,当然你完全可以就此事去提交一个SR:
这些"过期"参数可能包括:过老的如optimizer_features_enable=8.1.7.4,_always_semi_join=off,_unnest_subquery=false
或者event ="10061 trace name context forever, level 10",如此之类等等。
有关参数是否过时,可以从V$OBSOLETE_PARAMETER视图查看。
更多内容参考:
Oracle 参数分类 和 参数的查看方法
http://blog.csdn.net/tianlesoftware/article/details/5583655
(4)为数据库中的数据字典收集统计信息:
在Oracle 9i中可以执行以下过程收集数据字典统计信息,
SQL> exec DBMS_STATS.GATHER_SCHEMA_STATS
('SYS', options => 'GATHER',estimate_percent =>
DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR
ALL COLUMNS SIZE AUTO', cascade => TRUE);
在Oracle10g/11g中收集字典统计信息可以由GATHER_DICTIONARY_STATS存储过程来完成:
SQL> execDBMS_STATS.GATHER_DICTIONARY_STATS;
这个脚本在Oracle11g升级前的检查脚本(utlu112i.sql)中也会推荐我们执行。
(5)为策万全,我们有必要为回退数据库升级任务做好准备,10g以前只能通过备份恢复来完成,10g以后我们可以利用闪回数据库的还原点特性来回退数据库,但需要注意以下几点:
(1)利用还原点要求数据库处于归档且打开flashback database的模式下
(2)在特性仅在版本10.2之后可用
(3)必须保证闪回回复区flashback recovery area有足够的磁盘空间
(4)注意在升级后不要立即修改compatible参数,restore point无法跨越compatible工作
有关FlashbackRestore Points的更多说明和示例,参考我的Blog:
OracleFlashback Database and Restore Points 说明
http://blog.csdn.net/tianlesoftware/article/details/6917546
(6)下载最新版本的预升级检查脚本(pre-upgrade checkscript),如utlu102i.sql/ utlu111i.sql / utlu112i.sql;Metalink文档Note:884522.1<Howto Download and Run Oracle’s Database Pre-Upgrade Utility> 指出了各版本utluxxx脚本的下载地址
在11g中自带了这个脚本,不需要下载。
/* 将升级信息spool到日志文件中 */
SQL> SPOOL /tmp/UPGRADE/utlu112i.log
SQL> @/tmp/UPGRADE/utlu112i.sql
这2个脚本的具体使用示例,可以参考:
Oracle 使用RMAN 将 DB 从10g 直接Restore 到11g 示例
http://blog.csdn.net/tianlesoftware/article/details/7311352
Oracle11.2.0.1 升级到11.2.0.3 示例
http://blog.csdn.net/tianlesoftware/article/details/6833591
(7)需要关注SYS和SYSTEM用户模式下的失效对象,有必要在升级前修复所有的失效对象:
SELECT UNIQUE object_name, object_type,owner
FROM dba_objects
WHERE status = 'INVALID';
(8) 在升级完成后推荐执行utlrp.sql脚本以重新编译(Recompile)对象,从11.1.0.7开始升级前后的失效对象将自动对比,执行?/rdbms/admin/utluiobj.sql脚本可以列出对比信息,同时基表registry$sys_inv_objs和registry$nonsys_inv_objs分别列出了数据库中失效的sys或非sys对象:
SQL> @?/rdbms/admin/utluiobj.sql
.
Oracle Database 11.1 Post-Upgrade InvalidObjects Tool 03-05-2012 16:52:29
.
This tool lists post-upgrade invalidobjects that were not invalid
prior to upgrade (it ignores pre-existingpre-upgrade invalid objects).
.
Owner Object Name Object Type
.
SYS DBMS_CUBE_EXP PACKAGE BODY
SYSDBMS_NETWORK_ACL_ADMINPACKAGE BODY
SYSDBMS_XS_PRINCIPAL_EVENTS_INT PACKAGE BODY
SYS KUPW$WORKER PACKAGE BODY
SYS XS$CATVIEW_UTIL PACKAGE BODY
PL/SQL procedure successfully completed.
3.解决升级过程中失效的组件(component)
(1)确保该部分组件确实被link到目前的Oracle软件2进制可执行文件或库文件中
(2)如果确认不会用到某些组件(component),想要通过手动彻底移除这部分组件(亦或者希望reinstall重新安装这部分组件),那么可以参考以下文档:
Note:472937.1 Information On InstalledDatabase Components/Schemas
Note.300056.1 Debug and Validate InvalidObjects
Note:753041.1 How to diagnose Componentswith NON VALID status
Note.733667.1 How to Determine if XDB isBeing Used in the Database?
组件升级失败实例1:
数据库从10.2升级到11.2,在10g的环境中Database Vault组件已经安装,Database Vault组件在升级relink前被turned off,在升级到11.2的过程中XDB组件升级失败;其原因在于安装或切换Database Vault将使得XDB组件失效,或者由Bug 8942758引起。
解决方案:在升级前执行utlrp.sql脚本重新编译失效对象和组件,在此例中执行utlrp.sql可以使XDB组件valid.
组件升级失败实例2:
数据库从10.2.0.4升级到11.1.0.7,在升级过程中"ORACLE SERVER"组件失效;其原因在于DMBS_SQLPA包引用了某个不存在的列,该问题可以参考metalink文档782735.1和Notes:605317.1/736353.1。
有效的解决方案是:
(1).在升级前将SYS.PLAN_TABLE$基表或者同义词PUBLIC.PLAN_TABLE DROP掉
(2).若已执行了升级操作并遭遇了该问题,那么可以使用以下手段修复该问题:
@catplan.sql -- recreate the plan table
@dbmsxpln.sql -- reload dbms_xplan spec
@prvtxpln.plb -- reload dbms_xplanimplementation
@prvtspao.plb -- reload dbms_sqlpa
alter package SYS.DBMS_SUMADVISOR compile ;
alter package SYS.DBMS_SUMADVISOR compilebody;
更多有关组件中间的问题,参考:
Oracle 组件 系列 小结
http://blog.csdn.net/tianlesoftware/article/details/7339998
Oracle8i/9i/10g/11g 组件(Components) 说明
http://blog.csdn.net/tianlesoftware/article/details/5937382
4. 使用例如AIX上的slibclean等命令清理操作系统环境,在少数专有平台上不清理载入的共享库文件可能导致升级失败
5.在执行catupgrd.sql脚本正式升级前打开sqlplus的echo输出,将升级过程中所有的输出信息转储到日志文件中:
SQL> set echo on
--默认为off,设为on 会显示执行的sql语句,而不仅仅是结果。
SQL> SPOOL /tmp/upgrade.log
SQL> @catupgrd.sql
SQL> spool off
DBUA图形化升级工具默认使用spool和”echo”输出,这些日志可以在$ORACLE_HOME/cfgtoollogs/dbua//upgrade/目录下找到。
-------------------------------------------------------------------------------------------------------
Skype: tianlesoftware
Email: tianlesoftware@gmail.com
Blog: http://www.tianlesoftware.com
Weibo: http://weibo.com/tianlesoftware
Twitter: http://twitter.com/tianlesoftware
Facebook: http://www.facebook.com/tianlesoftware
Linkedin: http://cn.linkedin.com/in/tianlesoftware
-------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----
DBA1 群:62697716(满); DBA2 群:62697977(满)DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群:83829929 DBA5群: 142216823
DBA6 群:158654907 DBA7 群:172855474 DBA总群:104207940
分享到:
相关推荐
ORACLE数据库升级的必要性 ORACLE数据库是医院信息系统中最常用的关系型数据库管理系统。然而,早期版本的ORACLE数据库已经不再获得技术支持,这使得医院信息系统中的数据库升级变得非常必要。ORACLE数据库升级可以...
### ORACLE数据库迁移方案知识点详解 #### 一、概述 ...通过以上详尽的步骤和注意事项,可以为Oracle数据库从单机迁移到RAC提供一个完整的参考框架,帮助企业顺利完成迁移工作,提高业务连续性和性能水平。
"海东供电公司ORACLE数据库升级方法的研究与实现" 本文主要研究了海东供电公司ORACLE数据库升级方法的研究与实现。随着信息应用系统的不断增长和数据量的增加,数据库需要更高的可伸缩性和功能。但是,低版本的...
### Oracle数据库性能分析 #### 一、Oracle体系结构 Oracle数据库是一个复杂且功能强大的关系型数据库管理系统(RDBMS),其核心组件包括实例和数据库文件。理解Oracle的体系结构对于优化性能至关重要。 - **实例**...
总之,Oracle数据库升级和迁移是一项复杂的工作,需要全面评估和规划。了解和掌握各种升级方法的特点,结合实际情况制定方案,是确保升级过程顺利、减少停机时间、降低风险的关键。同时,升级前的充分测试和备份策略...
"oracle数据库升级迁移实施方案" Oracle数据库升级迁移实施方案是指将现有的Oracle数据库系统升级到新的版本,以提高数据库性能、安全性和可扩展性。本方案主要涵盖了数据库系统和网络存储系统工程的数据库迁移...
使用场景及目标:适用于数据库管理员(DBAs)希望通过DBUA工具将现有的Oracle 11g数据库安全迁移至Oracle 19C的维护工作场合,从而提升性能和安全性,以及符合未来软件架构的发展趋势。 其他说明:文中提到的每一步...
Oracle数据库是世界上最广泛使用的数据库系统之一,从Oracle 8到Oracle 10g的升级是一个重要的里程碑,因为Oracle 10g引入了许多新特性和性能优化。以下将详细阐述这个升级过程中涉及的关键知识点: 1. **版本兼容...
【Oracle数据库升级迁移实施参考方案】 本方案旨在提供一套详细的Oracle数据库升级迁移实施步骤,确保在升级过程中数据的安全性、完整性和系统的稳定性。Oracle数据库作为全球广泛使用的大型关系型数据库管理系统,...
【医院信息系统ORACLE数据库升级的实现】 在医院信息化进程中,数据库是医院信息系统的核心,它直接影响着系统的稳定性和运行效率。随着医院信息化建设的发展,信息系统的规模不断扩大,数据库服务器的负荷日益增加...
在IT领域,虚拟化技术已经成为了企业IT基础设施的重要组成部分,VMware作为领先的虚拟化平台,被广泛用于各种应用和服务的部署,包括Oracle数据库系统。Oracle数据库是全球最受欢迎的关系型数据库管理系统之一,它...
总结来说,Oracle数据库的小版本升级涉及多个步骤,包括环境准备、软件安装、实例升级、错误排查和验证。每个环节都需要细心操作,以确保升级过程的顺利和系统的稳定性。在实际操作中,遵循最佳实践和Oracle官方文档...
### Linux下安装Oracle数据库知识点详解 #### 一、准备工作 **1. 创建用户和组** 在Linux环境下安装Oracle数据库的第一步是创建Oracle专用的用户和组。这些用户和组将用于运行Oracle数据库服务,确保其拥有正确的...
文章首先阐述了数据库升级的必要性,以满足图书馆自动化系统发展的需要。文中提到,原有的Oracle 8.0.5版本在新系统软件更新后无法充分发挥其性能,因此选择将数据库升级到Oracle 10g,这是一个支持Unicode的版本,...
最后,为了更好地在Oracle数据库领域发展,除了上述的技术能力之外,良好的英语水平也是必要的,因为Oracle的技术文档、社区讨论以及最新的产品信息大多是用英语呈现的。同时,应该积极参与专业社区和技术论坛,与...
在Linux系统上安装Oracle数据库是一项复杂且细致的工作,涉及到多个步骤和依赖项。RPM(Red Hat Package Manager)包是Linux环境下广泛使用的软件管理工具,它可以帮助我们方便地安装、升级和管理软件。在安装Oracle...
4. 定期检查和更新bat文件,以适应Oracle数据库版本的升级或安装位置的变化。 以上就是创建和使用Oracle数据库启动与停止bat文件的方法。这种方法不仅提高了操作效率,还减少了人为错误的可能性,尤其适用于需要...
在Linux环境下安装Oracle数据库是一个复杂的过程,涉及到多个RPM(Red Hat Package Manager)包的配置与安装。Oracle数据库是一款强大的关系型数据库管理系统,被广泛应用于企业和组织的数据存储和管理。以下将详细...