[升级] 数据库升级到11g的应急方案

数据库升级应急方案


通过对数据库初始化参数进行调整来对出现的故障或者性能问题进行处理。

_subquery_pruning_enabled
参数:_subquery_pruning_enabled
默认值:true
推荐值:false
动态修改:推荐在session修改
说明:enable the useof subquery predicates to perform pruning
解决问题:Bug 14469756:
执行“insert select”查询会花费大量时间生成执行计划,进行trace可以看到大量对TBL$OR$IDX$PART$NUM的等待。
解决办法:
1. alter session set"_optimizer_table_expansion"=false;
2.alter session set "_and_pruning_enabled"=false;
3.alter session set "_subquery_pruning_enabled"=false;

Bug 14458214:select复合分区表遇到ORA-1008
解决办法:
1. alter session set"_and_pruning_enabled"=false;
2.alter session set "_subquery_pruning_enabled"=false;
3.alter session set "_optimizer_table_expansion"=false;

Bug 15902104: 10.2.0.5 升级到 11.2.0.3 merge 语句可能遇到 ORA-904 错误
解决办法:
_subquery_pruning_enabled=false
相关文档:14483460.8

Bug 15933188:当select中where两个char类型的列,但是长度不同,其中一个列为分区主键进行连接,将会得到错误结果。
解决办法:
alter session set"_subquery_pruning_enabled" = false;
相关文档:15933188.8


Bug 15933188:对包含本地分区表的分布式查询操作,远程数据库可能遇到ORA-600[qesmagetpamr-nullctx]也可能遇到未知错误,例如ORA-14091。
解决办法:
_subquery_pruning_enabled=FALSE
相关文档:12591399.8
Bug 13912192:当启用星形转换和分区修剪后可能会遇到ora-942
解决办法:
(1) set parallel_force_local=true to makeall parallel slaves run on the
    same instance as the user session.
(2) set _subquery_pruning_enabled=false todisable subquery partition
    pruning.
相关文档:13912192.8


adaptive_cursor_sharing相关参数
参数:_optimizer_adaptive_cursor_sharing
默认值:true
推荐值:FALSE
动态修改:是
说明:optimizeradaptive cursor sharing

参数:_optimizer_extended_cursor_sharing
默认值:true
推荐值:none
动态修改:是
说明:optimizerextended cursor sharing

参数:_optimizer_extended_cursor_sharing_rel
默认值:true
推荐值:none
动态修改:是
说明:optimizerextended cursor sharing for relational operators


解决问题:由于AdaptiveCursor Sharing(ACS)导致的bug,例如:Bug 13456573由于extendedcursor sharing导致多游标或者ORA-4031在分配KGLH0上。
Bug 14565911 由于ACS和柱状图,选择范围不准确。
Bug 14176247 由于ACS导致大量子游标,可能会看到大量cursor: pin S wait on X等待。
相关文档:13456573.8 14565911.8  14176247.8

_use_adaptive_log_file_sync
参数:_use_adaptive_log_file_sync
默认值:true
推荐值:false
动态修改:是,建议修改后重启
说明:Adaptivelyswitch between post/wait and polling
解决问题:Bug 13930580LGWR阻塞其他会话
In cases where a restart is not feasible,then you can set in memory and also in the SP file for when a restart doesoccur:
SQL> ALTER SYSTEM SET"_use_adaptive_log_file_sync"=FALSE; -- to set in memory
SQL> ALTER SYSTEM SET"_use_adaptive_log_file_sync"=FALSE scope=sfile sid='*'; -- to set onspfile, so parameter is used at next restart.
相关文档:1462942.1

_optimizer_join_factorization
参数:_optimizer_join_factorization
默认值:true
推荐值:false
动态修改是
说明:use joinfactorization transformation
解决问题:Bug 13984324类似UNION ALL操作得到错误结果
相关文档:13984324.8

_projection_pushdown
参数:_projection_pushdown
默认值:TRUE
推荐值:FALSE
动态修改:是
说明:projectionpushdown
解决问题:Bug 12974860 当数据库遇到 ORA-600[qkeIsExprReferenced1]报错时,很可能遇到这个bug,请通过调整这个参数尝试解决问题。
相关文档:12974860.8

_cursor_features_enabled
参数:_cursor_features_enabled
默认值:2
推荐值:514
动态修改:否
说明:Shared cursorfeatures enabled bits
解决问题:Bug 14601231ORA-7445 [kpughndlarr]或者其他ora-7445错误在堆栈kpoopq,也可能是Qnnn进程遇到ORA-600 [kghstack_alloc], [definehandles] /   ORA-600[kponPurgeUnreachLoc-3]报错。
相关文档:14601231.8

_cursor_obsolete_threshold
参数:_cursor_obsolete_threshold
默认值:100
推荐值:根据情况设定
动态修改:否
说明:Number ofcursors per parent before obsoletion
解决问题:11.2.0.3中Oracle引入了_cursor_obsolete_threshold隐藏参数,默认为100,表示一个parentcursor最多可以有100个child cursor;如果SQL需要第101个child cursor,则将该parent cursor & its 100 childcursor设置为obsoleted,并且重新生成新的parent cursor. 但是那些过期的child cursor不会从v$sql中消失,dbms_shared_pool也无法将这些过期的child cursor flush出去,可以临时增加_cursor_obsolete_threshold来解决过期子游标无法age out的问题。
相关文档:296377.1


_memory_imm_mode_without_autosga
参数:_memory_imm_mode_without_autosga
默认值:true
推荐值:FALSE
动态修改:否
说明:Allowimmediate mode without sga/memory target
解决问题:当设置
memory_target = 0
sga_target = 0
仍旧会出现SGA内存调整,甚至导致ORA-4031等内存问题,通过设置这个参数可以避免这个问题。
相关文档:1269139.1

