- oracle.com · 升级到Oracle 数据库11g 第2 ... •识别RAC —包括所有 ... Solaris...

Preview:

Citation preview

<Insert Picture Here>

升级到 Oracle 数据库 11g 第 2 版 — 诀窍和方法

2010 Oracle Corporation 2

以下内容旨在概述产品的总体发展方向。此信息仅供参考,不可纳入任何合同。此信息不承诺提供任何资料、代码或功能,并且不应作为制定购买决策的依据。此处所述有关 Oracle 产品的任何特性或功能的开发、发布以及相应的日程安排均由 Oracle 自行决定。

2010 Oracle Corporation 3

准备

议题

最佳实践

升级总结

外部参考

2010 Oracle Corporation 4

t2008

2003

2004

2005

2006

2007

2002

2009

2010

现在

Oracle数据库生命周期支持政策

20

11

2012

2013

2014

延伸支持

标准服务

R22007 年 7 月

扩展支持2010 年 7 月

2009 年 1 月 2012 年 1 月

R2 2010 年 7 月 2013 年 7 月

2015

2016

2012 年 8 月 2015 年 8 月

2008 年 7 月

2011 年 7 月

R2

2017

2018

2015 年 1 月 2018 年 1 月

2010 Oracle Corporation 5

生命周期支持政策特性 基本服务 扩展支持 延伸支持

Major Product and Technology Releases

Technical Support

Access to Knowledge Base

(MetaLink/Customer Connection/SupportWeb)

Updates, Fixes, Security Alerts and Critical Patch

Updates Pre-existing Only

Tax, Legal and Regulatory Updates No

Upgrade Scripts No

Certification with existing Third Party

Products/Versions No

Certification with New Third Party

Products/Versions No No

Certification with new Oracle Products No

2010 Oracle Corporation 6

升级到 Oracle Database 11g

R2

R2

10.2.0.2

10.1.0.5

R2

7.3.4

8.0.6

8.1.7.4

9.0.1.4

9.2.0.8

9.2.0.4

“空”箭头表示:不需要特定的补丁版本

2010 Oracle Corporation 7

检查所用的平台是否有Oracle 认证

• 有关产品和产品组任务的说明,请参见说明:964664.1

2010 Oracle Corporation 8

Oracle 认证

2010 Oracle Corporation 9

升级更简单!

• 升级到 Oracle Database 11g 比升级到先前的 Oracle

版本更简单

• 升级指南大小:• 8.1.7 - 512 页

• 9.0.1 - 484 页 — 一个包含 9 个组件的 RDBMS 只需 111 步

• 9.2.0 - 344 页

• 10.1.0 - 170 页

• 10.2.0 - 140页

• 11.1.0 - 186 页

• 11.2.0 - 178 页

2010 Oracle Corporation 10

常见问题解答

• 升级需要多长时间?

2010 Oracle Corporation 11

升级所需时间

• 完成升级需要多长时间?

• 不取决于:• 数据库大小

• 使用的数据类型

• 主要取决于:

• 安装的组件和选件的数量

• 有效且不过时的数据字典统计信息

• 同义词数量 — 将重新编译同义词(从 9i 升级)

• XDB 中的对象数量

• 如果修改 COMPATIBLE参数,则以下因素对升级所需时间的影响很小:

• 数据文件数量

• 重做日志大小

2010 Oracle Corporation 12

示例:数据库升级所需时间

• 通常在 30 到 90 分钟之间• 主要取决于安装的选件和组件

• *实际时间可能有所不同„„

Component HH:MM:SS

Oracle Server 00:16:17

JServer JAVA Virtual Machine 00:05:19

Oracle Workspace Manager 00:01:01

Oracle Enterprise Manager 00:10:13

Oracle XDK 00:00:48

Oracle Text 00:00:58

Oracle XML Database 00:04:09

Oracle Database Java Packages 00:00:33

Oracle Multimedia 00:07:43

Oracle Expression Filter 00:00:18

Oracle Rule Manager 00:00:12

Gathering Statistics 00:04:53

Total Upgrade Time: 00:52:31

Component HH:MM:SS

Oracle Server 00:16:17

JServer JAVA Virtual Machine 00:05:19

Oracle XDK 00:00:48

Oracle Text 00:00:58

Oracle XML Database 00:04:09

Oracle Database Java Packages 00:00:33

Gathering Statistics 00:02:43

Total Upgrade Time: 00:30:47

2010 Oracle Corporation 13

不同的升级方法

位于相同操作系统上?否 是

升级导出/导入

CTAS、COPY

可传输表空间

