• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Cloug Undocumented Secrets Black Magic
 

Cloug Undocumented Secrets Black Magic

on

  • 2,546 views

My encore session from OOW and CLOUG on Oracle 11g Tips

My encore session from OOW and CLOUG on Oracle 11g Tips

Statistics

Views

Total Views
2,546
Views on SlideShare
2,534
Embed Views
12

Actions

Likes
2
Downloads
0
Comments
1

3 Embeds 12

http://www.linkedin.com 9
https://www.linkedin.com 2
http://www.lmodules.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Hi Ben

    Good day

    I need a copy of that document posed - Excellent Presentation
    Oracle Community & admirer Oracle
    Ali
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cloug Undocumented Secrets Black Magic Cloug Undocumented Secrets Black Magic Presentation Transcript

    • Session : Undocumented Oracle DBA Utilities: Black Magic for the Oracle Expert Ben Prusinski Ben Prusinski and Associates www.ben-oracle.com [email_address] CLOUG/ Santiago, Chile Monday 13 April 2009
    • Speaker Qualifications Ben Prusinski
      • Oracle ACE and Oracle Certified Professional with 14 plus years of real world experience with Oracle since version 7.3.4
      • Oracle Author of two books on Oracle database technology
    • Agenda: Undocumented Oracle Utilities
      • Top new features in Oracle 11g
      • Performance Tools:
      • Autotrace, SQL Trace, TKPROF, DBMS_STATS, SQL Tune
      • Oradebug
      • Hidden Oracle 11g parameters
      • Useful V$ and X$ tables for Oracle 11g
      • Power System Tools: dbx, trace, orakill
      • ORA-0600 Tips and Tricks
    • Top Features for Oracle 11g
      • ADR for monitoring
      • Data Recovery Advisor with RMAN for Oracle Backup and Recovery with Oracle 11g
      • Real Application Testing (RAT) features with 11g
      • New partitioning features for Oracle 11g Data Partitioning
      • Enhancements for Oracle 11g Performance Tuning
      • Invisible Indexes new feature for Oracle 11g
    • What is ADR for Oracle 11g?
      • ADR is the new Automatic Diagnostic Monitor with 11g release. Many new monitoring and reporting features.
      • Completely new paradigm for Oracle DBA monitoring
      • Available in both command line interface (adrci) or from Oracle 11g Grid/Database Control
      • Replaces alert.log, trace files text based monitoring in releases before 11g.
      • Alert.log still available but recommend you learn ADR
    • Introduction to Oracle 11g ADR
      • The new feature Oracle 11g Automatic Diagnostic Repository (ADR) has following new features:
      • One stop shop for monitoring and reporting on Oracle 11g
      • New feature for incident reporting and packaging (IPS)
      • Available with Oracle 11g Database/Grid Control GUI as well as from command line utility (adrci)
      • Provides access to all of the Oracle 11g trace files for networking, alert.log, etc.
    • Inside Automatic Diagnostic Monitor (ADR) for Oracle 11g
      • ADR stores main configuration details in log.xml file
      • Default ADR directory set Oracle 11g initialization diagnostic_dest parameter
      • SQL> show parameter diagnostic_dest
      • NAME TYPE VALUE
      • --------------------------------- ----------- ------
      • diagnostic_dest string /u01/app/oracle
    • Inside the ADR for Oracle 11g
      • ADR home directory located under default:
      • <ADR_BASE>/diag/rdbms/<db_name>/<instance_id >
      • [oracle@raclinux1 ~]$ adrci
      • ADRCI: Release 11.1.0.6.0 - Beta on Tue Jul 29 00:07:57 2008
      • Copyright (c) 1982, 2007, Oracle. All rights reserved.
      • ADR base = &quot;/u01/app/oracle&quot;
      • adrci> show home
      • ADR Homes:
      • diag/rdbms/ora11g/ora11g
    • Using the Automatic Diagnostic Repository (ADR)
      • Command line utility (adrci) from Oracle 11g Grid Control
      • Help Commands with ADR: help and extended help
      • adrci> help
      • HELP [topic]
      • Available Topics:
      • CREATE REPORT
      • ECHO
      • EXIT
      • HELP
      • HOST
      • IPS
      • PURGE
      • RUN
      • SET BASE
      • SET BROWSER
      • SET CONTROL
      • SET ECHO
      • SET EDITOR
      • SET HOMES | HOME | HOMEPATH
      • SET TERMOUT
      • SHOW ALERT
      • SHOW BASE
      • SHOW CONTROL
      • SHOW HM_RUN
      • SHOW HOMES | HOME | HOMEPATH
      • SHOW INCDIR
      • SHOW INCIDENT
    • Using extended help with Oracle 11g ADR
      • [oracle@raclinux1 ~]$ adrci
      • ADRCI: Release 11.1.0.6.0 - Beta on Tue Jul 29 00:29:52 2008
      • Copyright (c) 1982, 2007, Oracle. All rights reserved.
      • ADR base = &quot;/u01/app/oracle&quot;
      • adrci> help extended
      • HELP [topic]
      • Available Topics:
      • BEGIN BACKUP
      • CD
      • DDE
      • DEFINE
      • DESCRIBE
      • END BACKUP
      • LIST DEFINE
      • MERGE ALERT
      • MERGE FILE
      • QUERY
      • SET COLUMN
      • SHOW CATALOG
      • SHOW DUMP
      • SHOW SECTION
      • SHOW TRACE
      • SHOW TRACEMAP
      • SWEEP
      • UNDEFINE
      • VIEW
    • Viewing alert.log and trace files with ADR for Oracle 11g
      • Using ADR to view alert.log:
      • Use the show alert command with ADR:
      • [oracle@raclinux1 ~]$ adrci
      • ADRCI: Release 11.1.0.6.0 - Beta on Sun Aug 17 21:17:08 2008
      • Copyright (c) 1982, 2007, Oracle. All rights reserved.
      • ADR base = &quot;/u01/app/oracle&quot;
      • adrci> show alert
      • Choose the alert log from the following homes to view:
      • 1: diag/rdbms/ora11g/ora11g
      • 2: diag/rdbms/ora11g/ORA11G
      • 3: diag/rdbms/default/ORA11G
      • 4: diag/rdbms/unknown/ORA11G
      • 5: diag/clients/user_oracle/host_3681296775_11
      • 6: diag/tnslsnr/raclinux1/listener
      • Q: to quit
      • Please select option: 1
    • Viewing the Oracle 11g alert.log with ADR
      • 2008-07-31 15:23:53.534000 -04:00
      • Starting ORACLE instance (normal)
      • 2008-07-31 15:23:55.226000 -04:00
      • LICENSE_MAX_SESSION = 0
      • LICENSE_SESSIONS_WARNING = 0
      • Shared memory segment for instance monitoring created
      • Picked latch-free SCN scheme 2
      • Using LOG_ARCHIVE_DEST_1 parameter default value as /u01/app/oracle/product/11.1.0/11g/dbs/arch
      • Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
      • Autotune of undo retention is turned on.
    • Viewing trace files with ADR for Oracle 11g
      • Use the show tracefile command for ADR with Oracle 11g
      • adrci> show tracefile
      • diag/rdbms/ora11g/ora11g/trace/alert_ora11g.log
      • diag/rdbms/ora11g/ora11g/trace/ora11g_ora_21555.trc
      • diag/rdbms/ora11g/ora11g/trace/ora11g_vktm_21688.trc
    • Incident Reporting with ADR for Oracle 11g
      • ADR uses incidents for critical errors with Oracle 11g
      • These incidents can be packaged by ADR and sent to Oracle support for analysis with Oracle 11g
      • Useful new feature with Oracle 11g for problem resolution and reporting
      • Performs many of the tasks used by the RDA (Remote Diagnostic Assistant) for releases before Oracle 11g.
    • Show Incident with ADR and Oracle 11g
      • Critical errors appear as incidents: can use show incident command for ADR with Oracle 11g
      • adrci> set homepath diag/rdbms/ora11g/ORA11G
      • adrci> show incident
      • ADR Home = /u01/app/oracle/diag/rdbms/ora11g/ORA11G:
      • *************************************************************************
      • INCIDENT_ID PROBLEM_KEY CREATE_TIME
      • -------------------- ----------------------------------------------------------- ----------------------------------------
      • 11009 ORA 600 [kssadpm: null parent] 2008-08-15 19:08:30.464549 -04:00
      • 1 rows fetched
    • Show incident detail for ADR and Oracle 11g
      • Detail view for incidents with ADR and Oracle 11g:
      • adrci> show incident -mode detail -p &quot;incident_id=11009&quot;
      • ADR Home = /u01/app/oracle/diag/rdbms/ora11g/ORA11G:
      • *************************************************************************
      • **********************************************************
      • INCIDENT INFO RECORD 1
      • **********************************************************
      • INCIDENT_ID 11009
      • STATUS ready
      • CREATE_TIME 2008-08-15 19:08:30.464549 -04:00
      • PROBLEM_ID 1
    • Packaging Incidents for Oracle 11g Support
      • ADR provides the following commands for managing incidents:
      • IPS CREATE PACKAGE for new incident with Oracle 11g
      • IPS ADD INCIDENT <incident_id> package <package_id>
      • IPS GENERATE PACKAGE <package_id> in <directory>
      • This procedure creates a ZIP file with the trace diagnostics for Oracle support to analyze for critical errors.
      • Use the IPS SHOW CONFIGURATION command to check configuration for ADR incidents.
    • Example: Incident packages for ADR and Oracle 11g
      • First we need to create a new package for incident:
      • adrci> ips create package
      • Created package 1 without any contents, correlation level typical
      • Then we need to add the incident to the new package for ADR:
      • adrci> ips add incident 11009 package 1;
      • Added incident 11009 to package 1
      • Finally, we need to generate the package with data:
      • adrci> ips generate package 1 in /u01/app/oracle/adrci/support
      • Generated package 1 in file /u01/app/oracle/adrci/support/IPSPKG_20080817214731_COM_1.zip, mode complete
      • The new file is generated as a zip file in the directory for support.
    • Performance Toolkit for Oracle 11g
      • Every DBA should use these tools for tuning Oracle!
      • Autotrace
      • SQL Trace
      • TKPROF
      • DBMS_STATS
      • DBMS_SQLTUNE packages
      • ORADEBUG
    • Using Autotrace with Oracle 11g
      • Autotrace useful quick and dirty tool for tracing with Oracle 11g.
      • Provides many tracing and tuning options:
      • explain plan
      • costs associated with SQL queries
      • tuning statistics
      • Used with SQL*PLUS interface
      • Excellent starting point for tuning SQL queries
    • Using Autotrace with Oracle 11g
      • Use the set autotrace on command in SQL*Plus to enable Autotrace and set autotrace off to disable autotrace tool.
      • Syntax for autotrace:
      • SQL> set autotrace
      • Usage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
      • SQL>
    • Autotrace Example for Oracle 11g
      • SQL> set autotrace on
      • SQL> select prod_name, prod_list_price
      • 2 from sh.products
      • 3 where prod_list_price>7.99
      • 4 and
      • prod_list_price<69.99;
    • Autotrace with Oracle 11g
      • Execution Plan
      • ----------------------------------------------------------
      • Plan hash value: 1954719464
      • ------------------------------------------------------------------------------
      • | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
      • ------------------------------------------------------------------------------
      • | 0 | SELECT STATEMENT | | 3 | 105 | 3 (0)| 00:00:01 |
      • |* 1 | TABLE ACCESS FULL| PRODUCTS | 3 | 105 | 3 (0)| 00:00:01 |
      • ------------------------------------------------------------------------------
      • Predicate Information (identified by operation id):
      • ---------------------------------------------------
      • 1 - filter(&quot;PROD_LIST_PRICE&quot;<69.99 AND &quot;PROD_LIST_PRICE&quot;>7.99)
      • Statistics
      • ----------------------------------------------------------
      • 8 recursive calls
      • 0 db block gets
      • 10 consistent gets
      • 0 physical reads
      • 0 redo size
      • 2548 bytes sent via SQL*Net to client
      • 453 bytes received via SQL*Net from client
      • 5 SQL*Net roundtrips to/from client
      • 0 sorts (memory)
      • 0 sorts (disk)
      • 52 rows processed
    • How to Use SQL Trace with Oracle 11g
      • SQL Trace powerful tool for the serious Oracle Performance Expert
      • Event based: 10046 (SQL Trace), 10053 (Cost Based Optimizer- CBO)
      • Can tune instance, database or session level
      • Use DBMS_SUPPORT, ORADEBUG, or SQL*PLUS commands to enable tracing activities with Oracle 11g.
    • How to Perform SQL Trace for Oracle 11g
      • Oracle Metalink Note: 199081.1
      • Provides Good Overview Reference for SQL Trace
      • Using SQL*PLUS commands for SQL trace at session/instance levels:
      • ALTER SYSTEM/SESSION SET SQL_TRACE=TRUE;
      • ALTER SYSTEM/SESSION SET TIMED_STATISTICS=TRUE;
      • Optional for SQL Timing tracing details:
      • ALTER SYSTEM/SESSION SET EVENTS '10046 trace name context forever, level <level>';
      • Outputs SQL trace files to user_dump_dest as .trc file.
      • SHOW PARAMETER USER_DUMP_DEST
    • SQL Trace Example for Oracle 11g
      • Should use SYS enabled account to run the SQL trace
      • Need to have explain plan enabled (ie: utlxplan.sql)
      • Enable parameters for SQL tracing: timed_statistics, sql_trace
      • Recommend use ALTER SESSION as ALTER SYSTEM can place load on Oracle 11g system and impact performance.
      • SQL> alter session set timed_statistics=true;
      • Session altered.
      • SQL> alter session set sql_trace=true;
      • Session altered.
      • SQL> show parameter user_dump_dest
      • NAME TYPE VALUE
      • ------------------------------------ ----------- ------------------------------
      • user_dump_dest string /u01/app/oracle/diag/rdbms/ora
      • 11g/ORA11G/trace
    • Contents of SQL trace file
      • Use the ALTER SESSION SET TRACEFILE_IDENTIFIER command to name trace file for easy identification
      • SQL> alter session set tracefile_identifier='products_sqltune';
      • Session altered.
      • SQL> show parameter tracefile_identifier
      • NAME TYPE VALUE
      • ------------------------------------ ----------- ------------------------------
      • tracefile_identifier string products_sqltune
      • Contents of sample SQL Trace file:
      • PARSING IN CURSOR #2 len=104 dep=0 uid=0 oct=3 lid=0 tim=1219028054543774 hv=4040144915 ad='269bdafc' sqlid='9cwk38msczf0m'
      • select prod_name, prod_list_price
      • from sh.products
      • where prod_list_price>11.99
      • and
      • prod_list_price<99.99
      • END OF STMT
      • PARSE #2:c=20000,e=29286,p=0,cr=2,cu=0,mis=1,r=0,dep=0,og=1,tim=1219028054543755
      • EXEC #2:c=0,e=46,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1219028054543990
      • FETCH #2:c=0,e=195,p=0,cr=3,cu=0,mis=0,r=1,dep=0,og=1,tim=1219028054544342
      • FETCH #2:c=0,e=60,p=0,cr=1,cu=0,mis=0,r=15,dep=0,og=1,tim=1219028054544999
      • FETCH #2:c=0,e=115,p=0,cr=2,cu=0,mis=0,r=15,dep=0,og=1,tim=1219028054561250
      • FETCH #2:c=0,e=89,p=0,cr=1,cu=0,mis=0,r=15,dep=0,og=1,tim=1219028054617141
      • FETCH #2:c=0,e=31,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1219028054628186
      • STAT #2 id=1 cnt=46 pid=0 pos=1 obj=70464 op='TABLE ACCESS FULL PRODUCTS (cr=7 pr=0 pw=0 time=0 us cost=3 size=175 card=5)'
    • What is the TKPROF Utility?
      • TKPROF is the Trace Kernel Profiler
      • Useful for formatting trace files for tuning sessions
      • Flexible options for performance report statistics
      • Cleans up the raw SQL trace files into human readable tuning reports.
      • Oracle Metalink Note:41634.1 TKPROF Simplistic Overview
    • How to Use TKPROF
      • TKPROF takes the trace file and output report file plus performance specific parameters.
      • Many parameter options for using tkprof
      • Syntax for TKPROF:
      • tkprof trace_file.trc output_file.rpt [waits={yes|no}] [sort={yes|no}] [print=option] [aggregate={yes|no}] [insert={filename}] [sys={yes|no}] [table={schema.table}] [explain={schema/password}] [record=filename] [width=n]
    • Getting Help with TKPROF
      • TKPROF Help:
      • [oracle@raclinux1 trace]$ tkprof
      • Usage: tkprof tracefile outputfile [explain= ] [table= ]
      • [print= ] [insert= ] [sys= ] [sort= ]
      • table=schema.tablename Use 'schema.tablename' with 'explain=' option.
      • explain=user/password Connect to ORACLE and issue EXPLAIN PLAN.
      • print=integer List only the first 'integer' SQL statements.
      • aggregate=yes|no
      • insert=filename List SQL statements and data inside INSERT statements.
      • sys=no TKPROF does not list SQL statements run as user SYS.
      • record=filename Record non-recursive statements found in the trace file.
      • waits=yes|no Record summary for any wait events found in the trace file.
      • sort=option Set of zero or more of the following sort options:
      • prscnt number of times parse was called
      • prscpu cpu time parsing
      • prsela elapsed time parsing
      • prsdsk number of disk reads during parse
      • prsqry number of buffers for consistent read during parse
    • Formatting SQL trace file with TKPROF
      • Example:
      • [oracle@raclinux1 trace]$ tkprof ORA11G_ora_9163_products_sqltune.trc tune_sql.rpt waits=yes aggregate=yes sys=yes explain=sys/oracle
      • TKPROF: Release 11.1.0.6.0 - Production on Sun Aug 17 23:52:36 2008
      • Copyright (c) 1982, 2007, Oracle. All rights reserved.
    • Output Report for SQL Trace with TKPROF
      • SQL ID : 1mpqj84y8wd72
      • select *
      • from
      • oe.products
      • call count cpu elapsed disk query current rows
      • ------- ------ -------- ---------- ---------- ---------- ---------- ----------
      • Parse 1 0.01 0.01 0 0 0 0
      • Execute 1 0.00 0.00 0 0 0 0
      • Fetch 21 0.08 0.33 385 410 0 288
      • ------- ------ -------- ---------- ---------- ---------- ---------- ----------
      • total 23 0.09 0.35 385 410 0 288
      • Misses in library cache during parse: 1
      • Optimizer mode: ALL_ROWS
      • Parsing user id: SYS
      • Rows Row Source Operation
      • ------- ---------------------------------------------------
      • 288 HASH JOIN OUTER (cr=410 pr=385 pw=385 time=18571 us cost=108 size=144864 card=288)
      • 288 TABLE ACCESS FULL PRODUCT_INFORMATION (cr=16 pr=14 pw=14 time=25509 us cost=5 size=63360 card=288)
      • 288 TABLE ACCESS FULL PRODUCT_DESCRIPTIONS (cr=394 pr=371 pw=371 time=14095 us cost=102 size=81504 card=288)
      • Elapsed times include waiting on following events:
      • Elapsed times include waiting on following events:
      • Event waited on Times Max. Wait Total Waited
      • ---------------------------------------- Waited ---------- ------------
      • SQL*Net message to client 21 0.00 0.00
      • db file sequential read 2 0.00 0.00
      • db file scattered read 22 0.06 0.21
      • SQL*Net message from client 21 148.92 155.68
      • SQL*Net more data to client 4 0.01 0.02
      • ********************************************************************************
    • New Features for DBMS_STATS and Oracle 11g
      • DBMS_STATS provides collection and reporting of database and system level statistics for Oracle 11g.
      • New feature for DBMS_STATS with Oracle 11g is the ability to collect/gather column level statistics
      • Extended statistics collection for Oracle 11g and DBMS_STATS
      • Public and Private statistics collection
    • Extended Statistics with DBMS_STATS and Oracle 11g
      • First check default settings for DBMS_STATS and Oracle 11g using DBMS_STATS.GET_PARAM and DBMS_STATS.GET_PREFS
      • SQL> select dbms_stats.get_param('PUBLISH') from dual;
      • DBMS_STATS.GET_PARAM('PUBLISH')
      • --------------------------------------------------------------------------------TRUE
      • SQL> select dbms_stats.get_prefs('stale_percent','SH','products')
      • 2 stale_percent from dual;
      • STALE_PERCENT
      • -----------------------------------------------------------------------------
      • 10
    • Collecting Extended Statistics for Oracle 11g
      • Create column group for DBMS_STATS and Oracle 11g:
      • SQL> var ret_col varchar2(2000)
      • SQL> exec :ret_col := dbms_stats.create_extended_stats('SH','PRODUCTS','(PROD_ID, PROD_NAME)');
      • PL/SQL procedure successfully completed.
      • SQL> print :ret_col
      • RET_COL
      • Gather column statistics for Oracle 11g SH.PRODUCTS table
      • SQL> begin
      • 2 dbms_stats.gather_table_stats(
      • 3 ownname=>'SH',
      • 4 tabname=>'PRODUCTS',
      • 5 estimate_percent=>100,
      • 6 method_opt=>'FOR ALL COLUMNS SIZE SKEWONLY FOR COLUMNS (PROD_ID, PROD_NAME)',
      • 7 cascade=> true
      • 8 );
      • 9 end;
      • 10 /
      • SQL> select table_name, extension
      • 2 from dba_stat_extensions
      • 3 where owner='SH';
      • TABLE_NAME
      • ------------------------------
      • EXTENSION
      • --------------------------------------------------------------------------------
      • PRODUCTS
      • (&quot;PROD_ID&quot;,&quot;PROD_NAME&quot;)
    • DBMS_SQLTune Package
      • What is the DBMS_SQL Tune package?
      • Automates SQL tuning by using profiles to tune SQL.
      • Uses DBMS_SQLTUNE package as part of the SQL Tune Advisors (STA) with Oracle 11g
    • Using DBMS_SQLTUNE for Oracle 11g
      • Example:
      • SQL> DECLARE
      • 2 sql_task_name VARCHAR2(30);
      • 3 tune_sqltext CLOB;
      • 4 BEGIN
      • 5 tune_sqltext :=' SELECT * ' ||
      • 6 'FROM sales '|| 'WHERE prod_id=20 AND '|| 'cust_id=200 ';
      • 7 sql_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
      • 8 sql_text=>tune_sqltext,
      • 9 user_name=>'SH',
      • 10 scope=>'COMPREHENSIVE',
      • 11 time_limit=>60,
      • 12 task_name=>'TUNE_SH_TASK',
      • 13 description=>'New task for tuning SH query');
      • 14 END;
      • 15 /
      • PL/SQL procedure successfully completed.
    • Using DBMS_SQLTUNE for Oracle 11g (Continued)
      • DBMS_SQLTUNE uses the CREATE_TUNING_TASK function as part of SQL Tuning Advisor (STA) with 11g
      • Once we have created the tuning task, we need to execute it with the DBMS_SQLTUNE.EXECUTE_TUNING_TASK:
      • SQL> begin
      • 2 DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name=>' TUNE_SH_TASK');
      • 3 end;
      • 4 /
      • PL/SQL procedure successfully completed.
    • Viewing SQL Tuning Advisor Report for Oracle 11g
      • To view the SQL Tuning report, query the DBMS_SQLTUNE.REPORT_TUNING_TASK:
      • SQL> select dbms_sqltune.report_tuning_task('TUNE_SH_TASK')
      • 2 from dual;
      • DBMS_SQLTUNE.REPORT_TUNING_TASK('TUNE_SH_TASK')
      • ----------------------------------------------------------------------------------------------------
      • GENERAL INFORMATION SECTION
      • -------------------------------------------------------------------------------
      • Tuning Task Name : TUNE_SH_TASK
      • Tuning Task Owner : SH
      • Workload Type : Single SQL Statement
      • Scope : COMPREHENSIVE
      • Time Limit(seconds) : 60
      • Completion Status : COMPLETED
      • Started at : 08/14/2008 13:46:22
      • Completed at : 08/14/2008 13:46:23
      • DBMS_SQLTUNE.REPORT_TUNING_TASK('TUNE_SH_TASK')
      • ----------------------------------------------------------------------------------------------------
      • -------------------------------------------------------------------------------
      • Schema Name: SH
      • SQL ID : dbq1k7xwc387x
      • SQL Text : SELECT * FROM sales WHERE prod_id=20 AND cust_id=200
      • -------------------------------------------------------------------------------
      • FINDINGS SECTION (1 finding)
      • -------------------------------------------------------------------------------
      • 1- Index Finding (see explain plans section below)
    • Introducing Oradebug
      • What is Oradebug?
      • Why should you use it?
      • Performance Tuning
      • Hang Analysis
      • Dump Analysis for Oracle 11g Memory
      • Suspend and Resume Oracle processes
    • Inside Oradebug
      • Oradebug introduced in version 7.x release of Oracle
      • Poorly documented utility
      • Recommend caution when using oradebug
      • Syntax for Oradebug
    • Help options for Oradebug
      • Oradebug has MANY options!!!!
      • Use the oradebug help command to list all the main options available:
      • SQL> oradebug help
      • HELP [command] Describe one or all commands
      • SETMYPID Debug current process
      • SETOSPID <ospid> Set OS pid of process to debug
      • SETORAPID <orapid> ['force'] Set Oracle pid of process to debug
      • SETORAPNAME <orapname> Set Oracle process name to debug
      • SHORT_STACK Get abridged OS stack
      • CURRENT_SQL Get current SQL
      • DUMP <dump_name> <lvl> [addr] Invoke named dump
      • DUMPSGA [bytes] Dump fixed SGA
      • DUMPLIST Print a list of available dumps
      • EVENT <text> Set trace event in process
      • SESSION_EVENT <text> Set trace event in session
      • DUMPVAR <p|s|uga> <name> [level] Print/dump a fixed PGA/SGA/UGA variableDUMPTYPE <address> <type> <count> Print/dump an address with type info
      • SETVAR <p|s|uga> <name> <value> Modify a fixed PGA/SGA/UGA variabl
    • How to Use Oradebug- Tracing a Session
      • First, we need to obtain the SPID from V$SESSION and V$PROCESS:
      • SQL> select username, sid, serial#, paddr
      • 2 from
      • 3 v$session
      • 4 where username='SH';
      • USERNAME SID SERIAL# PADDR
      • ------------------------------ ---------- ---------- --------
      • SH 127 573 37A56AF0
      • SQL> select addr, pid, spid
      • 2 from v$process
      • 3 where addr='37A56AF0';
      • ADDR PID SPID
      • -------- ---------- ------------------------
      • 37A56AF0 18 14298
    • Tracing a session with Oradebug
      • Then we plug in the SPID to oradebug to trace session:
      • SQL> oradebug setospid 14298
      • Oracle pid: 18, Unix process pid: 14298, image: oracle@raclinux1.us.oracle.com (TNS V1-V3)
      • We then set the unlimit parameter for the trace file with Oradebug:
      • SQL> oradebug unlimit
      • Statement processed.
      • Now we are ready to start the trace for our session with Oradebug:
      • SQL> oradebug event 10046 trace name context forever, level 4
      • Statement processed.
    • Tracing SQL for Session with Oradebug
      • Oradebug uses Events for tracing options.
      • Some common trace events:
      • 10053- Cost Based Optimizer (CBO) trace
      • 10046- SQL Trace
      • To start tracing with Oradebug:
      • SQL> oradebug event 10046 trace name context forever, level 4
      • Statement processed.
      • To stop and turn off tracing for Oradebug:
      • SQL> oradebug event 10046 trace name context off
      • Statement processed.
    • Locate the Session Trace file for Oradebug
      • Trace file output based on user_dump_dest parameter
      • Naming convention for trace files:
      • sid_ora_pid_traceid.trc
      • Easy way to find trace file is to set tracefile_identifier parameter:
      • alter session set tracefile_identifier=‘mytrace’;
      • Useful query to find trace file:
      • select u_dump.value || '/' || db_name.value || '_ora_' || v$process.spid || nvl2(v$process.traceid, '_' || v$process.traceid, null ) || '.trc' &quot;Trace File&quot; from v$parameter u_dump cross join v$parameter db_name cross join v$process join v$session on v$process.addr = v$session.paddr where u_dump.name = 'user_dump_dest' and db_name.name = 'db_name' and v$session.audsid= sys_context ('userenv','sessionid');
    • Viewing the Oradebug trace file for user session
      • Locate the trace file for oradebug
      • Format it with tkprof
      • [oracle@raclinux1 trace]$ tkprof ORA11G_ora_14298.trc trace_sh_session_sql.rpt waits=yes aggregate=yes sys=no explain=sh/sh
      • TKPROF: Release 11.1.0.6.0 - Production on Sat Aug 16 03:47:15 2008
      • Copyright (c) 1982, 2007, Oracle. All rights reserved.
      • [oracle@raclinux1 trace]$ view trace_sh_session_sql.rpt
      • Open the trace file with text editor
      • $ view trace_sh_session_sql.rpt
    • Using Oradebug for Hang Analysis
      • Oradebug is excellent tool for Solving Database Hang Issues.
      • Use the HANGANALYZE option with Oradebug
      • Syntax:
      • oradebug hanganalyze <level>
      • For Oracle RAC environment the syntax is:
      • oradebug –g all hanganalyze <level>
      • Level indicates amount of details to collect for a hang.
    • Oracle Database Hang Analysis with Oradebug
      • The debug levels defined for HANGANLYZE with oradebug are as follows:
      • Level 10: Dumps all processes ( IGN state )
      • Level 5: Level 4 + Dump all processes involved wait chain ( NLEAF )
      • Level 4: Level 3 + Dump leaf nodes ( blockers ) in wait chains ( LEAF, LEAF_NW, IGN_DMP state)
      • Level 3: Level 2 + Dump only processes considered in hang condition ( IN_HANG state )
      • Levels 1-2: Generate only HANGANALYZE output with no process dump
    • Hang Analysis Example for Oracle 11g
      • Set Environment for Hang Analysis:
      • SQL> oradebug setmypid
      • Statement processed.
      • SQL> oradebug unlimit
      • Statement processed.
      • Perform Hang Analysis:
      • SQL> oradebug hanganalyze 3
      • Hang Analysis in /u01/app/oracle/diag/rdbms/ora11g/ORA11G/trace/ORA11G_ora_10509.trc
      • SQL> exit
    • Review Hang Analysis Oracle 11g
      • Review output hang analysis from trace file:
      • [oracle@raclinux1 trace]$ view ORA11G_ora_10509.trc
      • *** 2008-08-16 02:50:45.862
      • Processing Oradebug command 'hanganalyze 3'
      • *** 2008-08-16 02:50:45.917
      • ===============================================================================
      • HANG ANALYSIS:
      • instances (db_name.oracle_sid): ora11g.ora11g
      • oradebug_node_dump_level: 3
      • analysis initiated by oradebug
      • ===============================================================================
      • Chains most likely to have caused the hang:
      • <no chains found>
      • ===============================================================================
      • No chains found.
      • ===============================================================================
      • Extra information that will be dumped at higher levels:
      • State of ALL nodes
      • ([nodenum]/cnode/sid/sess_srno/session/ospid/state/[adjlist]):
      • *** 2008-08-16 02:50:45.918
      • ===============================================================================
      • END OF HANG ANALYSIS
      • ===============================================================================
    • Dump Analysis for Oracle 11g Memory
      • Use Oradebug to dump contents of SGA and PGA memory
      • Useful for debugging memory leak issues
      • Dump Analysis for Oracle 11g Memory
    • Dumping the SGA with Oradebug for Oracle 11g
      • Use the oradebug dumpsga command:
      • SQL> oradebug setmypid
      • Statement processed.
      • SQL> oradebug unlimit
      • Statement processed.
      • SQL> oradebug dumpsga
      • Statement processed.
      • SQL> oradebug tracefile_name
      • /u01/app/oracle/diag/rdbms/ora11g/ORA11G/trace/ORA11G_ora_21292.trc
      • SQL> exit
    • Viewing SGA memory dump for Oracle 11g
      • Contents of SGA dump in oradebug trace file:
      • ----- Fixed Areas Dump (level=2) -----
      • ----- Dump of the Fixed SGA -----
      • ksmsgft ksmsgf_ [20000000, 20001000) = 00000000 00000000 00000000 00000000 ...
      • Dump of memory from 0x20000010 to 0x20001000
      • 20000010 00000000 00000000 00000000 00000000 [................]
      • Repeat 254 times
      • kywmr * kywmrsga_ [20001000, 20001004) = 37834020
      • ksllt kywmll_ [20001004, 20001068) = 00000000 00000000 00000000 00000000 ...
      • Dump of memory from 0x20001014 to 0x20001068
      • 20001010 00000000 00000000 00000000 [............]
      • 20001020 00000000 00000000 00000000 00000000 [................]
      • Repeat 1 times
      • 20001040 20001040 20001040 20001048 20001048 [@.. @.. H.. H.. ]
      • 20001050 00000000 00000000 00000000 00000000 [................]
      • 20001060 00000000 00000000 [........]
      • ub4 kywmpleq_ [20001068, 2000106C) = 00000001
      • ub4 kywmpleq1_ [2000106C, 20001070) = 00000001
    • Suspend and Resume Runaway Oracle Processes
      • Oradebug useful for stopping and restarting Oracle sessions
      • Be careful when using oradebug in Production Environments!
      • Syntax for Suspend Process with Oradebug:
      • oradebug suspend
      • To resume a process that has been suspended:
      • oradebug resume
      • Useful when need to delay batch process for more critical job.
    • Find the Session to Suspend
      • Find the session information to suspend:
      • SQL> select s.username, s.sid, p.spid
      • 2 from
      • 3 v$session s, v$process p
      • 4 where s.paddr=p.addr
      • 5 and
      • 6 s.username<>'SYS';
      • USERNAME SID SPID
      • ------------------------------ ---------- ------------------------
      • SH 140 18335
    • Suspend the Session with Oradebug
      • oradebug suspend:
      • SQL> oradebug setospid 18335
      • Oracle pid: 26, Unix process pid: 18335, image: oracle@raclinux1.us.oracle.com (TNS V1-V3)
      • SQL> oradebug suspend
      • Statement processed.
    • Resume Process for Oracle 11g with Oradebug
      • oradebug resume
      • SQL> oradebug resume
      • Statement processed.
    • Using Oradebug for Oracle RAC events
      • Oradebug use to trace issues for IPC with interconnect and RAC
      • Also possible to trace Clusterware processes for Oracle RAC with oradebug
      • Syntax for IPC memory dump with Oracle RAC:
      • oradebug ipc
    • Oracle RAC tracing with Oradebug for IPC
      • Example:
      • SQL> oradebug setmypid
      • Statement processed.
      • SQL> oradebug unlimit
      • Statement processed.
      • SQL> oradebug ipc
      • Information written to trace file.
      • SQL> oradebug tracefile_name
      • /u01/app/oracle/admin/RACDB/udump/racdb1_ora_6391.trc
      • SQL> exit
    • Oracle 11g RAC Trace with Oradebug
      • Review trace file for interconnect trace with Oradebug for RAC:
      • SSKGXPT 0xcc75e9c flags SSKGXPT_READPENDING info for network 0
      • socket no 7 IP 10.10.10.11 UDP 2247
      • sflags SSKGXPT_UP
      • info for network 1
      • socket no 0 IP 0.0.0.0 UDP 0
      • sflags SSKGXPT_DOWN
      • active 0 actcnt 1
      • context timestamp 0
      • no ports
      • sconno accono ertt state seq# sent async sync rtrans acks
    • Hidden Oracle 11g Parameters
      • Oracle 11g has many new additional hidden parameters with many of the new additions!
      • There are more than 1500 hidden parameters for Oracle 11g!
      • SQL> select count(*) from x$ksppi
      • 2 where substr(ksppinm,1,1)='_';
      • COUNT(*)
      • ----------
      • 1631
      • Query to find these hidden Oracle 11g parameters:
      • select ksppinm from x$ksppi
      • where substr(ksppinm,1,1)='_‘;
    • Some new hidden parameters for Oracle 11g
      • Some hidden parameters for 11g new features:
      • Hang Manager Hidden Parameters for Oracle 11g:
      • _hm_analysis_output_disk
      • _hm_analysis_oradebug_node_dump_level
      • _hm_analysis_oradebug_sys_dump_level
      • _hm_verification_interval
      • _hm_log_incidents
      • Be careful when using these.
      • Only change in test and sandbox
      • Best to work with Oracle support since these are undocumented parameters!
    • Oracle 11g V$ and X$ tables for troubleshooting and tuning
      • Each release of Oracle adds many new V$ and X$ performance view tables.
      • More than 700 different X$ tables in Oracle 11g!
      • There are over 450 different V$ dynamic performance views in Oracle 11g!
      • Query to find the V$ performance views for Oracle 11g:
      • select name, type
      • from v$fixed_table
      • where name like ‘V$%‘;
      • Query to find the list of X$ tables for Oracle 11g:
      • select name, type
      • from v$fixed_table
      • where name like 'X$%‘;
    • Useful V$ and X$ Tables for Oracle 11g
      • Some interesting new V$ Dynamic Performance Views :
      • V$MEMORY_DYNAMIC_COMPONENTS
      • V$MEMORY_TARGET_ADVICE
      • V$ALERT_TYPES
      • V$IR_FAILURE
      • V$IR_REPAIR
      • V$IR_MANUAL_CHECKLIST
      • V$IR_FAILURE_SET
      • V$HM_CHECK
      • V$HM_CHECK_PARAM
      • V$HM_RUN
      • V$HM_FINDING
      • V$HM_RECOMMENDATION
      • V$HM_INFO
      • Perform a describe on each of these V$ dynamic performance views for detail information.
    • Some Useful X$ tables for Oracle 11g
      • These are some useful new X$ tables for Oracle 11g:
      • X$DIAG_INFO
      • X$IR_WORKING_FAILURE_SET
      • X$IR_WORKING_REPAIR_SET
      • X$IR_REPAIR_OPTION
      • X$IR_MANUAL_OPTION
      • X$IR_REPAIR_STEP
    • Power tools for UNIX and Windows
      • When Oracle tools are not enough, these OS tools are essential:
      • dbx (Solaris and Linux)
      • truss (Solaris)
      • strace (Linux)
      • orakill (Windows)
      • Useful References on Metalink for Core Debug Analysis:
      • Oracle Metalink Note:16534.1 “Debug Core Dumps / Core Files on UNIX”
      • Oracle Metalink Note:1007808.6 “HOW TO HANDLE CORE DUMPS ON UNIX”
    • DBX -Debugging Solaris and Linux
      • DBX is trace debugger for Solaris and also available for free download from sun.com as part of Solaris Developer Studio.
      • Provides comprehensive debugger level commands for Solaris and Linux OS system calls and Oracle 11g instance and network level internal processes.
      • DBX is an advanced complex tool with complex syntax
      • Complete reference guide from SUN:
      • Sun Studio 12: Debugging a Program With dbx:
      • http://docs.sun.com/app/docs
    • Using dbx for Oracle 11g Troubleshooting
      • DBX can be used to trace Oracle 11g processes
      • Getting help with dbx:
      • [oracle@suntest bin]$ pwd
      • /opt/sun/sunstudio12/bin
      • [oracle@suntest bin]$ ./dbx
      • For information about new features see `help changes'
      • (dbx) help
      • command summary
      • Execution and Tracing
      • cancel catch clear cont delete
      • fix fixed handler ignore intercept
      • next pop replay rerun restore
      • run runargs save status step
      • stop trace unintercept when whocatches
      • (dbx)
    • Using dbx for Oracle 11g
      • Find the PID for Oracle process
      • [oracle@raclinux1 bin]$ ps -ef|grep oracle
      • oracle 19994 19993 0 00:31 ? 00:00:00 oracleORA11G (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
      • oracle 19993 3834 0 00:31 pts/2 00:00:00 sqlplus
      • Now we need to get a trace for Oracle
      • oracle@raclinux1 bin]$ ./dbx $ORACLE_HOME/bin/oracle 19994
      • Reading ld-linux.so.2
      • Reading libskgxp11.so
      • Reading librt.so.1
      • Reading libnnz11.so
      • Attached to process 19994
      • t@3086931648 (l@19994) stopped in _dl_sysinfo_int80 at 0x90a7a2
      • 0x0090a7a2: _dl_sysinfo_int80+0x0002: ret
      • (dbx)
      • Enable Collection Process and Continue Trace
      • (dbx) collector enable
      • Back to our DBX trace session:
      • (dbx) cont
    • Continued- Tracing Oracle 11g with dbx
      • Use the dbx thread commands to look at Oracle 11g memory process stack
      • Use the dbx thread commands
      • (dbx) thread t@3086931648
      • t@3086931648 (l@24976) stopped in _dl_sysinfo_int80 at 0x90a7a2
      • 0x0090a7a2: _dl_sysinfo_int80+0x0002: ret
      • (dbx) where
      • current thread: t@3086931648
      • =>[1] _dl_sysinfo_int80(0xf493504, 0xe5b652e, 0x9, 0xf5a684e, 0x2010, 0xf493504) , at 0x90a7a2
      • (dbx) thread -info
      • Thread t@3086931648 (0x0) at priority 0
      • state: active on l@3107
      • base function: 0x0: 0x00000000() stack: 0x0[0]
      • flags: (none)
      • masked signals: (none)
      • Currently active in _dl_sysinfo_int80
    • Debug Oracle 11g with dbx
      • The debug function with dbx is useful for Oracle 11g:
      • (dbx) debug -f
      • Debugging: oracle (process id 24976)
    • Truss: Solaris power tool for Tracing Oracle 11g
      • Truss provides ability to walk through trace at step by step level for Oracle 11g internal processes.
      • Syntax:
        • truss [-fcaeil] [-[tvx] [!] syscall... ] [-s [!] signal... ] [-m [!] fault... ] [-[rw] [!] fd... ] [-o outfile ] command | -p pid
      • Typical options for truss:
      • -o output to file
      • -f trace child processes
      • -c count system calls
      • -p trace calls based on Unix PID
    • How to Use Truss with Solaris for Oracle 11g
      • Example:
      • solaris02$ truss -cp 3316
      • ^C
      • Syscall seconds calls errors
      • read .000 2
      • Write .000 2
      • times .000 33
      • yield .000 226
    • Strace tool for Linux and Oracle 11g tracing
      • Strace is similar to truss for Linux O/S tracing with Oracle 11g
      • Powerful tool with command line syntax:
      • usage: strace [-dffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file]
      • [-p pid] ... [-s strsize] [-u username] [-E var=val] ...
      • [command [arg ...]]
      • or: strace -c [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ...
      • [command [arg ...]]
    • How to Use Strace with Linux and Oracle 11g
      • Options available for strace:
      • [oracle@raclinux1 ~]$ strace
      • -c -- count time, calls, and errors for each syscall and report summary
      • -f -- follow forks, -ff -- with output into separate files
      • -F -- attempt to follow vforks, -h -- print help message
      • -i -- print instruction pointer at time of syscall
      • -q -- suppress messages about attaching, detaching, etc.
      • -r -- print relative timestamp, -t -- absolute timestamp, -tt -- with usecs
      • -T -- print time spent in each syscall, -V -- print version
      • -v -- verbose mode: print unabbreviated argv, stat, termio[s], etc. args
      • -x -- print non-ascii strings in hex, -xx -- print all strings in hex
      • -a column -- alignment COLUMN for printing syscall results (default 40)
      • -e expr -- a qualifying expression: option=[!]all or option=[!]val1[,val2]...
      • options: trace, abbrev, verbose, raw, signal, read, or write
      • -o file -- send trace output to FILE instead of stderr
      • -O overhead -- set overhead for tracing syscalls to OVERHEAD usecs
      • -p pid -- trace process with process id PID, may be repeated
      • -s strsize -- limit length of print strings to STRSIZE chars (default 32)
      • -S sortby -- sort syscall counts by: time, calls, name, nothing (default time)
      • -u username -- run command as username handling setuid and/or setgid
      • -E var=val -- put var=val in the environment for command
      • -E var -- remove var from the environment for command
    • Strace for Oracle 11g: Worked Example
      • Perform system call trace for Oracle 11g:
      • [oracle@raclinux1 ~]$ strace oracle
      • execve(&quot;/u01/app/oracle/product/11.1.0/11g/bin/oracle&quot;, [&quot;oracle&quot;], [/* 41 vars */]) = 0
      • uname({sys=&quot;Linux&quot;, node=&quot;raclinux1.us.oracle.com&quot;, ...}) = 0
      • brk(0) = 0xf56b000
    • Tracing System Calls with STrace for Oracle 11g
      • Similar to truss:
      • Check for System Call Errors for Oracle 11g with Strace:
      • [oracle@raclinux1 bin]$ strace -c oracle
      • % time seconds usecs/call calls errors syscall
      • ------ ----------- ----------- --------- --------- ----------------
      • 4.19 0.865232 41202 21 write
      • 4.02 0.831352 207838 4 lstat64
      • 4.02 0.831329 207832 4 _llseek
      • 4.02 0.831327 207832 4 times
      • 3.42 0.707903 707903 1 io_setup
      • 3.42 0.707867 707867 1 _sysctl
      • 3.42 0.707864 707864 1 socket
      • 3.42 0.707843 707843 1 bind
      • 3.42 0.707839 707839 1 set_thread_area
      • 3.42 0.707837 707837 1 futex
      • 3.42 0.707836 707836 1 dup
      • 3.42 0.707836 707836 1 set_tid_address
      • 3.42 0.707835 707835 1 gettid
      • 3.42 0.707833 707833 1 fcntl64
      • 3.42 0.707831 707831 1 getuid32
      • 1.52 -1.1313491 2986 105 munmap
      • ------ ----------- ----------- --------- --------- ----------------
      • 100.00 20.669398 1134 108 total
      • *Note: shortened for clarity
    • Tracing System Calls for Oracle 11g DBWR
      • Example: Using STrace to find System calls for Oracle 11g DBWR process
      • [oracle@raclinux1 ~]$ strace -c -p 3873
      • Process 3873 attached - interrupt to quit
      • Process 3873 detached
      • % time seconds usecs/call calls errors syscall
      • ------ ----------- ----------- --------- --------- ----------------
      • 82.95 0.003289 12 282 gettimeofday
      • 7.92 0.000314 8 40 times
      • 5.42 0.000215 8 26 getrusage
      • 1.99 0.000079 6 13 13 semtimedop
      • 0.76 0.000030 30 1 open
      • 0.68 0.000027 27 1 read
      • 0.28 0.000011 11 1 close
      • ------ ----------- ----------- --------- --------- ----------------
      • 100.00 0.003965 364 13 total
    • Using orakill to trace Windows and Oracle 11g
      • Useful tool available for Windows and Oracle 11g called orakill
      • Oracle Metalink Notes: 69882.1
      • Useful for killing runaway processes on Windows and Oracle 11g as well as for zombie and hung sessions
      • Syntax:
      • orakill <sid> <thread>
      • Can use QSLICE.EXE to find threads (available on Windows NT Resource Kit from Microsoft)
    • How to Use Orakill for Windows and Oracle 11g
      • Query if not using QSLICE.EXE for details:
      • C:>orakill
      • Usage: orakill sid thread
      • where sid = the Oracle instance to target
      • thread = the thread id of the thread to kill
      • The thread id should be retrieved from the spid column of a query such as:
      • select spid, osuser, s.program from
      • v$process p, v$session s where p.addr=s.paddr
    • Example: Using Orakill for Windows and Oracle 11g
      • Use QSlice.exe to find the Oracle process:
      • Then use orakill to end process that is hung.
      • C:>orakill test 958
      • Kill of thread id
      • 958 in instance test successfully
      • signalled.
    • ORA-0600: Tips and Tricks
      • ORA-0600: Internal errors
      • Call Oracle support first
      • Leverage Metalink ORA-0600 support matrix
      • Collect dumps with oradebug if possible
    • What is an ORA-0600 Error?
      • Internal Oracle error results in kernel memory dump
      • Dumps core file and trace files
      • Useful Metalink Notes: 146580.1 , 146581.1
      • Use the Oracle Metalink ORA-0600 Lookup Tool
      • for addressing these internal errors
      • Note 153788.1 - Troubleshoot an ORA-600 Error using the ORA-600 Argument Lookup Tool
    • Using the ORA-0600 Lookup Tool
      • From Oracle Support- see Note 153788.1
      • Troubleshoot an ORA-600 Error using the ORA-600 Argument Lookup Tool
      • Also can be used for review and analyze ORA-7445 errors
    • Resolving ORA-0600 Errors
      • Work closely with Oracle Support
      • Usually caused by bug such as memory leak
      • Test recent changes between development, test, QA and Production to ensure continuity of issue.
      • Ideal to have same release of Oracle to be able to reproduce the error for all environments and platforms.
    • ORA-0600 Troubleshooting
      • Use ADR to view incident and associated trace file:
      • Dump continued from file: /u01/app/oracle/diag/rdbms/ora11g/ORA11G/trace/ORA11G_ora_12562.trc
      • ORA-00600: internal error code, arguments: [kssadpm: null parent], [], [], [], [], [], [], []
      • Plug in the arguments from trace file to ORA-0600 Metalink troubleshooting lookup tool.
      • The related solution will then be displayed:
      • Known Issues: Bug# 5605370
      • * See Note 5605370.8 * This bug is alerted in Note 454464.1 Various dumps / instance crash possible Fixed: 10.2.0.4, 11.1.0.6
    • Preguntas?
      • Hay algunas preguntas?
      • I’ll also be available in the Oracle ACE lodge
    • Conclusion
      • Muchas gracias!
      • Please complete your evaluation form
      • Ben Prusinski
      • Undocumented Oracle DBA Utilities: Black Magic for the Oracle Expert
      • My company- Ben Prusinski and Associates
      • http://www.ben-oracle.com
      • Oracle Blog
      • http://oracle-magician.blogspot.com/