_optimizer_use_cbqt_star_transformation
参数:_optimizer_use_cbqt_star_transformation
默认值:true
推荐值:false
动态修改:是
说明:use rewrittenstar transformation using cbqt framework
解决问题:Bug 13384397错误结果或者ORA-600 [kkooqb:bsj not used].
相关文档:13384397.8


_external_scn_rejection_threshold_hours
参数:_external_scn_rejection_threshold_hours
默认值:24
推荐值:根据情况计算
动态修改:否
说明:Lag in hoursbetween max allowed SCN and an external SCN
解决问题:dblink报错ORA-19706,由于scn增长过快,为了防止scn快速增长导致数据库crash而设置_external_scn_rejection_threshold_hours参数,如果确实出现这个问题可以通过调整这个参数值,首先让应用可以正常运行
相关文档:1503937.1



以下参数为部分客户默认已修改参数
以下参数为客户已经修改的参数,以下罗列了设置这些参数的初衷,当数据库出现问题后,请检查这些参数是否为客户提供的设定值,并考虑这些参数是否对数据库产生了负面影响

_datafile_write_errors_crash_instance
参数: _datafile_write_errors_crash_instance
默认值: true   
推荐值: true
动态修改:是
说明: datafile write errors crash instance
Oracle 推荐这个参数设置为 true ,但是当前设置为 false
存在问题: Bug 13745317 原本设置这个值是希望出现 IO 异常时不要 down 数据库,但是由于这个 bug ,可能虽然设置了这个参数,但是仍旧会 crash 实例。
相关文档: 13745317.8

deferred_segment_creation
参数:deferred_segment_creation
默认值:true
推荐值:FALSE
动态修改:是
说明:延时段创建,创建对象时不分配对应的段空间,当真正开始使用空间时才划分对应的段空间。
解决问题:exp-11
相关文档:1012307.6
默认客户已修改

parallel_force_local
参数:parallel_force_local
默认值:false
推荐值:true
动态修改:否
说明:并行执行操作是否可以跨界点执行,true表示只能在运行节点并行执行。
解决问题:Bug 11704376ORA-600 [15570]/执行结果错误
相关文档:11704376
默认客户已修改


_gc_policy_time
参数:_gc_policy_time
默认值:true
推荐值:false
动态修改:否
说明:how often tomake object policy decisions in minutes
解决问题:Bug 14588746ORA-600 [kjbmprlst:shadow] RAC环境LMS进程导致实例crash,通过Disable DRM解决。
如果在修改参数时遇到如下的问题:
SQL> alter system set"_gc_policy_time"=0 scope=spfile sid='*';
alter system set"_gc_policy_time"=0 scope=spfile sid='*'
*
ERROR at line 1:
ORA-00068: invalid value 0 for parameter_gc_policy_time, must be between 1 and
157320336
请执行下面的语句来关闭二进制检查的警告:
alter system set"_disable_image_check" = TRUE;
如果可以的话,请通过crsctl命令来重新启动数据库,看看这个警告是否还出现,然后再次尝试修改_gc_policy_time。
相关文档:14588746.8   390483.1
默认客户已修改

_optimizer_use_feedback
参数:_optimizer_use_feedback
默认值:true
推荐值:false
动态修改:是
说明:optimizer usefeedback
解决问题:Bug 13648166由于Feedback功能导致GROUP BY语句执行计划错误
相关文档:13648166.8
默认客户已修改

parallel_threads_per_cpu
参数:parallel_threads_per_cpu
默认值:根据操作系统而定 (通常为 2)
推荐值:各个节点的设置值相同
动态修改:是
说明:说明一个 CPU 在并行执行过程中可处理的进程或线程的数量, 并优化并行自适应算法和负载均衡算法。如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数值
解决问题:Bug 14016187  在RAC环境中,对gv$进行查询时由于parallel cursor未被共享而导致VERSION_COUNT在该节点很高。这个问题是由于parallel_threads_per_cpu在各个节点设置值不同导致,在该节点可能能看到:'cursor: mutexX'
相关文档:12974860.8
默认客户都设置为默认值

db_lost_write_protect
参数:db_lost_write_protect
默认值:enable
推荐值:NONE
动态修改:是
说明:它允许使用物理备用数据库检测由数据讹误的丢失写形式所导致的数据讹误
解决问题:Bug 13901039  遇到大量buffer busy waits等待
相关文档:13901039.8
默认客户都设置为默认值

sec_case_sensitive_logon
参数:sec_case_sensitive_logon
默认值:true   
推荐值:false
动态修改:是
说明:密码是否区分大小写
解决问题:因为之前版本密码不区分大小写,为了方式出现问题,延续10g版本设置
相关文档:1306938.1
默认客户都设置为默认值

_optimizer_distinct_agg_transform
参数:_optimizer_distinct_agg_transform
默认值:true   
推荐值:false
动态修改:是
说明:Transforms Distinct Aggregates to non-distinct aggregates
解决问题:Bug 12537316   当有merged子查询遇到ORA-600 / ORA-7445
相关文档:12537316.8
默认客户都设置为默认值


_enable_row_shipping
参数:_enable_row_shipping
默认值:true   
推荐值:false
动态修改:是
说明:use the row shipping optimization for wide table selects
解决问题:Bug 14194525使用OCI7进行dblink查询遇到ORA-1455
相关文档:14194525.8
默认客户都设置为默认值

_add_col_optim_enabled
参数:_add_col_optim_enabled
默认值:true   
推荐值:false
动态修改:是
说明:Allows new add column optimization
解决问题:Bug 14398795delete from table with add column optimization时遇到报错ORA-7445 [evakdustoopn]
相关文档:14398795.8
默认客户都设置为默认值