可传输数据库

Oracle Streams

DBUA

停机时间 > 30 分钟?

SQL Apply

CLI

SQL> @catupgrd

Oracle Golden Gate

2010 Oracle Corporation 14

何时选择命令行

• 可以接受 30-90 分钟的平均停机时间

• 与 GUI 相比,更偏爱手动命令行界面的用户

• 如果要升级到 11g,现有数据库至少为 9.2.0.4;如果要升级到 11g R2,现有数据库至少为 9.2.0.8

• 迁移到一个使用相同操作系统的新硬件平台

• 考虑事项• 无法升级到一个使用不同操作系统体系结构的系统

• 需要更多手动步骤

• 更易出现输入错误、漏掉详细信息

2010 Oracle Corporation 15

命令行升级

• 步骤:1. 完成数据库的联机备份

2. 安装 11g Oracle 软件并应用补丁集、PSU 等

3. 使用 utlu112i.sql分析数据库并按照脚本给出的所有要求进行操作

4. 使用 NETCA 创建新的 11g 监听器

5. 切换到新环境,启动数据库 (startup upgrade) 并创建 SYSAUX 表空间

(仅当源数据库是 Oracle 9i 数据库时)

6. 运行升级脚本 catupgrd.sql

7. 使用 utlrp.sql 重编译 — 使用 utluiobj.sql进行比较

8. 如果从 10g 及之后的版本进行升级,运行 catuppst.sql

9. 检查升级后的状态:utlu112s.sql

2010 Oracle Corporation 16

命令行升级

• 升级信息脚本:utlu112i.sql• 在源数据库环境中运行

• 检查所有 init 参数,并对过期的、不适当的参数显示警告

• 检查

• 组件

• 表空间 SYSAUX

• 国家字符集

• 时区文件版本检查

• 集群检查

Info

2010 Oracle Corporation 17

SQL> STARTUP UPGRADE;

• 忽略不必要的错误消息,如ORA-00942:table or view does not exist -

这样日志文件更易于阅读和检查

升级模式

摘自一个 alert.log 示例

ALTER SYSTEM SET _system_trig_enabled=FALSE SCOPE=MEMORY;

Autotune of undo retention is turned off.

ALTER SYSTEM SET _undo_autotune=FALSE SCOPE=MEMORY;

ALTER SYSTEM SET undo_retention=900 SCOPE=MEMORY;

ALTER SYSTEM SET aq_tm_processes=0 SCOPE=MEMORY;

ALTER SYSTEM SET enable_ddl_logging=FALSE SCOPE=MEMORY;

Resource Manager disabled during database migration: plan '' not set

ALTER SYSTEM SET resource_manager_plan='' SCOPE=MEMORY;

ALTER SYSTEM SET recyclebin=‘OFF’ DEFERRED SCOPE=MEMORY;

Resource Manager disabled during database migration

2010 Oracle Corporation 18

何时选择 DBUA

• 可以接受 30-90 分钟的平均停机时间

• 操作系统相同

• 与手动命令行界面相比,更偏爱 GUI的用户• 自动执行有用的升级前检查

• 出错概率降低/手动工作量减少

• 如果要升级到 11g,现有数据库至少为 9.2.0.4;如果要升级到 11g R2,现有数据库至少为 9.2.0.8

• 注意:对 RAC 和 ASM 安装尤为有用

• 考虑事项:• 源和目标 Oracle 主目录必须位于相同的系统上

• 如果升级过程中发生错误,将无法重新运行

2010 Oracle Corporation 19

Database Upgrade Assistant (GUI)

• 特性:• 图形化导引式升级

• 大量重要检查

• 识别 RAC — 包括所有节点• 对于 RAC(几乎)是必需的!!!

• 可以实现脱机备份和恢复

• ASM 升级(直至 11.1)

• Oracle XE 升级

• 补丁升级

• 最佳实践:启动 DBUA 之前

• 在当前环境中运行 $OH_11g/rdbms/admin/utlu112i.sql

• 日志:• $ORACLE_HOME/cfgtoollogs/dbua

• 详情请参阅 Oracle® Database Upgrade Guide 的第 3 章

2010 Oracle Corporation 20

Database Upgrade Assistant (GUI)

2010 Oracle Corporation 21

Database Upgrade Assistant (GUI)

2010 Oracle Corporation 22

Database Upgrade Assistant (GUI)

2010 Oracle Corporation 23

Database Upgrade Assistant (GUI)

2010 Oracle Corporation 24

准备

议题

最佳实践

升级总结

外部参考

2010 Oracle Corporation 25

