SlideShare une entreprise Scribd logo
1  sur  87
Télécharger pour lire hors ligne
1
Investigating
Oracle
Julian Dyke
Independent Consultant
DB Tech Showcase - Osaka
May 2013
juliandyke.com© 2013 Julian Dyke
juliandyke.com© 2013 Julian Dyke
About Me
 Worked with Oracle databases since 1989
 Independent Consultant for 8 years
 Regular presenter at Conferences, Seminars and Special Interest Groups
 Co-Author of Pro Oracle Database 10g RAC on Linux
 Member of Oak Table Network since 2003
 Member of UKOUG Council
 Former UKOUG director
 Former chair of UKOUG RAC & HA SIG
 Oracle ACE Expert
 Oracle Certified DBA – 7.3, 8, 8i, 9i and 10i
2
juliandyke.com© 2013 Julian Dyke3
Investigating Oracle
Introduction
 This presentation describes various techniques for investigating Oracle
features
 Investigative techniques differ depending on feature under investigation
 Why investigate?
 Feature evaluation
 Performance
 Compatibility
 Licensing costs
juliandyke.com© 2013 Julian Dyke
Investigating Oracle
Agenda
 Initial Research
 Advanced Research
 Oracle Tools
 Execution Plans
 Trace
 Dumps
 Internals
 Operating System Tools
 Custom Tools
4
juliandyke.com© 2013 Julian Dyke5
Initial
Research
juliandyke.com© 2013 Julian Dyke6
Initial Research
Read the Oracle Documentation
 Read ALL of the Oracle documentation for the feature
 Useful sources include:
 New Features Guide 11g Release 1 (11.2)
 Part Number E10881-01
 Other Oracle documents
 What's New in... sections
 White Papers
 Oracle Technology Network
 http://www.oracle.com/technetwork
 My Oracle Support
 http://support.oracle.com
 Review the SQL syntax that supports the feature in:
 SQL Language Reference
 PL/SQL Packages and Types Reference
juliandyke.com© 2013 Julian Dyke
Initial Research
Read Third Party Documentation
 Read any available third party documentation for the feature
 Blogs
 Websites
 Books
 Presentations
 White Papers
 Make information is accurate and credible
7
juliandyke.com© 2013 Julian Dyke
Initial Research
Learn how the new feature works
 Build a test environment
 Build VMs
 Configure storage
 Install Oracle software
 Install required patch sets / one-offs
 Create database(s)
 Configure feature
 Set parameters
 Test feature
 DDL
 DML
 etc
8
juliandyke.com© 2013 Julian Dyke
Initial Research
Licensing
 Check the licensing requirements for the feature being investigated
 Almost all recent new features have been licensed options
 Investigation may not be cost-effective
 Check the Oracle Licensing document
 Check the global pricing document
 Check your existing license agreement
 Gotchas include:
 VMWare environments
 Primary and standby configurations
 RAC/Exadata environments
9
juliandyke.com© 2013 Julian Dyke10
Advanced
Research
juliandyke.com© 2013 Julian Dyke11
Advanced Research
Supported Parameters
 Supported parameter values are reported in
 V$PARAMETER
 V$SYSTEM_PARAMETER
 V$SPPARAMETER
 Normalized lists of values are reported in
 V$PARAMETER2
 V$SYSTEM_PARAMETER2
 In Oracle 10.1 and above, valid values for supported parameters are reported
in
 V$PARAMETER_VALID_VALUES
juliandyke.com© 2013 Julian Dyke12
Advanced Research
Unsupported Parameters
 Unsupported parameter values are reported in
 X$KSPPI
 X$KSPPSV
 X$KSPPCV
 To print parameter name, description and values use:
 In Oracle 10.1 and above, valid values for unsupported parameters are
reported in
 X$KSPVLD_VALUES
SELECT i.ksppinm, i.ksppdesc, sv.ksppstvl
FROM x$ksppi i, x$ksppsv sv
WHERE i.indx = sv.indx
ORDER BY i.ksppinm;
juliandyke.com© 2013 Julian Dyke13
Advanced Research Optimizer
Parameters
 In Oracle 10.1 and above, optimizer parameter values are reported at
 Instance-level
 Session-level
 Statement-level
 Dynamic performance views only report supported parameters
 Fixed (X$) tables include unsupported parameters:
Level Supported Parameters Unsupported Parameters
Instance V$SYS_OPTIMIZER_ENV X$QKSCESYS
Session V$SES_OPTIMIZER_ENV X$QKSCESES
Statement V$SQL_OPTIMIZER_ENV X$KQLFSQCE
juliandyke.com© 2013 Julian Dyke14
Advanced Research
Data Dictionary View Definitions
 Data dictionary views are based on data dictionary objects
DBA_% Accessible by all users
ALL_% Accessible by current user
USER_% Accessible by users with DBA privilege only
 View definitions can be found in DBA_VIEWS
SET LONG 50000
SELECT text FROM dba_views WHERE view_name = 'DBA_INDEXES';
 Many views are defined in terms of other views e.g. DBA_SEGMENTS is now
based on SYS_DBA_SEGS
juliandyke.com© 2013 Julian Dyke15
Advanced Research
Data Dictionary Objects
 The data dictionary is created in the SYSTEM tablespace
 Objects are owned by SYS
 Data dictionary tables include:
Table Name Description
OBJ$ Objects
TAB$ Tables
IND$ Indexes
COL$ Columns
USER$ Users
SEG$ Segments
FET$ Free Extents
UET$ Used Extents
TS$ Tablespaces
FILE$ Files
juliandyke.com© 2013 Julian Dyke16
Advanced Research
Data Dictionary Index Clusters
 Many data dictionary objects are stored in index clusters
 For example C_OBJ# is a cluster containing the following tables:
ASSEMBLY$ ICOLDEP$ REFCON$
ATTRCOL$ IND$ SUBCOLTYPE$
CLU$ LIBRARY$ TAB$
COL$ LOB$ TYPE_MISC$
COLTYPE$ NTAB$ VIEWTRCOL$
ICOL$ OPQTYPE$
ICOLDEP$
 Other clusters include:
 C_USER#
 C_FILE#_BLOCK#
 C_TS#
 Index clusters increase complexity of:
 Trace files
 Redo/undo changes
juliandyke.com© 2013 Julian Dyke17
Advanced Research
SQL.BSQ
 During database creation, data dictionary objects are defined in
$ORACLE_HOME/rdbms/admin/sql.bsq
 In Oracle 11.1 and above, sql.bsq has been divided into the following files:
dcore.bsq drac.bsq daw.bsq
dsqlddl.bsq dsec.bsq dsummgt.bsq
dmanage.bsq doptim.bsq dtools.bsq
dplsql.bsq dobj.bsq dexttab.bsq
dtxnspc.bsq djava.bsq ddm.bsq
dfmap.bsq dpart.bsq dlmnr.bsq
denv.bsq drep.bsq
 The core data dictionary tables (obj$, tab$, ind$, col$ etc) are specified in
dcore.bsq
juliandyke.com© 2013 Julian Dyke18
Advanced Research
Dynamic Performance View Definitions
 Definitions reported by
 V$FIXED_VIEW_DEFINITION
 Global (GV$) view selects from underlying fixed (X$) tables
SELECT view_definition FROM v$fixed_view_definition
WHERE view_name = 'GV$RESULT_CACHE_MEMORY';
VIEW_DEFINITION
SELECT inst_id, qesrcmem_lad, qesrcmem_cnk, qesrcmem_blk,
DECODE (qesrcmem_sta, 0, 'NO', 1, 'YES'), qesrcmem_oid, qesrcmem_pos
FROM x$qesrcmem;
SELECT view_definition FROM v$fixed_view_definition
WHERE view_name = 'V$RESULT_CACHE_MEMORY';
VIEW_DEFINITION
SELECT id, chunk, offset, free, object_id, position
FROM gv$result_cache_memory
WHERE inst_id = USERENV ('Instance')
 Instance (V$) view selects from global (GV$) view
juliandyke.com© 2013 Julian Dyke
Advanced Research
PL/SQL Package Definitions
 PL/SQL package headers are distributed in $ORACLE_HOME/rdbms/admin
 For example:
 dbmsmntr.sql contains package header for DBMS_MONITOR
 dbmsxplan.sql contains package header for DBMS_XPLAN
 Names are not intuitive
 Use grep to find specific packages
 Package headers contain comments that can be useful when documentation
is inadequate e.g.:
 new parameters
 ambiguity
 Most package bodies are wrapped:
 Unwrap tools can be found on the internet
 Probably break terms of licence agreements
19
juliandyke.com© 2013 Julian Dyke20
Advanced Research
Error Messages
 Error messages describe what a feature does not support
 Can be useful to understand how feature is implemented
 See $ORACLE_HOME/rdbms/mesg/oraus.msg
 Contains all message and event definitions
 Individual messages reported by oerr on Unix platforms
 Binary file - on Unix use strings utility to inspect contents
$ strings $ORACLE_HOME/rdbms/mesg/oraus.msg > /tmp/oraus.txt
 A range of error numbers is initially allocated for each feature
 Some features have more than one range
juliandyke.com© 2013 Julian Dyke21
Advanced Research
Fixed Tables and Views
 V$FIXED_TABLES reports all fixed objects including
 Fixed (X$) tables
 Derived fixed (X$) tables (fixed views)
 Global (GV$) dynamic performance views
 Instance (V$) dynamic performance views
 V$INDEXED_FIXED_COLUMN reports all indexed columns for
 Fixed (X$) tables
juliandyke.com© 2013 Julian Dyke22
Advanced Research
Fixed Tables and Views
 Fixed (X$) tables are described in X$KQFTA
 Fixed (X$) derived tables are described in X$KQFDT
 Fixed (X$) table columns arev described in X$KQFCO
 Internal data type reported in KQFCODTY
 Indexes reported in KQFCOIDX and KQFCOIPO
SELECT co.kqfconam,
CASE co.kqfcodty
WHEN 2 THEN 'NUMBER'
WHEN 23 THEN 'RAW ('||kqfcosiz||')'
END
FROM x$kqfco co, x$kqfta ta
WHERE co.kqfcotab = ta.indx
AND ta.kqftanam = 'X$QESRCMEM'
ORDER BY co.kqfcocno;
juliandyke.com© 2013 Julian Dyke23
Advanced Research
Fixed Tables
 X$KQFCO.KQFCODTY reports internal column data type
 Current values in Oracle 11.1
Value Description
1 VARCHAR2
2 NUMBER
12 DATE
23 RAW
112 CLOB
180 TIMESTAMP
181 TIMESTAMP WITH TIME ZONE
 See http://www.juliandyke.com for more comprehensive list of internal data
types (Internals/Internal Data Types)
juliandyke.com© 2013 Julian Dyke24
Advanced Research
Shared Memory
 V$SGA
 reports SGA memory sizes
 V$SGAINFO
 reports SGA memory pool sizes
 introduced in Oracle 10.1
 V$SGASTAT
 reports SGA memory area sizes
 enhanced in Oracle 10.1
juliandyke.com© 2013 Julian Dyke25
Advanced Research
Shared Memory
 X$KSMFSV
 Contents of fixed SGA
 X$KSMGE
 Reports granule allocation
 X$KSMMEM
 Contents of SGA presented as an array
 Usually fails in Windows
 Usually fails with Automatic Memory Management
 X$KSMSP
 Reports shared pool memory usage
 X$KSMHP
 Reports heap allocation
juliandyke.com© 2013 Julian Dyke
Advanced Research
AWR Tables
 Some AWR tables contain useful information including:
 DBA_HIST_PLAN_OPERATION_NAME
 Execution plan operations
 DBA_HIST_PLAN_OPTION_NAME
 Execution plan operation options
 DBA_HIST_SQLCOMMAND_NAME
 Command types and names – similar to AUDIT_ACTIONS
 DBA_HIST_TOPLEVELCALL_NAME
 Top level calls
