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

2026-02-01Oracle / RAC / 性能优化

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

参数:_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';

  1. 如果设置了ORA_TZFILE环境变量请去掉这个环境变量
  1. 如果安装了Oracle Application Express,备份一个apxrelod.sql文件到到非Oracle目录下。
  1. 如果有基于fixed objects创建的对象,后面删除这些对象时有可能遇到ORA-600错误,downgrade完成后可以重建这些对象。
  1. 以Oracle用户登录系统
  1. 停止所有节点的Enterprise Manager
  1. 以sysdba使用sqlplus连接数据库
  1. 以downgrade模式启动数据库

SQL> STARTUP DOWNGRADE

  1. 如果配置了Enterprise Manager,先删除sysman用户

DROPUSER sysman CASCADE;

SQL> SPOOL downgrade.log

  1. 执行downgrade脚本

SQL> @catdwgrd.sql

该脚本需要在11g版本的环境下执行11g版本的脚本。如果有组件downgrade失败会显示ORA-39709报错,必须让所有组件downgrade都成功数据库downgrade才成功。

  1. 停止日志记录

SQL> SPOOL OFF

  1. 停止数据库并退出sqlplus

SQL>SHUTDOWN IMMEDIATE

SQL> EXIT

  1. 修改ORACLE_HOME等环境变量到10g版本
  1. 以sysdba使用sqlplus连接数据库
  1. 以upgradee模式启动数据库

SQL> STARTUPUPGRADE

  1. 制定日志路径

SQL> SPOOL reload.log

  1. 执行catrelod.sql脚本

SQL> @catrelod.sql

Catrelod脚本将会重新在10g版本数据库中加载各个组件的适当版本。

  1. 停止日志记录

SQL> SPOOLOFF

  1. 停止数据库,修改参数CLUSTER_DATABASE为true并正常启动数据库。
  1. 运行utlrp.sql脚本

SQL>@utlrp.sql

  1. 修改集群内注册信息

$ 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

  1. 在OCR node执行:

$NEW_HOME/crs/install/rootcrs.pl -downgrade -force -lastnode -oldcrshome$OLD_HOME -version $OLD_VERSION

  1. 清理各个节点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

  1. 删除各个节点checkpoint file

rm -rf $ORACLE_BASE/Clusterware/ckptGridHA_${nodename}.xml

  1. 检查各个节点oratab文件中asm是否指向旧版本位置
  1. 启动旧版本集群软件

$OLD_HOME/bin/crsctlstart crs

  1. 检查旧版本集群运行是否正常:

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

  1. 设置"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版本数据库,以下对新旧系统都执行)
  1. 数据库必须打开归档模式(对新系统执行)

Grantsucceeded.

SYS@ora11g>archive log list;

Database logmode Archive Mode

Automaticarchival Enabled

。。。。。。

  1. 检查日志记录要求(对新系统执行)

SQL>selectsupplemental_log_data_min from v$database;

结果为NO,表示没有打开附加日志。使用以下命令将数据库附加日志打开:

SQL>alterdatabase add supplemental log data;

切换日志以使附加日志生效:

SQL>ALTERSYSTEM ARCHIVE LOG CURRENT;

  1. 建立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;

  1. 在源端OGG命令行模式下为数据库表添加trandata(新系统执行)

a) GGSCI>DBLOGIN USERID xxxxx, PASSWORD xxx

b) GGSCI>ADD TRANDATA<owner>.

  1. 创建子目录,上传参数文件

a) 在安装目录下运行OGG命令行控制界面:

./Ggsci

b) 在OGG命令行界面下创建子目录:

GGSCI> create subdirs

c) 通过ftp上传参数文件mgr, ext*,dpe*到dirprm文件夹中,后面手工通过edit param <进程名>编辑也可。

  1. 配置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>.*;

  1. 启动源端进程

a) 启动源端抓取进程:

GGSCI>start er *

b) 查看源端进程状态:

GGSCI>info er *
RUNNING
RUNNING

注:若目标端mgr进程未启动,则该步骤无法启动dpe*进程,需等目标端mgr进程启动后再启动。

  1. 配置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会消耗较大量系统资源,从而对同样在主机上运行的数据库系统产生影响。.[ ]()[ ]()