最佳实践

• 阅读文档

2010 Oracle Corporation 26

文档

• 说明:601807.1 Upgrade Companion 11g

• 说明:785351.1 Upgrade Companion 11g 第 2 版

2010 Oracle Corporation 27

文档

• 说明:785351.1 Upgrade Companion 11g

2010 Oracle Corporation 28

文档

• 说明:785351.1 Upgrade Companion 11g

2010 Oracle Corporation 29

文档

• 升级指南•

+

http://download.oracle.com/docs/cd/B28359_01/server.111/b28300/toc.htm

http://download.oracle.com/docs/cd/E11882_01/server.112/e10819/toc.htm

• 说明:429825.1手动升级到 11g 的完整清单

• 说明:837570.1手动升级到 11g 第 2 版的完整清单

• 说明:421191.1手动从 X 升级到 Y 的完整清单

2010 Oracle Corporation 30

OTN 中关于升级的页面

• http://www.oracle.com/technology/global/cn/products/database/oracle11g/upgrade/index.html

2010 Oracle Corporation 31

OTN 的升级页面

• 或者只需要 ...

2010 Oracle Corporation 32

OTN 的升级页面

• http://www.oracle.com/technology/products/database/oracle11g/upgrade/index.html

2010 Oracle Corporation 33

OTN 升级论坛

• http://forums.oracle.com/forums/forum.jspa?forumID=583&start=0

2010 Oracle Corporation 34

升级博客:blogs.oracle.com/UPGRADE

2010 Oracle Corporation 35

最佳实践

• 升级之前,为新的 $ORACLE_HOME 打补丁

2010 Oracle Corporation 36

补丁集安装

• 开始升级之前,为您的“新”$OH 安装补丁集和补丁

2010 Oracle Corporation 37

推荐的补丁

2010 Oracle Corporation 38

推荐的补丁

2010 Oracle Corporation 39

推荐的补丁

2010 Oracle Corporation 40

补丁集更新 (PSU) 安装

• 安装 PSU

• 说明:854428.1:数据库补丁集更新简介

• 数据库 PSU 包括:• 针对可能影响大量客户以及实践中已经证明的关键问题的修复

• 重要补丁更新 (CPU) 修复

• 数据库 PSU 不包括:• 需要重新认证的更改

• 需要更改配置的修复

• 通常包括 50-100 个新的错误修复 — 累积式

• 保证 RAC 可以滚动安装

• 更改 11.2.0.1.1 及之后的版本号的第五位

• 每年发布 4 次,例如,CPU 一年四次定期发布• 平台:

Solaris SPARC64、Linux x86 和 x86-64、HP-UX PA-RISC、HP Itanium、IBM AIX

2010 Oracle Corporation 41

• 说明 161818.1

Oracle各个版本的状态信息

2010 Oracle Corporation 42

• 说明:454507.1Oracle 11g 第 1 版 (11.1.0.X) 的支持状态和警报

升级信息/警报

2010 Oracle Corporation 43

• 说明 738538.1 特定于 11.1.0.7 补丁集的已知问题

升级信息/警报

2010 Oracle Corporation 44

• 说明 738538.1 特定于 11.1.0.7 补丁集的已知问题

升级信息/警报

2010 Oracle Corporation 45

建议的操作系统补丁

• 说明 169706.1: 操作系统安装和配置

• 说明:401705.1 Linux x86、x86-64 和 s390x 系统要求参考表

2010 Oracle Corporation 46

最佳实践

• 保留性能统计信息

2010 Oracle Corporation 47

性能统计信息

• 保留性能统计信息• 获取准确的性能统计信息

• 比较:前 后

• 特定于时间的查询和批处理

• 测试数据库升级

• 功能测试

• 实际负载的性能测试!!!

• Real Application Testing

• SQL Performance Analyzer

• 数据库重放

2010 Oracle Corporation 48

性能统计信息

• 升级之前获取尽可能多的性能信息,这至关重要

• 尽可能多意味着:至少从升级前 4 周开始

• 收集准确的性能统计信息

• 在 Oracle 8i/9i 中:

• 使用 STATSPACK

• 升级之前导出 PERFSTAT 用户权限

• 说明:466350.1 升级前/后使用 STATSPACK

• 在 Oracle 10g/11g 中:

• 使用 AWR

• 每隔 30-60 分钟进行一次快照 — 保留:>30 天

• 使用 DBMS_SWRF_INTERNAL.AWR_EXTRACT 导出 AWR

• 使用 ADR DIFF 报告比较升级前后的性能:DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTML

2010 Oracle Corporation 49