26
juliandyke.com© 2013 Julian Dyke27
Advanced Research
Dynamic Performance Views
 V$BGPROCESS (X$KSBDD)
 List of background processes
 V$LATCHNAME (X$KSLLD)
 List of parent latches
 V$EVENT_NAME (X$KSLED)
 List of wait events
 V$LOCK_TYPE (X$KSIRESTYP)
 List of lock/enqueue types (Oracle 10.1 and above)
 V$SQL_HINT
 List of supported hints
 V$SQL_FEATURE
 List of supported features
juliandyke.com© 2013 Julian Dyke28
Advanced Research
Dynamic Performance Views
 V$TYPE_SIZE (X$KQFSZ)
 Size in bytes of various data types
 V$RESERVED_WORDS (X$KWDDEF)
 List of keywords / reserved words
 X$MESSAGES
 List of messages exchanged between processes
juliandyke.com© 2013 Julian Dyke29
Advanced Research
Standard Package
 $ORACLE_HOME/rdbms/admin/standard.sql
 Contains definitions of standard PL/SQL types, built-in functions and
exceptions
 For example:
 DECODE
 SUBSTR
 INSTR
 UPPER
 LOWER
 In Oracle 11.2 standard.sql calls
 stdspec.sql
 stdbody.sql
juliandyke.com© 2013 Julian Dyke30
Oracle Tools
Execution Plans
juliandyke.com© 2013 Julian Dyke31
Execution Plans
AUTOTRACE
 SQL*Plus feature
 Prints execution plans and execution statistics
$ORACLE_HOME/rdbms/admin/utlxplan.sql
 Requires PLUS_TRACE role
$ORACLE_HOME/sqlplus/admin/plustrce.sql
GRANT plustrce TO user1;
 In Oracle 10.1 and above execution plan output uses DBMS_XPLAN format:
 Automatically includes:
 Partition information
 Parallel execution information
 Requires access to a PLAN_TABLE
juliandyke.com© 2013 Julian Dyke32
Execution Plans
AUTOTRACE
 Options are:
SET AUTOTRACE OFF No report generated - default
SET AUTOTRACE ON EXPLAIN Shows execution plan
SET AUTOTRACE ON STATISTICS Shows execution statistics
SET AUTOTRACE ON Shows output, execution plan and statistics
SET AUTOTRACE ON TRACEONLY Suppresses query output if executed
 The EXPLAIN option generates a new execution plan
 Optimizer environment may differ from user sessions
 SET AUTOTRACE TRACEONLY EXPLAIN
 Shows execution plan for SELECT statements
 Shows execution plan AND executes DML statements
Note that SET AUTOT TRACE EXP executes DML statements
Any changes must be rolled back manually
Alternatively explain the SELECT subquery only
juliandyke.com© 2013 Julian Dyke33
Execution Plans
DBMS_XPLAN
 Introduced in Oracle 9.2
 Enhanced in subsequent releases
 Useful subroutines include
 DISPLAY - display a plan from a PLAN_TABLE
 DISPLAY_AWR - display a plan from the AWR
 DISPLAY_CURSOR - display a plan from the library cache
 DISPLAY_PLAN – returns plan as a CLOB
 DISPLAY_SQLSET – displays a plan from a SQL tuning set
 DISPLAY_SQLPLAN_BASELIN E – displays a plan from SQL baseline
 For example to display execution plan for statement most recently executed
by the current session:
SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY_CURSOR);
juliandyke.com© 2013 Julian Dyke
Execution Plans
DBMS_XPLAN
 The FORMAT parameter specifies the output format for the execution plan
 There are four options:
 BASIC – minimum information - operation ID, operation name and option
only
 TYPICAL – default – most relevant information in plan – operation id,
operation name, option, #rows, # bytes, optimizer cost. Also pruning,
parallel and predicate information where applicable
 SERIAL – same as TYPICAL except parallel information is not displayed
even if plan executes in parallel
 ALL – same as TYPICAL. Also includes PROJECTION, ALIAS and
REMOTE SQL if applicable
34
juliandyke.com© 2013 Julian Dyke
Execution Plans
DBMS_XPLAN
 The following keywords can be added to the FORMAT options for more fine-
grained control of output
 ROWS – number of rows estimated by optimizer
 BYTES – number of bytes estimated by optimizer
 COST – optimizer cost information
 PARTITION – partition pruning information
 PARALLEL – parallel execution information
 PREDICATE – predicate section
 PROJECTION – projection section
 ALIAS – Query Block Name / Object Alias section
 REMOTE – distributed query information
 NOTE - note section of plan
 Sections are only displayed if relevant
 To exclude a section prefix with minus e.g. -PROJECTION
35
juliandyke.com© 2013 Julian Dyke
Execution Plans
DBMS_XPLAN
 For DISPLAY_CURSOR and DISPLAY_SQLSET, additional data can be output
using the following keywords:
 IOSTATS – shows IO statistics for all executions of the cursor
 MEMSTATS – displays memory management statistics including
 execution mode of operator
 how much memory was used
 number of bytes spilled to disk
 ALLSTATS – both IOSTATS and MEMSTATS
 LAST – only report statistics for last execution of cursor
 IOSTATS, ALLSTATS and LAST require basic plan statistics which are
collected by
 setting STATISTICS_LEVEL parameter to ALL
 specifying GATHER_PLAN_STATISTICS hint
 MEMSTATS requires PGA memory management to be enabled by:
 setting PGA_AGGREGATE_TARGET to non-zero value
36
juliandyke.com© 2013 Julian Dyke37
Oracle Tools
Trace
juliandyke.com© 2013 Julian Dyke38
SQL Trace
Diagnostics Area
 In Oracle 11.1 and above trace files and alert logs are written to the
diagnostics area:
 Default location is $ORACLE_HOME/diag
 Trace files and alter log are written to
 $ORACLE_BASE/diag/rdbms/<database>/<instance>/trace
 For example for database TEST
 $ORACLE_BASE/diag/rdbms/test/TEST/trace
 BACKGROUND_DUMP_DEST and USER_DUMP_DEST parameters still
available in Oracle 11.2
 New dynamic performance view V$DIAG_INFO reports trace locations
 Trace file for current process can be identified using:
SELECT value FROM v$diag_info
WHERE name = 'Default Trace File';
juliandyke.com© 2013 Julian Dyke39
SQL Trace
Trace File Identifier
 In Oracle 8.1.5 and above a suffix can be added to the trace file name using
TRACEFILE_IDENTIFIER parameter
For example given the following current trace filename:
ALTER SESSION SET tracefile_identifier = 'TEST1';
TEST_ora_24672.trc
 The following statement:
 will add the suffix "_TEST1" to the file name e.g.
TEST_ora_24672_TEST1.trc
juliandyke.com© 2013 Julian Dyke40
DBMS_MONITOR
Overview
 Introduced in Oracle 10.1
 Contains the following subroutines:
 SESSION_TRACE_ENABLE
 SESSION_TRACE_DISABLE
 DATABASE_TRACE_ENABLE
 DATABASE_TRACE_DISABLE
 CLIENT_ID_TRACE_ENABLE
 CLIENT_ID_TRACE_DISABLE
 CLIENT_ID_STAT_ENABLE
 CLIENT_ID_STAT_DISABLE
 SERV_MOD_ACT_TRACE_ENABLE
 SERV_MOD_ACT_TRACE_DISABLE
 SERV_MOD_ACT_STAT_ENABLE
 SERV_MOD_ACT_STAT_DISABLE
 DBMS_MONITOR trace configuration is reported in DBA_ENABLED_TRACES
juliandyke.com© 2013 Julian Dyke41
DBMS_MONITOR
Enabling and Disabling Trace
 To enable and disable trace in the current session use:
EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE;
EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE;
 To enable and disable trace in another session e.g. 42 use:
EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE (SESSION_ID => 42);
EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE (SESSION_ID => 42);
 To enable and disable trace for instance RAC1 use:
EXECUTE DBMS_MONITOR.DATABASE_TRACE_ENABLE (INSTANCE_NAME => 'RAC1');
EXECUTE DBMS_MONITOR.DATABASE_TRACE_DISABLE (INSTANCE_NAME => 'RAC1');
 To enable and disable trace for the entire database use:
EXECUTE DBMS_MONITOR.DATABASE_TRACE_ENABLE;
EXECUTE DBMS_MONITOR.DATABASE_TRACE_DISABLE;
juliandyke.com© 2013 Julian Dyke42
DBMS_MONITOR
Client Identifiers
 Trace can be enabled for using client identifiers
 Useful when many sessions connect using the same Oracle user
 Useful with connection caches
 To set a client identifier use DBMS_SESSION.SET_IDENTIFIER e.g.:
 The client identifier is reported in V$SESSION.CLIENT_IDENTIFIER
DBMS_SESSION.SET_IDENTIFIER ('CLIENT42');
 To enable and disable trace for CLIENT42 use:
DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE (CLIENT_ID => 'CLIENT42');
DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE (CLIENT_ID => 'CLIENT42');
 To enable and disable statistics collection for CLIENT42 use:
DBMS_MONITOR.CLIENT_ID_STAT_ENABLE (CLIENT_ID => 'CLIENT42');
DBMS_MONITOR.CLIENT_ID_STAT_DISABLE (CLIENT_ID => 'CLIENT42');
 Client statistics are reported in V$CLIENT_STATS
juliandyke.com© 2013 Julian Dyke43
DBMS_MONITOR
Services, Modules & Actions
 Trace can be enabled for a specific
 service
 service and module
 service, module and action
 Current module and action reported by
 V$SESSION.MODULE
 V$SESSION.ACTION
 To specify a new action within the current module use:
DBMS_APPLICATION_INFO.SET_ACTION
(ACTION_NAME=> 'ACTION2');
DBMS_APPLICATION_INFO.SET_MODULE
(MODULE_NAME => 'MODULE1', ACTION_NAME=> 'ACTION1');
 To specify a module and action with a session use:
juliandyke.com© 2013 Julian Dyke44
DBMS_MONITOR
Services, Modules & Actions
 To enable trace for use:
 To enable statistics collection use:
DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE
(SERVICE_NAME => 'SERVICE1',MODULE_NAME => 'MODULE1',ACTION_NAME => 'ACTION1‘);
DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE
(SERVICE_NAME => 'SERVICE1',MODULE_NAME => 'MODULE1‘);
DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE
(SERVICE_NAME => 'SERVICE1',MODULE_NAME => 'MODULE1',ACTION_NAME => 'ACTION1‘);
DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE
(SERVICE_NAME => 'SERVICE1',MODULE_NAME => 'MODULE1‘);
DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE
(SERVICE_NAME => 'SERVICE1');
DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE
(SERVICE_NAME => 'SERVICE1');
 Statistics are reported in V$SERV_MOD_ACT_STATS
juliandyke.com© 2013 Julian Dyke45
DBMS_MONITOR
Row Source Statistics
 In Oracle 11.2 and above PLAN_STAT parameter is supported in:
 CLIENT_ID_TRACE_ENABLE
 DATABASE_TRACE_ENABLE
 SERV_MOD_ACT_TRACE_ENABLE
 SESSION_TRACE_ENABLE
 PLAN_STAT specifies frequency of row source statistic dumps. Can be:
 NEVER
 FIRST_EXECUTION (default)
 ALL_EXECUTIONS
 In Oracle 11.2 and above event 10046 level 16 also dumps row source
statistics for all executions
 To dump binds + waits + statistics use event 10046 level 28
ALTER SESSION SET EVENTS ‘10046 trace name context forever, level 28’’;
juliandyke.com© 2013 Julian Dyke46
DBMS_MONITOR
Interpreting Trace
 Use TKPROF to sort and filter the trace file
 Avoid re-explaining execution plans
 Use TRCSESS to merge trace files
 Useful with shared server (MTS)
 See Metalink Note: 39817.1 Interpreting Raw SQL_TRACE and
DBMS_SUPPORT.START_TRACE output
 Describes contents of trace file
 See Optimizing Oracle Performance
Cary Millsap & Jeff Holt (O'Reilly)
juliandyke.com© 2013 Julian Dyke47
Oracle Tools
Dumps
juliandyke.com© 2013 Julian Dyke48
ORADEBUG
Overview
 Undocumented SQL*Plus feature
 Requires SQLDBA privilege
 Allows session to connect to other processes and execute commands
 A process must be specified for many ORADEBUG commands using one of:
 ORADEBUG SETMYPID – connect to local process
 ORADEBUG SETORAPID – connect using Oracle process ID
 ORADEBUG SETOSPID – connect using OS pid
 All commands are prefixed with ORADEBUG
 To obtain a list of commands use ORADEBUG HELP
 New functionality is frequently added
 Review in each new release
juliandyke.com© 2013 Julian Dyke49
ORADEBUG
Dumps
 To list of available dumps can be obtained using ORADEBUG DUMPLIST
 Most dumps can be performed by
 ORADEBUG
 ALTER SYSTEM
 ALTER SESSION
 Some dumps can be very useful for specific investigations
 Dumps are mostly undocumented
 187 dumps listed in Oracle 11.2.0.3
 Some dumps modify database
 Only use on
 non-production databases
 when requested by Oracle Support
juliandyke.com© 2013 Julian Dyke50
Memory Dumps
Trace Dumps
 Memory dumps can be taken using
 ORADEBUG
 ALTER SYSTEM
 ALTER SESSION
 For example to dump fixed SGA including contents
ALTER SESSION SET EVENTS
'immediate trace name global_area level 2‘;
 To dump summary of SGA heap use:
ALTER SESSION SET EVENTS
'immediate trace name heapdump level 2‘;
 To dump contents of a specific SGA subheap use:
ALTER SESSION SET EVENTS
'immediate trace name heapdump_addr level 2, addr <address>';
juliandyke.com© 2013 Julian Dyke51
File Dumps
Redo Log Dumps
 To identify the current redo log use:
SELECT member FROM v$logfile
WHERE group# =
(
SELECT group# FROM v$log
WHERE status = 'CURRENT'
);
 To dump the contents of a redo log use:
ALTER SYSTEM DUMP LOGFILE '<logfilename>';
 Also works for archived log files
juliandyke.com© 2013 Julian Dyke52
File Dumps
Redo Log Dumps
 Full syntax is:
ALTER SYSTEM DUMP LOGFILE 'FileName'
SCN MIN MinimumSCN
SCN MAX MaximumSCN
TIME MIN MinimumTime
TIME MAX MaximumTime
LAYER Layer
OPCODE Opcode
DBA MIN FileNumber . BlockNumber
DBA MAX FileNumber . BlockNumber
RBA MIN LogFileSequenceNumber . BlockNumber
RBA MAX LogFileSequenceNumber . BlockNumber;
 See MOS Note 1031381.6 for further details
juliandyke.com© 2013 Julian Dyke53
File Dumps
Block Dumps
 To dump a database block in Oracle 8.0 or above:
ALTER SYSTEM DUMP DATAFILE <absolute_file_number>
BLOCK <block_number>;
ALTER SYSTEM DUMP DATAFILE <absolute_file_number>
BLOCK MIN <minimum_block_number>
BLOCK MAX <maximum_block_number>;
 To dump a range of database blocks:
 To dump a block from a datafile in a closed database:
ALTER SYSTEM DUMP DATAFILE '<file_name>'
BLOCK <block_number>;
juliandyke.com© 2013 Julian Dyke54
Internals
juliandyke.com© 2013 Julian Dyke
Internals
Overview
 Oracle dumps often include data. Common data types include
 VARCHAR2
 CHAR
 NUMBER
 DATE
 ROWID
 Oracle dumps also include some common metadata structures including:
 SCN
 DBA
 UBA
 RBA
 SQLID
 Command Types
 Unix Time
55
juliandyke.com© 2013 Julian Dyke
Internals
Internal Data Type
 Each data type has an internal number
 Internal data type numbers appear in many structures and dumps
 e.g. bind variables
 Examples include:
56
Internal Type Description
1 VARCHAR2, NVARCHAR2
2 NUMBER
8 LONG
12 DATE
23 RAW
24 LONG RAW
58 ANYDATA
69 ROWID
96 CHAR, NCHAR
100 BINARY FLOAT
101 BINARY DOUBLE
111 XMLTYPE
Internal Type Description
112 CLOB, NCLOB
113 BLOB
114 BFILE
121 TYPE (User-defined)
122 TYPE (TABLE OF RECORD)
123 TYPE (VARRAY)
180 TIMESTAMP
181 TIMESTAMP WITH TZ
182 INTERVAL YEAR TO MONTH
183 INTERVAL DAY TO SECOND
208 UROWID
231 TIMESTAMP WITH LOCAL TZ
juliandyke.com© 2013 Julian Dyke57
Internals
Hexadecimal Conversions
 To convert from hexadecimal to decimal use TO_NUMBER with the 'XXXX'
format mask e.g.
SELECT TO_NUMBER (100,'XXX') FROM dual;
TO_NUMBER(100,'XXX')
--------------------
256
 To convert from decimal to hexadecimal use TO_CHAR with the 'XXXX' format
mask e.g.
SELECT TO_CHAR (256,'XXX') FROM dual;
TO_NUMBER(256,'XXX')
--------------------
100
juliandyke.com© 2013 Julian Dyke
Internals
DUMP Function
 Column values can be dumped using the SQL DUMP function
 Syntax is:
58
FUNCTION DUMP (expr[,return_format[,start_position[,length]]])
 where RETURN_FORMAT is:
Format Description
8 Octal Notation
10 Decimal Notation
16 Hexadecimal Notation
17 Single Characters
 For example:
SELECT DUMP (10000,16) FROM dual;
DUMP(10000,16)
-----------------
Typ=2 Len=2: c3,2
juliandyke.com© 2013 Julian Dyke
Internals
String Data Types
 VARCHAR2 (Internal Type 1)
 Stores characters plus length byte(s)
 e.g. “Ferrari” in a VARCHAR2(20)
59
Len F e r r a r i
07 46 65 72 72 61 72 69
 CHAR (InternalType 96)
 Pads data with space characters
 e.g. “Ferrari” in a CHAR(20)
Len F e r r a r i
07 46 65 72 72 61 72 69 20 20 20 20 20 20 20 20 20 20 20 20 20
juliandyke.com© 2013 Julian Dyke
Internals
NUMBER Data Type
 NUMBER (Internal Type 2)
 Oracle proprietary number format
 Platform independent representation
 Designed to ensure numbers collate
 Up to 38 bytes can be stored
 Numbers are stored as base-100 digits
 Each digit is increased by 1 to ensure non-zero
 Numbers prefixed by
 Sign bit
 Exponent
60
Number Value
Positive Infinity FF 65
Zero 80
Negative Infinity 01 01 66
juliandyke.com© 2013 Julian Dyke
Internals
NUMBER Data Type
 Some examples:
61
Value Internal Representation
0 80
1 C1,02
2 C1,03
3 C1,04
8 C1,09
9 C1,0A
99 C1,64
100 C2,02
101 C2,02,02
102 C2,02,03
999 C2,02,64
1000 C2,0B
1001 C2,0B,2
Value Internal Representation
9999 C2,64,64
10000 C3,02
90000 C3,0A
100000 C3,0B
-1 3E,64,66
-2 3E,63,66
-3 3E,62,66
-4 3E,61,66
-99 3E,2,66
-100 3D,64,66
-101 3D,64,64,66
-102 3D,64,63,66
-103 3D,64,62,66
juliandyke.com© 2013 Julian Dyke
Internals
DATE Data Type
 DATE (Internal Type 12)
 Oracle can store dates ranging from Jan 1, 4712BC to Dec 31 4712AD
 Dates are always stored in 7 byte values
 Always prefixed by (redundant) length byte
 Format is:
62
Byte Value
0 Year / 100
1 Year % 100
2 Month
3 Day
4 Hour
5 Minute
6 Second
 For example 26May2013 05:06:38 is
Len 0 1 2 3 4 5 6
07 DD 07 05 1A 05 06 26
juliandyke.com© 2013 Julian Dyke63
Internals
ROWID Data Type
 ROWID (Internal Type 69)
 Extended ROWIDs were introduced in Oracle 8.0
 Use relative file number / block number / slot number
 Absolute file number derived from relative file number and tablespace
number
 Can be accessed using DBMS_ROWID package
 Useful functions include:
 ROWID_RELATIVE_FNO
 ROWID_BLOCK_NUMBER
 ROWID_ROW_NUMBER
 ROWID_TO_ABSOLUTE_FNO
juliandyke.com© 2013 Julian Dyke64
Internals
ROWID Data Type
 For example:
SELECT
ROWID,
dbms_rowid.rowid_relative_fno (ROWID) AS "File Number",
dbms_rowid.rowid_block_number (ROWID) AS "Block Number",
dbms_rowid.rowid_row_number (ROWID) AS "Row Number"
FROM gp.team;
ROWID File Number Block Number Row Number
------------------ ----------- ------------ ----------
AAAR1GAAGAAAAR4AAA 6 1144 0
AAAR1GAAGAAAAR4AAB 6 1144 1
AAAR1GAAGAAAAR4AAC 6 1144 2
AAAR1GAAGAAAAR4AAD 6 1144 3
......
juliandyke.com© 2013 Julian Dyke
Internals
Database Block Address
 Database Block Address (DBA)
 Address of block in database
 Always 32-bit value
 Even on 64 bit platform
 SMALLFILE tablespaces (default)
 Upper 10 bits represent relative file number
 Lower 22 bits represent block number
 For example if DBA is 0x01000227
65
 BIGFILE tablespaces
 All 32 bits represent block number
 Some dumps / tools may not report DBA correctly
File number = dba >> 22 = 4
Block number = dba & 0x3FFFFF = 551
juliandyke.com© 2013 Julian Dyke
Internals
SQLID
 13 character representation of a 64-bit unsigned integer
 Uses a mapping of 32 characters to 0..31
 Uses the characters 0-9 and a-z with the exception of e, i, l and o
 Used in Oracle 10.1 and above to identify SQL parent cursors
 Also used to generate database replay file names
 5-bit characters in SQL ID map to 8 bit characters in unsigned integer
 Right to left
 Top bit of left hand word is not used
juliandyke.com© 2013 Julian Dyke
Internals
SQLID Conversion
0 1 2 3 4 5 6 7
00000 00001 00010 00011 00100 00101 00110 00111
8 9 a b c d f g
01000 01001 01010 01011 01100 01101 01110 01111
h j k m n p q r
10000 10001 10010 10011 10100 10101 10110 10111
s t u v w x y z
11000 11001 11010 11011 11100 11101 11110 11111
 The following table shows the mapping between characters and byte values:
juliandyke.com© 2013 Julian Dyke
Internals
SQLID Conversion
 Example
 “6j02q68mxgzt4“ = 0xcdc4598000000001
6 j 0 2 q 6 8 m x g z t 4
00110 10001 00000 00010 10110 00110 01000 10011 11101 01111 11111 11001 00100
01101000 10000000 01010110 00110010 00100111 11010111 11111111 00100100
68 80 56 32 27 d7 ff 24
juliandyke.com© 2013 Julian Dyke
Internals
SQLID Conversion
 The following C function converts a 64-bit unsigned integer into a 13-
character SQL ID
void ConvertLongToSQLID (unsigned long l,char *s)
{
char *map = "0123456789abcdfghjkmnpqrstuvwxyz";
int i;
for (i = 0;i < 13;i++)
{
unsigned long k = (l >> (60 - i * 5)) & 0x1F;
s[i] = map[k];
}
s[13] = 0;
}
juliandyke.com© 2013 Julian Dyke
Internals
SQLID Conversion
 The following C function converts a 13-character SQL ID into a 64-bit
unsigned integer
void ConvertSQLIDToLong (char *s,unsigned long *l)
{
char *map = "0123456789abcdfghjkmnpqrstuvwxyz";
unsigned long res = 0;
int i,j;
for (i = 0;i < 13;i++)
{
for (j = 0;j < 32;j++)
{
if (s[i] == map[j]) break;
}
res = (res << 5) | j;
}
*l = res;
}
juliandyke.com© 2013 Julian Dyke
Internals
Command Types
 Command types are listed the SYS.AUDIT_ACTIONS table
Name Type
ACTION NUMBER
NAME VARCHAR2(28)
 Common actions include:
Action Name
1 CREATE TABLE
2 INSERT
3 SELECT
6 UPDATE
7 DELETE
9 CREATE INDEX
10 DROP INDEX
12 DROP TABLE
17 GRANT OBJECT
19 CREATE SYNONYM
juliandyke.com© 2013 Julian Dyke
Internals
Unix Time
 Unix (POSIX) time – time in seconds since the Epoch
 Not counting leap seconds
 Epoch was midnight on 1st January 1970
 To determine current Unix time on Linux:
#include <stdio.h>
#include <sys/time.h>
main ()
{
struct timeval tv;
struct timezone tz;
gettimeofday (&tv,&tz);
printf ("Seconds = %ld (0x%lx)¥n",tv.tv_sec, tv.tv_sec);
printf ("MicroSeconds = %ld (0x%lx)¥n",tv.tv_usec,tv.tv_usec);
}
juliandyke.com© 2013 Julian Dyke73
Operating
System
Tools
juliandyke.com© 2013 Julian Dyke
Operating System Tools
strings and od
 On Unix and Linux useful operating system tools for investigations include:
 strings – print ASCII strings in a binary file
 default string length is 4 – may miss short strings
 use –n parameter to specify shorter minimum length e.g. –n 3
 od – dumps blocks from a file in specified format
 Formats include:
 -c – ASCII characters or backslash escapes
 -d – Unsigned decimal 2-byte units
 -o – Octal 2 byte units
 -x – Hexadecimal 2 byte units
74
juliandyke.com© 2013 Julian Dyke75
Operating System Tools
tcpdump
 Allows packets to be captured and displayed
 On busy systems packets can be stored in a file and examined
subsequently
 Filters can be applied to
 Reduce number of packets captured
 Increase level of data captured
 Promiscuous - network packets between other network interfaces can be
captured
 Based on libpcap
 Similar to snoop on Solaris
 Useful for investigating
 RAC interconnect traffic
 Oracle Streams packets
juliandyke.com© 2013 Julian Dyke76
Custom Tools
juliandyke.com© 2013 Julian Dyke
Custom Tools
 If no suitable tools exist you can always develop your own….
 C is the best language for most tools
 Oracle is developed in C
 Structures align better in C
 Avoids unnecessary indirection
 GNU compilers are usually available
 Ensure development platform is:
 Same architecture as target e.g. x86-64, SPARC, Itanium
 Same word size e.g. 32 or 64 bit
 Ensure correct compiler switches are specified
 Word size
 Word alignment
77
juliandyke.com© 2013 Julian Dyke
Custom Tools
 RedoAnalyzer
 Analyses online redo log / archive redo log
 Summarizes redo generation by:
 undo / redo
 object
 operation
 Version specific
 Usually requires porting for different platforms
 LogMiner provides similar functionality
 LogMiner has high memory requirements
 RedoAnalyzer is less-intrusive
 RedoAnalyzer is faster
78
juliandyke.com© 2013 Julian Dyke
Custom Tools
 Block Dumper
 Dumps database blocks
 Similar output format to ALTER SYSTEM DUMP command
 Can be adapted
 For example non-intrusive analysis of chaining and migration
 SGA Attach
 Attaches to shared memory
 Follows memory pointers from fixed SGA
 Dumps blocks of memory
 Dumps sessions, processes, parent and child cursors etc
 Dumps RAC structures
 Useful for research and for identifying bugs
79
juliandyke.com© 2013 Julian Dyke
Custom Tools
 TCP Dump
 Based on libpmap
 Intercepts and dumps messages
 Useful for
 Clusterware / RAC research
 Oracle Streams research
 IO Performance
 Reads random blocks from large files
 Measures I/O rates
 Fine grained
 Allows I/O rate to be calculated for
 buffered I/O
 SAN cache
 SAN disk
80
juliandyke.com© 2013 Julian Dyke
Custom Tools
 ReplayAnalyzer
 Extracts contents of database replay files (record and workload metadata)
 Writes output in pseudo-XML format
 Useful for understanding
 database capture – what is captured and what is omitted
 database replay – what can be replayed
 TrailAnalyzer
 Dumps contents of Oracle GoldenGate trail
 Very similar to Oracle GoldenGate logdump utility
81
juliandyke.com© 2013 Julian Dyke82
Thank you for listening
info@juliandyke.com
juliandyke.com© 2013 Julian Dyke83
Backup
juliandyke.com© 2013 Julian Dyke84
Execution Plans
AUTOTRACE
 Statistics reported are:
Statistic Name
recursive calls
db block gets
consistent gets
physical reads
redo size
bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
sorts(memory)
sorts(disk)
rows processed
juliandyke.com© 2013 Julian Dyke85
Execution Plans
AUTOTRACE
 In Oracle 9.2 and below execution plan consists of four columns:
Column Name Description
ID_PLUS_EXP ID of execution step
PARENT_ID_PLUS_EXP Parent ID of execution step
PLAN_PLUS_EXP Execution step
OBJECT_NODE_PLUS_EXP Database links or parallel query servers
 Output can optionally be suppressed e.g.:
COLUMN PARENT_ID_PLUS_EXP NOPRINT
 For parallel and remote operations additional information is displayed in
another section:
Column Name Description
OTHER_PLUS_EXP Shows the SQL query
OTHER_TAG_PLUS_EXP Shows reason for OTHER_PLUS_EXP
juliandyke.com© 2013 Julian Dyke86
Parameters
Parameter Types
 Parameter types are reported numerically in
 V$PARAMETER.TYPE
 X$KSPPI.KSPPITY
 Values are:
Value Description
1 Boolean
2 String
3 Integer
4 File
6 Big Integer
juliandyke.com© 2013 Julian Dyke87
Parameters
Optimizer Parameters
 Optimizer parameters are grouped in FID_QKSCESYROW
 For example in Oracle 11.1
FID_QKSCESYROW COUNT(*)
QKSFM_ALL 101
QKSFM_CBO 71
QKSFM_CVM 1
QKSFM_EXECUTION 1
QKSFM_FBA 1
QKSFM_INDEX 1
QKSFM_JPPD 3
QKSFM_OR_EXPAND 1
QKSFM_PQ 6
QKSFM_STAR_TRANS 3
QKSFM_TRANSFORMATION 70

Contenu connexe

Tendances

Drupal - dbtng 25th Anniversary Edition
Drupal - dbtng 25th Anniversary EditionDrupal - dbtng 25th Anniversary Edition
Drupal - dbtng 25th Anniversary Editionddiers
 
Starting with JSON Path Expressions in Oracle 12.1.0.2
Starting with JSON Path Expressions in Oracle 12.1.0.2Starting with JSON Path Expressions in Oracle 12.1.0.2
Starting with JSON Path Expressions in Oracle 12.1.0.2Marco Gralike
 
Creating a Web of Data with Restlet
Creating a Web of Data with RestletCreating a Web of Data with Restlet
Creating a Web of Data with Restletguest7d0e11
 
Top Ten Reasons to Use EntityFieldQuery in Drupal
Top Ten Reasons to Use EntityFieldQuery in DrupalTop Ten Reasons to Use EntityFieldQuery in Drupal
Top Ten Reasons to Use EntityFieldQuery in DrupalFredric Mitchell
 
Core Php Component Presentation
Core Php Component PresentationCore Php Component Presentation
Core Php Component PresentationJohn Coonen
 
Erlang for data ops
Erlang for data opsErlang for data ops
Erlang for data opsmnacos
 
UKOUG Tech14 - Getting Started With JSON in the Database
UKOUG Tech14 - Getting Started With JSON in the DatabaseUKOUG Tech14 - Getting Started With JSON in the Database
UKOUG Tech14 - Getting Started With JSON in the DatabaseMarco Gralike
 
Doctrine 2
Doctrine 2Doctrine 2
Doctrine 2zfconfua
 
Node js mongodriver
Node js mongodriverNode js mongodriver
Node js mongodriverchristkv
 
Oracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory DatabaseOracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory DatabaseMarco Gralike
 
Система рендеринга в Magento
Система рендеринга в MagentoСистема рендеринга в Magento
Система рендеринга в MagentoMagecom Ukraine
 
Java and XML Schema
Java and XML SchemaJava and XML Schema
Java and XML SchemaRaji Ghawi
 
Entities in drupal 7
Entities in drupal 7Entities in drupal 7
Entities in drupal 7Zsolt Tasnadi
 

Tendances (20)

Android Data Persistence
Android Data PersistenceAndroid Data Persistence
Android Data Persistence
 
Drupal - dbtng 25th Anniversary Edition
Drupal - dbtng 25th Anniversary EditionDrupal - dbtng 25th Anniversary Edition
Drupal - dbtng 25th Anniversary Edition
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Starting with JSON Path Expressions in Oracle 12.1.0.2
Starting with JSON Path Expressions in Oracle 12.1.0.2Starting with JSON Path Expressions in Oracle 12.1.0.2
Starting with JSON Path Expressions in Oracle 12.1.0.2
 
Creating a Web of Data with Restlet
Creating a Web of Data with RestletCreating a Web of Data with Restlet
Creating a Web of Data with Restlet
 
Top Ten Reasons to Use EntityFieldQuery in Drupal
Top Ten Reasons to Use EntityFieldQuery in DrupalTop Ten Reasons to Use EntityFieldQuery in Drupal
Top Ten Reasons to Use EntityFieldQuery in Drupal
 
Persistences
PersistencesPersistences
Persistences
 
Automated Refactoring With IntelliJ IDEA
Automated Refactoring With IntelliJ IDEAAutomated Refactoring With IntelliJ IDEA
Automated Refactoring With IntelliJ IDEA
 
Core Php Component Presentation
Core Php Component PresentationCore Php Component Presentation
Core Php Component Presentation
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
Erlang for data ops
Erlang for data opsErlang for data ops
Erlang for data ops
 
UKOUG Tech14 - Getting Started With JSON in the Database
UKOUG Tech14 - Getting Started With JSON in the DatabaseUKOUG Tech14 - Getting Started With JSON in the Database
UKOUG Tech14 - Getting Started With JSON in the Database
 
Doctrine 2
Doctrine 2Doctrine 2
Doctrine 2
 
Node js mongodriver
Node js mongodriverNode js mongodriver
Node js mongodriver
 
spring-tutorial
spring-tutorialspring-tutorial
spring-tutorial
 
Oracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory DatabaseOracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory Database
 
Система рендеринга в Magento
Система рендеринга в MagentoСистема рендеринга в Magento
Система рендеринга в Magento
 
iBATIS
iBATISiBATIS
iBATIS
 
Java and XML Schema
Java and XML SchemaJava and XML Schema
Java and XML Schema
 
Entities in drupal 7
Entities in drupal 7Entities in drupal 7
Entities in drupal 7
 

Similaire à B13 Investigating oracle by Julian Dyke

Views for hackers v1.3
Views for hackers v1.3Views for hackers v1.3
Views for hackers v1.3Karim Ratib
 
Introduction to Oracle Database.pptx
Introduction to Oracle Database.pptxIntroduction to Oracle Database.pptx
Introduction to Oracle Database.pptxSiddhantBhardwaj26
 
MongoDB Knowledge share
MongoDB Knowledge shareMongoDB Knowledge share
MongoDB Knowledge shareMr Kyaing
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsSpringPeople
 
PHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodePHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodeSWIFTotter Solutions
 
Security Multitenant
Security MultitenantSecurity Multitenant
Security MultitenantArush Jain
 
Chapter Seven- JDBC.pptx
Chapter Seven- JDBC.pptxChapter Seven- JDBC.pptx
Chapter Seven- JDBC.pptxBlenKassahun1
 
Homework help on oracle
Homework help on oracleHomework help on oracle
Homework help on oracleSteve Nash
 
aotc_120805_mwagner
aotc_120805_mwagneraotc_120805_mwagner
aotc_120805_mwagnerMary Wagner
 
TSQL in SQL Server 2012
TSQL in SQL Server 2012TSQL in SQL Server 2012
TSQL in SQL Server 2012Eduardo Castro
 
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016Kacper Gunia
 
Introduction to Apache Tajo: Data Warehouse for Big Data
Introduction to Apache Tajo: Data Warehouse for Big DataIntroduction to Apache Tajo: Data Warehouse for Big Data
Introduction to Apache Tajo: Data Warehouse for Big DataGruter
 
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...Jürgen Ambrosi
 
Oleksandr Valetskyy - DI vs. IoC
Oleksandr Valetskyy - DI vs. IoCOleksandr Valetskyy - DI vs. IoC
Oleksandr Valetskyy - DI vs. IoCOleksandr Valetskyy
 
Mainframe Technology Overview
Mainframe Technology OverviewMainframe Technology Overview
Mainframe Technology OverviewHaim Ben Zagmi
 

Similaire à B13 Investigating oracle by Julian Dyke (20)

treeview
treeviewtreeview
treeview
 
treeview
treeviewtreeview
treeview
 
Views for hackers v1.3
Views for hackers v1.3Views for hackers v1.3
Views for hackers v1.3
 
Introduction to Oracle Database.pptx
Introduction to Oracle Database.pptxIntroduction to Oracle Database.pptx
Introduction to Oracle Database.pptx
 
MongoDB Knowledge share
MongoDB Knowledge shareMongoDB Knowledge share
MongoDB Knowledge share
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
 
Drools rule Concepts
Drools rule ConceptsDrools rule Concepts
Drools rule Concepts
 
PHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodePHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better Code
 
Security Multitenant
Security MultitenantSecurity Multitenant
Security Multitenant
 
Chapter Seven- JDBC.pptx
Chapter Seven- JDBC.pptxChapter Seven- JDBC.pptx
Chapter Seven- JDBC.pptx
 
Homework help on oracle
Homework help on oracleHomework help on oracle
Homework help on oracle
 
aotc_120805_mwagner
aotc_120805_mwagneraotc_120805_mwagner
aotc_120805_mwagner
 
TSQL in SQL Server 2012
TSQL in SQL Server 2012TSQL in SQL Server 2012
TSQL in SQL Server 2012
 
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Introduction to Apache Tajo: Data Warehouse for Big Data
Introduction to Apache Tajo: Data Warehouse for Big DataIntroduction to Apache Tajo: Data Warehouse for Big Data
Introduction to Apache Tajo: Data Warehouse for Big Data
 
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
 
Oleksandr Valetskyy - DI vs. IoC
Oleksandr Valetskyy - DI vs. IoCOleksandr Valetskyy - DI vs. IoC
Oleksandr Valetskyy - DI vs. IoC
 
The IoC Hydra
The IoC HydraThe IoC Hydra
The IoC Hydra
 
Mainframe Technology Overview
Mainframe Technology OverviewMainframe Technology Overview
Mainframe Technology Overview
 

Plus de Insight Technology, Inc.

グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Insight Technology, Inc.
 
事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明するInsight Technology, Inc.
 
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーンInsight Technology, Inc.
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとInsight Technology, Inc.
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームInsight Technology, Inc.
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門Insight Technology, Inc.
 
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 Insight Technology, Inc.
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也Insight Technology, Inc.
 
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー Insight Technology, Inc.
 
難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?Insight Technology, Inc.
 
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Insight Technology, Inc.
 
そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?Insight Technology, Inc.
 
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...Insight Technology, Inc.
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 Insight Technology, Inc.
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Insight Technology, Inc.
 
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]Insight Technology, Inc.
 

Plus de Insight Technology, Inc. (20)

グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
Docker and the Oracle Database
Docker and the Oracle DatabaseDocker and the Oracle Database
Docker and the Oracle Database
 
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
 
事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する
 
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォーム
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門
 
Lunch & Learn, AWS NoSQL Services
Lunch & Learn, AWS NoSQL ServicesLunch & Learn, AWS NoSQL Services
Lunch & Learn, AWS NoSQL Services
 
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也
 
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
 
難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?
 
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
 
そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?
 
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
 
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
 

Dernier

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Dernier (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

B13 Investigating oracle by Julian Dyke

  • 1. 1 Investigating Oracle Julian Dyke Independent Consultant DB Tech Showcase - Osaka May 2013 juliandyke.com© 2013 Julian Dyke
  • 2. juliandyke.com© 2013 Julian Dyke About Me  Worked with Oracle databases since 1989  Independent Consultant for 8 years  Regular presenter at Conferences, Seminars and Special Interest Groups  Co-Author of Pro Oracle Database 10g RAC on Linux  Member of Oak Table Network since 2003  Member of UKOUG Council  Former UKOUG director  Former chair of UKOUG RAC & HA SIG  Oracle ACE Expert  Oracle Certified DBA – 7.3, 8, 8i, 9i and 10i 2
  • 3. juliandyke.com© 2013 Julian Dyke3 Investigating Oracle Introduction  This presentation describes various techniques for investigating Oracle features  Investigative techniques differ depending on feature under investigation  Why investigate?  Feature evaluation  Performance  Compatibility  Licensing costs
  • 4. juliandyke.com© 2013 Julian Dyke Investigating Oracle Agenda  Initial Research  Advanced Research  Oracle Tools  Execution Plans  Trace  Dumps  Internals  Operating System Tools  Custom Tools 4
  • 5. juliandyke.com© 2013 Julian Dyke5 Initial Research
  • 6. juliandyke.com© 2013 Julian Dyke6 Initial Research Read the Oracle Documentation  Read ALL of the Oracle documentation for the feature  Useful sources include:  New Features Guide 11g Release 1 (11.2)  Part Number E10881-01  Other Oracle documents  What's New in... sections  White Papers  Oracle Technology Network  http://www.oracle.com/technetwork  My Oracle Support  http://support.oracle.com  Review the SQL syntax that supports the feature in:  SQL Language Reference  PL/SQL Packages and Types Reference
  • 7. juliandyke.com© 2013 Julian Dyke Initial Research Read Third Party Documentation  Read any available third party documentation for the feature  Blogs  Websites  Books  Presentations  White Papers  Make information is accurate and credible 7
  • 8. juliandyke.com© 2013 Julian Dyke Initial Research Learn how the new feature works  Build a test environment  Build VMs  Configure storage  Install Oracle software  Install required patch sets / one-offs  Create database(s)  Configure feature  Set parameters  Test feature  DDL  DML  etc 8
  • 9. juliandyke.com© 2013 Julian Dyke Initial Research Licensing  Check the licensing requirements for the feature being investigated  Almost all recent new features have been licensed options  Investigation may not be cost-effective  Check the Oracle Licensing document  Check the global pricing document  Check your existing license agreement  Gotchas include:  VMWare environments  Primary and standby configurations  RAC/Exadata environments 9
  • 10. juliandyke.com© 2013 Julian Dyke10 Advanced Research
  • 11. juliandyke.com© 2013 Julian Dyke11 Advanced Research Supported Parameters  Supported parameter values are reported in  V$PARAMETER  V$SYSTEM_PARAMETER  V$SPPARAMETER  Normalized lists of values are reported in  V$PARAMETER2  V$SYSTEM_PARAMETER2  In Oracle 10.1 and above, valid values for supported parameters are reported in  V$PARAMETER_VALID_VALUES
  • 12. juliandyke.com© 2013 Julian Dyke12 Advanced Research Unsupported Parameters  Unsupported parameter values are reported in  X$KSPPI  X$KSPPSV  X$KSPPCV  To print parameter name, description and values use:  In Oracle 10.1 and above, valid values for unsupported parameters are reported in  X$KSPVLD_VALUES SELECT i.ksppinm, i.ksppdesc, sv.ksppstvl FROM x$ksppi i, x$ksppsv sv WHERE i.indx = sv.indx ORDER BY i.ksppinm;
  • 13. juliandyke.com© 2013 Julian Dyke13 Advanced Research Optimizer Parameters  In Oracle 10.1 and above, optimizer parameter values are reported at  Instance-level  Session-level  Statement-level  Dynamic performance views only report supported parameters  Fixed (X$) tables include unsupported parameters: Level Supported Parameters Unsupported Parameters Instance V$SYS_OPTIMIZER_ENV X$QKSCESYS Session V$SES_OPTIMIZER_ENV X$QKSCESES Statement V$SQL_OPTIMIZER_ENV X$KQLFSQCE
  • 14. juliandyke.com© 2013 Julian Dyke14 Advanced Research Data Dictionary View Definitions  Data dictionary views are based on data dictionary objects DBA_% Accessible by all users ALL_% Accessible by current user USER_% Accessible by users with DBA privilege only  View definitions can be found in DBA_VIEWS SET LONG 50000 SELECT text FROM dba_views WHERE view_name = 'DBA_INDEXES';  Many views are defined in terms of other views e.g. DBA_SEGMENTS is now based on SYS_DBA_SEGS
  • 15. juliandyke.com© 2013 Julian Dyke15 Advanced Research Data Dictionary Objects  The data dictionary is created in the SYSTEM tablespace  Objects are owned by SYS  Data dictionary tables include: Table Name Description OBJ$ Objects TAB$ Tables IND$ Indexes COL$ Columns USER$ Users SEG$ Segments FET$ Free Extents UET$ Used Extents TS$ Tablespaces FILE$ Files
  • 16. juliandyke.com© 2013 Julian Dyke16 Advanced Research Data Dictionary Index Clusters  Many data dictionary objects are stored in index clusters  For example C_OBJ# is a cluster containing the following tables: ASSEMBLY$ ICOLDEP$ REFCON$ ATTRCOL$ IND$ SUBCOLTYPE$ CLU$ LIBRARY$ TAB$ COL$ LOB$ TYPE_MISC$ COLTYPE$ NTAB$ VIEWTRCOL$ ICOL$ OPQTYPE$ ICOLDEP$  Other clusters include:  C_USER#  C_FILE#_BLOCK#  C_TS#  Index clusters increase complexity of:  Trace files  Redo/undo changes
  • 17. juliandyke.com© 2013 Julian Dyke17 Advanced Research SQL.BSQ  During database creation, data dictionary objects are defined in $ORACLE_HOME/rdbms/admin/sql.bsq  In Oracle 11.1 and above, sql.bsq has been divided into the following files: dcore.bsq drac.bsq daw.bsq dsqlddl.bsq dsec.bsq dsummgt.bsq dmanage.bsq doptim.bsq dtools.bsq dplsql.bsq dobj.bsq dexttab.bsq dtxnspc.bsq djava.bsq ddm.bsq dfmap.bsq dpart.bsq dlmnr.bsq denv.bsq drep.bsq  The core data dictionary tables (obj$, tab$, ind$, col$ etc) are specified in dcore.bsq
  • 18. juliandyke.com© 2013 Julian Dyke18 Advanced Research Dynamic Performance View Definitions  Definitions reported by  V$FIXED_VIEW_DEFINITION  Global (GV$) view selects from underlying fixed (X$) tables SELECT view_definition FROM v$fixed_view_definition WHERE view_name = 'GV$RESULT_CACHE_MEMORY'; VIEW_DEFINITION SELECT inst_id, qesrcmem_lad, qesrcmem_cnk, qesrcmem_blk, DECODE (qesrcmem_sta, 0, 'NO', 1, 'YES'), qesrcmem_oid, qesrcmem_pos FROM x$qesrcmem; SELECT view_definition FROM v$fixed_view_definition WHERE view_name = 'V$RESULT_CACHE_MEMORY'; VIEW_DEFINITION SELECT id, chunk, offset, free, object_id, position FROM gv$result_cache_memory WHERE inst_id = USERENV ('Instance')  Instance (V$) view selects from global (GV$) view
  • 19. juliandyke.com© 2013 Julian Dyke Advanced Research PL/SQL Package Definitions  PL/SQL package headers are distributed in $ORACLE_HOME/rdbms/admin  For example:  dbmsmntr.sql contains package header for DBMS_MONITOR  dbmsxplan.sql contains package header for DBMS_XPLAN  Names are not intuitive  Use grep to find specific packages  Package headers contain comments that can be useful when documentation is inadequate e.g.:  new parameters  ambiguity  Most package bodies are wrapped:  Unwrap tools can be found on the internet  Probably break terms of licence agreements 19
  • 20. juliandyke.com© 2013 Julian Dyke20 Advanced Research Error Messages  Error messages describe what a feature does not support  Can be useful to understand how feature is implemented  See $ORACLE_HOME/rdbms/mesg/oraus.msg  Contains all message and event definitions  Individual messages reported by oerr on Unix platforms  Binary file - on Unix use strings utility to inspect contents $ strings $ORACLE_HOME/rdbms/mesg/oraus.msg > /tmp/oraus.txt  A range of error numbers is initially allocated for each feature  Some features have more than one range
  • 21. juliandyke.com© 2013 Julian Dyke21 Advanced Research Fixed Tables and Views  V$FIXED_TABLES reports all fixed objects including  Fixed (X$) tables  Derived fixed (X$) tables (fixed views)  Global (GV$) dynamic performance views  Instance (V$) dynamic performance views  V$INDEXED_FIXED_COLUMN reports all indexed columns for  Fixed (X$) tables
  • 22. juliandyke.com© 2013 Julian Dyke22 Advanced Research Fixed Tables and Views  Fixed (X$) tables are described in X$KQFTA  Fixed (X$) derived tables are described in X$KQFDT  Fixed (X$) table columns arev described in X$KQFCO  Internal data type reported in KQFCODTY  Indexes reported in KQFCOIDX and KQFCOIPO SELECT co.kqfconam, CASE co.kqfcodty WHEN 2 THEN 'NUMBER' WHEN 23 THEN 'RAW ('||kqfcosiz||')' END FROM x$kqfco co, x$kqfta ta WHERE co.kqfcotab = ta.indx AND ta.kqftanam = 'X$QESRCMEM' ORDER BY co.kqfcocno;
  • 23. juliandyke.com© 2013 Julian Dyke23 Advanced Research Fixed Tables  X$KQFCO.KQFCODTY reports internal column data type  Current values in Oracle 11.1 Value Description 1 VARCHAR2 2 NUMBER 12 DATE 23 RAW 112 CLOB 180 TIMESTAMP 181 TIMESTAMP WITH TIME ZONE  See http://www.juliandyke.com for more comprehensive list of internal data types (Internals/Internal Data Types)
  • 24. juliandyke.com© 2013 Julian Dyke24 Advanced Research Shared Memory  V$SGA  reports SGA memory sizes  V$SGAINFO  reports SGA memory pool sizes  introduced in Oracle 10.1  V$SGASTAT  reports SGA memory area sizes  enhanced in Oracle 10.1
  • 25. juliandyke.com© 2013 Julian Dyke25 Advanced Research Shared Memory  X$KSMFSV  Contents of fixed SGA  X$KSMGE  Reports granule allocation  X$KSMMEM  Contents of SGA presented as an array  Usually fails in Windows  Usually fails with Automatic Memory Management  X$KSMSP  Reports shared pool memory usage  X$KSMHP  Reports heap allocation
  • 26. juliandyke.com© 2013 Julian Dyke Advanced Research AWR Tables  Some AWR tables contain useful information including:  DBA_HIST_PLAN_OPERATION_NAME  Execution plan operations  DBA_HIST_PLAN_OPTION_NAME  Execution plan operation options  DBA_HIST_SQLCOMMAND_NAME  Command types and names – similar to AUDIT_ACTIONS  DBA_HIST_TOPLEVELCALL_NAME  Top level calls 26
  • 27. juliandyke.com© 2013 Julian Dyke27 Advanced Research Dynamic Performance Views  V$BGPROCESS (X$KSBDD)  List of background processes  V$LATCHNAME (X$KSLLD)  List of parent latches  V$EVENT_NAME (X$KSLED)  List of wait events  V$LOCK_TYPE (X$KSIRESTYP)  List of lock/enqueue types (Oracle 10.1 and above)  V$SQL_HINT  List of supported hints  V$SQL_FEATURE  List of supported features
  • 28. juliandyke.com© 2013 Julian Dyke28 Advanced Research Dynamic Performance Views  V$TYPE_SIZE (X$KQFSZ)  Size in bytes of various data types  V$RESERVED_WORDS (X$KWDDEF)  List of keywords / reserved words  X$MESSAGES  List of messages exchanged between processes
  • 29. juliandyke.com© 2013 Julian Dyke29 Advanced Research Standard Package  $ORACLE_HOME/rdbms/admin/standard.sql  Contains definitions of standard PL/SQL types, built-in functions and exceptions  For example:  DECODE  SUBSTR  INSTR  UPPER  LOWER  In Oracle 11.2 standard.sql calls  stdspec.sql  stdbody.sql
  • 30. juliandyke.com© 2013 Julian Dyke30 Oracle Tools Execution Plans
  • 31. juliandyke.com© 2013 Julian Dyke31 Execution Plans AUTOTRACE  SQL*Plus feature  Prints execution plans and execution statistics $ORACLE_HOME/rdbms/admin/utlxplan.sql  Requires PLUS_TRACE role $ORACLE_HOME/sqlplus/admin/plustrce.sql GRANT plustrce TO user1;  In Oracle 10.1 and above execution plan output uses DBMS_XPLAN format:  Automatically includes:  Partition information  Parallel execution information  Requires access to a PLAN_TABLE
  • 32. juliandyke.com© 2013 Julian Dyke32 Execution Plans AUTOTRACE  Options are: SET AUTOTRACE OFF No report generated - default SET AUTOTRACE ON EXPLAIN Shows execution plan SET AUTOTRACE ON STATISTICS Shows execution statistics SET AUTOTRACE ON Shows output, execution plan and statistics SET AUTOTRACE ON TRACEONLY Suppresses query output if executed  The EXPLAIN option generates a new execution plan  Optimizer environment may differ from user sessions  SET AUTOTRACE TRACEONLY EXPLAIN  Shows execution plan for SELECT statements  Shows execution plan AND executes DML statements Note that SET AUTOT TRACE EXP executes DML statements Any changes must be rolled back manually Alternatively explain the SELECT subquery only
  • 33. juliandyke.com© 2013 Julian Dyke33 Execution Plans DBMS_XPLAN  Introduced in Oracle 9.2  Enhanced in subsequent releases  Useful subroutines include  DISPLAY - display a plan from a PLAN_TABLE  DISPLAY_AWR - display a plan from the AWR  DISPLAY_CURSOR - display a plan from the library cache  DISPLAY_PLAN – returns plan as a CLOB  DISPLAY_SQLSET – displays a plan from a SQL tuning set  DISPLAY_SQLPLAN_BASELIN E – displays a plan from SQL baseline  For example to display execution plan for statement most recently executed by the current session: SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY_CURSOR);
  • 34. juliandyke.com© 2013 Julian Dyke Execution Plans DBMS_XPLAN  The FORMAT parameter specifies the output format for the execution plan  There are four options:  BASIC – minimum information - operation ID, operation name and option only  TYPICAL – default – most relevant information in plan – operation id, operation name, option, #rows, # bytes, optimizer cost. Also pruning, parallel and predicate information where applicable  SERIAL – same as TYPICAL except parallel information is not displayed even if plan executes in parallel  ALL – same as TYPICAL. Also includes PROJECTION, ALIAS and REMOTE SQL if applicable 34
  • 35. juliandyke.com© 2013 Julian Dyke Execution Plans DBMS_XPLAN  The following keywords can be added to the FORMAT options for more fine- grained control of output  ROWS – number of rows estimated by optimizer  BYTES – number of bytes estimated by optimizer  COST – optimizer cost information  PARTITION – partition pruning information  PARALLEL – parallel execution information  PREDICATE – predicate section  PROJECTION – projection section  ALIAS – Query Block Name / Object Alias section  REMOTE – distributed query information  NOTE - note section of plan  Sections are only displayed if relevant  To exclude a section prefix with minus e.g. -PROJECTION 35
  • 36. juliandyke.com© 2013 Julian Dyke Execution Plans DBMS_XPLAN  For DISPLAY_CURSOR and DISPLAY_SQLSET, additional data can be output using the following keywords:  IOSTATS – shows IO statistics for all executions of the cursor  MEMSTATS – displays memory management statistics including  execution mode of operator  how much memory was used  number of bytes spilled to disk  ALLSTATS – both IOSTATS and MEMSTATS  LAST – only report statistics for last execution of cursor  IOSTATS, ALLSTATS and LAST require basic plan statistics which are collected by  setting STATISTICS_LEVEL parameter to ALL  specifying GATHER_PLAN_STATISTICS hint  MEMSTATS requires PGA memory management to be enabled by:  setting PGA_AGGREGATE_TARGET to non-zero value 36
  • 37. juliandyke.com© 2013 Julian Dyke37 Oracle Tools Trace
  • 38. juliandyke.com© 2013 Julian Dyke38 SQL Trace Diagnostics Area  In Oracle 11.1 and above trace files and alert logs are written to the diagnostics area:  Default location is $ORACLE_HOME/diag  Trace files and alter log are written to  $ORACLE_BASE/diag/rdbms/<database>/<instance>/trace  For example for database TEST  $ORACLE_BASE/diag/rdbms/test/TEST/trace  BACKGROUND_DUMP_DEST and USER_DUMP_DEST parameters still available in Oracle 11.2  New dynamic performance view V$DIAG_INFO reports trace locations  Trace file for current process can be identified using: SELECT value FROM v$diag_info WHERE name = 'Default Trace File';
  • 39. juliandyke.com© 2013 Julian Dyke39 SQL Trace Trace File Identifier  In Oracle 8.1.5 and above a suffix can be added to the trace file name using TRACEFILE_IDENTIFIER parameter For example given the following current trace filename: ALTER SESSION SET tracefile_identifier = 'TEST1'; TEST_ora_24672.trc  The following statement:  will add the suffix "_TEST1" to the file name e.g. TEST_ora_24672_TEST1.trc
  • 40. juliandyke.com© 2013 Julian Dyke40 DBMS_MONITOR Overview  Introduced in Oracle 10.1  Contains the following subroutines:  SESSION_TRACE_ENABLE  SESSION_TRACE_DISABLE  DATABASE_TRACE_ENABLE  DATABASE_TRACE_DISABLE  CLIENT_ID_TRACE_ENABLE  CLIENT_ID_TRACE_DISABLE  CLIENT_ID_STAT_ENABLE  CLIENT_ID_STAT_DISABLE  SERV_MOD_ACT_TRACE_ENABLE  SERV_MOD_ACT_TRACE_DISABLE  SERV_MOD_ACT_STAT_ENABLE  SERV_MOD_ACT_STAT_DISABLE  DBMS_MONITOR trace configuration is reported in DBA_ENABLED_TRACES
  • 41. juliandyke.com© 2013 Julian Dyke41 DBMS_MONITOR Enabling and Disabling Trace  To enable and disable trace in the current session use: EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE; EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE;  To enable and disable trace in another session e.g. 42 use: EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE (SESSION_ID => 42); EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE (SESSION_ID => 42);  To enable and disable trace for instance RAC1 use: EXECUTE DBMS_MONITOR.DATABASE_TRACE_ENABLE (INSTANCE_NAME => 'RAC1'); EXECUTE DBMS_MONITOR.DATABASE_TRACE_DISABLE (INSTANCE_NAME => 'RAC1');  To enable and disable trace for the entire database use: EXECUTE DBMS_MONITOR.DATABASE_TRACE_ENABLE; EXECUTE DBMS_MONITOR.DATABASE_TRACE_DISABLE;
  • 42. juliandyke.com© 2013 Julian Dyke42 DBMS_MONITOR Client Identifiers  Trace can be enabled for using client identifiers  Useful when many sessions connect using the same Oracle user  Useful with connection caches  To set a client identifier use DBMS_SESSION.SET_IDENTIFIER e.g.:  The client identifier is reported in V$SESSION.CLIENT_IDENTIFIER DBMS_SESSION.SET_IDENTIFIER ('CLIENT42');  To enable and disable trace for CLIENT42 use: DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE (CLIENT_ID => 'CLIENT42'); DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE (CLIENT_ID => 'CLIENT42');  To enable and disable statistics collection for CLIENT42 use: DBMS_MONITOR.CLIENT_ID_STAT_ENABLE (CLIENT_ID => 'CLIENT42'); DBMS_MONITOR.CLIENT_ID_STAT_DISABLE (CLIENT_ID => 'CLIENT42');  Client statistics are reported in V$CLIENT_STATS
  • 43. juliandyke.com© 2013 Julian Dyke43 DBMS_MONITOR Services, Modules & Actions  Trace can be enabled for a specific  service  service and module  service, module and action  Current module and action reported by  V$SESSION.MODULE  V$SESSION.ACTION  To specify a new action within the current module use: DBMS_APPLICATION_INFO.SET_ACTION (ACTION_NAME=> 'ACTION2'); DBMS_APPLICATION_INFO.SET_MODULE (MODULE_NAME => 'MODULE1', ACTION_NAME=> 'ACTION1');  To specify a module and action with a session use:
  • 44. juliandyke.com© 2013 Julian Dyke44 DBMS_MONITOR Services, Modules & Actions  To enable trace for use:  To enable statistics collection use: DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE (SERVICE_NAME => 'SERVICE1',MODULE_NAME => 'MODULE1',ACTION_NAME => 'ACTION1‘); DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE (SERVICE_NAME => 'SERVICE1',MODULE_NAME => 'MODULE1‘); DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE (SERVICE_NAME => 'SERVICE1',MODULE_NAME => 'MODULE1',ACTION_NAME => 'ACTION1‘); DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE (SERVICE_NAME => 'SERVICE1',MODULE_NAME => 'MODULE1‘); DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE (SERVICE_NAME => 'SERVICE1'); DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE (SERVICE_NAME => 'SERVICE1');  Statistics are reported in V$SERV_MOD_ACT_STATS
  • 45. juliandyke.com© 2013 Julian Dyke45 DBMS_MONITOR Row Source Statistics  In Oracle 11.2 and above PLAN_STAT parameter is supported in:  CLIENT_ID_TRACE_ENABLE  DATABASE_TRACE_ENABLE  SERV_MOD_ACT_TRACE_ENABLE  SESSION_TRACE_ENABLE  PLAN_STAT specifies frequency of row source statistic dumps. Can be:  NEVER  FIRST_EXECUTION (default)  ALL_EXECUTIONS  In Oracle 11.2 and above event 10046 level 16 also dumps row source statistics for all executions  To dump binds + waits + statistics use event 10046 level 28 ALTER SESSION SET EVENTS ‘10046 trace name context forever, level 28’’;
  • 46. juliandyke.com© 2013 Julian Dyke46 DBMS_MONITOR Interpreting Trace  Use TKPROF to sort and filter the trace file  Avoid re-explaining execution plans  Use TRCSESS to merge trace files  Useful with shared server (MTS)  See Metalink Note: 39817.1 Interpreting Raw SQL_TRACE and DBMS_SUPPORT.START_TRACE output  Describes contents of trace file  See Optimizing Oracle Performance Cary Millsap & Jeff Holt (O'Reilly)
  • 47. juliandyke.com© 2013 Julian Dyke47 Oracle Tools Dumps
  • 48. juliandyke.com© 2013 Julian Dyke48 ORADEBUG Overview  Undocumented SQL*Plus feature  Requires SQLDBA privilege  Allows session to connect to other processes and execute commands  A process must be specified for many ORADEBUG commands using one of:  ORADEBUG SETMYPID – connect to local process  ORADEBUG SETORAPID – connect using Oracle process ID  ORADEBUG SETOSPID – connect using OS pid  All commands are prefixed with ORADEBUG  To obtain a list of commands use ORADEBUG HELP  New functionality is frequently added  Review in each new release
  • 49. juliandyke.com© 2013 Julian Dyke49 ORADEBUG Dumps  To list of available dumps can be obtained using ORADEBUG DUMPLIST  Most dumps can be performed by  ORADEBUG  ALTER SYSTEM  ALTER SESSION  Some dumps can be very useful for specific investigations  Dumps are mostly undocumented  187 dumps listed in Oracle 11.2.0.3  Some dumps modify database  Only use on  non-production databases  when requested by Oracle Support
  • 50. juliandyke.com© 2013 Julian Dyke50 Memory Dumps Trace Dumps  Memory dumps can be taken using  ORADEBUG  ALTER SYSTEM  ALTER SESSION  For example to dump fixed SGA including contents ALTER SESSION SET EVENTS 'immediate trace name global_area level 2‘;  To dump summary of SGA heap use: ALTER SESSION SET EVENTS 'immediate trace name heapdump level 2‘;  To dump contents of a specific SGA subheap use: ALTER SESSION SET EVENTS 'immediate trace name heapdump_addr level 2, addr <address>';
  • 51. juliandyke.com© 2013 Julian Dyke51 File Dumps Redo Log Dumps  To identify the current redo log use: SELECT member FROM v$logfile WHERE group# = ( SELECT group# FROM v$log WHERE status = 'CURRENT' );  To dump the contents of a redo log use: ALTER SYSTEM DUMP LOGFILE '<logfilename>';  Also works for archived log files
  • 52. juliandyke.com© 2013 Julian Dyke52 File Dumps Redo Log Dumps  Full syntax is: ALTER SYSTEM DUMP LOGFILE 'FileName' SCN MIN MinimumSCN SCN MAX MaximumSCN TIME MIN MinimumTime TIME MAX MaximumTime LAYER Layer OPCODE Opcode DBA MIN FileNumber . BlockNumber DBA MAX FileNumber . BlockNumber RBA MIN LogFileSequenceNumber . BlockNumber RBA MAX LogFileSequenceNumber . BlockNumber;  See MOS Note 1031381.6 for further details
  • 53. juliandyke.com© 2013 Julian Dyke53 File Dumps Block Dumps  To dump a database block in Oracle 8.0 or above: ALTER SYSTEM DUMP DATAFILE <absolute_file_number> BLOCK <block_number>; ALTER SYSTEM DUMP DATAFILE <absolute_file_number> BLOCK MIN <minimum_block_number> BLOCK MAX <maximum_block_number>;  To dump a range of database blocks:  To dump a block from a datafile in a closed database: ALTER SYSTEM DUMP DATAFILE '<file_name>' BLOCK <block_number>;
  • 54. juliandyke.com© 2013 Julian Dyke54 Internals
  • 55. juliandyke.com© 2013 Julian Dyke Internals Overview  Oracle dumps often include data. Common data types include  VARCHAR2  CHAR  NUMBER  DATE  ROWID  Oracle dumps also include some common metadata structures including:  SCN  DBA  UBA  RBA  SQLID  Command Types  Unix Time 55
  • 56. juliandyke.com© 2013 Julian Dyke Internals Internal Data Type  Each data type has an internal number  Internal data type numbers appear in many structures and dumps  e.g. bind variables  Examples include: 56 Internal Type Description 1 VARCHAR2, NVARCHAR2 2 NUMBER 8 LONG 12 DATE 23 RAW 24 LONG RAW 58 ANYDATA 69 ROWID 96 CHAR, NCHAR 100 BINARY FLOAT 101 BINARY DOUBLE 111 XMLTYPE Internal Type Description 112 CLOB, NCLOB 113 BLOB 114 BFILE 121 TYPE (User-defined) 122 TYPE (TABLE OF RECORD) 123 TYPE (VARRAY) 180 TIMESTAMP 181 TIMESTAMP WITH TZ 182 INTERVAL YEAR TO MONTH 183 INTERVAL DAY TO SECOND 208 UROWID 231 TIMESTAMP WITH LOCAL TZ
  • 57. juliandyke.com© 2013 Julian Dyke57 Internals Hexadecimal Conversions  To convert from hexadecimal to decimal use TO_NUMBER with the 'XXXX' format mask e.g. SELECT TO_NUMBER (100,'XXX') FROM dual; TO_NUMBER(100,'XXX') -------------------- 256  To convert from decimal to hexadecimal use TO_CHAR with the 'XXXX' format mask e.g. SELECT TO_CHAR (256,'XXX') FROM dual; TO_NUMBER(256,'XXX') -------------------- 100
  • 58. juliandyke.com© 2013 Julian Dyke Internals DUMP Function  Column values can be dumped using the SQL DUMP function  Syntax is: 58 FUNCTION DUMP (expr[,return_format[,start_position[,length]]])  where RETURN_FORMAT is: Format Description 8 Octal Notation 10 Decimal Notation 16 Hexadecimal Notation 17 Single Characters  For example: SELECT DUMP (10000,16) FROM dual; DUMP(10000,16) ----------------- Typ=2 Len=2: c3,2
  • 59. juliandyke.com© 2013 Julian Dyke Internals String Data Types  VARCHAR2 (Internal Type 1)  Stores characters plus length byte(s)  e.g. “Ferrari” in a VARCHAR2(20) 59 Len F e r r a r i 07 46 65 72 72 61 72 69  CHAR (InternalType 96)  Pads data with space characters  e.g. “Ferrari” in a CHAR(20) Len F e r r a r i 07 46 65 72 72 61 72 69 20 20 20 20 20 20 20 20 20 20 20 20 20
  • 60. juliandyke.com© 2013 Julian Dyke Internals NUMBER Data Type  NUMBER (Internal Type 2)  Oracle proprietary number format  Platform independent representation  Designed to ensure numbers collate  Up to 38 bytes can be stored  Numbers are stored as base-100 digits  Each digit is increased by 1 to ensure non-zero  Numbers prefixed by  Sign bit  Exponent 60 Number Value Positive Infinity FF 65 Zero 80 Negative Infinity 01 01 66
  • 61. juliandyke.com© 2013 Julian Dyke Internals NUMBER Data Type  Some examples: 61 Value Internal Representation 0 80 1 C1,02 2 C1,03 3 C1,04 8 C1,09 9 C1,0A 99 C1,64 100 C2,02 101 C2,02,02 102 C2,02,03 999 C2,02,64 1000 C2,0B 1001 C2,0B,2 Value Internal Representation 9999 C2,64,64 10000 C3,02 90000 C3,0A 100000 C3,0B -1 3E,64,66 -2 3E,63,66 -3 3E,62,66 -4 3E,61,66 -99 3E,2,66 -100 3D,64,66 -101 3D,64,64,66 -102 3D,64,63,66 -103 3D,64,62,66
  • 62. juliandyke.com© 2013 Julian Dyke Internals DATE Data Type  DATE (Internal Type 12)  Oracle can store dates ranging from Jan 1, 4712BC to Dec 31 4712AD  Dates are always stored in 7 byte values  Always prefixed by (redundant) length byte  Format is: 62 Byte Value 0 Year / 100 1 Year % 100 2 Month 3 Day 4 Hour 5 Minute 6 Second  For example 26May2013 05:06:38 is Len 0 1 2 3 4 5 6 07 DD 07 05 1A 05 06 26
  • 63. juliandyke.com© 2013 Julian Dyke63 Internals ROWID Data Type  ROWID (Internal Type 69)  Extended ROWIDs were introduced in Oracle 8.0  Use relative file number / block number / slot number  Absolute file number derived from relative file number and tablespace number  Can be accessed using DBMS_ROWID package  Useful functions include:  ROWID_RELATIVE_FNO  ROWID_BLOCK_NUMBER  ROWID_ROW_NUMBER  ROWID_TO_ABSOLUTE_FNO
  • 64. juliandyke.com© 2013 Julian Dyke64 Internals ROWID Data Type  For example: SELECT ROWID, dbms_rowid.rowid_relative_fno (ROWID) AS "File Number", dbms_rowid.rowid_block_number (ROWID) AS "Block Number", dbms_rowid.rowid_row_number (ROWID) AS "Row Number" FROM gp.team; ROWID File Number Block Number Row Number ------------------ ----------- ------------ ---------- AAAR1GAAGAAAAR4AAA 6 1144 0 AAAR1GAAGAAAAR4AAB 6 1144 1 AAAR1GAAGAAAAR4AAC 6 1144 2 AAAR1GAAGAAAAR4AAD 6 1144 3 ......
  • 65. juliandyke.com© 2013 Julian Dyke Internals Database Block Address  Database Block Address (DBA)  Address of block in database  Always 32-bit value  Even on 64 bit platform  SMALLFILE tablespaces (default)  Upper 10 bits represent relative file number  Lower 22 bits represent block number  For example if DBA is 0x01000227 65  BIGFILE tablespaces  All 32 bits represent block number  Some dumps / tools may not report DBA correctly File number = dba >> 22 = 4 Block number = dba & 0x3FFFFF = 551
  • 66. juliandyke.com© 2013 Julian Dyke Internals SQLID  13 character representation of a 64-bit unsigned integer  Uses a mapping of 32 characters to 0..31  Uses the characters 0-9 and a-z with the exception of e, i, l and o  Used in Oracle 10.1 and above to identify SQL parent cursors  Also used to generate database replay file names  5-bit characters in SQL ID map to 8 bit characters in unsigned integer  Right to left  Top bit of left hand word is not used
  • 67. juliandyke.com© 2013 Julian Dyke Internals SQLID Conversion 0 1 2 3 4 5 6 7 00000 00001 00010 00011 00100 00101 00110 00111 8 9 a b c d f g 01000 01001 01010 01011 01100 01101 01110 01111 h j k m n p q r 10000 10001 10010 10011 10100 10101 10110 10111 s t u v w x y z 11000 11001 11010 11011 11100 11101 11110 11111  The following table shows the mapping between characters and byte values:
  • 68. juliandyke.com© 2013 Julian Dyke Internals SQLID Conversion  Example  “6j02q68mxgzt4“ = 0xcdc4598000000001 6 j 0 2 q 6 8 m x g z t 4 00110 10001 00000 00010 10110 00110 01000 10011 11101 01111 11111 11001 00100 01101000 10000000 01010110 00110010 00100111 11010111 11111111 00100100 68 80 56 32 27 d7 ff 24
  • 69. juliandyke.com© 2013 Julian Dyke Internals SQLID Conversion  The following C function converts a 64-bit unsigned integer into a 13- character SQL ID void ConvertLongToSQLID (unsigned long l,char *s) { char *map = "0123456789abcdfghjkmnpqrstuvwxyz"; int i; for (i = 0;i < 13;i++) { unsigned long k = (l >> (60 - i * 5)) & 0x1F; s[i] = map[k]; } s[13] = 0; }
  • 70. juliandyke.com© 2013 Julian Dyke Internals SQLID Conversion  The following C function converts a 13-character SQL ID into a 64-bit unsigned integer void ConvertSQLIDToLong (char *s,unsigned long *l) { char *map = "0123456789abcdfghjkmnpqrstuvwxyz"; unsigned long res = 0; int i,j; for (i = 0;i < 13;i++) { for (j = 0;j < 32;j++) { if (s[i] == map[j]) break; } res = (res << 5) | j; } *l = res; }
  • 71. juliandyke.com© 2013 Julian Dyke Internals Command Types  Command types are listed the SYS.AUDIT_ACTIONS table Name Type ACTION NUMBER NAME VARCHAR2(28)  Common actions include: Action Name 1 CREATE TABLE 2 INSERT 3 SELECT 6 UPDATE 7 DELETE 9 CREATE INDEX 10 DROP INDEX 12 DROP TABLE 17 GRANT OBJECT 19 CREATE SYNONYM
  • 72. juliandyke.com© 2013 Julian Dyke Internals Unix Time  Unix (POSIX) time – time in seconds since the Epoch  Not counting leap seconds  Epoch was midnight on 1st January 1970  To determine current Unix time on Linux: #include <stdio.h> #include <sys/time.h> main () { struct timeval tv; struct timezone tz; gettimeofday (&tv,&tz); printf ("Seconds = %ld (0x%lx)¥n",tv.tv_sec, tv.tv_sec); printf ("MicroSeconds = %ld (0x%lx)¥n",tv.tv_usec,tv.tv_usec); }
  • 73. juliandyke.com© 2013 Julian Dyke73 Operating System Tools
  • 74. juliandyke.com© 2013 Julian Dyke Operating System Tools strings and od  On Unix and Linux useful operating system tools for investigations include:  strings – print ASCII strings in a binary file  default string length is 4 – may miss short strings  use –n parameter to specify shorter minimum length e.g. –n 3  od – dumps blocks from a file in specified format  Formats include:  -c – ASCII characters or backslash escapes  -d – Unsigned decimal 2-byte units  -o – Octal 2 byte units  -x – Hexadecimal 2 byte units 74
  • 75. juliandyke.com© 2013 Julian Dyke75 Operating System Tools tcpdump  Allows packets to be captured and displayed  On busy systems packets can be stored in a file and examined subsequently  Filters can be applied to  Reduce number of packets captured  Increase level of data captured  Promiscuous - network packets between other network interfaces can be captured  Based on libpcap  Similar to snoop on Solaris  Useful for investigating  RAC interconnect traffic  Oracle Streams packets
  • 76. juliandyke.com© 2013 Julian Dyke76 Custom Tools
  • 77. juliandyke.com© 2013 Julian Dyke Custom Tools  If no suitable tools exist you can always develop your own….  C is the best language for most tools  Oracle is developed in C  Structures align better in C  Avoids unnecessary indirection  GNU compilers are usually available  Ensure development platform is:  Same architecture as target e.g. x86-64, SPARC, Itanium  Same word size e.g. 32 or 64 bit  Ensure correct compiler switches are specified  Word size  Word alignment 77
  • 78. juliandyke.com© 2013 Julian Dyke Custom Tools  RedoAnalyzer  Analyses online redo log / archive redo log  Summarizes redo generation by:  undo / redo  object  operation  Version specific  Usually requires porting for different platforms  LogMiner provides similar functionality  LogMiner has high memory requirements  RedoAnalyzer is less-intrusive  RedoAnalyzer is faster 78
  • 79. juliandyke.com© 2013 Julian Dyke Custom Tools  Block Dumper  Dumps database blocks  Similar output format to ALTER SYSTEM DUMP command  Can be adapted  For example non-intrusive analysis of chaining and migration  SGA Attach  Attaches to shared memory  Follows memory pointers from fixed SGA  Dumps blocks of memory  Dumps sessions, processes, parent and child cursors etc  Dumps RAC structures  Useful for research and for identifying bugs 79
  • 80. juliandyke.com© 2013 Julian Dyke Custom Tools  TCP Dump  Based on libpmap  Intercepts and dumps messages  Useful for  Clusterware / RAC research  Oracle Streams research  IO Performance  Reads random blocks from large files  Measures I/O rates  Fine grained  Allows I/O rate to be calculated for  buffered I/O  SAN cache  SAN disk 80
  • 81. juliandyke.com© 2013 Julian Dyke Custom Tools  ReplayAnalyzer  Extracts contents of database replay files (record and workload metadata)  Writes output in pseudo-XML format  Useful for understanding  database capture – what is captured and what is omitted  database replay – what can be replayed  TrailAnalyzer  Dumps contents of Oracle GoldenGate trail  Very similar to Oracle GoldenGate logdump utility 81
  • 82. juliandyke.com© 2013 Julian Dyke82 Thank you for listening info@juliandyke.com
  • 84. juliandyke.com© 2013 Julian Dyke84 Execution Plans AUTOTRACE  Statistics reported are: Statistic Name recursive calls db block gets consistent gets physical reads redo size bytes sent via SQL*Net to client bytes received via SQL*Net from client SQL*Net roundtrips to/from client sorts(memory) sorts(disk) rows processed
  • 85. juliandyke.com© 2013 Julian Dyke85 Execution Plans AUTOTRACE  In Oracle 9.2 and below execution plan consists of four columns: Column Name Description ID_PLUS_EXP ID of execution step PARENT_ID_PLUS_EXP Parent ID of execution step PLAN_PLUS_EXP Execution step OBJECT_NODE_PLUS_EXP Database links or parallel query servers  Output can optionally be suppressed e.g.: COLUMN PARENT_ID_PLUS_EXP NOPRINT  For parallel and remote operations additional information is displayed in another section: Column Name Description OTHER_PLUS_EXP Shows the SQL query OTHER_TAG_PLUS_EXP Shows reason for OTHER_PLUS_EXP
  • 86. juliandyke.com© 2013 Julian Dyke86 Parameters Parameter Types  Parameter types are reported numerically in  V$PARAMETER.TYPE  X$KSPPI.KSPPITY  Values are: Value Description 1 Boolean 2 String 3 Integer 4 File 6 Big Integer
  • 87. juliandyke.com© 2013 Julian Dyke87 Parameters Optimizer Parameters  Optimizer parameters are grouped in FID_QKSCESYROW  For example in Oracle 11.1 FID_QKSCESYROW COUNT(*) QKSFM_ALL 101 QKSFM_CBO 71 QKSFM_CVM 1 QKSFM_EXECUTION 1 QKSFM_FBA 1 QKSFM_INDEX 1 QKSFM_JPPD 3 QKSFM_OR_EXPAND 1 QKSFM_PQ 6 QKSFM_STAR_TRANS 3 QKSFM_TRANSFORMATION 70