Fixing Slow Queries in Oracle
Learn how to fixing slow queries in Oracle using a step-by-step DBA approach. Analyze execution plans, indexes, statistics, wait events, and SQL tuning.
oracle configurationintermediate
by OracleDba
15 views
Learn how to fixing slow queries in Oracle using a step-by-step DBA approach. Analyze execution plans, indexes, statistics, wait events, and SQL tuning.
123456789
SELECT
status, state, seconds_in_wait
FROM
v$session
WHERE
username
=
'APP_USER'
;12345678910
SELECT
sql_id, sql_text
FROM
v$
sql
WHERE
sql_id
=
'&sql_id'
;123456789101112131415161718192021
EXPLAIN PLAN
FOR
SELECT
...;
SELECT
*
FROM
TABLE
(DBMS_XPLAN.DISPLAY);
SELECT
*
FROM
TABLE
(DBMS_XPLAN.DISPLAY_CURSOR(
'&sql_id'
,
NULL
,
'ALLSTATS LAST'
));123456789
SELECT
index_name, column_name
FROM
dba_ind_columns
WHERE
table_name
=
'EMPLOYEES'
;123456789
SELECT
table_name, last_analyzed
FROM
dba_tables
WHERE
table_name
=
'ORDERS'
;1234567891011121314151617
EXEC
DBMS_STATS.GATHER_TABLE_STATS(
ownname
=
>
'SCHEMA'
,
tabname
=
>
'ORDERS'
,
cascade
=
>
TRUE
);123456789101112131415161718
SELECT
*
FROM
emp
WHERE
empno
=
7369
;
SELECT
*
FROM
emp
WHERE
empno
=
7499
;12345678910
SELECT
parse_calls, executions
FROM
v$
sql
WHERE
sql_id
=
'&sql_id'
;123456789
SELECT
event, total_waits, time_waited
FROM
v$system_event
ORDER
BY
time_waited
DESC
;12345678910111213141516171819202122232425262728293031
-- Bad
SELECT
*
FROM
orders
WHERE
order_id
IN
(
SELECT
order_id
FROM
payments);
-- Better
SELECT
o.
*
FROM
orders o
WHERE
EXISTS
(
SELECT
1
FROM
payments p
WHERE
p.order_id
=
o.order_id
);1234567
ALTER
SYSTEM
SET
optimizer_capture_sql_plan_baselines
=
TRUE
;Please to add comments
No comments yet. Be the first to comment!