Best Practices for Upgrades to Oracle Database 11g Release 2 CN

Report
<Insert Picture Here>
升级到 Oracle Database 11g R2 的最佳实践
议程
准备
最佳实践
升级总结
2010 Oracle Corporation
2
终生支持策略
现今
R2
January 2015
August 2015
August 2012
July 2010 July 2011
R2
January 2018
July 2013
January 2012
January 2009
持续支持
首要支持
扩展支持
July 2007 July 2008
R2
July 2010
t
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
2010 Oracle Corporation
3
升级到 Oracle Database 11g
 7.3.4
9.2.0.8
R2
 9.2.0.4
 8.0.6
R2
 8.1.7.4
10.1.0.5
 10.2.0.2
 9.0.1.4
R2
2010 Oracle Corporation
10.2.0.4可直接升级到11gR2
4
Oracle 产品认证
• 请参考Note:964664.1了解产品及产品类别划分
2010 Oracle Corporation
5
Oracle 产品认证
2010 Oracle Corporation
6
Oracle 产品认证
2010 Oracle Corporation
7
Oracle 产品认证
2010 Oracle Corporation
8
升级变得更容易!
• 升级到Oracle Database 11g 比起升级到之前的任何
Oracle版本都更为简单
• 升级向导手册页数:
•
•
•
•
•
•
•
8.1.7
9.0.1
9.2.0
10.1.0
10.2.0
11.1.0
11.2.0
- 512页
- 484页–
- 344页
- 170页
- 140页
- 186页
-178页
2010 Oracle Corporation
111 steps for an RDBMS with 9 components
9
经常问到的问题
• 升级需要多长时间?
2010 Oracle Corporation
10
升级所需时间
• 升级完成需要多长时间?
• 与下列因素无关:
• 数据库大小
• 使用的数据类型
• 与下列因素有关:
•
•
•
•
•
已安装的组件和选件
有效及非过期数据字典统计信息
同义词的数量– 它们会被重新编译 (从9i升级)
XDB中的对象数量
以一个非常低的比率,如果COMPATIBLE参数增加:
• 数据文件的数量
• 重做日志的大小
2010 Oracle Corporation
11
例子:升级所需时间*
• 通常介于30分钟到90分钟
• 主要取决于已安装的选件及组件
• *实际时间可能会有所不同……
Component
HH:MM:SS
Component
HH:MM:SS
Oracle Server
00:16:17
Oracle Server
00:16:17
JServer JAVA Virtual Machine
00:05:19
JServer JAVA Virtual Machine
00:05:19
Oracle Workspace Manager
00:01:01
Oracle XDK
00:00:48
Oracle Enterprise Manager
00:10:13
Oracle Text
00:00:58
Oracle XDK
00:00:48
Oracle XML Database
00:04:09
Oracle Text
00:00:58
Oracle Database Java Packages
00:00:33
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
Gathering Statistics
00:02:43
总共升级时间: 00:52:31
2010 Oracle Corporation
总共升级时间: 00:30:47
12
不同的升级方法
升级
导出/导入
N
位于相同的OS?
Y
CTAS, COPY
N
Logical Standy
Oracle Streams
Transportable Tablespaces
Transportable Database
Downtime > 30分钟?
Y
DBUA
CLI
SQL> @catupgrd
Oracle Golden Gate
2010 Oracle Corporation
13
什么时候选择DBUA
• 能够接受30~90分钟的平均停机时间
• 操作系统相同
• 比起命令行界面,更偏好使用GUI
• 自动进行升级前的检查工作
• 更低的出错可能性,更少的手工操作
• 如果是升级到11g,现有数据库版本应至少是9.2.0.4;如果
是升级到11g R2,现有数据库版本应至少是9.2.0.8
• 注意:对于RAC和ASM安装特别有用
• 需要考虑的方面:
• 源和目标Oracle Home必须在相同的系统上
• 如果在升级中遇到错误,则无法重新被运行
2010 Oracle Corporation
14
数据库升级助手DBUA (GUI)
• 特性:
• 图形界面引导的升级
• 许多重要的检查
• RAC aware – 包含所有的节点
• 对于RAC来说(几乎)是必须的!!!
•
•
•
•
•
离线备份和恢复成为可能
ASM升级(直到11.1版)
Oracle XE升级
补丁升级
最佳实践:在您启动DBUA之前
• 在您当前的环境中运行$OH_11g/rdbms/admin/utlu112i.sql
• 日志:
• $ORACLE_HOME/cfgtoollogs/dbua
• 在Oracle® Database升级向导第三章有所记载
2010 Oracle Corporation
15
数据库升级助手DBUA (静默升级)
• 静默安装模式:
$ dbua –help 显示了所有的可选参数项
See doc:
http://download.oracle.com/docs/cd/E11882_01/server.11
2/e10819/upgrade.htm#UPGRD12405
• 例子:
dbua -silent -sid dwh-oracleHome
/opt/oracle/product/RDBMS10g-diagnosticDest
/opt/oracle/diag-sysDBAUserName sys-sysDBAPassword
manager-recompile_invalid_objects truedegree_of_parallelism 4-emConfiguration LOCALdbsnmpPassword manager-sysmanPassword manager
2010 Oracle Corporation
16
数据库升级助手DBUA (最佳实践)
• 最佳实践:在开始启动 DBUA
• 运行 $OH_11g/rdbms/admin/utlu112i.sql
• 检查每个Component的状态
2010 Oracle Corporation
17
数据库升级助手DBUA
2010 Oracle Corporation
18
数据库升级助手DBUA
2010 Oracle Corporation
19
数据库升级助手DBUA
2010 Oracle Corporation
20
数据库升级助手DBUA
2010 Oracle Corporation
21
数据库升级助手DBUA
2010 Oracle Corporation
22
数据库升级助手DBUA
2010 Oracle Corporation
23
数据库升级助手DBUA
2010 Oracle Corporation
24
数据库升级助手DBUA (GUI)
2010 Oracle Corporation
25
数据库升级助手DBUA (GUI)
2010 Oracle Corporation
26
数据库升级助手DBUA (GUI)
2010 Oracle Corporation
27
数据库升级助手DBUA (GUI)
2010 Oracle Corporation
28
什么时候选择命令行
• 能够接受30~90分钟的平均停机时间
• 相比起通过GUI,更偏好使用命令行界面
• 如果是升级到11g,现有的数据库版本应至少是9.2.0.4;
如果是升级到11g R2,现有的数据库版本应至少是
9.2.0.8
• 迁移到一个新的具有相同OS的硬件平台
• 需要考虑的方面
• 不能升级到一个具有不同OS构架的系统
• 需要更多的手工步骤
• 由于手工键入或者步骤没有严格按照要求可能引起错误
2010 Oracle Corporation
29
使用命令行升级
2010 Oracle Corporation
30
使用命令行升级
Info
• 升级信息脚本:utlu112i.sql
• 在源数据库环境中运行
• 检查所有Init参数,显示Obsolete和Deprecated参数的警告信息
• 检查
• 组件
• 表空间SYSAUX
• 国家字符集
• 时区文件版本检查
• 集群检查
2010 Oracle Corporation
31
使用命令行升级
Info
• 得到当前最新版本的utlu**i.sql
• 现在就下载吧!
• Note:884522.1
2010 Oracle Corporation
32
使用命令行升级
• utlu112i.sql: 数据库信息
2010 Oracle Corporation
33
使用命令行升级
• utlu112i.sql: 表空间是否够大
2010 Oracle Corporation
34
使用命令行升级
• utlu112i.sql: 初始化参数是否要改变
2010 Oracle Corporation
35
升级模式
SQL> STARTUP UPGRADE;
ALTER SYSTEM SET
Autotune of undo
ALTER SYSTEM SET
ALTER SYSTEM SET
ALTER SYSTEM SET
ALTER SYSTEM SET
Resource Manager
ALTER SYSTEM SET
ALTER SYSTEM SET
Resource Manager
_system_trig_enabled=FALSE SCOPE=MEMORY;
retention is turned off.
_undo_autotune=FALSE SCOPE=MEMORY;
undo_retention=900 SCOPE=MEMORY;
aq_tm_processes=0 SCOPE=MEMORY;
enable_ddl_logging=FALSE SCOPE=MEMORY;
disabled during database migration: plan '' not set
resource_manager_plan='' SCOPE=MEMORY;
recyclebin=‘OFF’ DEFERRED SCOPE=MEMORY;
disabled during database migrationTaken from an example alert.log
• 屏蔽不必要的错误消息,如
ORA-00942: table or view does not exist
—— 从而使得日志文件能更容易地被阅读和检查
2010 Oracle Corporation
36
使用命令行升级
• 运行升级脚本脚本:
• 数据库将会被shutdown 当脚本运行结束时
2010 Oracle Corporation
37
使用命令行升级
• 升级之后的脚本: utlu112s.sql
2010 Oracle Corporation
38
导出导入
2010 Oracle Corporation
39
导出导入
• 能导入导出大于Oracle V5
• “exp“ 在 11g 已经不再被支持了
• 该工具没有删掉仍可以使用
• Imp仍可以导入旧版本的dumpfile
• 速度上不快但技术比较可靠
• 技巧
• 当要改变数据库字符集时使用csscan扫描整个数据库,可参见Note:
123670.1
• 支持不同操作系统
• 以BINARY的方式传输dumpfile
• Imp要使用目标数据库的imp工具,imp的时间通常是3倍的exp时间
• 为提高性能,exp可设direct=y ,imp可增加buffer
• 10g以后可以使用新的datapump,参见Note:553337.1
2010 Oracle Corporation
40
迁移表空间
2010 Oracle Corporation
41
迁移表空间
• 建立一个新的空数据库环境
• 将表空间从原库加载到目标库
• SYSTEM+SYSAUX 表空间不能被迁移
• 需要额外迁移views, synonyms 等对象
• 从10g开始支持跨平台跨Endianness
• 并不真正是最小downtime的方案,但是对同一类
Endianness平台迁移也不失为较好的选择
2010 Oracle Corporation
42
迁移表空间
2010 Oracle Corporation
43
其他的升级方法
• 流复制
• 跨平台且从9i开始跨版本
• 参见
Oracle® Streams Concepts and Administration:
http://download.oracle.com/docs/cd/E11882_01/server.112
/e10704/ap_strmnt.htm#CIHJBIAA
• GolenGate
参见http://www.goldengate.com/
• 逻辑standy
• Shell script请参见Note:949322.1
• 少于2秒downtime
• 必须同平台且逻辑standy有部分数据类型
2010 Oracle Corporation
44
议程
准备
最佳实践
升级总结
2010 Oracle Corporation
45
最佳实践
• 阅读文档
2010 Oracle Corporation
46
文档
• Note:785351.1
2010 Oracle Corporation
升级伴侣11g
47
文档
• Note:785351.1
2010 Oracle Corporation
升级伴侣 11g
48
文档
• 升级向导
•
+
http://download.oracle.com/docs/cd/E11882_01/server.112/e10819/toc.htm
• Note:837570.1
手动升级到11g R2的完整的检查列表
• Note: 421191.1
从X手动升级到Y的完整的检查列表
2010 Oracle Corporation
49
OTN升级页面
• http://www.oracle.com/technology/products/database/oracle11g/upgrade/index.html
2010 Oracle Corporation
50
OTN升级页面
• http://www.oracle.com/technology/products/database/oracle11g/upgrade/index.html
2010 Oracle Corporation
51
OTN升级页面
• 或者... 
2010 Oracle Corporation
52
OTN升级论坛
• http://forums.oracle.com/forums/forum.jspa?forumID=583&start=0
2010 Oracle Corporation
53
升级博客:blogs.oracle.com/UPGRADE
2010 Oracle Corporation
54
最佳实践
• 在升级前为新$ORACLE_HOME打补丁
2010 Oracle Corporation
55
补丁集安装
• 在您开始升级之前,为新$OH安装补丁和补丁集
2010 Oracle Corporation
56
推荐的补丁
2010 Oracle Corporation
57
推荐的补丁
2010 Oracle Corporation
58
补丁集更新(PSU)的安装
• 安装PSU
• Note:854428.1:介绍数据库补丁集更新(Database Patch Set Updates)
• 数据库PSU包括:
• 针对可能或已经影响到大量客户的关键问题的修复
• 关键补丁更新(CPU)修复
• 数据库PSU不包括:
• 需要重新认证的更改
• 需要更改配置的修复
•
•
•
•
一般50~100个新bug的修复- 渐增的
对于RAC Rolling Installable的保证
更改版本号的第五位,从≥11.2.0.1.1开始
在相同的时间表上每年发布4次,如CPU
• 平台:
Solaris SPARC64, Linux x86 和 x86-64, HP-UX PA-RISC, HP Itanium, IBM AIX
2010 Oracle Corporation
59
重要的警告?
• Note 161818.1
2010 Oracle Corporation
60
推荐的OS补丁
• Note:169706.1:OS安装和配置
• Note: 401705.1
2010 Oracle Corporation
Linux x86, x86-64, 和 s390x 的要求参考列表
61
最佳实践
• 保留性能统计信息
2010 Oracle Corporation
62
性能统计
• 保留性能统计信息
• 获得准确的性能统计信息
• 比较:之前之后
• 特定时间的查询和批处理
• 数据库升级的测试
• 功能测试
• 使用真实负载的性能测试
• 真实应用测试(Real Application Testing)
• SQL性能分析器(SQL Performance Analyzer)
• 数据库回放(Database Replay)
2010 Oracle Corporation
63
性能统计
• 在升级前采集足够的性能数据至关重要
• “足够”意味着在升级前至少4个星期开始采集
• 汇总准确的性能统计信息
• 在Oracle 8i/9i中:
• 使用STATSPACK
• 在升级前导出PERFSTAT用户权限
• Note: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
64
最佳实践
• 明智(Sanity)操作:重要的检查
2010 Oracle Corporation
65
无效的对象
• 一定要检查无效(INVALID)对象:
SQL> SELECT UNIQUE object_name, object_type, owner
FROM dba_objects WHERE status='INVALID';
• 在SYS和SYSTEM用户Schema中应该没有无效的对象
• 使用utlrp.sql重新编译无效对象
• 在升级前和升级后比较无效对象
• 从11.1.0.7版开始,会自动进行比较
• 其他版本升级之前/之后比较:utluiobj.sql
• 在 DBA_INVALID_OBJECTS中包含所有升级以后的无效对象
2010 Oracle Corporation
66
回收站
• 如果从10g或11g开始升级,请在升级前清空回收站。
SQL> purge DBA_RECYCLEBIN;
2010 Oracle Corporation
67
其他清理操作
• 删除init初始化参数文件中的过期参数、隐含参数和event
2010 Oracle Corporation
68
最佳实践
• 如何处理时区更改的问题
2010 Oracle Corporation
69
时区补丁
• 为什么需要DST时区补丁?(DST: Daylight Saving Time, 夏令时)
• 从2007年开始,DST定义和时区名称已经过多次更改
• 各版本数据库的时区版本:
• Oracle 9i:
TZ V1 – utltzver.sql脚本获取
• Oracle 10.1:
TZ V2 – v$timezonefile
• 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
70
时区补丁 - 11g R2
R2
• 升级到Oracle Database 11g R2:
• 新的11.2版-$OH具有V11版时区
• 不需要给源$OH打补丁
• 如果您使用的是TIMESTAMP WITH TIMEZONE、 TIMESTAMP
WITH LOCAL TIMEZONE数据类型,那么数据库只需要被调校
即可
• 转换在升级完成以后进行
• 参考Note 944122.1
• Package DBMS_DST
• DBMS_DST.FIND_AFFECTED_TABLES
• DBMS_DST.END_UPGRADE
2010 Oracle Corporation
71
最佳实践
• 升级前一定要运行以下脚本:
• 升级到Oracle Database 11g : utlu111i.sql
• 升级到Oracle Database 11.2 : utlu112i.sql
2010 Oracle Corporation
72
升级前检查
• 在您的当前环境中运行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
73
最佳实践
• 在将COMPATIBLE参数更改为11.1或11.2之前,
保持其为原始值一周时间。
2010 Oracle Corporation
74
COMPATIBLE参数
• 对于11g数据库来说,COMPATIBLE参数至少应为10.1.0
• 一旦被设为 11.1.0便无法重置为以前的值
• 不再有ALTER DATABASE RESET COMPATIBILITY命令
COMPATIBLE = 10.0/1/2.0
COMPATIBLE = 11.0.0
2010 Oracle Corporation
75
COMPATIBLE参数
• 仅限于9i数据库:DBUA会提高COMPATIBLE参数
• 在升级后启用新特性:
• 11.1:
SQL> alter system
set compatible='11.1.0' scope=spfile;
• 11.2 :
SQL> alter system
set compatible='11.2.0' scope=spfile;
• 之后重启数据库
• 新特性就会被启用
• 数据文件的标头(Header)会被调校
• 重做日志文件会在初次访问时被调校
2010 Oracle Corporation
76
最佳实践
• 您是否有一个回退策略(Fallback Strategy)
呢?
2010 Oracle Corporation
77
回退策略(Fallback Strategy)
•
•
任何情况下:做好备份!!!
然后:
•
如果发生什么预料外的事情致使您必须回退,那么是否允许丢失
数据呢?
(例如升级后系统中数据的更改):
YES or NO?
• 如果是YES: 恢复一个备份,闪回(从10g版本开始)
• 如果是NO: 导出/导入,降级
2010 Oracle Corporation
78
回退策略:catdwgrd.sql
•
使用catdwgrd.sgl降级
• Note:443890.1
•
•
降级到升级之前的版本
• 10.1.0.5
• 10.2.0.2/3/4
• 11.1.0.6/7
只有在COMPATIBLE参数没有被提高的时候才有可能!!!
•
2010 Oracle Corporation
请注意:
通过降级,只能还原至升级前的版本,所以如果有补丁安装的话,一定要在升级
之前安装,否则只能降级至安装补丁之前的版本
79
回退策略:catdwgrd.sql
•
使用catdwgrd.sql降级至10g
•
11g环境中的工作:
SQL>
SQL>
SQL>
SQL>
•
SPOOL /tmp/downgrade.log
STARTUP DOWNGRADE
@catdwgrd.sql
SPOOL OFF
切换到升级前的10g环境:
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
请注意:如果EM库位于数据库中,那么则需要额外的步骤。参见Oracle 11g升级向导
第六章《降级数据库(Downgrading a Database)》。
80
最佳实践
• 升级之后……
2010 Oracle Corporation
81
升级后
• 在负载正常的情况下创建系统统计信息 – 否则CBO使用的
便会是不合适的值:
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');
• 搜集到的系统统计信息的数据在aux_stats$
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
...
2010 Oracle Corporation
82
升级后
• 例子:客户OLTP负载
• 无系统统计的运行时间:2:19小时
• 有系统统计的运行时间:2:07小时
• => 快9%
2010 Oracle Corporation
83
升级后
• 创建固定表统计信息(Fixed Table Statistics)
• 在catupgrd.sql完成后进行
• 这将为使用utlrp.sql重编译加快作业处理速度
SQL> exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
• 再次:数天常规数据库负载之后,再次搜集固定表统计信息作为基线
2010 Oracle Corporation
84
升级时长
• 通过以下方法加速升级性能:
• Truncate审计表SYS.AUD$
SQL> truncate SYS.AUD$;
• 在升级后立即创建字典统计
• 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);
• Oracle 10g/11g:
SQL> exec DBMS_STATS.GATHER_DICTIONARY_STATS;
2010 Oracle Corporation
85
议程
准备
最佳实践
升级总结
2010 Oracle Corporation
86
升级总结
• 根据下面几个方面来选择升级方法:
• 数据库环境
• 可接受的停机时间
• DBA的知识和对复杂性的承受能力
• 如果可能的话,使用DBUA这种推荐的方法,会比较简单易用
• 记住一定要使用RMAN创建一个在线备份
• 请记住:
尽管升级变得更简单了,但您仍然需要进行测试!!!
• 11g R2是一个稳定的数据库版本,升级吧!
2010 Oracle Corporation
87
Questions
Answers
2010 Oracle Corporation
88
2010 Oracle Corporation
89

similar documents