其他非默认设置参数说明
参数:event 10511 trace name context forever, level 1
说明:禁止SMON Offline空闲的rollback segment虽然11g版本对SMON进程的调用进行了优化,但是无法完全避免SMON的争用,通过设置这个参数可以减少由于SMON争用而导致的问题
参数:event 10736 trace name context forever, level 2
说明: disable  pinned buffer history dump included in  an errorstack dump由于此设置仅是防止触发redo dump,通过保留这个参数可以防止相关问题的出现
参数:event 10949 TRACE NAME CONTEXT FOREVER
说明:解决大量'direct path read'等待问题文档793845.1

参数:_undo_autotune=FALSE
说明:关闭undo自动调整
参数:_gby_hash_aggregation_enabled=false
说明:关闭hash分组运算方式,保证分组运算可以排序,相关文档345048.1
参数:_gc_undo_affinity=FALSE
说明:和_gc_policy_time=0共同关闭DRM
参数:_optim_peek_user_binds=FALSE
说明:解决bug 12656350  ORA-07445[qksbgGetCursorVal()+77]问题
参数:_rollback_segment_count=2000
说明:此参数是设定回滚段的数量,在Oracle的相关内部信息中有提到在11.2.0.3版本在undo压力较大的情况下,通过加大这个参数值可以一定程度上提高性能
参数:result_cache_max_size=0
说明:关闭结果缓存功能







打PATCH故障处理说明
通过对GI软件或者RDBMS软件实施patch用以解决故障,本文以当前系统版本为11.2.0.3.3为基础版本进行分析。

Patch 14267798
基础版本:11.2.0.3.3/11.2.0.3.4
说明:
通过应用这个patch可以解决:
Document:13004894.8 Wrong results withSQL_TRACE / 10046
Document:13743357.8 Wrong results onfirst execution
11.2.0.3.6通过应用patch 16084707来修复这个问题。

Patch 14472647
基础版本:11.2.0.3.0-11.2.0.3.3
说明:
通过应用这个patch可以解决:
Document:14472647.8 Wrong results on IOTsecondary index after DML
此问题在11.2.0.3.6已修复


Patch 13705338
基础版本:11.2.0.3.0-11.2.0.3.3
说明:
通过应用这个patch可以解决:
Document:13705338.8Wrong results on iot secondary index through join
此问题在11.2.0.3.6已修复

Patch 14668670
基础版本:11.2.0.3.0-11.2.0.3.6
说明:
通过应用这个patch可以解决:
Document:14668670.8 Wrong results thefirst time a query is executed
11.2.0.3.6也需要应用这个patch来修复这个问题。

Patch 11072246
基础版本:11.2.0.3.0-11.2.0.3.6
说明:
通过应用这个patch可以解决:
Document:11072246.8 Poor Cardinalityestimations for columns with DESC indexes
11.2.0.3.6也需要应用这个patch来修复这个问题。


Patch 14644185
基础版本:11.2.0.3.3-11.2.0.3.5
说明:
通过应用这个patch可以解决:
Document:14644185.8 Part of fix 12531263missing from 11.2.0.3 - disabled deadlock detection for Cursor build locks (on$BUILD$)
此问题在11.2.0.3.6已修复

Patch 14110164
基础版本:11.2.0.3.2-11.2.0.3.6
说明:
通过应用这个patch可以解决:
Document:12412983.8 AIX: "asynchdescriptor resize" wait not necessary on AIX
Document:13400729.8 increased elapsedtime on "db file scattered read" in IBM AIX
11.2.0.3.6也需要应用这个patch来修复这个问题。


Patch 13947840
基础版本:11.2.0.3.0-11.2.0.3.6
说明:
通过应用这个patch可以解决:
Document:11689561.8 hash join consumesmore CPU in IBM AIX
Document:12596494.8 higher cpu usage inIBM AIX
11.2.0.3.6也需要应用这个patch来修复这个问题。


Patch 13443029
基础版本:11.2.0.3.0-11.2.0.3.6
说明:
通过应用这个patch可以解决:
Document: 13443029。8 AIX: Excess "work USLA heap" process memory use in 11.2 on AIX
更多详细信息可以阅读文档:1260095.1
11.2.0.3.6也需要应用这个patch来修复这个问题。

Patch 13498267
基础版本:11.2.0.3.0-11.2.0.3.3
说明:
通过应用这个patch可以解决:
Unpublished Bug 13498267 AIX-11202-CRS:HIGH CPU OVERHEAD OF AN "IDLE" RAC CLUSTER
更多详细信息可以阅读文档:1455973.1
此问题在11.2.0.3.6已修复


Patch 16056266
基础版本:11.2.0.3.0-11.2.0.3.5
说明:
该patch为11.2.0.3 PSU6,该patch中不仅包含了上面所罗列的某些bug,还包含了很多其他的bug,相比于PSU3,PSU6额外修复了如下bug:

Advance Queuing

  13484963
  
  ORA-3146 from AQ propogation from 11.2.0.3 to  11.2.0.2
  

Automatic Storage management

  13476583
  
  After rebalance a disk goes offline in multi-node  ASM
  
  12857027
  
  Drop directory in asmcmd fails with  ORA-600[kfaDelTree00]
  
  13448206
  
  Many alert messages "NOTE: attempting voting  file .." in RAC with ASM
  
  13559697
  
  Integrate ASM with OAK lib
  
  16231699
  
  Adding a new disk on ODA appliance hits ORA-600  [kfgpset3]
  
  16299830
  
  ORA-15072 from CREATE DISKGROUP on ODA
  
  16382353
  
  Query against v$asm_attribute produces ORA-600  [kfexvContentCb0]
  