最佳实践

• 清理操作:重要检查

2010 Oracle Corporation 50

无效对象

• 始终检查 INVALID 对象:

• SYS 和 SYSTEM 用户模式中不应存在无效对象• 使用 utlrp.sql 重新编译无效对象

• 比较升级前后的无效对象

• 从 11.1.0.7 开始,自动进行比较

• 在 registry$sys_inv_objs 和 registry$nonsys_inv_objs 中查找

无效对象

• 比较升级前后:utluiobj.sql

SQL> SELECT UNIQUE object_name, object_type, owner

FROM dba_objects WHERE status='INVALID';

2010 Oracle Corporation 51

回收站

• 如果从 10g 或 11g 升级,升级前需要清空回收站。

SQL> purge DBA_RECYCLEBIN;

2010 Oracle Corporation 52

最佳实践

• 如何处理时区更改

2010 Oracle Corporation 53

• 摘自 Oracle 内部信息电子邮件:

时区补丁

2010 Oracle Corporation 54

• 为什么选择 DST 时区补丁?(DST:夏令时)

• 自 2007 年起,DST 定义和时区名称已多次更改• 按版本排列的时区版本:

• Oracle 9i: TZ V1

• Oracle 10.1: TZ V2

• Oracle 10.2.0.1/2: TZ V2

• Oracle 10.2.0.3: TZ V3

• Oracle 10.2.0.4: TZ V4

• Oracle 11.1: TZ V4

• 源版本要求 TZ V4,否则无法进行任何升级• Oracle 11.2: TZ V11

• 源版本不需要打补丁。11.2 中将进行时区转换

时区补丁

2010 Oracle Corporation 55

时区补丁 — 11g 第 2 版

• 升级到 Oracle Database 11g 第 2 版:• 新的 11.2-$OH 具有时区 V11

• 无需对源 $OH 打补丁

• 仅当您使用TIMESTAMP WITH TIMEZONE 数据类型时,才需要调整数据库

• 升级之后进行转换

• 请参见说明 944122.1

• 程序包 DBMS_DST

• DBMS_DST.FIND_AFFECTED_TABLES

• DBMS_DST.BEGIN_UPGRADE

• DBMS_DST.UPGRADE_DATABASE

• DBMS_DST.END_UPGRADE

R2

2010 Oracle Corporation 56

最佳实践

• 始终运行升级前脚本:

• 升级到 Oracle Database 11g:utlu111i.sql

• 升级到 Oracle Database 11.2:utlu112i.sql

2010 Oracle Corporation 57

升级前检查

• 在当前环境中运行 utlu112i.sql

Oracle Database 11.2 Pre-Upgrade Information Tool 09-21-2009 22:33:20

********************************************************************** Database: ********************************************************************** --> name: ORCL --> version: 10.2.0.3.0 --> compatible: 10.2.0.3.0 --> blocksize: 8192 --> platform: Linux IA (32-bit) --> timezone file: V4

[..]

********************************************************************** Update Parameters: [Update Oracle Database 11.2 init.ora or spfile] ********************************************************************** WARNING: --> "java_pool_size" needs to be increased to at least 64 MB

[..]

********************************************************************** Miscellaneous Warnings ********************************************************************** WARNING: --> Database is using a timezone file older than version 11. .... After the release migration, it is recommended that DBMS_DST package .... be used to upgrade the 10.2.0.3.0 database timezone version .... to the latest version which comes with the new release.

2010 Oracle Corporation 58

升级前检查

• 使用 utlu1nmi.sql 获取当前版本

• 下载该脚本

• 说明:884522.1

2010 Oracle Corporation 59

最佳实践

• 更改到 11.1 或 11.2 之前,保留COMPATIBLE 为原始值一周(万一需要降级的话)。

2010 Oracle Corporation 60

参数 COMPATIBLE

• COMPATIBLE 在 11g 数据库中至少必须为 10.1.0

• 一旦为 11.1.0 及之后的版本,则无法返回• 支持的版本降级至 10.1.0.5, 10.2.0.2, 11.1.0.6

• 不再有 ALTER DATABASE RESET COMPATIBILITY 命令

COMPATIBLE = 10.0/1/2.0

COMPATIBLE = 11.0.0

2010 Oracle Corporation 61

参数 COMPATIBLE

• DBUA 仅针对 9i 数据库增加 COMPATIBLE

• 升级后启用新特性:• 11.1:

• 11.2 :

• 然后:重新启动数据库

• 将启用新特性

• 将调整数据文件头

• 将在首次访问期间调整重做日志文件

