+ All Categories
Home > Technology > Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

Date post: 25-Jun-2015
Category:
Upload: maris-elsins
View: 1,559 times
Download: 3 times
Share this document with a friend
Description:
These are the warmup slides for the Wildcard 13 conference (Riga, Latvia, September 13th.2013 Join the discussion with oracle professionals, get your problems solved and help others! Bring your questions and problems with you to discuss them in a larger group of oracle professionals. We'll discuss anything you have related to Oracle Databases - performance tuning, coding standards and instrumentation, configuration issues, database design, migration strategies, system architectures, upgrade issues, etc. The chances are: The question will be answered or the problem will be solved. You'll have more ideas to explore and try to address the issue. You'll spend fun time helping others by sharing your experience. You'll get a free beer for your courage to join the discussion.
Popular Tags:
37
Roundtable Discussion with Oracle Professionals Ask an Expert and Be an Expert Jože Senegačnik Māris Elsiņš Andrejs Vorobjovs
Transcript
Page 1: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

Roundtable Discussion with Oracle Professionals

Ask an Expert and Be an Expert

Jože Senegačnik Māris Elsiņš Andrejs Vorobjovs

Page 2: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian2

Jože Senegačnik• Owner of Dbprof d.o.o.• First experience with Oracle Version 4.1 in 1988• 25+ years of experience with Oracle RDBMS.• Proud member of the OakTable Network www.oaktable.net• Oracle ACE Director• VP of Slovenian OUG (SIOUG) board• CISA – Certified IS auditor• Blog about Oracle: http://joze-senegacnik.blogspot.com• Co-author of the OakTable book “Expert Oracle Practices”

by Apress (Jan 2010)

• PPL(A) / IR(SE) – private pilot license, instrument rating• Blog about flying: http://jsenegacnik.blogspot.com• Blog about Building Ovens, Baking and Cooking:

http://senegacnik.blogspot.com

Page 3: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian3

Māris ElsiņšGoogle: Elsins Oracle

Twitter, LinkedIn, Blog, Slideshare

Oracle [Apps] DBA – 8 years {PL/SQL Developer 3 years}Oracle Certified Master – 10g {9i/10g/11g/11i/R12 OCP}Speaker at Oracle Conferences – 14+ {since 2007}Pythian – {since 2011}FAN OF BAAG!

Page 4: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian4

Page 5: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian5

Roundtable Discussion!

Courage = BeerQuestions = PresentsBeer + Presents = Fun

Page 6: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian6

Warm-up 1: troubleshooting!• 10.2.0.3• Suddenly, we started getting lots of “ORA-

07445: exception encountered: core dump [qercoStart()+156]…”

• No code changes in the DB• MOS: there are bugs for SQLs with:

– Using ROWNUM < x condition in the where clause– Using ROWNUM condition and FULL OUTER joins– Using ROWNUM condition with UNION ALL set operation

Page 7: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian7

Warm-up 1: troubleshooting!Māris Elsiņš

Page 8: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian8

Warm-up 1: troubleshooting!• There is a “ROWNUM < x”

• There’s no “FULL OUTER”• There’s no “No UNION ALL”

Page 9: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian9

Warm-up 1: troubleshooting!• Try all workarounds listed in MOS bugs:

– Flushed the shared pool, eh?– bouncing the database, eeeh??– setting “_complex_view_merging”=false, uhh!

Eh…

• None of the bugs is our case. What’s common?

Page 10: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian10

Warm-up 1: troubleshooting!

Page 11: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian11

Warm-up 1: troubleshooting!

Page 12: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian12

Warm-up 1: troubleshooting!

Page 13: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian13

Warm-up 1: troubleshooting!

Page 14: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian14

Warm-up 1: troubleshooting!

Page 15: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian15

Warm-up 1: troubleshooting!• Oracle introduced native FULL OUTER JOIN

operation in 10.2.0.5. Before that, it was implemented using the UNION ALL operation.

• “OR” and “IN” + “OR Expansion” transformation = UNION ALL (CONCATENATION)

Page 16: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian16

My query – Statistics changed and “OR Expansion” was applied

Page 17: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian17

Warm-up 1: troubleshooting!SQL> ALTER SESSION SET EVENTS '10053 trace name context forever,level 1';SQL> alter session set tracefile_identifier=CR758708_2;SQL> alter session set max_dump_file_size=unlimited;SQL> explain plan for SELECT CBMD.CBMD_BASE_MDL_NUMBER, ....

$ more test_ora_17805_CR758708_2.trc************************************* PARAMETERS WITH DEFAULT VALUES ******************************..._px_broadcast_fudge_factor = 100 _ordered_nested_loop = true _no_or_expansion = false optimizer_index_cost_adj = 100 optimizer_index_caching = 0

Page 18: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian18

Warm-up 1: troubleshooting!• Alter system set “_no_or_expansion” = true;

• And I deserve a beer!

Page 19: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian19

Warm-up 2: troubleshooting!Māris Elsiņš

Page 20: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian20

Warm-up 2: troubleshooting!• eBusiness Suite. • Oracle Forms. • frmweb memory footprint is under 200M.• Sudden spikes to 1.2G• 7 processes = Unusable system

Page 21: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian21

Warm-up 2: troubleshooting!• Initial troubleshooting efforts

– Forms FRD trace. Too hard to read and low level tracing caused issues to end users.

– Gdb / Gcore – memory dumps – reading a 1.2 Gb memory dumps is “too exciting” (may be I just can’t do it properly”

Page 22: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian22

Warm-up 2: troubleshooting!• Hypothesis and the plan:

- Forms process grows because it receives huge amount of data from the database. How to confirm?

- Find the query. How to find it?- Check MOS- Fix the bug

Page 23: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian23

Warm-up 2: troubleshooting!• R12.1.3 has proper instrumentation for

oracle sessions!• exec

dbms_monitor.CLIENT_ID_TRACE_ENABLE('BFONROUGE', waits=>false, binds=>true);

Page 24: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian24

Warm-up 2: troubleshooting!• Recursive and non-Recursive SQLs:PARSE #140120325469424:c=0,e=39,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1514468521,tim=1377002345178916PARSE #140120325223680:c=0,e=45,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=2933345646,tim=1377002345179984PARSE #140120325374992:c=0,e=40,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=0,tim=1377002345184564PARSE #140120323759152:c=0,e=35,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=1,plh=2782854086,tim=1377002345185121PARSE #140120325363448:c=0,e=36,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=1,plh=1057973958,tim=1377002345185491PARSE #140120325362576:c=0,e=34,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=1,plh=749271464,tim=1377002345185890PARSE #140120325535560:c=0,e=42,p=0,cr=0,cu=0,mis=0,r=0,dep=3,og=4,plh=2020579421,tim=1377002345186987PARSE #140120325534544:c=1000,e=718,p=0,cr=0,cu=2,mis=1,r=0,dep=3,og=4,plh=0,tim=1377002345189805PARSE #140120325373648:c=0,e=36,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=1895590010,tim=1377002345192930PARSE #140120325364640:c=0,e=106,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1388734953,tim=1377002345852910PARSE #140120325526432:c=0,e=166,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=4065726397,tim=1377002347109204

• dep=0 = non-recursive = called by the form.

Page 25: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian25

Warm-up 2: troubleshooting!$ tkprof PROD_ora_14363.trc PROD_ora_14363.trc.tkp sort=fchcnt sys=no$ grep "Parsing user id" PROD_ora_14363.trc.tkp | moreParsing user id: 173Parsing user id: 173 (recursive depth: 1)Parsing user id: 173 (recursive depth: 2)Parsing user id: 173 (recursive depth: 1)Parsing user id: 173

Page 26: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian26

Warm-up 2: troubleshooting!$ more PROD_ora_14363.trc.tkp********************************************************************************SQL ID: 2f4375b2hn94s Plan Hash: 603069092SELECT *FROM ( SELECT l.address1, l.address1||decode(l.address2,null,null,';'||

call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse 3 0.00 0.00 0 0 0 0Execute 3 0.01 0.01 0 0 0 0Fetch 3840 33.82 34.76 0 619685 0 253415------- ------ -------- ---------- ---------- ---------- ---------- ----------total 3846 33.84 34.79 0 619685 0 253415

Page 27: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian27

Warm-up 2: troubleshooting!$ egrep "^\*\*\* MODULE|2f4375b2hn94s" PROD_ora_14363.trc | grep -B1 "2f4375b2hn94s”

*** MODULE NAME:(e:CSF:frm:CSXSRISR) 2013-08-21 03:46:26.026PARSING IN CURSOR #140415761994912 len=2289 dep=0 uid=173 oct=3 lid=173 tim=1377071356826929 hv=3305776280 ad='262dad2180' sqlid='2f4375b2hn94s’

• Submitted a SR – still under being worked on.

Page 28: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian28

Warm-up 3: Performance! Measurement errorsJože Senegačnik

Page 29: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

I/O Bottleneck ProblemResponse Time Component Time % Elap AvgEla ---------------------------------------- ----------- ------- ---------CPU service 3934.97s 48.39% 0.000716un-accounted for time 1363.01s 16.76% db file sequential read 1122.00s 13.80% 0.032253gc buffer busy 451.73s 5.56% 0.011746log buffer space 451.64s 5.55% 0.123974buffer busy waits 176.79s 2.17% 0.029579gc cr block 2-way 156.49s 1.92% 0.003287gc cr grant 2-way 100.20s 1.23% 0.006541latch: cache buffers chains 98.92s 1.22% 0.005708gc current grant 2-way 69.68s 0.86% 0.006728latch: library cache 30.10s 0.37% 0.010030row cache lock 28.95s 0.36% 0.018727gc current block 2-way 26.72s 0.33% 0.003828gc cr block busy 19.35s 0.24% 0.006802gc current grant busy 15.30s 0.19% 0.004999latch: row cache objects 14.28s 0.18% 0.006165gc cr block 3-way 11.73s 0.14% 0.002952gc current block 3-way 11.34s 0.14% 0.003440log file sync 10.71s 0.13% 0.315066enq: SQ - contention 9.14s 0.11% 0.060911

Page 30: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

Timings for Single Block Reads – 3 node RAC

Single Block Read Times From AWR

0

5

10

15

20

25

30

35

40

45

50

Snapshot ID - 20 minutes interval

Sin

gle

Blo

ck R

ead

Tim

e i

n

Mil

liseco

nd

s

Inst 1

Page 31: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

Timings for Single Block Reads – 3 node RAC

Single Block Read Times From AWR

0

5

10

15

20

25

30

35

40

45

50

Snapshot ID - 20 minutes interval

Sin

gle

Blo

ck R

ead

Tim

e i

n

Mil

liseco

nd

s

Inst 1

Inst 2Inst3

Page 32: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

The Facts About The I/O Bottleneck Problem• Facts:

– 3 node RAC– Same storage– Single block read time for Instance 1 was substantially different from

read times for other instances during off hours – 5 batch jobs during off hours

• The timings for Instance 1 are obviously not correct• The sandwich syndrome (output from strace)

gettimeofday({1159440978, 931945}, NULL) = 0pread(14, "\6\242\0\0\375\23\0\2+\254.\0\0\0\1\6\0054\0\0\1\0\5\0"..., 8192, 455

057408) = 8192gettimeofday({1159440978, 944159}, NULL) = 0

• Waiting in runque for CPU exaggerates all wait times of the process.

Page 33: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

© 2013 Pythian33

Warm-up 4: Performance! Database Connection ProblemsJože Senegačnik

Page 34: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

Too many sessions• 35000 sessions per instance • database level 70000 (2-node RAC)

Page 35: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"
Page 36: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"
Page 37: Wildcard13 - warmup slides for the "Roundtable discussion with Oracle Professionals"

http://www.youtube.com/watch?v=xNDnVOCdvQ0


Recommended