Buffer Cache Management

  13397104
  
  Instance crash with ORA-600 [kjblpkeydrmqscchk:pkey]  or similar - superseded
  
  14409183
  
  ORA-600 [kjblpkeydrmqscchk:pkey] or similar /  session hangs on "gc buffer busy acquire"
  
  13038684
  
  Per process Async IO Max limit is reached very  quickly in processes
  
  13534412
  
  ORA-600 [kclchkblkdma_3] can occur in RAC crashing  the instance
  
  13807411
  
  ORA-600 [kcbchg1_38] using XA in RAC
  
  13098318
  
  ORA-600 [6856] on interrupt / kill using a global  temporary table
  

Enterprise Manager Database Control
  14023636
  
  Fix for bug 14023636
  
  14205448
  
  Fix for bug 14205448
  
  14258925
  
  Fix for bug 14258925
  
  14262913
  
  Fix for bug 14262913
  
  14263036
  
  Fix for bug 14263036
  
  14263073
  
  Fix for bug 14263073
  
  14469008
  
  Fix for bug 14469008
  
  14546575
  
  Fix for bug 14546575
  
  14546638
  
  Fix for bug 14546638
  
  14546673
  
  Fix for bug 14546673
  
  14273397
  
  Fix for bug 14273397
  
  14459552
  
  Fix for bug 14459552
  

Generic

  12693626
  
  High CPU use for select on INTERVAL partitioned  table
  
  12971775
  
  OERI:[ktsircinfo_num1] with concurrent parallel DML  and online index creation
  
  13059165
  
  UTLRP does not report the correct number of  "OBJECTS WITH ERRORS"
  
  13080778
  
  ORA-942 / ORA-1031 / corruption for SQL using same  object name in multiple schemas - superseded
  
  13099577
  
  ORA-1460 with parallel query
  
  13250244
  
  Shared pool leak of "KGLHD" memory when  using multiple subpools
  
  13358781
  
  dba_hist_sqlstat.ccwait_delta is zero always
  
  13384182
  
  ORA-600 [delrow:iot1] from DELETE or MERGE..DELETE  with an IOT
  
  13550185+
  
  Hang / SGA memory corruption / ORA-7445 [kglic0]  when using multiple shared pool subpools
  
  13566938
  
  ORA-600 [kcbgtcr_1] on update of reference  partitioned table
  
  13572659
  
  DBMS_REDEFINITION disables Foreign Keys used for  REFERENCE partitioning
  
  13705338
  
  Wrong results / ORA-7445 on IOT secondary index
  
  14076523
  
  ORA-600 [kgxRelease-bad-holder] can occur in rare  cases
  
  14613900
  
  ORA-7445 [kkscsSearchChildList] with fix of bug  12976376 present – superseded
  
  10263668
  
  ORA-600 [kokegPinLob1] selecting a CLOB
  
  12345082
  
  ORA-600 [kkzgbtcols] creating materialized view on  table with Object / UROWID / BFILE types
  
  12791981
  
  ORA-4030 due to "KGL Iterator information"
  
  12873183
  
  Wrong results from query with ROWNUM on partitioned table
  
  12964067
  
  DBMS_REDEFINITION fails with ORA-600  [kkzucmvl_ChkMVLog: kkzlglnm]
  
  13011409
  
  ORA-600 [kglLock-bad-byd] can occur
  
  13026410
  
  Select against V$ACCESS / V$OPEN_CURSORS fails with  ORA-4029
  
  13454210
  
  BUILD lock is not released on error ('library cache  lock' waits)
  
  13524899
  
  Creation of Cursor-Duration in-memory temporary  table produces too much recursive SQL
  
  13645875
  
  ORA-7445[qerixFetchFastFullScan] on update of IOT  with secondary index
  
  13719081
  
  Upgrade invalidate of views is slow in utlrvw.sql
  
  13936424
  
  SELECT FOR UPDATE not returning values for added  column with NOT NULL and default value
  
  14040433
  
  Cursors not shared due to DIFF_CALL_DURN even though  they should share
  
  14052474
  
  Wrong Results with NULLIF using constants in JOINs
  
  8547978
  
  Online redefinition corrupts dictionary /  ORA-600[kqd-objerror$] from DROP USER
  
  10242202
  
  ora-22992 when creating materialized view with  remote lob column
  
  13496884
  
  ORA-600 [qcsfbdnp:1] from Merge Statement with Bind  Variables
  
  13582702
  
  ORA-600 [kkmmctbf:bad intcoln] from DELETE with FK  constraints and compound trigger
  
  13584130
  
  ORA-7445 compiling library unit with  _LOAD_WITHOUT_COMPILE in non-base Edition
  
  13616375
  
  ORA-600 [qkaffsindex5] on a query with ORDER BY DESC  and functional index on DESC column from SQL tuning index advisor job
  
  13786142+
  
  Cannot drop/replace trigger in editioning  environment
  
  13810393
  
  Deadlock waiting for 'library cache: mutex x' while  producing an ORA-4031 diagnostic dump
  
  13812031
  
  Wrong results from query on partitioned table
  
  13860201
  
  Dump on kkspbd0
  
  13911821
  
  ORA-7445 [kksLockDelete] then Instance crash from  PMON
  
  14110275
  
  ORA-600 / ORA-7445 from parse of query with table  that has undergone ADD COLUMN optimization
  
  14226599
  
  Increase dc_rollback_segs hash buckets to reduce  'latch: row cache objects' waits
  
  14644185
  
  Part of fix 12531263 missing from 11.2.0.3 -  disabled deadlock detection for Cursor build locks (on $BUILD$)
  
  16175381
  
  Process spin in kkscsSearchChildList() ->  kkshGetNextChild() with fix for bug 14613900 present
  
  16344871
  
  Wrong results / Mismatch in cursor shareability with  VPD/RLS policy with fix 13080778 present
  