SQL> alter system

set compatible='11.1.0' scope=spfile;

SQL> alter system

set compatible='11.2.0' scope=spfile;

2010 Oracle Corporation 62

最佳实践

• 您有回退策略吗? ...

2010 Oracle Corporation 63

回退策略

• 在任何情况下:进行备份!!!

• 然后决定:• 如果发生了意外情况导致您不得不后退,是否允许丢失数据?

(也就是说,升级后对系统中的数据进行更改):

是或否?

• 如果是:恢复一个备份,闪回(从 10g)• 如果否:导出/导入,降级

2010 Oracle Corporation 64

回退策略:catdwgrd.sql

• 通过 catdwgrd.sgl进行降级

• 说明:443890.1

• 降级到升级之前的版本

• 10.1.0.5

• 10.2.0.2/3/4

• 11.1.0.6/7

• 仅当未增加 COMPATIBLE 时才可能!!!• 请注意:

只能降级到升级之前的版本,如果已经应用了一个补丁集,则在升级开始之前始终应用该补丁集,否则,您只能降级到打补丁的版本

2010 Oracle Corporation 65

回退策略:catdwgrd.sql

• 通过 catdwgrd.sql 降级到 10g

• 11g 环境中的任务:

• 切换到您升级前的 10g 环境:

• 请注意:如果 EM 信息库位于数据库中,则需要更多步骤 — 请参阅 Oracle 11g Upgrade Guide 中的第 6 章 Downgrading a Database

SQL> SPOOL /tmp/downgrade.log

SQL> STARTUP DOWNGRADE

SQL> @catdwgrd.sql

SQL> SPOOL OFF

SQL> STARTUP UPGRADE

SQL> SPOOL /tmp/reload.log

SQL> @catrelod.sql-- The catrelod.sql script reloads the appropriate version of

-- all of the database components in the downgraded database.

SQL> SPOOL OFF

2010 Oracle Corporation 66

最佳实践

• 升级之后 „„

2010 Oracle Corporation 67

升级后

• 在负载稳定期间创建系统统计信息 — 否则,无法针对 CBO

使用适当的值:

SQL> select pname NAME, pval1 VALUE, pval2 INFO

from aux_stats$;

NAME VALUE INFO

-------------------- ---------- ------------------------------

STATUS COMPLETED

DSTART 04-03-2009 12:30

DSTOP 05-03-2009 12:30

FLAGS 1

CPUSPEEDNW 1392.39

IOSEEKTIM 8.405

IOTFRSPEED 255945.605

...

SQL> exec DBMS_STATS.GATHER_SYSTEM_STATS('start');

... -- some time delay while the database is under a typical workload execute

SQL> exec DBMS_STATS.GATHER_SYSTEM_STATS('stop');

2010 Oracle Corporation 68

升级后

• 示例:客户 OLTP 负载• 无系统统计信息的运行时间:2:19 小时

• 有系统统计信息的运行时间:2:07 小时

• 速度至少提高 9%

2010 Oracle Corporation 69

升级后

• 收集固定表统计信息• catupgrd.sql完成后立刻创建

• 这将加快 utlrp.sql重新编译的作业处理

• 再次:数据库负载稳定几天后

SQL> exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

2010 Oracle Corporation 70

升级所需时间

• 通过以下措施提高升级性能:• 截断审计表 SYS.AUD$

• 升级之前收集字典统计信息

• Oracle 9i:

• Oracle 10g/11g:

SQL> truncate SYS.AUD$;

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);

SQL> exec DBMS_STATS.GATHER_DICTIONARY_STATS;

2010 Oracle Corporation 71

准备

议题

最佳实践

升级总结

外部参考

2010 Oracle Corporation 72

86 个外部 11g 参考 (1/4)

2010 Oracle Corporation 73

86 个外部 11g 参考 (2/4)

2010 Oracle Corporation 74

86 个外部 11g 参考 (3/4)

2010 Oracle Corporation 75

86 个外部 11g 参考 (4/4)

2010 Oracle Corporation 76

准备

议题

最佳实践

升级总结

外部参考

2010 Oracle Corporation 77

升级总结

• 根据以下因素选择一种升级方法:• 数据库环境

• 可接受的停机时间长度

• DBA 对复杂程度的了解以及容忍程度

• 在可能的情况下,建议使用 DBUA,因为既简单又易于使用

• 始终通过 RMAN 创建一个联机备份

• 请记住:升级过程从未如此简单过,但您仍然必须进行测试!!!

• 11g R2 是一个稳定的数据库版本,赶快升级到该版本吧!

Recommended