High Availability

  12794305
  
  ORA-600 [krsr_pic_complete.8] on standby database
  
  13377816
  
  Excessive memory use by DIAG / DIA0
  
  13385346
  
  GCR0 trace files continuously created with  "kjgcr_DeleteSO" message
  
  13718279
  
  DB instance terminated due to ORA-29770 in RAC
  
  13737746
  
  Recovery fails with ORA-600 [krr_assemble_cv_12] or  ORA-600[krr_assemble_cv_3]
  
  12959852
  
  RAC instance crash due to ORA-600[kjbrscping:slsend]  in LMS
  
  13399435
  
  RAC instance eviction due to "TIMEOUT in DRM  FREEZE step" or "SYNC TIMEOUT ..."
  
  13593999
  
  RAC Instance eviction during dynamic remastering or  cluster reconfiguration.
  
  13645917+
  
  PMON block recovery loop - instance hang
  
  13685544
  
  Starting up instance may be evicted in RAC
  
  13732226
  
  RAC node eviction dur to "TIMEOUT in DRM FREEZE  step" or "SYNC TIMEOUT"
  
  9706792
  
  ORA-600 [kcrpdv_noent] during STARTUP in crash  recovery with parallelism
  
  11715084
  
  Active duplicate should work when connected to  Standby as source DB
  
  12983611
  
  ORA-600 [krsw_redo_complete.1] can occur (rare)
  
  13632809
  
  RMAN BZ2 compression backup hangs
  
  13680405
  
  PGA consumption keeps growing in DIA0 process
  
  14088346
  
  LMS crashes with ORA-600 [kjbrwrdone:sc3]
  

Oracle Security

  11708510
  
  ORA-28267 from JDBC issuing SQL over DB link to 10g  DB ( relates to E2E_CONTEXT namespace)
  

Oracle Space management

  12583611
  
  Excessive TX enqueue contention with heavy  Securefile insert workload on RAC
  
  13464002
  
  ORA-600 [kcbchg1_12] or ORA-600 [kdifind:kcbget_24]
  
  13649031
  
  ORA-10637 occurs on SHRINK of a partitioned table  with deferred segments
  
  13773133
  
  ORA-600 [ktsflmerge-cycle-1] during inserts into  freelist managed segment
  
  9659614
  
  Large trace file for ORA-8103
  
  13544396
  
  Corruption / ORA-600 after ALTER TABLE of a LONG to  CLOB
  
  13910420
  
  ORA-8103 during insert / update of basicfile LOB in  assm segment using space search cache
  
  13913630
  
  INSERT ... SELECT does not compress some rows
  
  13958038
  
  Abnormal segment growth with unformatted blocks when  using space search cache
  
  14176879
  
  Extensive growth of Securefiles segments undergoing  updates
  
  14207163
  
  ORA-17503 from create EHCC tablespace on ZFS
  
  14472647
  
  Wrong results on IOT secondary index after DML
  
  14589750
  
  TRUNCATE table hangs in RAC with "reliable  message" wait if fix 14144283 present
  


Oracle Spatial

  14035825
  
  Fix for bug 14035825
  
  13561951
  
  Fix for bug 13561951
  


Oracle Streams

  12594032
  
  Call Memory corruption / ORA-600 [17114] with CDC
  
  13787482
  
  CDC purge routine invalidating custom indexes
  

Oracle Transaction Management

  13430938
  
  ORA-4031 with high "KTC latch subh" memory  usage
  
  14138130
  
  SGA memory corruption / ORA-7445 when modifying  uncompressed blocks of an HCC-compressed segment
  
  15853081
  
  DML hangs when HCC has initrans=255
  

Oracle Virtual Operating System Services

  12585543
  
  Slow rman backup / IO Slaves not spawned
  
  13914613
  
  Excessive time holding shared pool latch in kghfrunp  with auto memory management
  


SQL*Net

  14841558
  
  Fix for bug 14841558
  

PL/SQL

  13612575
  
  ORA-600 [15419] / PLS-801 using REFCURSOR bind with  PLSQL
  
  13624984
  
  IMPDP or IMP hangs on compilation of PLSQL  containing a pipelined function
  
  13804294
  
  Internal errors, corruptions, using pipelined  function whose rows raise exceptions
  

Server Manageability

  13257247
  
  AWR Snapshot collection hangs due to slow inserts  into WRH$_TEMPSTATXS.
  
  13699124
  
  AWR Compare Period takes a long time to generate
  

Workspace Manager

  14220725
  
  Fix for bug 14220725
  
  16368108
  
  ORA-955 from Workspace Manager script owmv1120.plb
  

Miscellaneous Issues

  13596521
  
  Fix for bug 13596521
  
  14841812
  
  Fix for bug 14841812
  



建议关注以下bug:
bug 13397104
遇到:
ora-600 [kjblpkeydrmqscchk:pkey]
ora-600 [kjbldrmrpst:pkey]
ora-600 [kjbrchkpkeywait:timeout]
导致数据库crash
Workaround:
disable read mostly locking via:   _gc_read_mostly_locking=false
相关bug:14409183

bug 13250244
遇到:
共享池KGLHD内存泄漏。
可以看到共享池KGLHD越来越大或者ORA-4031,而且有多个共享池子池。
Workaround:
Set "_kghdsidx_count"=1
相关bug:13550185(也是由于多共享池子池导致)


bug 12873183
遇到:
使用rownum对分区表进行查询时,有可能返回错误的结果。

bug 13454210  
遇到:
看到hang,有"library cache lock" 和"library cache load lock",堆栈信息中未看到kksfbc。

bug 14052474
遇到:
在join操作中有NULLIF的查询有可能得到错误的结果。

bug 13911821
遇到:
由于PMON进程导致实例crash,可能遇到报错ORA-7445 [kksLockDelete]或者ORA-4024。

bug 14226599
遇到:
打这个对应的patch可以减轻在dc_rollback_segments上的row cache latch,latch: row cache objects等待时间,尤其数据库有大量的undo segment。

bug 13377816
遇到:
ASM dia0进程占用大量内存
select ss.sid, p.pid, p.pname, sn.name,round(ss.value/(1024 *1024))||'Mb' "MegaBytes"
from v$sesstat ss, v$statname sn,v$session s, v$process p
where s.paddr = p.addr
and  sn.statistic# = ss.statistic#
and  s.sid = ss.sid
and  sn.name in ('session pga memory' , 'session pga memory max')
and  p.pname='DIA0'
order by ss.value
/
60     8 DIA0         session pgamemory        58Mb
60     8 DIA0         session pga memorymax    58Mb

After one day:

60     8 DIA0         session pga memorymax    898Mb
60     8 DIA0         session pgamemory        898Mb       ====>> growth is about 840MB perday in this example
Workaround:
临时解决办法可以先kill一下dia0进程。

bug 13718279
遇到:
RAC中一个节点由于遇到ORA-29770错误而中断,类似如下报错
LMS8 (ospid: 2917) has not called a waitfor 93 secs.
Errors in file /.../xxx_lmhb_2927.trc  
ORA-29770: global enqueue process LMS8 (OSID2917) is hung for more than 70 seconds
Incident details in:  ...
ERROR:Some process(s) is not making progress.
Trace内内容
LMS8 (ospid: 1998) has not moved for 73sec (1329175625.1329175552)
kjfmGCR_HBCheckAll: LMS8 (ospid: 1998) has status 2
   : waiting for event 'gcs remote message' for 0secs with wait_id 23404.
Workaround:
Set init.ora parameter _gc_defer_time to 3.


bug 12959852
遇到:
LMS进程报ORA-600[kjbrscping:slsend]进而导致实例crash。

bug 13399435
遇到:
由于'TIMEOUTin DRM FREEZE step' 或者'SYNCTIMEOUT while waiting for lmd'导致实例被驱逐。
相关bug:13732226与之类似

bug 14088346
遇到:
由于ORA-600[kjbrwrdone:sc3],LMS进程crash实例。


修改统计信息故障处理说明
很多故障都是由于某条或者某些执行计划错误变更而导致的性能问题,我们可以通过修改统计信息的方式来对执行计划进行调整。

统计信息迁移
当语句执行计划出现问题后,可以考虑尝试将原10g版本的统计信息导入到11g版本数据库中,尝试解决问题。
统计信息迁移步骤(以迁移test用户下a1表的统计信息为例,中间信息存储表为stat_history):

进行sql语句执行计划固化,进行固化之前,首先通过hint或者参数方式,找到目标sql语句最优的执行计划,假设目标sql语句的sql_id为6bcwxgty705p8,通过hint得到这个语句的目标执行计划hash值644658511,然后执行:

SQL> @coe_xfr_sql_profile.sql 6bcwxgty705p8 644658511
执行完成后,在执行的目录下生成文件:coe_xfr_sql_profile_6bcwxgty705p8_644658511.sql
然后运行这个脚本,即完成了sqlprofile创建。
最后通过DBA_SQL_PROFILES查询相关信息。

回退方案

Downgrade说明

Oracle支持对升级进行downgrade的,通过Downgrade可以将包括数据库及软件版本都回退到升级前的版本,数据库内的数据库不用额外进行恢复。
根据沟通,如果数据库未使用Oracle Database Vault,本文中不考虑Oracle Database Vault的影响。
约束条件
并不是所有的情况下都可以进行Downgrade,10g Release 2版本要求是10.2.0.2及以后版本进行升级,才可以进行Downgrade。
如果希望可以进行Downgrade,要求进行upgrade的时候不能修改数据库的COMPATIBLE参数,如果将这个参数修改为11.2.0.0以上版本,那么将不能进行Downgrade。
DB downgrade步骤
以下所写步骤请参考,请在实际环境中进行测试形成最终完整可操作文档。
1.       DST修改,在进行upgrade的时候,使用DBMS_DST PL/SQL包更新了database time zone版本,那么需要恢复对应的版本,恢复方法为到MOS下载之前数据库版本在对应平台上的patch。
查询当前DST版本命令:
SELECT value$ FROM sys.props$ WHERE NAME = 'DST_PRIMARY_TT_VERSION';

2.       如果设置了ORA_TZFILE环境变量请去掉这个环境变量
3.       如果安装了Oracle Application Express,备份一个apxrelod.sql文件到到非Oracle目录下。
4.       如果有基于fixed objects创建的对象,后面删除这些对象时有可能遇到ORA-600错误,downgrade完成后可以重建这些对象。
5.       以Oracle用户登录系统
6.       停止所有节点的Enterprise Manager
7.      停止数据库,修改参数CLUSTER_DATABASE为false
8.       以sysdba使用sqlplus连接数据库
9.       以downgrade模式启动数据库
SQL> STARTUP DOWNGRADE
10.    如果配置了Enterprise Manager,先删除sysman用户
DROPUSER sysman CASCADE;
11.   制定日志路径
SQL> SPOOL downgrade.log
12.    执行downgrade脚本
SQL> @catdwgrd.sql
该脚本需要在11g版本的环境下执行11g版本的脚本。如果有组件downgrade失败会显示ORA-39709报错,必须让所有组件downgrade都成功数据库downgrade才成功。
13.    停止日志记录
SQL> SPOOL OFF
14.    停止数据库并退出sqlplus
SQL>SHUTDOWN IMMEDIATE
SQL> EXIT

15.    修改ORACLE_HOME等环境变量到10g版本
16.    以sysdba使用sqlplus连接数据库
17.    以upgradee模式启动数据库
SQL> STARTUPUPGRADE
18.    制定日志路径
SQL> SPOOL reload.log
19.    执行catrelod.sql脚本
SQL> @catrelod.sql
Catrelod脚本将会重新在10g版本数据库中加载各个组件的适当版本。
20.    停止日志记录
SQL> SPOOLOFF
21.    停止数据库,修改参数CLUSTER_DATABASE为true并正常启动数据库。
22.    运行utlrp.sql脚本
SQL>@utlrp.sql
23.    修改集群内注册信息
$ srvctldowngrade database -d db-unique-name -o old_ORACLE_HOME -t to_relnum

clusterware downgrade步骤
GI downgrade支持从10.2.0.3到11.1.0.7升级到11.2.0.3版本后的downgrade。
1.       在非OCR node执行(OCR node指进行执行安装或者升级的节点,一般来说是1节点)
#$NEW_HOME/crs/install/rootcrs.pl -downgrade -force
2.       在OCR node执行:
#$NEW_HOME/crs/install/rootcrs.pl -downgrade -force -lastnode -oldcrshome$OLD_HOME -version $OLD_VERSION
3.       清理各个节点gpnp profile
rm -rf$NEW_HOME/gpnp/*
mkdir -p$NEW_HOME/gpnp/profiles/peer $NEW_HOME/gpnp/wallets/peer$NEW_HOME/gpnp/wallets/prdr $NEW_HOME/gpnp/wallets/pa$NEW_HOME/gpnp/wallets/root

4.       删除各个节点checkpoint file
rm -rf $ORACLE_BASE/Clusterware/ckptGridHA_${nodename}.xml
5.       检查各个节点oratab文件中asm是否指向旧版本位置
6.       启动旧版本集群软件
$OLD_HOME/bin/crsctlstart crs
7.       检查旧版本集群运行是否正常:
exportORACLE_HOME=$OLD_HOME
$OLD_HOME/bin/crsctlquery crs activeversion
$OLD_HOME/bin/crsctlquery crs softwareversion
$OLD_HOME/bin/crsctlcheck crs
$OLD_HOME/bin/crs_stat-t
$OLD_HOME/bin/crs_stat
$OLD_HOME/bin/oifcfgiflist -p -n
$OLD_HOME/bin/oifcfggetif
$OLD_HOME/bin/ocrcheck
cat/etc/oracle/ocr.loc /var/opt/oracle/ocr.loc
$OLD_HOME/bin/crsctlget css diagwait
$OLD_HOME/bin/srvctlconfig nodeapps -n `hostname | cut -d'.' -f1 | awk '{ print tolower($0); }'` -a
$OLD_HOME/OPatch/opatchlsinventory oh=$OLD_HOME
ifconfig              ## location and exact syntax innote 1054902.1
unsetORACLE_HOME

8.       设置"CRS=true" for OLD_HOME
/ocw/grid/oui/bin/runInstaller-updateNodeList ORACLE_HOME="/ocw/grid" CRS=true
## ==>/ocw/grid is current clusterware home
方案评价
Downgrade方案虽然可以进行版本回退,但是在实际当中使用极少,某些企业对此进行了测试,但是当前Oracle ACS未发现国内大型企业客户有采用此种方式进行正式生产系统回退的先例。
这种方式的优点:
l  不占用升级时间,此操作只在确定需要回退是才开始执行
缺点
l   技术本身限制较多,包括COMPATIBLE参数不能升级,很多新功能无法使用
l   影响面大,不仅涉及到数据库,rdbms,甚至包括集群软件都需要downgrade,因为涉及到集群操作,有可能完成downgrade后无法恢复到原来运行的状态
l   Downgrade时间长,具体时间需要进行详细测试之后才能确定,但是肯定以小时作为时间计量单位,另外完成downgrade后需要花费额外的时间来验证downgrade是成功的
l   操作复杂需要单独测试,整个操作步骤很多,中间步骤出现问题进行处理难度将更大,所以此种方案必须进行多次多场景测试才可应用于生产环境。
l   风险度高,因为在决定downgrade的时候,仅有11g数据库内有最完整数据,此时如果downgrade出现数据问题,将会导致数据丢失


GoldenGate说明
由于本次升级,对于原有10g数据库不进行变更,那么如果在升级过程中或者校验时发现问题可以回退到原有10g版本数据库系统,对业务影响较小,但是如果校验成功,11g数据库连接应用对外服务后发现问题,由于有新的数据更新,已经无法回退连接到原有10g版本数据库系统,如果在11g版本数据库连接应用之前,可以实施Oracle GoldenGate,将连接应用后的数据变更同步到原有10g版本数据库,那么当运行一段时间后发现11g版本数据库存在问题,也可以切换回原有的10g版本数据库而没有数据丢失。
约束条件
要求11g版本的数据库打开归档,并且打开补充日志,建议开启force logging以防止隐患。
对于RAC环境11g数据库,GoldenGate的相关软件和工作目录需要配置在shared disk环境中,从而保证对所有node都是可用的,从任何一个node都可以启动GoldenGate的进程,当其中一个node出现异常时,可以在剩余的node启动而无须修改任何配置参数。

GoldenGate实施步骤
以下所写步骤请参考,正式实施前请进行测试形成正式文档。
1.       安装Oracle GoldenGate(以下简称OGG)(新系统指11g版本数据库,旧系统指10g版本数据库,以下对新旧系统都执行)
a)        建议使用Oracle用户安装和配置OGG;
b)        可以在任意位置建立OGG软件安装目录,例如/app/goldengate,该目录的属主为Oracle用户。但为了实现高可用性,建议放在共享阵列,并且所在磁盘必须有一定的空间,例如几十个G。
c)        使用管理员用户通过ftp等方式上传OGG软件并解压缩.
2.       数据库必须打开归档模式(对新系统执行)
Grantsucceeded.

SYS@ora11g>archive log list;
Database logmode       Archive Mode
Automaticarchival         Enabled
。。。。。。
3.       检查日志记录要求(对新系统执行)
SQL>selectsupplemental_log_data_min from v$database;
结果为NO,表示没有打开附加日志。使用以下命令将数据库附加日志打开:
SQL>alterdatabase add supplemental log data;
切换日志以使附加日志生效:
SQL>ALTERSYSTEM ARCHIVE LOG CURRENT;
4.       建立OGG数据库用户(新旧系统执行)
OGG需要从数据字典读取表结构.OGG数据库用户权限:
CREATE USER goldengate  IDENTIFIED BY goldengate DEFAULT TABLESPACE USERS ;
GRANT CONNECT TO goldengate;
GRANT CREATE SESSION TO goldengate;
GRANT ALTER SESSION TO goldengate;
GRANT RESOURCE TO goldengate;
GRANT SELECT ANY DICTIONARY TO goldengate;
GRANT SELECT ANY TABLE TO goldengate;
GRANT FLASHBACK ANY TABLE TO goldengate;
GRANT ALTER ANY  TABLE TOgoldengate;
目标端根据需要再额外添加其他权限,例如需要对表做DML:
GRANT INSERT ANY TABLE TO goldengate;
GRANT UPDATE ANY TABLE TO goldengate;
GRANT DELETE ANY TABLE TO goldengate;

5.       在源端OGG命令行模式下为数据库表添加trandata(新系统执行)
a)       GGSCI>DBLOGIN  USERID xxxxx, PASSWORD xxx
b)       GGSCI>ADD TRANDATA<owner>.<table>
6.       创建子目录,上传参数文件
a)       在安装目录下运行OGG命令行控制界面:
    ./Ggsci
b)       在OGG命令行界面下创建子目录:
    GGSCI> create subdirs
c)       通过ftp上传参数文件mgr, ext*,dpe*到dirprm文件夹中,后面手工通过edit param <进程名>编辑也可。
7.       配置GOLDENGATE 相关进程
a)       配置mgr进程
    GGSCI>edit param mgr
port 7809
--AUTORESTARTER *, RETRIES 3, WAITMINUTES 2, RESETMINUTES 60
--PURGEOLDEXTRACTS./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
    GGSCI>start mgr
    Manager started.

b)       配置源端抽取进程
(注:从此步骤起,请定义自己的extract/data pump/replicat名称,以及exttrail和rmttrail名称。建议抽取日志的进程以extXX命名,在网络上传输数据的data pump进程以dpeXX格式命名,replicat以repXX格式命名;本地队列以./dirdat/tX命名,远程队列以./dirdat/rX命名。)
    GGSCI>add ext extXX, tranlog, begin now
    EXTRACT added.

    GGSCI>add exttrail ./dirdat/tX, extextXX,  megabytes 50
    EXTTRAIL added.

    GGSCI>edit param extXX
EXTRACT extXX
--setenv (NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
USERID ogg,PASSWORD ogg
EXTTRAIL./dirdat/tX
dynamicresolution
tablesystem.custcardinfo1;
    GGSCI>add ext dpeXX, exttrailsource./dirdat/tX
    EXTRACT added.

    GGSCI>add rmttrail ./dirdat/rX, extdpeXX, megabytes 50
    RMTTRAIL added.

    GGSCI>edit param dpeXX
extract dpeXX
--setenv (NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
passthru
rmthost  旧系统IP,mgrport7809, compress     
rmttrail./dirdat/rX
Dynamicresolution
table <owner>.*;

8.       启动源端进程
a)       启动源端抓取进程:
    GGSCI>start er *

b)       查看源端进程状态:
    GGSCI>info er *
    RUNNING
    RUNNING
注:若目标端mgr进程未启动,则该步骤无法启动dpe*进程,需等目标端mgr进程启动后再启动。

9.       配置Oracle数据库的目标进程
a)       配置目标端投递进程:
   GGSCI>add rep repxx, exttrail ./dirdat/rX,nodbcheckpoint

b)       配置目标参数:
replicatrepXX
USERIDgoldengate, PASSWORD goldengate
--SETENV(NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
SETENV(NLS_LANG = "SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
reperrordefault, discard
discardfile./dirrpt/rp02.dsc, append, megabytes 50
grouptransops100
DDL includemapped
DDLERRORDEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
DDLOPTIONSreport
MAP<owner>.*, TARGET <owner>.*;

c)       启动目标端投递进程:
   GGSCI>start repXX
观察数据是否正确复制到目标端。
方案评价
使用Oracle GoldenGate作为回退方案,保证了再运行过程中存在一份在线数据备份,有效的保护了数据,所有的实施都在应用上线前进行实施,当出现问题时只需要恢复应用对数据库的指向即可。
这种方式的优点:
l  回退速度快操作简单,只需要进行应用数据库指向即可
l  存在在线数据备份,提升了数据安全
l  风险低,即使在OGG同步过程中出现问题,对运行的生产系统是没有直接影响的

缺点
l   需要额外购买软件,Oracle GoldenGate是单独产品,需要额外购买
l   安全风险,需要在新旧数据库分别创建数据库用户,加大安全风险
l   加长升级时间,由于要在应用连接数据库前启动OGG,所以OGG部署应该在UPGRADE之后,应用启动之前,这样就加大了应用停止时间
l   数据库直接性能影响,由于推荐打开数据库的force logging,并且开启补充日志,所以将会增加数据库redo开销,影响数据库性能。
l   数据库间接性能影响,因为主机资源是固定的,虽然OGG可以限制内存的使用量,当存在大事务或者redo量很大时,有可能OGG会消耗较大量系统资源,从而对同样在主机上运行的数据库系统产生影响。

本主题由 Maclean Liu(刘相兵 于 2013-10-6 14:57 设置高亮

你可能感兴趣的:([升级] 数据库升级到11g的应急方案)