add Tanel scripte
This commit is contained in:
parent
a328edb315
commit
d8107faaae
2
Tanel/46off.sql
Normal file
2
Tanel/46off.sql
Normal file
@ -0,0 +1,2 @@
|
||||
alter session set events '10046 trace name context off'
|
||||
/
|
||||
2
Tanel/46on.sql
Normal file
2
Tanel/46on.sql
Normal file
@ -0,0 +1,2 @@
|
||||
alter session set events '10046 trace name context forever, level &1'
|
||||
/
|
||||
5
Tanel/53on.sql
Normal file
5
Tanel/53on.sql
Normal file
@ -0,0 +1,5 @@
|
||||
prompt alter session set events '10053 trace name context forever, level 1';;
|
||||
prompt alter session set "_optimizer_trace"=all;;
|
||||
|
||||
alter session set events '10053 trace name context forever, level 1';
|
||||
alter session set "_optimizer_trace"=all;
|
||||
60
Tanel/SOL10204.sql
Normal file
60
Tanel/SOL10204.sql
Normal file
@ -0,0 +1,60 @@
|
||||
set appinfo OFF
|
||||
set appinfo "SQL*Plus"
|
||||
set arraysize 500
|
||||
set autocommit OFF
|
||||
set autoprint OFF
|
||||
set autorecovery OFF
|
||||
set autotrace OFF
|
||||
set blockterminator "."
|
||||
set cmdsep OFF
|
||||
set colsep " "
|
||||
set compatibility NATIVE
|
||||
set concat "."
|
||||
set copycommit 0
|
||||
set copytypecheck ON
|
||||
set define "&"
|
||||
set describe DEPTH 1 LINENUM ON INDENT ON
|
||||
set echo OFF
|
||||
set editfile "afiedt.buf"
|
||||
set embedded OFF
|
||||
set escape OFF
|
||||
set escchar OFF
|
||||
set feedback 6
|
||||
set flagger OFF
|
||||
set flush ON
|
||||
set heading ON
|
||||
set headsep "|"
|
||||
set linesize 160
|
||||
set logsource ""
|
||||
set long 10000000
|
||||
set longchunksize 10000000
|
||||
set markup HTML OFF HEAD "<style type='text/css'> BODY{ font:10pt Arial,Helvetica,sans-serif; color:black; background:White;} P { font:10pt Arial,Helvetica,sans-serif; color:black; background:White;} TABLE,TR,TD { font:10pt Arial,Helvetica,sans-serif; color:black; background:#f7f7e7; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px; white-space:nowrap;} TH { font:bold 10pt Arial,Helvetica,sans-serif; color:#336699; background:#cccc99; padding:0px 0px 0px 0px;} H1 { font:16pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; border-bottom:1px solid #cccc99; margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;} H2 { font:bold 10pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; margin-top:4pt; margin-bottom:0pt;} a {font:9pt Arial,Helvetica,sans-serif; color:#663300; background:#ffffff; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} </style> <title>SYS@solaris01:1521/SOL10204 report</title>" BODY "" TABLE "border='1' align='center' summary='Script output'" SPOOL ON ENTMAP ON PRE OFF
|
||||
set newpage 1
|
||||
set null ""
|
||||
set numformat ""
|
||||
set numwidth 10
|
||||
set pagesize 5000
|
||||
set pause OFF
|
||||
set recsep WRAP
|
||||
set recsepchar " "
|
||||
set serveroutput OFF
|
||||
set shiftinout invisible
|
||||
set showmode OFF
|
||||
set sqlblanklines OFF
|
||||
set sqlcase MIXED
|
||||
set sqlcontinue "> "
|
||||
set sqlnumber ON
|
||||
set sqlpluscompatibility 10.2.0
|
||||
set sqlprefix "#"
|
||||
set sqlprompt "SQL> "
|
||||
set sqlterminator ";"
|
||||
set suffix "sql"
|
||||
set tab OFF
|
||||
set termout OFF
|
||||
set time OFF
|
||||
set timing OFF
|
||||
set trimout ON
|
||||
set trimspool ON
|
||||
set underline "-"
|
||||
set verify OFF
|
||||
set wrap ON
|
||||
22
Tanel/a.sql
Normal file
22
Tanel/a.sql
Normal file
@ -0,0 +1,22 @@
|
||||
prompt A-Script: Display active sessions...
|
||||
|
||||
select
|
||||
count(*)
|
||||
, sql_id
|
||||
, case state when 'WAITING' then 'WAITING' else 'ON CPU' end state
|
||||
, case state when 'WAITING' then event else 'On CPU / runqueue' end event
|
||||
from
|
||||
v$session
|
||||
where
|
||||
status='ACTIVE'
|
||||
--and type !='BACKGROUND'
|
||||
and wait_class != 'Idle'
|
||||
and sid != (select sid from v$mystat where rownum=1)
|
||||
group by
|
||||
sql_id
|
||||
, case state when 'WAITING' then 'WAITING' else 'ON CPU' end
|
||||
, case state when 'WAITING' then event else 'On CPU / runqueue' end
|
||||
order by
|
||||
count(*) desc
|
||||
/
|
||||
|
||||
3
Tanel/acc.sql
Normal file
3
Tanel/acc.sql
Normal file
@ -0,0 +1,3 @@
|
||||
prompt alter session set session_cached_cursors=&1;;
|
||||
alter session set session_cached_cursors=&1
|
||||
/
|
||||
2
Tanel/aon.sql
Normal file
2
Tanel/aon.sql
Normal file
@ -0,0 +1,2 @@
|
||||
set autotrace trace stat
|
||||
|
||||
7
Tanel/aot/README.txt
Normal file
7
Tanel/aot/README.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Advanced Oracle Troubleshooting course scripts by Tanel Poder
|
||||
|
||||
DON'T JUST RUN THE SCRIPTS HERE WITHOUT CHECKING WHAT THEY DO!
|
||||
DON'T TEST THESE SCRIPTS IN PRODUCTION!
|
||||
|
||||
These scripts are designed to cause trouble, so that they could be troubleshooted.
|
||||
|
||||
25
Tanel/aot/bh_private.sql
Normal file
25
Tanel/aot/bh_private.sql
Normal file
@ -0,0 +1,25 @@
|
||||
col bhla_object head object for a40 truncate
|
||||
col bhla_DBA head DBA for a20
|
||||
col flg_lruflg head "FLAG:LRUFLAG"
|
||||
|
||||
select /*+ ORDERED */
|
||||
trim(to_char(bh.flag, 'XXXXXXXX')) ||':'||
|
||||
trim(to_char(bh.lru_flag, 'XXXXXXXX')) flg_lruflg,
|
||||
bh.obj,
|
||||
o.object_type,
|
||||
o.owner||'.'||o.object_name bhla_object,
|
||||
bh.tch,
|
||||
file# ||' '||dbablk bhla_DBA,
|
||||
bh.class,
|
||||
bh.state,
|
||||
bh.mode_held,
|
||||
bh.dirty_queue DQ
|
||||
from
|
||||
x$bh bh,
|
||||
dba_objects o
|
||||
where
|
||||
bh.obj = o.data_object_id
|
||||
and bitand(flag,8)=8
|
||||
order by
|
||||
tch asc
|
||||
/
|
||||
4102
Tanel/aot/bigcomment.sql
Normal file
4102
Tanel/aot/bigcomment.sql
Normal file
File diff suppressed because it is too large
Load Diff
3754
Tanel/aot/bigp.sql
Normal file
3754
Tanel/aot/bigp.sql
Normal file
File diff suppressed because it is too large
Load Diff
466
Tanel/aot/bigsql.sql
Normal file
466
Tanel/aot/bigsql.sql
Normal file
@ -0,0 +1,466 @@
|
||||
DELETE FROM t
|
||||
WHERE 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1 OR 1=1
|
||||
/
|
||||
|
||||
58
Tanel/aot/demo1.sql
Normal file
58
Tanel/aot/demo1.sql
Normal file
@ -0,0 +1,58 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demo1.sql
|
||||
--
|
||||
-- Purpose: Advanced Oracle Troubleshooting Seminar demo script
|
||||
-- Depending on the speed of LGWR IO will cause the session to wait
|
||||
-- for log buffer space and log switch wait events (demo works
|
||||
-- ok on a single hard disk laptop, probably will not wait so much
|
||||
-- on a server with write cached storage)
|
||||
--
|
||||
-- Author: Tanel Poder ( http://www.tanelpoder.com )
|
||||
-- Copyright: (c) Tanel Poder
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
prompt Initializing Demo1...
|
||||
|
||||
set feedback off termout off
|
||||
|
||||
drop table t;
|
||||
create table t as select * from dba_source where 1=0;
|
||||
|
||||
alter system switch logfile;
|
||||
alter system switch logfile;
|
||||
|
||||
set termout on
|
||||
prompt Taking Statspack report...
|
||||
|
||||
EXEC statspack.snap
|
||||
|
||||
prompt Starting Demo1 (running a "batch job")
|
||||
set termout off
|
||||
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
insert into t select * from dba_source;
|
||||
|
||||
commit;
|
||||
set termout on
|
||||
|
||||
prompt "Batch job" finished...
|
||||
prompt Taking Statspack report...
|
||||
EXEC statspack.snap
|
||||
|
||||
|
||||
103
Tanel/aot/demo2.sql
Normal file
103
Tanel/aot/demo2.sql
Normal file
@ -0,0 +1,103 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demo2.sql
|
||||
--
|
||||
-- Purpose: Advanced Oracle Troubleshooting Seminar demo script
|
||||
-- Makes a single fetch to generate lots of LIOs by
|
||||
-- nested looping over full table scans.
|
||||
-- Requires lotslios.sql script from TPT scripts.
|
||||
--
|
||||
-- Author: Tanel Poder ( http://www.tanelpoder.com )
|
||||
-- Copyright: (c) Tanel Poder
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
prompt Starting Demo2...
|
||||
|
||||
-- @@lotslios 1000000000000
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demos/bind_peeking_nested_loops.sql
|
||||
-- Purpose: this script demos how a "wrong" bind variable value
|
||||
-- can cause an execution plan to be compiled which is
|
||||
-- very inefficient for the next execution with different bind variable
|
||||
-- values (with large number of matching rows)
|
||||
-- the second execution of the query takes very long time to complete
|
||||
-- despite adaptive bind variable peeking, which would kick in during the
|
||||
-- next (3rd) execution
|
||||
--
|
||||
-- This problem happens even on Oracle 11.2 despite adaptive bind peeking
|
||||
-- and cardinality feedback (due design, not a bug)
|
||||
--
|
||||
-- Author: Tanel Poder (tanel@e2sn.com)
|
||||
-- Copyright: (c) http://tech.e2sn.com
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
|
||||
CREATE TABLE t1 AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE t2 AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE t3 AS SELECT * FROM dba_objects;
|
||||
|
||||
CREATE INDEX i1 ON t1(owner);
|
||||
CREATE INDEX i2 ON t2(owner);
|
||||
CREATE INDEX i3 ON t3(owner);
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T1',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T2',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T3',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
|
||||
ALTER SESSION SET OPTIMIZER_INDEX_COST_ADJ=1;
|
||||
|
||||
VAR v VARCHAR2(100)
|
||||
|
||||
EXEC :v:='SCOTT'
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
--PROMPT Running query first time, this should be fast (and should use nested loops execution plan)
|
||||
|
||||
SELECT
|
||||
MIN(t1.created), MAX(t1.created)
|
||||
FROM
|
||||
t1
|
||||
, t2
|
||||
, t3
|
||||
WHERE
|
||||
t1.object_id = t2.object_id
|
||||
AND t2.object_id = t3.object_id
|
||||
AND t1.owner = :v
|
||||
AND t2.owner = :v
|
||||
AND t3.owner = :v
|
||||
/
|
||||
|
||||
SET TIMING OFF
|
||||
|
||||
--SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST ADVANCED'));
|
||||
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null));
|
||||
|
||||
EXEC :v:='SYS'
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
PROMPT Running the "report"...
|
||||
--PROMPT Now running the same query with different bind variables (this query should take very long time)
|
||||
|
||||
SELECT
|
||||
MIN(t1.created), MAX(t1.created)
|
||||
FROM
|
||||
t1
|
||||
, t2
|
||||
, t3
|
||||
WHERE
|
||||
t1.object_id = t2.object_id
|
||||
AND t2.object_id = t3.object_id
|
||||
AND t1.owner = :v
|
||||
AND t2.owner = :v
|
||||
AND t3.owner = :v
|
||||
/
|
||||
|
||||
49
Tanel/aot/demo3.sql
Normal file
49
Tanel/aot/demo3.sql
Normal file
@ -0,0 +1,49 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demo3.sql
|
||||
--
|
||||
-- Purpose: Advanced Oracle Troubleshooting Seminar demo script
|
||||
-- Causes a session hang by reading from external table
|
||||
-- which in turn reads from a Unix named pipe. Before 11.1.0.7
|
||||
-- this wait was uninstrumented.
|
||||
--
|
||||
-- Author: Tanel Poder ( http://www.tanelpoder.com )
|
||||
-- Copyright: (c) Tanel Poder
|
||||
--
|
||||
-- Notes: Meant to be executed from an Unix/Linux Oracle DB server
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
prompt Running demo3...
|
||||
|
||||
set feedback off termout off
|
||||
|
||||
CREATE OR REPLACE DIRECTORY mydir AS '/tmp';
|
||||
|
||||
host rm -f /tmp/myfile
|
||||
|
||||
host mknod /tmp/myfile p
|
||||
|
||||
DROP TABLE mytab;
|
||||
|
||||
CREATE TABLE mytab (
|
||||
a int
|
||||
)
|
||||
ORGANIZATION EXTERNAL (
|
||||
TYPE oracle_loader
|
||||
DEFAULT DIRECTORY mydir
|
||||
ACCESS PARAMETERS (
|
||||
RECORDS DELIMITED BY NEWLINE
|
||||
FIELDS TERMINATED BY ','
|
||||
(a)
|
||||
)
|
||||
LOCATION ('myfile')
|
||||
)
|
||||
/
|
||||
|
||||
select * from mytab;
|
||||
|
||||
set feedback on termout on
|
||||
|
||||
drop table mytab;
|
||||
|
||||
128
Tanel/aot/demo4.sql
Normal file
128
Tanel/aot/demo4.sql
Normal file
@ -0,0 +1,128 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demo4.sql
|
||||
--
|
||||
-- Purpose: Advanced Oracle Troubleshooting Seminar demo script
|
||||
-- Causes optimizer to loop in CBO code for very long time
|
||||
--
|
||||
-- Author: Tanel Poder ( http://www.tanelpoder.com )
|
||||
-- Copyright: (c) Tanel Poder
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
prompt Starting demo4...
|
||||
|
||||
set termout off feedback off
|
||||
|
||||
drop table t;
|
||||
|
||||
create table t as select * from all_objects where 1=0;
|
||||
|
||||
exec dbms_stats.gather_table_stats(user,'T');
|
||||
alter session set "_optimizer_search_limit"=100;
|
||||
|
||||
select *
|
||||
from
|
||||
t t1
|
||||
,t t2
|
||||
,t t3
|
||||
,t t4
|
||||
,t t5
|
||||
,t t6
|
||||
,t t7
|
||||
,t t8
|
||||
,t t9
|
||||
,t t10
|
||||
,t t11
|
||||
,t t12
|
||||
,t t13
|
||||
,t t14
|
||||
,t t15
|
||||
,t t16
|
||||
,t t17
|
||||
,t t18
|
||||
,t t19
|
||||
,t t20
|
||||
,t t21
|
||||
,t t22
|
||||
,t t23
|
||||
,t t24
|
||||
,t t25
|
||||
,t t26
|
||||
,t t27
|
||||
,t t28
|
||||
,t t29
|
||||
,t t30
|
||||
,t t31
|
||||
,t t32
|
||||
,t t33
|
||||
,t t34
|
||||
,t t35
|
||||
,t t36
|
||||
,t t37
|
||||
,t t38
|
||||
,t t39
|
||||
,t t40
|
||||
,t t41
|
||||
,t t42
|
||||
,t t43
|
||||
,t t44
|
||||
,t t45
|
||||
,t t46
|
||||
,t t47
|
||||
,t t48
|
||||
,t t49
|
||||
,t t50
|
||||
,t t51
|
||||
,t t52
|
||||
,t t53
|
||||
,t t54
|
||||
,t t55
|
||||
,t t56
|
||||
,t t57
|
||||
,t t58
|
||||
,t t59
|
||||
,t t60
|
||||
,t t61
|
||||
,t t62
|
||||
,t t63
|
||||
,t t64
|
||||
,t t65
|
||||
,t t66
|
||||
,t t67
|
||||
,t t68
|
||||
,t t69
|
||||
,t t70
|
||||
,t t71
|
||||
,t t72
|
||||
,t t73
|
||||
,t t74
|
||||
,t t75
|
||||
,t t76
|
||||
,t t77
|
||||
,t t78
|
||||
,t t79
|
||||
,t t80
|
||||
,t t81
|
||||
,t t82
|
||||
,t t83
|
||||
,t t84
|
||||
,t t85
|
||||
,t t86
|
||||
,t t87
|
||||
,t t88
|
||||
,t t89
|
||||
,t t90
|
||||
,t t91
|
||||
,t t92
|
||||
,t t93
|
||||
,t t94
|
||||
,t t95
|
||||
,t t96
|
||||
,t t97
|
||||
,t t98
|
||||
,t t99
|
||||
/
|
||||
|
||||
set termout on feedback on
|
||||
|
||||
26
Tanel/aot/demo5.sql
Normal file
26
Tanel/aot/demo5.sql
Normal file
@ -0,0 +1,26 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demo5.sql
|
||||
--
|
||||
-- Purpose: Advanced Oracle Troubleshooting Seminar demo script
|
||||
-- Causes a session hang by creating a pipe instead of a tracefile
|
||||
-- and enabling tracing then
|
||||
--
|
||||
-- Author: Tanel Poder ( http://www.tanelpoder.com )
|
||||
-- Copyright: (c) Tanel Poder
|
||||
--
|
||||
-- Notes: Meant to be executed from an Unix/Linux Oracle DB server
|
||||
-- Requires the TPT toolset login.sql to be executed (via putting
|
||||
-- TPT directory into SQLPATH) so that &trc variable would be
|
||||
-- initialized with tracefile name.
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
prompt Starting demo5...
|
||||
|
||||
host mknod &trc p
|
||||
|
||||
alter session set sql_trace=true;
|
||||
|
||||
select * from dual;
|
||||
|
||||
9
Tanel/aot/demo6.sql
Normal file
9
Tanel/aot/demo6.sql
Normal file
@ -0,0 +1,9 @@
|
||||
-- on 10.2.0.1
|
||||
-- doesn't work in all cases...
|
||||
|
||||
set feedback off termout off
|
||||
alter session set optimizer_mode=first_rows;
|
||||
|
||||
select * from dba_lock_internal;
|
||||
|
||||
set feedback on termout on
|
||||
28
Tanel/aot/demo7.sql
Normal file
28
Tanel/aot/demo7.sql
Normal file
@ -0,0 +1,28 @@
|
||||
-- from metalink bug 2456257
|
||||
|
||||
create table fact (
|
||||
id number primary key,
|
||||
col01 number, col02 number, col03 number, col04 number,
|
||||
col05 number, col06 number, col07 number, col08 number,
|
||||
col09 number, col10 number, col11 number, col12 number,
|
||||
col13 number, col14 number, col15 number, col16 number,
|
||||
col17 number, col18 number, col19 number, col20 number,
|
||||
dat01 number, dat02 number, dat03 number, dat04 number,
|
||||
dat05 number, dat06 number, dat07 number, dat08 number,
|
||||
dat09 number, dat10 number
|
||||
);
|
||||
|
||||
|
||||
select
|
||||
id,
|
||||
col01, col02, col03, col04, col05, col06, col07, col08, col09, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
|
||||
sum(dat01), sum(dat02), sum(dat03), sum(dat04), sum(dat05),
|
||||
sum(dat06), sum(dat07), sum(dat08), sum(dat09), sum(dat10)
|
||||
from
|
||||
fact
|
||||
group by cube ( id,
|
||||
col01, col02, col03, col04, col05, col06, col07, col08, col09, col10,
|
||||
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20
|
||||
);
|
||||
|
||||
20
Tanel/aot/hash.sql
Normal file
20
Tanel/aot/hash.sql
Normal file
@ -0,0 +1,20 @@
|
||||
col aot_hash_owner head OWNER for a12
|
||||
col aot_hash_name head NAME word_wrap for a30
|
||||
col aot_hash_dblink head DBLINK for a12
|
||||
|
||||
SELECT
|
||||
kglnaown aot_hash_OWNER
|
||||
, kglnaobj aot_hash_NAME
|
||||
, kglnadlk aot_hash_DBLINK
|
||||
, kglnahsh HASH_VALUE
|
||||
, TO_CHAR(kglnahsh, 'xxxxxxxx') HASH_HEX
|
||||
, kglnahsv MD5_HASH
|
||||
, kglobt03 SQL_ID
|
||||
, kglobt30 PLAN_HASH
|
||||
, kglobt31 LIT_HASH
|
||||
, kglobt46 OLD_HASH
|
||||
FROM
|
||||
x$kglob
|
||||
WHERE
|
||||
lower(kglnaobj) like lower('&1')
|
||||
/
|
||||
26
Tanel/aot/hash_demo.sql
Normal file
26
Tanel/aot/hash_demo.sql
Normal file
@ -0,0 +1,26 @@
|
||||
prompt Dropping and creating users...
|
||||
|
||||
drop user a cascade;
|
||||
drop user aa cascade;
|
||||
|
||||
set echo on
|
||||
|
||||
create user A identified by x;
|
||||
create user AA identified by x;
|
||||
alter user a quota unlimited on users;
|
||||
alter user aa quota unlimited on users;
|
||||
|
||||
-- about to create two tables under different usernames...
|
||||
pause
|
||||
|
||||
create table A.AA(a int);
|
||||
create table AA.A(a int);
|
||||
|
||||
-- about to run @aot/hash <object_name> commands for both tables...
|
||||
pause
|
||||
|
||||
set echo off
|
||||
|
||||
@aot/hash a
|
||||
@aot/hash aa
|
||||
|
||||
26
Tanel/aot/kill_cpu.sql
Normal file
26
Tanel/aot/kill_cpu.sql
Normal file
@ -0,0 +1,26 @@
|
||||
prompt
|
||||
prompt Jonathan Lewis'es kill_cpu script
|
||||
prompt
|
||||
|
||||
set termout off
|
||||
|
||||
--drop table kill_cpu;
|
||||
|
||||
create table kill_cpu (n, primary key(n)) organization index
|
||||
as
|
||||
select rownum n
|
||||
from all_objects
|
||||
where rownum <= 50
|
||||
;
|
||||
|
||||
set termout on echo on
|
||||
|
||||
alter session set "_old_connect_by_enabled"=true;
|
||||
|
||||
select count(*) X
|
||||
from kill_cpu
|
||||
connect by n > prior n
|
||||
start with n = 1
|
||||
;
|
||||
|
||||
set echo off
|
||||
20
Tanel/aot/matching_lock_type_wait.sql
Normal file
20
Tanel/aot/matching_lock_type_wait.sql
Normal file
@ -0,0 +1,20 @@
|
||||
-- show which locks' id1/id2 columns have matching columns in v$session_wait/ASH
|
||||
|
||||
select /*+ leading(e) */
|
||||
e.name
|
||||
, lt.type
|
||||
, lt.id1_tag
|
||||
, lt.id2_tag
|
||||
, lt.description lock_description
|
||||
from
|
||||
v$lock_type lt
|
||||
, v$event_name e
|
||||
where
|
||||
substr(e.name, 6,2) = lt.type
|
||||
and e.parameter2 = lt.id1_tag
|
||||
and e.parameter3 = lt.id2_tag
|
||||
and e.name like 'enq: %'
|
||||
order by
|
||||
e.name
|
||||
/
|
||||
|
||||
21
Tanel/aot/optimizer_bug.sql
Normal file
21
Tanel/aot/optimizer_bug.sql
Normal file
@ -0,0 +1,21 @@
|
||||
DROP TABLE t;
|
||||
|
||||
CREATE TABLE t AS SELECT * FROM dba_objects;
|
||||
CREATE INDEX i1 ON t(owner);
|
||||
CREATE INDEX i2 ON t(owner,object_name);
|
||||
CREATE INDEX i3 ON t(owner,subobject_name);
|
||||
CREATE INDEX i4 ON t(owner,object_id);
|
||||
CREATE INDEX i5 ON t(owner,data_object_id);
|
||||
CREATE INDEX i6 ON t(owner,object_type);
|
||||
CREATE INDEX i7 ON t(owner,created);
|
||||
CREATE INDEX i8 ON t(owner,last_ddl_time);
|
||||
CREATE INDEX i9 ON t(owner,timestamp);
|
||||
CREATE INDEX i10 ON t(owner,status);
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER,'T',NULL,100,METHOD_OPT=>'FOR ALL COLUMNS SIZE 254');
|
||||
|
||||
SELECT * FROM t
|
||||
WHERE owner IN (SELECT owner FROM t GROUP BY owner HAVING count(*) > 1)
|
||||
AND owner NOT IN (SELECT owner FROM t WHERE owner NOT LIKE 'S%')
|
||||
;
|
||||
|
||||
38
Tanel/aot/ora4031.sql
Normal file
38
Tanel/aot/ora4031.sql
Normal file
@ -0,0 +1,38 @@
|
||||
-- metalink bug 7340448
|
||||
-- oracle 10.2.0.4
|
||||
|
||||
drop table t;
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
|
||||
|
||||
create table t ( pat varchar2(10) );
|
||||
|
||||
begin
|
||||
for i in 1 .. 1000 loop
|
||||
insert into t values('abcdedghi');
|
||||
end loop;
|
||||
end;
|
||||
/
|
||||
|
||||
commit;
|
||||
|
||||
create table t1 ( pk number , val varchar2(100) );
|
||||
|
||||
begin
|
||||
for i in 1 .. 1000 loop
|
||||
insert into t1 values(i,'a');
|
||||
end loop;
|
||||
end;
|
||||
/
|
||||
|
||||
commit;
|
||||
|
||||
create table t2 as
|
||||
select /*+ USE_NL(t) ordered */
|
||||
pk, val, pat
|
||||
from
|
||||
t1,t
|
||||
where
|
||||
regexp_like(val,pat)
|
||||
/
|
||||
1715
Tanel/aot/short_stack.sql
Normal file
1715
Tanel/aot/short_stack.sql
Normal file
File diff suppressed because it is too large
Load Diff
36
Tanel/aot/sqlidconv.sql
Normal file
36
Tanel/aot/sqlidconv.sql
Normal file
@ -0,0 +1,36 @@
|
||||
@saveset
|
||||
set serverout on
|
||||
|
||||
def convstr=0123456789abcdfghjkmnpqrstuvwxyz
|
||||
def base=32
|
||||
|
||||
declare
|
||||
r number := 0;
|
||||
j number := 0;
|
||||
a number := 0;
|
||||
begin
|
||||
|
||||
for i in 1..length('&1') loop
|
||||
|
||||
j := length('&1') - i + 1;
|
||||
-- dbms_output.put_line('i='||i||' j='||j||' chr='||substr('&1',i,1));
|
||||
|
||||
a := (( power(&base, j-1) * (instr('&convstr',substr('&1',i,1))-1) ));
|
||||
-- dbms_output.put_line(' a='||a);
|
||||
|
||||
r := r + a;
|
||||
|
||||
-- dbms_output.put_line(' r='||to_char(r,'XXXXXXXXXXXXXXXX'));
|
||||
-- dbms_output.put_line('power='||to_char(power(&base, i-1)));
|
||||
-- dbms_output.put_line(' mult='||to_char(instr('&convstr',substr('&1',i,1))-1) );
|
||||
-- dbms_output.put_line('--');
|
||||
dbms_output.put_line('j='||j||' i='||i||' c='||substr('&1',i,1)||' mult='||to_char(instr('&convstr',substr('&1',i,1))-1)||' power='||to_char(power(&base, i-1))||' a='||a );
|
||||
end loop;
|
||||
dbms_output.put_line('result= '||r||' 0x'||trim(to_char(r, 'xxxxxxxxxxxxxxxxxxxxxxxx')));
|
||||
dbms_output.put_line('last 4B= '||trunc(mod(r,power(2,32)))||' 0x'||trim(to_char(trunc(mod(r,power(2,32))), 'xxxxxxxxxxxxxxxxxxxxxxxx')));
|
||||
|
||||
dbms_output.put_line(chr(10)||'sqlid=&1 hash_value='|| trunc(mod(r,power(2,32))) );
|
||||
end;
|
||||
/
|
||||
|
||||
@loadset
|
||||
22
Tanel/aot/system_ts_writes.sql
Normal file
22
Tanel/aot/system_ts_writes.sql
Normal file
@ -0,0 +1,22 @@
|
||||
DROP TABLE t1 PURGE;
|
||||
DROP TABLE t2 PURGE;
|
||||
|
||||
SET ECHO ON
|
||||
|
||||
CREATE TABLE t1(a INT) TABLESPACE users;
|
||||
CREATE TABLE t2(a INT) TABLESPACE system;
|
||||
|
||||
ALTER SYSTEM SWITCH LOGFILE;
|
||||
ALTER SYSTEM CHECKPOINT;
|
||||
|
||||
PAUSE
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
EXEC FOR i IN 1..300000 LOOP INSERT INTO t1 VALUES(i); END LOOP;
|
||||
|
||||
ALTER SYSTEM CHECKPOINT;
|
||||
|
||||
EXEC FOR i IN 1..300000 LOOP INSERT INTO t2 VALUES(i); END LOOP;
|
||||
|
||||
SET TIMING OFF ECHO OFF
|
||||
189
Tanel/aot/tx_lock_diag.txt
Normal file
189
Tanel/aot/tx_lock_diag.txt
Normal file
@ -0,0 +1,189 @@
|
||||
SQL> @sw 152
|
||||
|
||||
SID STATE EVENT SEQ# SEC_IN_WAIT P1 P2 P3 P1TRANSL
|
||||
------- ------- ---------------------------------------- ---------- ----------- ---------- ---------- ---------- ------------------------------------------
|
||||
152 WAITING enq: TX - row lock contention 21 3 1415053318 393221 6000 0x54580006: TX mode 6
|
||||
|
||||
SQL> select obj, tch, file#, dbablk
|
||||
2 from x$bh
|
||||
3 where bitand(flag,8)=8;
|
||||
|
||||
no rows selected
|
||||
|
||||
SQL>
|
||||
SQL>
|
||||
SQL>
|
||||
SQL>
|
||||
SQL>
|
||||
SQL> desc v$transaction
|
||||
Name Null? Type
|
||||
------------------------------------------------------------------------------------------------------ -------- ----------------------------------------------------------------------------
|
||||
1 ADDR RAW(8)
|
||||
2 XIDUSN NUMBER
|
||||
3 XIDSLOT NUMBER
|
||||
4 XIDSQN NUMBER
|
||||
5 UBAFIL NUMBER
|
||||
6 UBABLK NUMBER
|
||||
7 UBASQN NUMBER
|
||||
8 UBAREC NUMBER
|
||||
9 STATUS VARCHAR2(16)
|
||||
10 START_TIME VARCHAR2(20)
|
||||
11 START_SCNB NUMBER
|
||||
12 START_SCNW NUMBER
|
||||
13 START_UEXT NUMBER
|
||||
14 START_UBAFIL NUMBER
|
||||
15 START_UBABLK NUMBER
|
||||
16 START_UBASQN NUMBER
|
||||
17 START_UBAREC NUMBER
|
||||
18 SES_ADDR RAW(8)
|
||||
19 FLAG NUMBER
|
||||
20 SPACE VARCHAR2(3)
|
||||
21 RECURSIVE VARCHAR2(3)
|
||||
22 NOUNDO VARCHAR2(3)
|
||||
23 PTX VARCHAR2(3)
|
||||
24 NAME VARCHAR2(256)
|
||||
25 PRV_XIDUSN NUMBER
|
||||
26 PRV_XIDSLT NUMBER
|
||||
27 PRV_XIDSQN NUMBER
|
||||
28 PTX_XIDUSN NUMBER
|
||||
29 PTX_XIDSLT NUMBER
|
||||
30 PTX_XIDSQN NUMBER
|
||||
31 DSCN-B NUMBER
|
||||
32 DSCN-W NUMBER
|
||||
33 USED_UBLK NUMBER
|
||||
34 USED_UREC NUMBER
|
||||
35 LOG_IO NUMBER
|
||||
36 PHY_IO NUMBER
|
||||
37 CR_GET NUMBER
|
||||
38 CR_CHANGE NUMBER
|
||||
39 START_DATE DATE
|
||||
40 DSCN_BASE NUMBER
|
||||
41 DSCN_WRAP NUMBER
|
||||
42 START_SCN NUMBER
|
||||
43 DEPENDENT_SCN NUMBER
|
||||
44 XID RAW(8)
|
||||
45 PRV_XID RAW(8)
|
||||
46 PTX_XID RAW(8)
|
||||
|
||||
SQL> @calc 1415053318 + 0
|
||||
|
||||
DEC HEX
|
||||
---------- --------------------
|
||||
1415053318 54580006
|
||||
|
||||
SQL> @lt TX
|
||||
|
||||
TYPE LOCK NAME ID1 MEANING ID2 MEANING LT_ DESCRIPTION
|
||||
---- ------------------------------ ------------------------- ------------------------- --- ------------------------------------------------------------
|
||||
TX Transaction usn<<16 | slot sequence YES Lock held by a transaction to allow other transactions to
|
||||
wait for it
|
||||
|
||||
|
||||
SQL> @sw 152
|
||||
|
||||
SID STATE EVENT SEQ# SEC_IN_WAIT P1 P2 P3 P1TRANSL
|
||||
------- ------- ---------------------------------------- ---------- ----------- ---------- ---------- ---------- ------------------------------------------
|
||||
152 WAITING enq: TX - row lock contention 21 78 1415053318 393221 6000 0x54580006: TX mode 6
|
||||
|
||||
SQL>
|
||||
SQL>
|
||||
SQL> @sw 152
|
||||
|
||||
SID STATE EVENT SEQ# SEC_IN_WAIT P1 P2 P3 P1TRANSL
|
||||
------- ------- ---------------------------------------- ---------- ----------- ---------- ---------- ---------- ------------------------------------------
|
||||
152 WAITING enq: TX - row lock contention 21 81 1415053318 393221 6000 0x54580006: TX mode 6
|
||||
|
||||
SQL>
|
||||
SQL> select * from v$lock where sid = 152;
|
||||
|
||||
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
|
||||
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
|
||||
00000003DA32CE88 00000003DA32CEA8 152 TX 393221 6000 0 6 99 0
|
||||
00000003DA99E260 00000003DA99E288 152 TM 58197 0 3 0 99 0
|
||||
|
||||
SQL> select * from v$lock where sid = 152 and request != 0;
|
||||
|
||||
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
|
||||
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
|
||||
00000003DA32CE88 00000003DA32CEA8 152 TX 393221 6000 0 6 108 0
|
||||
|
||||
SQL> select mod(393221,power(2,16)) from dual;
|
||||
|
||||
MOD(393221,POWER(2,16))
|
||||
-----------------------
|
||||
5
|
||||
|
||||
SQL> select 393221/power(2,16) usn, mod(393221,power(2,16)) slot from dual;
|
||||
|
||||
USN SLOT
|
||||
---------- ----------
|
||||
6.00007629 5
|
||||
|
||||
SQL> select trunc(393221/power(2,16)) usn, mod(393221,power(2,16)) slot from dual;
|
||||
|
||||
USN SLOT
|
||||
---------- ----------
|
||||
6 5
|
||||
|
||||
SQL>
|
||||
SQL>
|
||||
SQL>
|
||||
SQL> select ses_addr from v$transaction where XIDUSN = 6 and XIDSLOT = 5;
|
||||
|
||||
SES_ADDR
|
||||
----------------
|
||||
00000003DD24CBA0
|
||||
|
||||
SQL> select sid, sql_hash_value from v$session where saddr = '00000003DD24CBA0';
|
||||
|
||||
SID SQL_HASH_VALUE
|
||||
---------- --------------
|
||||
144 3935459581
|
||||
|
||||
SQL> @sql 3935459581
|
||||
|
||||
CH# SQL_TEXT
|
||||
---- ------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
0 BEGIN dbms_lock.sleep(600); END;
|
||||
|
||||
|
||||
CH# PARENT_HANDLE OBJECT_HANDLE PARSES H_PARSES EXECUTIONS FETCHES ROWS_PROCESSED LIOS PIOS SORTS CPU_MS ELA_MS USERS_EXECUTING
|
||||
---- ---------------- ---------------- ---------- ---------- ---------- ---------- -------------- ---------- ---------- ---------- ---------- ---------- ---------------
|
||||
0 00000003DC63AD80 00000003DC4EF988 1 1 0 0 0 0 0 0 3.729 3.729 1
|
||||
|
||||
SQL>
|
||||
SQL>
|
||||
SQL> desc v$open_cursor
|
||||
Name Null? Type
|
||||
------------------------------------------------------------------------------------------------------ -------- ----------------------------------------------------------------------------
|
||||
1 SADDR RAW(8)
|
||||
2 SID NUMBER
|
||||
3 USER_NAME VARCHAR2(30)
|
||||
4 ADDRESS RAW(8)
|
||||
5 HASH_VALUE NUMBER
|
||||
6 SQL_ID VARCHAR2(13)
|
||||
7 SQL_TEXT VARCHAR2(60)
|
||||
|
||||
SQL> select hash_value, sql_text from v$open_cursor where sid = 144;
|
||||
|
||||
HASH_VALUE SQL_TEXT
|
||||
---------- ------------------------------------------------------------
|
||||
1420612433 update smon_scn_time set orig_thread=0, time_mp=:1, time_dp=
|
||||
3114265815 select local_tran_id, global_tran_fmt, global_oracle_id, glo
|
||||
3935459581 BEGIN dbms_lock.sleep(600); END;
|
||||
541202592 select obj, tch, file#, dbablk from x$bh where bitand(flag,8
|
||||
599212612 select s.username i_username, i.instance_name i_instance
|
||||
2953317698 update mytest set dummy = 'Y'
|
||||
2509924099 select value ||'/'||(select instance_name from v$instance)
|
||||
|
||||
7 rows selected.
|
||||
|
||||
SQL>
|
||||
|
||||
|
||||
|
||||
-- these were the troublemakers
|
||||
3935459581 BEGIN dbms_lock.sleep(600); END;
|
||||
2953317698 update mytest set dummy = 'Y'
|
||||
|
||||
|
||||
5
Tanel/ar.sql
Normal file
5
Tanel/ar.sql
Normal file
@ -0,0 +1,5 @@
|
||||
and rownum <= &1
|
||||
.
|
||||
prompt ....and rownum <= &1
|
||||
/
|
||||
|
||||
23
Tanel/arg.sql
Normal file
23
Tanel/arg.sql
Normal file
@ -0,0 +1,23 @@
|
||||
-- object arguments
|
||||
|
||||
col proc_owner head OWNER for a25
|
||||
col proc_object_name head OBJECT_NAME for a30
|
||||
col proc_procedure_name head PROCEDURE_NAME for a30
|
||||
|
||||
select
|
||||
a.owner proc_owner
|
||||
, a.object_name proc_object_name
|
||||
, p.procedure_name proc_procedure_name
|
||||
, a.subprogram_id
|
||||
from
|
||||
dba_arguments a
|
||||
, dba_procedures p
|
||||
where
|
||||
a.owner = p.owner
|
||||
and a.object_name = p.object_name
|
||||
and a.object_id = p.object_id
|
||||
and a.subprogram_id = p.subprogram_id
|
||||
and lower(p.owner) like lower('%&1%')
|
||||
and lower(p.object_name) like lower('%&2%')
|
||||
and lower(p.procedure_name) like lower('%&3%')
|
||||
/
|
||||
18
Tanel/as.sql
Normal file
18
Tanel/as.sql
Normal file
@ -0,0 +1,18 @@
|
||||
prompt A-Script: Display active sessions grouped by &1....
|
||||
|
||||
select
|
||||
&1
|
||||
, count(*)
|
||||
from
|
||||
v$session
|
||||
where
|
||||
status='ACTIVE'
|
||||
and type !='BACKGROUND'
|
||||
and wait_class != 'Idle'
|
||||
and sid != (select sid from v$mystat where rownum=1)
|
||||
group by
|
||||
&1
|
||||
order by
|
||||
count(*) desc
|
||||
/
|
||||
|
||||
12
Tanel/ascii.sql
Normal file
12
Tanel/ascii.sql
Normal file
@ -0,0 +1,12 @@
|
||||
select
|
||||
r*4+0, chr(r*4+0),
|
||||
r*4+1, chr(r*4+1),
|
||||
r*4+2, chr(r*4+2),
|
||||
r*4+3, chr(r*4+3)
|
||||
from (
|
||||
select
|
||||
rownum-1 r
|
||||
from
|
||||
dual connect by level <=64
|
||||
)
|
||||
/
|
||||
33
Tanel/ash.sql
Normal file
33
Tanel/ash.sql
Normal file
@ -0,0 +1,33 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
DEF from_time="2010-11-03 14:16:00"
|
||||
DEF to_time="2010-11-03 14:30:00"
|
||||
DEF cols=session_state,event
|
||||
|
||||
PROMPT FROM_TIME=&from_time TO_TIME=&to_time
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
&cols
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
FROM
|
||||
-- active_session_history_bak
|
||||
v$active_session_history
|
||||
-- dba_hist_active_sess_history
|
||||
WHERE
|
||||
sample_time BETWEEN TIMESTAMP'&from_time' AND TIMESTAMP'&to_time'
|
||||
GROUP BY
|
||||
&cols
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
DEF cols=session_state,event,p1,p2
|
||||
/
|
||||
|
||||
DEF cols=session_state,event,sql_id
|
||||
/
|
||||
|
||||
15
Tanel/ash/ash_log_file_sync.sql
Normal file
15
Tanel/ash/ash_log_file_sync.sql
Normal file
@ -0,0 +1,15 @@
|
||||
SELECT
|
||||
POWER(2, TRUNC(LOG(2,NULLIF(time_waited,0)))) up_to_microsec
|
||||
, COUNT(*)
|
||||
, SUM(time_waited)
|
||||
, MAX(time_waited)
|
||||
FROM
|
||||
v$active_session_history a
|
||||
WHERE
|
||||
a.event = 'log file sync'
|
||||
GROUP BY
|
||||
POWER(2, TRUNC(LOG(2,NULLIF(time_waited,0))))
|
||||
ORDER BY
|
||||
up_to_microsec
|
||||
/
|
||||
|
||||
52
Tanel/ash/asqlmon.sql
Normal file
52
Tanel/ash/asqlmon.sql
Normal file
@ -0,0 +1,52 @@
|
||||
COL operation FOR a30
|
||||
COL options FOR a30
|
||||
|
||||
|
||||
WITH sample_times AS (
|
||||
select * from dual
|
||||
),
|
||||
sq AS (
|
||||
SELECT
|
||||
to_char(ash.sample_time, 'YYYY-MM-DD HH24') sample_time
|
||||
, count(*) samples
|
||||
, ash.sql_id
|
||||
, ash.sql_child_number
|
||||
, ash.sql_plan_line_id
|
||||
, ash.sql_plan_operation
|
||||
, ash.sql_plan_options
|
||||
FROM
|
||||
v$active_session_history ash
|
||||
WHERE
|
||||
1=1
|
||||
AND ash.sql_id = '&1'
|
||||
AND ash.sql_child_number LIKE '%&2%'
|
||||
GROUP BY
|
||||
to_char(ash.sample_time, 'YYYY-MM-DD HH24')
|
||||
, ash.sql_id
|
||||
, ash.sql_child_number
|
||||
, ash.sql_plan_line_id
|
||||
, ash.sql_plan_operation
|
||||
, ash.sql_plan_options
|
||||
)
|
||||
SELECT
|
||||
sq.samples
|
||||
, plan.sql_id
|
||||
, plan.child_number
|
||||
, sq.sample_time
|
||||
, plan.id
|
||||
, plan.operation
|
||||
, plan.options
|
||||
FROM
|
||||
v$sql_plan plan
|
||||
, sq
|
||||
WHERE
|
||||
1=1
|
||||
AND sq.sql_id(+) = plan.sql_id
|
||||
AND sq.sql_child_number(+) = plan.child_number
|
||||
AND sq.sql_plan_line_id(+) = plan.id
|
||||
AND plan.sql_id = '&1'
|
||||
AND plan.child_number LIKE '%&2%'
|
||||
ORDER BY
|
||||
-- sq.sample_time
|
||||
to_number(plan.id)
|
||||
/
|
||||
28
Tanel/ash/event_hist.sql
Normal file
28
Tanel/ash/event_hist.sql
Normal file
@ -0,0 +1,28 @@
|
||||
COL evh_event HEAD WAIT_EVENT for A50 TRUNCATE
|
||||
COL evh_graph HEAD "Awesome|Graphic" JUST CENTER FOR A12
|
||||
COL pct_evt_time HEAD "% Event|Time"
|
||||
COL evh_est_total_ms HEAD "Estimated|Total ms"
|
||||
COL evh_millisec HEAD "Wait time|bucket ms+"
|
||||
COL evh_event HEAD "Wait Event"
|
||||
COL evh_sample_count HEAD "Num ASH|Samples"
|
||||
|
||||
BREAK ON evh_event SKIP 1
|
||||
|
||||
SELECT
|
||||
event evh_event
|
||||
, TRUNC(POWER(2,TRUNC(LOG(2,time_waited/1000)))) evh_millisec
|
||||
, COUNT(*) evh_sample_count
|
||||
, TRUNC(POWER(2,TRUNC(LOG(2,time_waited/1000)))) * COUNT(*) evh_est_total_ms
|
||||
, ROUND ( 100 * RATIO_TO_REPORT( TRUNC(POWER(2,TRUNC(LOG(2,time_waited/1000)))) * COUNT(*) ) OVER (PARTITION BY event) , 1 ) pct_evt_time
|
||||
, '|'||RPAD(NVL(RPAD('#', ROUND (10 * RATIO_TO_REPORT( TRUNC(POWER(2,TRUNC(LOG(2,time_waited/1000)))) * COUNT(*) ) OVER (PARTITION BY event)), '#'),' '), 10)||'|' evh_graph
|
||||
FROM
|
||||
V$ACTIVE_SESSION_HISTORY
|
||||
WHERE
|
||||
regexp_like(event, '&1')
|
||||
AND time_waited > 0
|
||||
GROUP BY
|
||||
event
|
||||
, TRUNC(POWER(2,TRUNC(LOG(2,time_waited/1000)))) -- millisec
|
||||
ORDER BY 1, 2
|
||||
/
|
||||
|
||||
2
Tanel/ash/sample_drift.sql
Normal file
2
Tanel/ash/sample_drift.sql
Normal file
@ -0,0 +1,2 @@
|
||||
select to_char(sample_time,'YYYYMMDD HH24:MI'), sample_time-lag(sample_time) over(order by sample_time) from (select distinct sample_time from v$active_session_history);
|
||||
|
||||
40
Tanel/ash10.sql
Normal file
40
Tanel/ash10.sql
Normal file
@ -0,0 +1,40 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
COL sql_plan_step FOR A50 WORD_WRAP
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.session_state
|
||||
, a.event
|
||||
, a.sql_id
|
||||
, a.blocking_session_status
|
||||
, a.blocking_session
|
||||
, a.blocking_session_serial#
|
||||
, a.current_obj#
|
||||
, a.sql_plan_line_id
|
||||
, a.sql_plan_operation ||' '||a.sql_plan_options sql_plan_step
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
DBA_HIST_ACTIVE_SESS_HISTORY a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-20 17:25:00' AND TIMESTAMP'2011-01-20 18:55:00'
|
||||
AND a.event = 'enq: TX - index contention'
|
||||
GROUP BY
|
||||
a.session_state
|
||||
, a.event
|
||||
, a.sql_id
|
||||
, a.blocking_session_status
|
||||
, a.blocking_session
|
||||
, a.blocking_session_serial#
|
||||
, a.current_obj#
|
||||
, a.sql_plan_line_id
|
||||
, a.sql_plan_operation ||' '||a.sql_plan_options
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
76
Tanel/ash2.sql
Normal file
76
Tanel/ash2.sql
Normal file
@ -0,0 +1,76 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
--DEF from_time="2010-10-30 18:12:00"
|
||||
--DEF to_time="2010-10-30 18:14:00"
|
||||
|
||||
DEF from_time="&1"
|
||||
DEF to_time="&2"
|
||||
|
||||
DEF cols=session_type,program,sql_opcode,sql_id
|
||||
|
||||
PROMPT FROM_TIME=&from_time TO_TIME=&to_time
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
count(*),
|
||||
&cols
|
||||
, CASE WHEN IN_CONNECTION_MGMT='Y' THEN 'CONNECTION_MGMT'
|
||||
WHEN IN_PARSE ='Y' THEN 'PARSE'
|
||||
WHEN IN_HARD_PARSE ='Y' THEN 'HARD_PARSE'
|
||||
WHEN IN_SQL_EXECUTION ='Y' THEN 'SQL_EXECUTION'
|
||||
WHEN IN_PLSQL_EXECUTION ='Y' THEN 'PLSQL_EXECUTION'
|
||||
WHEN IN_PLSQL_RPC ='Y' THEN 'PLSQL_RPC'
|
||||
WHEN IN_PLSQL_COMPILATION ='Y' THEN 'PLSQL_COMPILATION'
|
||||
WHEN IN_JAVA_EXECUTION ='Y' THEN 'JAVA_EXECUTION'
|
||||
WHEN IN_BIND ='Y' THEN 'BIND'
|
||||
WHEN IN_CURSOR_CLOSE ='Y' THEN 'CURSOR_CLOSE'
|
||||
WHEN IN_SEQUENCE_LOAD ='Y' THEN 'SEQUENCE_LOAD'
|
||||
END stage
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
FROM
|
||||
--active_session_history_bak
|
||||
v$active_session_history
|
||||
-- dba_hist_active_sess_history
|
||||
WHERE
|
||||
sample_time BETWEEN TIMESTAMP'&from_time' AND TIMESTAMP'&to_time'
|
||||
AND session_state = 'ON CPU'
|
||||
AND event IS NULL
|
||||
AND sql_id IS NULL
|
||||
GROUP BY
|
||||
&cols
|
||||
, CASE WHEN IN_CONNECTION_MGMT='Y' THEN 'CONNECTION_MGMT'
|
||||
WHEN IN_PARSE ='Y' THEN 'PARSE'
|
||||
WHEN IN_HARD_PARSE ='Y' THEN 'HARD_PARSE'
|
||||
WHEN IN_SQL_EXECUTION ='Y' THEN 'SQL_EXECUTION'
|
||||
WHEN IN_PLSQL_EXECUTION ='Y' THEN 'PLSQL_EXECUTION'
|
||||
WHEN IN_PLSQL_RPC ='Y' THEN 'PLSQL_RPC'
|
||||
WHEN IN_PLSQL_COMPILATION ='Y' THEN 'PLSQL_COMPILATION'
|
||||
WHEN IN_JAVA_EXECUTION ='Y' THEN 'JAVA_EXECUTION'
|
||||
WHEN IN_BIND ='Y' THEN 'BIND'
|
||||
WHEN IN_CURSOR_CLOSE ='Y' THEN 'CURSOR_CLOSE'
|
||||
WHEN IN_SEQUENCE_LOAD ='Y' THEN 'SEQUENCE_LOAD'
|
||||
END
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,top_level_sql_opcode,sql_id
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,top_level_sql_opcode,sql_id,event
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,top_level_sql_opcode,sql_id,event,p1
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,top_level_sql_opcode,sql_id,event,p1,p2
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,top_level_sql_opcode,top_level_sql_id
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,plsql_object_id,plsql_subprogram_id
|
||||
/
|
||||
|
||||
72
Tanel/ash3.sql
Normal file
72
Tanel/ash3.sql
Normal file
@ -0,0 +1,72 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
DEF from_time="2010-10-30 18:12:00"
|
||||
DEF to_time="2010-10-30 18:14:00"
|
||||
DEF cols=session_type,program,sql_opcode
|
||||
|
||||
PROMPT FROM_TIME=&from_time TO_TIME=&to_time
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
&cols
|
||||
, CASE WHEN IN_CONNECTION_MGMT='Y' THEN 'CONNECTION_MGMT'
|
||||
WHEN IN_PARSE ='Y' THEN 'PARSE'
|
||||
WHEN IN_HARD_PARSE ='Y' THEN 'HARD_PARSE'
|
||||
WHEN IN_SQL_EXECUTION ='Y' THEN 'SQL_EXECUTION'
|
||||
WHEN IN_PLSQL_EXECUTION ='Y' THEN 'PLSQL_EXECUTION'
|
||||
WHEN IN_PLSQL_RPC ='Y' THEN 'PLSQL_RPC'
|
||||
WHEN IN_PLSQL_COMPILATION ='Y' THEN 'PLSQL_COMPILATION'
|
||||
WHEN IN_JAVA_EXECUTION ='Y' THEN 'JAVA_EXECUTION'
|
||||
WHEN IN_BIND ='Y' THEN 'BIND'
|
||||
WHEN IN_CURSOR_CLOSE ='Y' THEN 'CURSOR_CLOSE'
|
||||
WHEN IN_SEQUENCE_LOAD ='Y' THEN 'SEQUENCE_LOAD'
|
||||
END stage
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
FROM
|
||||
active_session_history_bak
|
||||
-- v$active_session_history
|
||||
-- dba_hist_active_sess_history
|
||||
WHERE
|
||||
sample_time BETWEEN TIMESTAMP'&from_time' AND TIMESTAMP'&to_time'
|
||||
AND session_state = 'ON CPU'
|
||||
AND event IS NULL
|
||||
AND sql_id IS NULL
|
||||
GROUP BY
|
||||
&cols
|
||||
, CASE WHEN IN_CONNECTION_MGMT='Y' THEN 'CONNECTION_MGMT'
|
||||
WHEN IN_PARSE ='Y' THEN 'PARSE'
|
||||
WHEN IN_HARD_PARSE ='Y' THEN 'HARD_PARSE'
|
||||
WHEN IN_SQL_EXECUTION ='Y' THEN 'SQL_EXECUTION'
|
||||
WHEN IN_PLSQL_EXECUTION ='Y' THEN 'PLSQL_EXECUTION'
|
||||
WHEN IN_PLSQL_RPC ='Y' THEN 'PLSQL_RPC'
|
||||
WHEN IN_PLSQL_COMPILATION ='Y' THEN 'PLSQL_COMPILATION'
|
||||
WHEN IN_JAVA_EXECUTION ='Y' THEN 'JAVA_EXECUTION'
|
||||
WHEN IN_BIND ='Y' THEN 'BIND'
|
||||
WHEN IN_CURSOR_CLOSE ='Y' THEN 'CURSOR_CLOSE'
|
||||
WHEN IN_SEQUENCE_LOAD ='Y' THEN 'SEQUENCE_LOAD'
|
||||
END
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
DEF cols=module
|
||||
/
|
||||
|
||||
DEF cols=action
|
||||
/
|
||||
|
||||
DEF cols=user_id
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,top_level_sql_opcode
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,top_level_sql_opcode,top_level_sql_id
|
||||
/
|
||||
|
||||
DEF cols=session_type,program,plsql_object_id,plsql_subprogram_id
|
||||
/
|
||||
|
||||
63
Tanel/ash5.sql
Normal file
63
Tanel/ash5.sql
Normal file
@ -0,0 +1,63 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT /*+ LEADING(o) USE_HASH(a) */
|
||||
a.sql_id
|
||||
, o.kglnaobj cursor_name
|
||||
, a.session_state
|
||||
, a.event
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
v$active_session_history a
|
||||
, x$kglob o
|
||||
WHERE
|
||||
a.sql_id = o.kglobt13
|
||||
AND a.sample_time BETWEEN SYSDATE AND SYSDATE - 1/12
|
||||
AND o.kglnaobj = 'table_4_9_73c8_0_0_0'
|
||||
GROUP BY
|
||||
a.sql_id
|
||||
, o.kglnaobj
|
||||
, a.session_state
|
||||
, a.event
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT /*+ LEADING(o) USE_HASH(a) */
|
||||
a.sql_id
|
||||
, o.kglnaobj cursor_name
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
v$active_session_history a
|
||||
, x$kglob o
|
||||
WHERE
|
||||
a.sql_id = o.kglobt13
|
||||
AND a.sample_time BETWEEN SYSDATE AND SYSDATE - 1/12
|
||||
AND o.kglnaobj = 'table_4_9_73c8_0_0_0'
|
||||
GROUP BY
|
||||
a.sql_id
|
||||
, a.p1
|
||||
, a.p2
|
||||
, o.kglnaobj
|
||||
, a.session_state
|
||||
, a.event
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 300
|
||||
/
|
||||
|
||||
|
||||
54
Tanel/ash6.sql
Normal file
54
Tanel/ash6.sql
Normal file
@ -0,0 +1,54 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
dba_hist_active_sess_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-05 15:00:00' AND TIMESTAMP'2011-01-05 15:30:00'
|
||||
AND a.sql_id = '9dq68unz1naqz' -- table_4_9_73c8_0_0_0
|
||||
GROUP BY
|
||||
a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
dba_hist_active_sess_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-05 15:00:00' AND TIMESTAMP'2011-01-05 15:30:00'
|
||||
AND a.sql_id = '9dq68unz1naqz' -- table_4_9_73c8_0_0_0
|
||||
GROUP BY
|
||||
a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 300
|
||||
/
|
||||
|
||||
54
Tanel/ash7.sql
Normal file
54
Tanel/ash7.sql
Normal file
@ -0,0 +1,54 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
dba_hist_active_sess_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-05 15:00:00' AND TIMESTAMP'2011-01-05 15:30:00'
|
||||
AND a.sql_id = '9dq68unz1naqz' -- table_4_9_73c8_0_0_0
|
||||
GROUP BY
|
||||
a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
dba_hist_active_sess_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-05 15:00:00' AND TIMESTAMP'2011-01-05 15:30:00'
|
||||
AND a.sql_id = '9dq68unz1naqz' -- table_4_9_73c8_0_0_0
|
||||
GROUP BY
|
||||
a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 300
|
||||
/
|
||||
|
||||
77
Tanel/ash8.sql
Normal file
77
Tanel/ash8.sql
Normal file
@ -0,0 +1,77 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.session_state
|
||||
, a.event
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
dba_hist_active_sess_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-10 18:00:00' AND TIMESTAMP'2011-01-10 19:00:00'
|
||||
GROUP BY
|
||||
a.session_state
|
||||
, a.event
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.program
|
||||
, a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
dba_hist_active_sess_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-10 18:00:00' AND TIMESTAMP'2011-01-10 19:00:00'
|
||||
GROUP BY
|
||||
a.program
|
||||
, a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.program
|
||||
, a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
dba_hist_active_sess_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-10 18:00:00' AND TIMESTAMP'2011-01-10 19:00:00'
|
||||
GROUP BY
|
||||
a.program
|
||||
, a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 300
|
||||
/
|
||||
|
||||
77
Tanel/ash9.sql
Normal file
77
Tanel/ash9.sql
Normal file
@ -0,0 +1,77 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON VERIFY OFF
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.session_state
|
||||
, a.event
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
v$active_session_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-10 18:00:00' AND TIMESTAMP'2011-01-10 19:00:00'
|
||||
GROUP BY
|
||||
a.session_state
|
||||
, a.event
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.program
|
||||
, a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
v$active_session_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-10 18:00:00' AND TIMESTAMP'2011-01-10 19:00:00'
|
||||
GROUP BY
|
||||
a.program
|
||||
, a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 30
|
||||
/
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
a.program
|
||||
, a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
, count(*)
|
||||
, lpad(round(ratio_to_report(count(*)) over () * 100)||'%',10,' ') percent
|
||||
, MIN(a.sample_time)
|
||||
, MAX(a.sample_time)
|
||||
FROM
|
||||
v$active_session_history a
|
||||
WHERE
|
||||
a.sample_time BETWEEN TIMESTAMP'2011-01-10 18:00:00' AND TIMESTAMP'2011-01-10 19:00:00'
|
||||
GROUP BY
|
||||
a.program
|
||||
, a.sql_id
|
||||
, a.session_state
|
||||
, a.event
|
||||
, a.p1
|
||||
, a.p2
|
||||
ORDER BY
|
||||
percent DESC
|
||||
)
|
||||
WHERE ROWNUM <= 300
|
||||
/
|
||||
|
||||
50
Tanel/ashtop.sql
Normal file
50
Tanel/ashtop.sql
Normal file
@ -0,0 +1,50 @@
|
||||
COL ash_from_date NEW_VALUE ash_from_date
|
||||
COL ash_to_date NEW_VALUE ash_to_date
|
||||
|
||||
SELECT
|
||||
regexp_replace('&3','^-([0-9]*)(.)$', ' sysdate - \1 / ', 1, 0, 'i')
|
||||
||decode(regexp_replace('&3', '^-[0-9]*(.)$', '\1', 1, 0, 'i'),
|
||||
'd', '1',
|
||||
'h', '24',
|
||||
'm','24/60',
|
||||
's','24/60/60',
|
||||
''
|
||||
) ash_from_date,
|
||||
regexp_replace(regexp_replace('&4', '^now$', 'sysdate'),'^-([0-9]*)(.)$', ' sysdate - \1 / ', 1, 0, 'i')
|
||||
||decode(regexp_replace(regexp_replace('&4', '^now$', 'sysdate'), '^-[0-9]*(.)$', '\1', 1, 0, 'i'),
|
||||
'd', '1',
|
||||
'h', '24',
|
||||
'm','24/60',
|
||||
's','24/60/60',
|
||||
''
|
||||
) ash_to_date
|
||||
from
|
||||
dual
|
||||
/
|
||||
|
||||
|
||||
SELECT
|
||||
&1
|
||||
, COUNT(*) "Tot_Samples"
|
||||
, SUM(CASE WHEN wait_class IS NULL THEN 1 ELSE 0 END) "CPU"
|
||||
, SUM(CASE WHEN wait_class ='Application' THEN 1 ELSE 0 END) "Application"
|
||||
, SUM(CASE WHEN wait_class ='Configuration' THEN 1 ELSE 0 END) "Configuration"
|
||||
, SUM(CASE WHEN wait_class ='Concurrency' THEN 1 ELSE 0 END) "Concurrency"
|
||||
, SUM(CASE WHEN wait_class ='Commit' THEN 1 ELSE 0 END) "Commit"
|
||||
, SUM(CASE WHEN wait_class ='Idle' THEN 1 ELSE 0 END) "Idle"
|
||||
, SUM(CASE WHEN wait_class ='Network' THEN 1 ELSE 0 END) "Network"
|
||||
, SUM(CASE WHEN wait_class ='User I/O' THEN 1 ELSE 0 END) "User I/O"
|
||||
, SUM(CASE WHEN wait_class ='System I/O' THEN 1 ELSE 0 END) "System I/O"
|
||||
, SUM(CASE WHEN wait_class ='Cluster' THEN 1 ELSE 0 END) "Cluster"
|
||||
, SUM(CASE WHEN wait_class ='Other' THEN 1 ELSE 0 END) "Other"
|
||||
FROM
|
||||
v$active_session_history
|
||||
WHERE
|
||||
&2
|
||||
AND sample_time BETWEEN &ash_from_date AND &ash_to_date
|
||||
GROUP BY
|
||||
&1
|
||||
ORDER BY
|
||||
"Tot_Samples" DESC
|
||||
, &1
|
||||
/
|
||||
2
Tanel/asmdf.sql
Normal file
2
Tanel/asmdf.sql
Normal file
@ -0,0 +1,2 @@
|
||||
SELECT * FROM v$asm_diskgroup;
|
||||
|
||||
25
Tanel/asmdump.sql
Normal file
25
Tanel/asmdump.sql
Normal file
@ -0,0 +1,25 @@
|
||||
-- simple asm dump utility
|
||||
-- use full database file name (with +datagroup name) as only parameter
|
||||
-- nb! doesnt work properly on multidisk diskgroups with fine grained striping
|
||||
-- single disk disk groups with fine grained striping or multidisk groups
|
||||
-- with coarse grained striping are ok
|
||||
--
|
||||
-- tanel poder - nov 2005 [ http://www.tanelpoder.com ]
|
||||
|
||||
set lines 300 trim on verify off pages 50000
|
||||
|
||||
select
|
||||
'dd if='|| d.path||' bs=1048576 skip='||AU_KFFXP||' count=1 '||
|
||||
'>> /tmp/'||substr('&1',instr('&1','/',-1)+1)||'.dmp' cmd
|
||||
from
|
||||
X$KFFXP X, V$ASM_DISK D, V$ASM_ALIAS A
|
||||
where
|
||||
lower(A.NAME) = lower(substr('&1',instr('&1','/',-1)+1))
|
||||
and X.NUMBER_KFFXP = A.FILE_NUMBER
|
||||
and X.GROUP_KFFXP = A.GROUP_NUMBER
|
||||
and X.INCARN_KFFXP = A.FILE_INCARNATION
|
||||
and X.DISK_KFFXP = D.DISK_NUMBER
|
||||
and X.GROUP_KFFXP = D.GROUP_NUMBER
|
||||
order by
|
||||
X.XNUM_KFFXP;
|
||||
|
||||
30
Tanel/asmdumpf.sql
Normal file
30
Tanel/asmdumpf.sql
Normal file
@ -0,0 +1,30 @@
|
||||
-- EXPERIMENTAL! USE AT YOUR OWN RISK!
|
||||
--
|
||||
-- simple asm dump utility
|
||||
-- use full database file name (with +datagroup name) as only parameter
|
||||
-- nb! doesnt necessarily work properly on multidisk diskgroups with fine
|
||||
-- grained striping. created for 2-disk diskgroup. doesnt probably work
|
||||
-- ok on 2+ disk diskgroups.
|
||||
--
|
||||
-- tanel poder - nov 2005 [ http://www.tanelpoder.com ]
|
||||
|
||||
set lines 300 trim on verify off pages 50000
|
||||
|
||||
select
|
||||
'dd if='|| d.path||' bs=131072 skip='||(AU_KFFXP*8)+(mod(stripefact.r,8)*131072)||' count=1 '||
|
||||
'>> /tmp/'||substr('&1',instr('&1','/',-1)+1)||'.dmp' cmd
|
||||
from
|
||||
X$KFFXP X,
|
||||
V$ASM_DISK D,
|
||||
V$ASM_ALIAS A,
|
||||
(select rownum-1 r from v$mystat where rownum <= 8) stripefact
|
||||
where
|
||||
lower(A.NAME) = lower(substr('&1',instr('&1','/',-1)+1))
|
||||
and X.NUMBER_KFFXP = A.FILE_NUMBER
|
||||
and X.GROUP_KFFXP = A.GROUP_NUMBER
|
||||
and X.INCARN_KFFXP = A.FILE_INCARNATION
|
||||
and X.DISK_KFFXP = D.DISK_NUMBER
|
||||
and X.GROUP_KFFXP = D.GROUP_NUMBER
|
||||
order by
|
||||
X.XNUM_KFFXP;
|
||||
|
||||
21
Tanel/asql.sql
Normal file
21
Tanel/asql.sql
Normal file
@ -0,0 +1,21 @@
|
||||
prompt Display active sessions current SQLs
|
||||
|
||||
select
|
||||
sql_id
|
||||
, sql_hash_value
|
||||
, sql_child_number
|
||||
, count(*)
|
||||
from
|
||||
v$session
|
||||
where
|
||||
status='ACTIVE'
|
||||
and type !='BACKGROUND'
|
||||
and sid != (select sid from v$mystat where rownum=1)
|
||||
group by
|
||||
sql_id
|
||||
, sql_hash_value
|
||||
, sql_child_number
|
||||
order by
|
||||
count(*) desc
|
||||
/
|
||||
|
||||
75
Tanel/ast/01_sql_plan_layout_intro.sql
Normal file
75
Tanel/ast/01_sql_plan_layout_intro.sql
Normal file
@ -0,0 +1,75 @@
|
||||
set doc on
|
||||
|
||||
--DOCUMENT
|
||||
|
||||
set echo on
|
||||
--pause
|
||||
|
||||
-- view merging
|
||||
|
||||
select * from dual;
|
||||
|
||||
select * from table(dbms_xplan.display_cursor);
|
||||
|
||||
--pause
|
||||
|
||||
create or replace view v as select * from dual;
|
||||
|
||||
select * from (select * from v);
|
||||
|
||||
alter session set "_simple_view_merging"=false;
|
||||
|
||||
select * from (select * from v);
|
||||
|
||||
alter session set "_simple_view_merging"=true;
|
||||
|
||||
select * from (select /*+ NO_MERGE */ * from v);
|
||||
|
||||
select * from (select rownum r, v.* from v);
|
||||
|
||||
|
||||
-- scalar subqueries, run a subquery for populating a value in a single column or a row (9i+)
|
||||
|
||||
|
||||
select owner, count(*) from test_objects o group by owner;
|
||||
|
||||
-- another way (excludes nulls if any)
|
||||
|
||||
select u.username, (select count(*) from test_objects o where u.username = o.owner) obj_count from test_users u;
|
||||
|
||||
select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
|
||||
|
||||
set echo off
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
45
Tanel/ast/02_advanced_rewrite.sql
Normal file
45
Tanel/ast/02_advanced_rewrite.sql
Normal file
@ -0,0 +1,45 @@
|
||||
-- GRANT EXECUTE ON sys.dbms_advanced_rewrite TO &user
|
||||
-- there's no public synonym for this package so you should reference it by schema name
|
||||
|
||||
exec sys.DBMS_ADVANCED_REWRITE.DROP_REWRITE_EQUIVALENCE ('test_rewrite');
|
||||
|
||||
begin
|
||||
sys.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE (
|
||||
'test_rewrite'
|
||||
, 'select username,created from test_users u where username in (select owner from test_objects o where o.owner = u.username)'
|
||||
, 'select /*+ qb_name(main) no_unnest(@subq) */ username,created from test_users u where username in (select /*+ qb_name(subq) */ owner from test_objects o where o.owner = u.username) and /* careful! */ 1=1'
|
||||
, validate => true
|
||||
, rewrite_mode => 'general'
|
||||
);
|
||||
end;
|
||||
/
|
||||
|
||||
|
||||
alter session set query_rewrite_enabled = true -- this is true by default;
|
||||
alter session set query_rewrite_integrity = trusted;
|
||||
|
||||
-- if you see a FILTER operation (not a HASH JOIN SEMI) then the rewrite worked
|
||||
select username,created from test_users u where username in (select owner from test_objects o where o.owner = u.username);
|
||||
@x9a
|
||||
|
||||
|
||||
-- an example of how to add a missing ORDER BY to a statement which assumes that GROUP BY always orders data too
|
||||
-- (this is not true in 10.2+ where GROUP BY and DISTINCT operations can be done using hashing instead of sorting)
|
||||
|
||||
exec sys.DBMS_ADVANCED_REWRITE.DROP_REWRITE_EQUIVALENCE ('test_rewrite_order');
|
||||
|
||||
begin
|
||||
sys.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE (
|
||||
'test_rewrite_order'
|
||||
, 'select owner,count(*) from test_objects group by owner'
|
||||
, 'select * from (select owner,count(*) from test_objects group by owner order by owner)'
|
||||
, validate => true
|
||||
, rewrite_mode => 'text_match'
|
||||
);
|
||||
end;
|
||||
/
|
||||
|
||||
select owner,count(*) from test_objects group by owner;
|
||||
@x9a
|
||||
|
||||
|
||||
130
Tanel/ast/02_badly_correlated.sql
Normal file
130
Tanel/ast/02_badly_correlated.sql
Normal file
@ -0,0 +1,130 @@
|
||||
DROP TABLE badly_correlated1;
|
||||
DROP TABLE badly_correlated2;
|
||||
|
||||
CREATE TABLE badly_correlated1 (id, a, b, c, d, e, f, g, h, val) AS (
|
||||
SELECT rownum id, v.* FROM (
|
||||
SELECT
|
||||
mod(rownum, 100000) a
|
||||
, mod(rownum, 100000) b
|
||||
, mod(rownum, 100000) c
|
||||
, mod(rownum, 100000) d
|
||||
, mod(rownum, 100000) e
|
||||
, mod(rownum, 100000) f
|
||||
, mod(rownum, 100000) g
|
||||
, mod(rownum, 100000) h
|
||||
, lpad('x',100,'x')
|
||||
FROM
|
||||
dual CONNECT BY LEVEL <= 100000
|
||||
UNION ALL
|
||||
SELECT
|
||||
90 a
|
||||
, 91 b
|
||||
, 92 c
|
||||
, 93 d
|
||||
, 94 e
|
||||
, 95 f
|
||||
, 96 g
|
||||
, 97 h
|
||||
, lpad('y',100,'y')
|
||||
FROM
|
||||
dual CONNECT BY LEVEL <= 100000
|
||||
) v
|
||||
)
|
||||
/
|
||||
|
||||
CREATE TABLE badly_correlated2 AS SELECT * FROM badly_correlated1;
|
||||
|
||||
ALTER TABLE badly_correlated1 MODIFY id PRIMARY KEY;
|
||||
ALTER TABLE badly_correlated2 MODIFY id PRIMARY KEY;
|
||||
|
||||
CREATE INDEX idx1_badly_correlated1 ON badly_correlated1 (a,b,c,d,e,f,g);
|
||||
CREATE INDEX idx1_badly_correlated2 ON badly_correlated2 (a,b,c,d,e,f,g);
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'BADLY_CORRELATED1', method_opt=>'FOR TABLE', cascade=>true);
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'BADLY_CORRELATED2', method_opt=>'FOR TABLE', cascade=>true);
|
||||
|
||||
|
||||
select /*+ opt_param('_optimizer_use_feedback', 'false') */
|
||||
*
|
||||
from
|
||||
badly_correlated1 t1
|
||||
, badly_correlated2 t2
|
||||
where
|
||||
t1.id = t2.id
|
||||
and t1.a = 90
|
||||
and t1.b = 91
|
||||
and t1.c = 92
|
||||
and t1.d = 93
|
||||
and t1.e = 94
|
||||
and t1.f = 95
|
||||
and t1.g = 96
|
||||
and t1.h = 97
|
||||
and t2.val like 'xy%'
|
||||
/
|
||||
|
||||
@x
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'BADLY_CORRELATED1', method_opt=>'FOR TABLE FOR ALL COLUMNS SIZE 254', cascade=>true);
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'BADLY_CORRELATED2', method_opt=>'FOR TABLE FOR ALL COLUMNS SIZE 254', cascade=>true);
|
||||
|
||||
select /*+ opt_param('_optimizer_use_feedback', 'false') */
|
||||
*
|
||||
from
|
||||
badly_correlated1 t1
|
||||
, badly_correlated2 t2
|
||||
where
|
||||
t1.id = t2.id
|
||||
and t1.a = 90
|
||||
and t1.b = 91
|
||||
and t1.c = 92
|
||||
and t1.d = 93
|
||||
and t1.e = 94
|
||||
and t1.f = 95
|
||||
and t1.g = 96
|
||||
and t1.h = 97
|
||||
and t2.val like 'xy%'
|
||||
/
|
||||
|
||||
@x
|
||||
|
||||
-- create extended stats
|
||||
select
|
||||
dbms_stats.create_extended_stats(
|
||||
ownname => user
|
||||
, tabname=>'BADLY_CORRELATED1'
|
||||
, extension=>'(a,b,c,d,e,f,g,h)'
|
||||
)
|
||||
from dual
|
||||
/
|
||||
|
||||
select
|
||||
dbms_stats.create_extended_stats(
|
||||
ownname => user
|
||||
, tabname=>'BADLY_CORRELATED2'
|
||||
, extension=>'(a,b,c,d,e,f,g,h)'
|
||||
)
|
||||
from dual
|
||||
/
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'BADLY_CORRELATED1', method_opt=>'FOR TABLE FOR ALL COLUMNS SIZE 254', cascade=>true);
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'BADLY_CORRELATED2', method_opt=>'FOR TABLE FOR ALL COLUMNS SIZE 254', cascade=>true);
|
||||
|
||||
select /*+ opt_param('_optimizer_use_feedback', 'false') */
|
||||
*
|
||||
from
|
||||
badly_correlated1 t1
|
||||
, badly_correlated2 t2
|
||||
where
|
||||
t1.id = t2.id
|
||||
and t1.a = 90
|
||||
and t1.b = 91
|
||||
and t1.c = 92
|
||||
and t1.d = 93
|
||||
and t1.e = 94
|
||||
and t1.f = 95
|
||||
and t1.g = 96
|
||||
and t1.h = 97
|
||||
and t2.val like 'xy%'
|
||||
/
|
||||
|
||||
@x
|
||||
84
Tanel/ast/02_bind_peeking_nested_loops.sql
Normal file
84
Tanel/ast/02_bind_peeking_nested_loops.sql
Normal file
@ -0,0 +1,84 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demos/bind_peeking_nested_loops.sql
|
||||
-- Purpose: this script demos how a "wrong" bind variable value
|
||||
-- can cause an execution plan to be compiled which is
|
||||
-- very inefficient for the next execution with different bind variable
|
||||
-- values (with large number of matching rows)
|
||||
-- the second execution of the query takes very long time to complete
|
||||
-- despite adaptive bind variable peeking, which would kick in during the
|
||||
-- next (3rd) execution
|
||||
--
|
||||
-- This problem happens even on Oracle 11.2 despite adaptive bind peeking
|
||||
-- and cardinality feedback (due design, not a bug)
|
||||
--
|
||||
-- Author: Tanel Poder (tanel@e2sn.com)
|
||||
-- Copyright: (c) http://tech.e2sn.com
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
|
||||
CREATE TABLE t1 AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE t2 AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE t3 AS SELECT * FROM dba_objects;
|
||||
|
||||
CREATE INDEX i1 ON t1(owner);
|
||||
CREATE INDEX i2 ON t2(owner);
|
||||
CREATE INDEX i3 ON t3(owner);
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T1',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T2',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T3',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
|
||||
ALTER SESSION SET OPTIMIZER_INDEX_COST_ADJ=10;
|
||||
|
||||
VAR v VARCHAR2(100)
|
||||
|
||||
EXEC :v:='SCOTT'
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
PROMPT Running query first time, this should be fast (and should use nested loops execution plan)
|
||||
|
||||
SELECT
|
||||
MIN(t1.created), MAX(t1.created)
|
||||
FROM
|
||||
t1
|
||||
, t2
|
||||
, t3
|
||||
WHERE
|
||||
t1.object_id = t2.object_id
|
||||
AND t2.object_id = t3.object_id
|
||||
AND t1.owner = :v
|
||||
AND t2.owner = :v
|
||||
AND t3.owner = :v
|
||||
/
|
||||
|
||||
SET TIMING OFF
|
||||
|
||||
--SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST ADVANCED'));
|
||||
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null));
|
||||
|
||||
EXEC :v:='SYS'
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
PROMPT Now running the same query with different bind variables (this query should take very long time)
|
||||
|
||||
SELECT
|
||||
MIN(t1.created), MAX(t1.created)
|
||||
FROM
|
||||
t1
|
||||
, t2
|
||||
, t3
|
||||
WHERE
|
||||
t1.object_id = t2.object_id
|
||||
AND t2.object_id = t3.object_id
|
||||
AND t1.owner = :v
|
||||
AND t2.owner = :v
|
||||
AND t3.owner = :v
|
||||
/
|
||||
|
||||
84
Tanel/ast/02_bind_peeking_nested_loops_2.sql
Normal file
84
Tanel/ast/02_bind_peeking_nested_loops_2.sql
Normal file
@ -0,0 +1,84 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demos/bind_peeking_nested_loops.sql
|
||||
-- Purpose: this script demos how a "wrong" bind variable value
|
||||
-- can cause an execution plan to be compiled which is
|
||||
-- very inefficient for the next execution with different bind variable
|
||||
-- values (with large number of matching rows)
|
||||
-- the second execution of the query takes very long time to complete
|
||||
-- despite adaptive bind variable peeking, which would kick in during the
|
||||
-- next (3rd) execution
|
||||
--
|
||||
-- This problem happens even on Oracle 11.2 despite adaptive bind peeking
|
||||
-- and cardinality feedback (due design, not a bug)
|
||||
--
|
||||
-- Author: Tanel Poder (tanel@e2sn.com)
|
||||
-- Copyright: (c) http://tech.e2sn.com
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
|
||||
CREATE TABLE t1 AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE t2 AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE t3 AS SELECT * FROM dba_objects;
|
||||
|
||||
CREATE INDEX i1 ON t1(owner);
|
||||
CREATE INDEX i2 ON t2(owner);
|
||||
CREATE INDEX i3 ON t3(owner);
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T1',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T2',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T3',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 254');
|
||||
|
||||
ALTER SESSION SET OPTIMIZER_INDEX_COST_ADJ=10;
|
||||
|
||||
VAR v VARCHAR2(100)
|
||||
|
||||
EXEC :v:='SYS'
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
PROMPT Running query first time, this should be fast (and should use nested loops execution plan)
|
||||
|
||||
SELECT
|
||||
MIN(t1.created), MAX(t1.created)
|
||||
FROM
|
||||
t1
|
||||
, t2
|
||||
, t3
|
||||
WHERE
|
||||
t1.object_id = t2.object_id
|
||||
AND t2.object_id = t3.object_id
|
||||
AND t1.owner = :v
|
||||
AND t2.owner = :v
|
||||
AND t3.owner = :v
|
||||
/
|
||||
|
||||
SET TIMING OFF
|
||||
|
||||
--SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST ADVANCED'));
|
||||
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null));
|
||||
|
||||
EXEC :v:='SCOTT'
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
PROMPT Now running the same query with different bind variables (this query should take very long time)
|
||||
|
||||
SELECT
|
||||
MIN(t1.created), MAX(t1.created)
|
||||
FROM
|
||||
t1
|
||||
, t2
|
||||
, t3
|
||||
WHERE
|
||||
t1.object_id = t2.object_id
|
||||
AND t2.object_id = t3.object_id
|
||||
AND t1.owner = :v
|
||||
AND t2.owner = :v
|
||||
AND t3.owner = :v
|
||||
/
|
||||
|
||||
84
Tanel/ast/02_bind_peeking_nested_loops_nohist.sql
Normal file
84
Tanel/ast/02_bind_peeking_nested_loops_nohist.sql
Normal file
@ -0,0 +1,84 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: demos/bind_peeking_nested_loops.sql
|
||||
-- Purpose: this script demos how a "wrong" bind variable value
|
||||
-- can cause an execution plan to be compiled which is
|
||||
-- very inefficient for the next execution with different bind variable
|
||||
-- values (with large number of matching rows)
|
||||
-- the second execution of the query takes very long time to complete
|
||||
-- despite adaptive bind variable peeking, which would kick in during the
|
||||
-- next (3rd) execution
|
||||
--
|
||||
-- This problem happens even on Oracle 11.2 despite adaptive bind peeking
|
||||
-- and cardinality feedback (due design, not a bug)
|
||||
--
|
||||
-- Author: Tanel Poder (tanel@e2sn.com)
|
||||
-- Copyright: (c) http://tech.e2sn.com
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
|
||||
CREATE TABLE t1 AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE t2 AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE t3 AS SELECT * FROM dba_objects;
|
||||
|
||||
CREATE INDEX i1 ON t1(owner);
|
||||
CREATE INDEX i2 ON t2(owner);
|
||||
CREATE INDEX i3 ON t3(owner);
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T1',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 1');
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T2',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 1');
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS(user,'T3',cascade=>TRUE, method_opt=>'FOR ALL INDEXED COLUMNS SIZE 1');
|
||||
|
||||
ALTER SESSION SET OPTIMIZER_INDEX_COST_ADJ=10;
|
||||
|
||||
VAR v VARCHAR2(100)
|
||||
|
||||
EXEC :v:='SCOTT'
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
PROMPT Running query first time, this should be fast (and should use nested loops execution plan)
|
||||
|
||||
SELECT
|
||||
MIN(t1.created), MAX(t1.created)
|
||||
FROM
|
||||
t1
|
||||
, t2
|
||||
, t3
|
||||
WHERE
|
||||
t1.object_id = t2.object_id
|
||||
AND t2.object_id = t3.object_id
|
||||
AND t1.owner = :v
|
||||
AND t2.owner = :v
|
||||
AND t3.owner = :v
|
||||
/
|
||||
|
||||
SET TIMING OFF
|
||||
|
||||
--SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST ADVANCED'));
|
||||
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null));
|
||||
|
||||
EXEC :v:='SYS'
|
||||
|
||||
SET TIMING ON
|
||||
|
||||
PROMPT Now running the same query with different bind variables (this query should take very long time)
|
||||
|
||||
SELECT
|
||||
MIN(t1.created), MAX(t1.created)
|
||||
FROM
|
||||
t1
|
||||
, t2
|
||||
, t3
|
||||
WHERE
|
||||
t1.object_id = t2.object_id
|
||||
AND t2.object_id = t3.object_id
|
||||
AND t1.owner = :v
|
||||
AND t2.owner = :v
|
||||
AND t3.owner = :v
|
||||
/
|
||||
|
||||
33
Tanel/ast/02_choosing_join_order.sql
Normal file
33
Tanel/ast/02_choosing_join_order.sql
Normal file
@ -0,0 +1,33 @@
|
||||
-- setting the 11.2 cardinality feedback option to false for demo stability purposes
|
||||
exec execute immediate 'alter session set "_optimizer_use_feedback"=false'; exception when others then null;
|
||||
|
||||
SELECT /*+ no_star_transformation */
|
||||
ch.channel_desc
|
||||
, co.country_iso_code co
|
||||
, cu.cust_city
|
||||
, p.prod_category
|
||||
, sum(s.quantity_sold)
|
||||
, sum(s.amount_sold)
|
||||
FROM
|
||||
sh.sales s
|
||||
, sh.customers cu
|
||||
, sh.countries co
|
||||
, sh.products p
|
||||
, sh.channels ch
|
||||
WHERE
|
||||
-- join
|
||||
s.cust_id = cu.cust_id
|
||||
AND cu.country_id = co.country_id
|
||||
AND s.prod_id = p.prod_id
|
||||
AND s.channel_id = ch.channel_id
|
||||
-- filter
|
||||
AND ch.channel_class = 'Direct'
|
||||
AND co.country_iso_code = 'US'
|
||||
AND p.prod_category = 'Electronics'
|
||||
GROUP BY
|
||||
ch.channel_desc
|
||||
, co.country_iso_code
|
||||
, cu.cust_city
|
||||
, p.prod_category
|
||||
/
|
||||
|
||||
22
Tanel/ast/02_distinct_agg_transform.sql
Normal file
22
Tanel/ast/02_distinct_agg_transform.sql
Normal file
@ -0,0 +1,22 @@
|
||||
-- TODO: not working yet
|
||||
-- LEADING hint sets the order properly but not the ORDERED hint
|
||||
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
|
||||
create table t1 as select * from all_objects;
|
||||
create table t2 as select * from all_objects;
|
||||
|
||||
create index i1 on t2(object_id);
|
||||
|
||||
exec dbms_stats.gather_table_stats(user,'T1');
|
||||
exec dbms_stats.gather_table_stats(user,'T2');
|
||||
|
||||
-- ordered hint "ignored" starting from 11.2.0.1 thanks to distinct aggregation transformation
|
||||
|
||||
select /*+ ORDERED */ t1.owner, count(distinct t2.object_type) from t2, t1 where t1.object_id = t2.object_id group by t1.owner;
|
||||
@x
|
||||
|
||||
select /*+ ORDERED NO_TRANSFORM_DISTINCT_AGG */ t1.owner, count(distinct t2.object_type) from t2, t1 where t1.object_id = t2.object_id group by t1.owner;
|
||||
@x
|
||||
|
||||
70
Tanel/ast/02_join_nested_loops.sql
Normal file
70
Tanel/ast/02_join_nested_loops.sql
Normal file
@ -0,0 +1,70 @@
|
||||
set echo on
|
||||
|
||||
select
|
||||
t.owner, t.created, i.last_ddl_time
|
||||
from
|
||||
test_objects t
|
||||
, indexed_objects i
|
||||
where
|
||||
t.object_id = i.object_id
|
||||
and t.owner = 'AST'
|
||||
and t.object_name like 'T%'
|
||||
/
|
||||
|
||||
@xall
|
||||
|
||||
|
||||
select /*+ LEADING(t,i) USE_NL(i) */
|
||||
t.owner, t.created, i.last_ddl_time
|
||||
from
|
||||
test_objects t
|
||||
, indexed_objects i
|
||||
where
|
||||
t.object_id = i.object_id
|
||||
and t.owner = 'AST'
|
||||
and t.object_name like 'T%'
|
||||
/
|
||||
|
||||
@xall
|
||||
|
||||
|
||||
select /*+ LEADING(t,i) USE_NL(i) NO_NLJ_PREFETCH(i) */
|
||||
t.owner, t.created, i.last_ddl_time
|
||||
from
|
||||
test_objects t
|
||||
, indexed_objects i
|
||||
where
|
||||
t.object_id = i.object_id
|
||||
and t.owner = 'AST'
|
||||
and t.object_name like 'T%'
|
||||
/
|
||||
|
||||
@xall
|
||||
|
||||
select /*+ LEADING(t,i) USE_NL(i) NO_NLJ_BATCHING(i) */
|
||||
t.owner, t.created, i.last_ddl_time
|
||||
from
|
||||
test_objects t
|
||||
, indexed_objects i
|
||||
where
|
||||
t.object_id = i.object_id
|
||||
and t.owner = 'AST'
|
||||
and t.object_name like 'T%'
|
||||
/
|
||||
|
||||
@xall
|
||||
|
||||
select /*+ LEADING(t,i) USE_NL(i) NO_NLJ_PREFETCH(t) NO_NLJ_PREFETCH(i) NO_NLJ_BATCHING(t) NO_NLJ_BATCHING(i) */
|
||||
t.owner, t.created, i.last_ddl_time
|
||||
from
|
||||
test_objects t
|
||||
, indexed_objects i
|
||||
where
|
||||
t.object_id = i.object_id
|
||||
and t.owner = 'AST'
|
||||
and t.object_name like 'T%'
|
||||
/
|
||||
|
||||
@xall
|
||||
|
||||
set echo off
|
||||
22
Tanel/ast/02_leading_sq.sql
Normal file
22
Tanel/ast/02_leading_sq.sql
Normal file
@ -0,0 +1,22 @@
|
||||
select
|
||||
/*+
|
||||
no_unnest(@my_sub)
|
||||
leading (@my_sub emp_inner@my_sub)
|
||||
use_merge (@my_sub dept_inner@my_sub)
|
||||
*/
|
||||
*
|
||||
from
|
||||
scott.emp emp_outer
|
||||
where
|
||||
emp_outer.deptno in (
|
||||
select /*+ qb_name(my_sub) */
|
||||
dept_inner.deptno
|
||||
from
|
||||
scott.dept dept_inner
|
||||
, scott.emp emp_inner
|
||||
where
|
||||
dept_inner.dname like 'S%'
|
||||
and emp_inner.ename = dept_inner.dname
|
||||
and dept_inner.deptno = emp_outer.deptno
|
||||
)
|
||||
/
|
||||
20
Tanel/ast/02_qt_troubleshooting.sql
Normal file
20
Tanel/ast/02_qt_troubleshooting.sql
Normal file
@ -0,0 +1,20 @@
|
||||
drop table qt_test;
|
||||
|
||||
create table qt_test (
|
||||
id number primary key
|
||||
, name varchar2(100)
|
||||
)
|
||||
/
|
||||
|
||||
insert into qt_test select rownum, lpad('x',100,'x') from dual connect by level <=10000;
|
||||
|
||||
exec dbms_stats.gather_table_stats(user,'QT_TEST');
|
||||
|
||||
select count(name) from qt_test;
|
||||
@x
|
||||
|
||||
alter table qt_test modify name not null;
|
||||
|
||||
select count(name) from qt_test;
|
||||
@x
|
||||
|
||||
33
Tanel/ast/03_bitmap_star_transformation.sql
Normal file
33
Tanel/ast/03_bitmap_star_transformation.sql
Normal file
@ -0,0 +1,33 @@
|
||||
-- setting the 11.2 cardinality feedback option to false for demo stability purposes
|
||||
exec execute immediate 'alter session set "_optimizer_use_feedback"=false'; exception when others then null;
|
||||
|
||||
SELECT /*+ star_transformation */
|
||||
ch.channel_desc
|
||||
, co.country_iso_code co
|
||||
, cu.cust_city
|
||||
, p.prod_category
|
||||
, sum(s.quantity_sold)
|
||||
, sum(s.amount_sold)
|
||||
FROM
|
||||
sh.sales s
|
||||
, sh.customers cu
|
||||
, sh.countries co
|
||||
, sh.products p
|
||||
, sh.channels ch
|
||||
WHERE
|
||||
-- join
|
||||
s.cust_id = cu.cust_id
|
||||
AND cu.country_id = co.country_id
|
||||
AND s.prod_id = p.prod_id
|
||||
AND s.channel_id = ch.channel_id
|
||||
-- filter
|
||||
AND ch.channel_class = 'Direct'
|
||||
AND co.country_iso_code = 'US'
|
||||
AND p.prod_category = 'Electronics'
|
||||
GROUP BY
|
||||
ch.channel_desc
|
||||
, co.country_iso_code
|
||||
, cu.cust_city
|
||||
, p.prod_category
|
||||
/
|
||||
|
||||
43
Tanel/ast/03_constraints_not_null.sql
Normal file
43
Tanel/ast/03_constraints_not_null.sql
Normal file
@ -0,0 +1,43 @@
|
||||
DROP TABLE cons_demo;
|
||||
|
||||
CREATE TABLE cons_demo (owner varchar2(100), object_name varchar2(128));
|
||||
|
||||
INSERT /*+ APPEND */ INTO cons_demo SELECT owner, object_name FROM dba_objects;
|
||||
COMMIT;
|
||||
|
||||
SELECT COUNT(*) FROM cons_demo;
|
||||
@x
|
||||
|
||||
CREATE INDEX idx1_cons_demo ON cons_demo(owner);
|
||||
|
||||
SELECT COUNT(*) FROM cons_demo;
|
||||
@x
|
||||
|
||||
SELECT /*+ INDEX(cons_demo cons_demo(owner)) */ COUNT(*) FROM cons_demo;
|
||||
|
||||
ALTER TABLE cons_demo MODIFY owner NOT NULL NOVALIDATE;
|
||||
|
||||
INSERT INTO cons_demo VALUES (null, 'x');
|
||||
|
||||
SELECT COUNT(*) FROM cons_demo;
|
||||
@x
|
||||
|
||||
ALTER TABLE cons_demo MODIFY owner NULL;
|
||||
--ALTER TABLE cons_demo MODIFY owner NOT NULL VALIDATE;
|
||||
--ALTER TABLE cons_demo MODIFY owner NOT NULL DEFERRABLE INITIALLY DEFERRED VALIDATE;
|
||||
ALTER TABLE cons_demo MODIFY owner NOT NULL DEFERRABLE VALIDATE;
|
||||
|
||||
SELECT COUNT(*) FROM cons_demo;
|
||||
@x
|
||||
|
||||
|
||||
DROP TABLE cons_demo2;
|
||||
|
||||
CREATE TABLE cons_demo2 AS SELECT * FROM scott.emp;
|
||||
|
||||
ALTER TABLE cons_demo2 ADD CONSTRAINT c2 CHECK (SAL > 500);
|
||||
|
||||
SELECT * FROM cons_demo2 WHERE sal = 100;
|
||||
|
||||
@x
|
||||
|
||||
40
Tanel/ast/03_index_density.sql
Normal file
40
Tanel/ast/03_index_density.sql
Normal file
@ -0,0 +1,40 @@
|
||||
-- analyze index density (how many rows per leaf block)
|
||||
-- using SYS_OP_LBID function
|
||||
|
||||
-- replace the first argument of SYS_OP_LBID number with the object_id of the index you are scanning
|
||||
-- also you need to modify the table name and index name hint to query the table/index of your interest
|
||||
-- make sure that the index is actually accessed in the execution plan (both fast full scan and range/full
|
||||
-- scans do work, but fast full scan is the fastest if you want to scan through the entire index segment)
|
||||
--
|
||||
-- additionally, you can use SAMPLE BLOCK syntax (below) to sample only some index blocks (when using
|
||||
-- fast full scan)
|
||||
|
||||
|
||||
COL blocks_histogram HEAD "Log(2,blocks) Histogram" FOR A30
|
||||
|
||||
SELECT
|
||||
LPAD(NVL(TO_CHAR(rows_per_block), 'Total:'), 15, ' ') num_rows_in_blk
|
||||
, blocks
|
||||
, NVL2(rows_per_block, LPAD('#', LOG(2,blocks), '#'), null) blocks_histogram
|
||||
FROM (
|
||||
SELECT
|
||||
CEIL(num_rows/10) * 10 rows_per_block
|
||||
, COUNT(*) blocks
|
||||
FROM (
|
||||
SELECT /*+ INDEX_FFS(o i99) */
|
||||
count(*) num_rows
|
||||
FROM
|
||||
indexed_objects o -- SAMPLE BLOCK (1000) o
|
||||
WHERE
|
||||
owner IS NOT NULL
|
||||
GROUP BY
|
||||
SYS_OP_LBID( 82824, 'L', o.ROWID)
|
||||
)
|
||||
GROUP BY ROLLUP
|
||||
( CEIL(num_rows/10) * 10 )
|
||||
ORDER BY
|
||||
CEIL(num_rows/10) * 10
|
||||
)
|
||||
/
|
||||
|
||||
|
||||
17
Tanel/ast/03_index_inefficiency_1.sql
Normal file
17
Tanel/ast/03_index_inefficiency_1.sql
Normal file
@ -0,0 +1,17 @@
|
||||
select /*+ index_rs(o o(owner)) */ avg(sysdate - created) days_old
|
||||
from
|
||||
indexed_objects o
|
||||
where
|
||||
owner = 'SYS'
|
||||
and object_type = 'PACKAGE'
|
||||
/
|
||||
|
||||
@x
|
||||
|
||||
-- Then create an index which satisfies the additional filter column...
|
||||
-- create index idx2_indexed_objects on indexed_objects (owner, object_type);
|
||||
|
||||
-- Then re-create the index with also the column that includes the columns selected in the query
|
||||
-- drop index idx2_indexed_objects;
|
||||
-- create index idx2_indexed_objects on indexed_objects (owner, object_type, created);
|
||||
|
||||
23
Tanel/ast/03_index_supporting_sorts.sql
Normal file
23
Tanel/ast/03_index_supporting_sorts.sql
Normal file
@ -0,0 +1,23 @@
|
||||
select
|
||||
owner, object_type, status, count(*)
|
||||
from
|
||||
indexed_objects o
|
||||
where
|
||||
owner = 'SYS'
|
||||
and object_type = 'JAVA CLASS'
|
||||
and created > sysdate - 3650
|
||||
group by
|
||||
owner,object_type,status
|
||||
order by
|
||||
status
|
||||
/
|
||||
|
||||
|
||||
-- Then re-create the index with also the column that we sort/group by
|
||||
-- drop index idx2_indexed_objects;
|
||||
-- create index idx2_indexed_objects on indexed_objects (owner, object_type, created, status);
|
||||
|
||||
-- And try tho swap the last 2 columns in end of the index:
|
||||
-- drop index idx2_indexed_objects;
|
||||
-- create index idx2_indexed_objects on indexed_objects (owner, object_type, status, created);
|
||||
|
||||
12
Tanel/ast/04_cbo_selectivity_decay.sql
Normal file
12
Tanel/ast/04_cbo_selectivity_decay.sql
Normal file
@ -0,0 +1,12 @@
|
||||
DROP TABLE selectivity_test;
|
||||
|
||||
CREATE TABLE selectivity_test AS
|
||||
SELECT sysdate - rownum d
|
||||
FROM dual connect by level <= 365;
|
||||
|
||||
@gts selectivity_test
|
||||
|
||||
@minmax d selectivity_test
|
||||
|
||||
@descxx selectivity_test
|
||||
|
||||
42
Tanel/ast/04_cbo_troubleshoot_1.sql
Normal file
42
Tanel/ast/04_cbo_troubleshoot_1.sql
Normal file
@ -0,0 +1,42 @@
|
||||
SELECT /*+ opt_param('_optimizer_use_feedback', 'false') */
|
||||
d.department_name
|
||||
, e.first_name
|
||||
, e.last_name
|
||||
, prod.product_name
|
||||
, c.cust_first_name
|
||||
, c.cust_last_name
|
||||
, SUM(oi.quantity)
|
||||
, sum(oi.unit_price * oi.quantity) total_price
|
||||
FROM
|
||||
oe.orders o
|
||||
, oe.order_items oi
|
||||
, oe.products prod
|
||||
, oe.customers c
|
||||
, oe.promotions prom
|
||||
, hr.employees e
|
||||
, hr.departments d
|
||||
WHERE
|
||||
-- joins
|
||||
o.order_id = oi.order_id
|
||||
AND oi.product_id = prod.product_id
|
||||
AND o.promotion_id = prom.promo_id (+)
|
||||
AND o.customer_id = c.customer_id
|
||||
AND o.sales_rep_id = e.employee_id
|
||||
AND d.department_id = e.department_id
|
||||
-- filters
|
||||
AND d.department_name = 'Sales'
|
||||
AND e.first_name = 'William'
|
||||
AND e.last_name = 'Smith'
|
||||
AND prod.product_name = 'Mobile Web Phone'
|
||||
AND c.cust_first_name = 'Gena'
|
||||
AND c.cust_last_name = 'Harris'
|
||||
GROUP BY
|
||||
d.department_name
|
||||
, e.first_name
|
||||
, e.last_name
|
||||
, prod.product_name
|
||||
, c.cust_first_name
|
||||
, c.cust_last_name
|
||||
ORDER BY
|
||||
total_price
|
||||
/
|
||||
50
Tanel/ast/04_cbo_troubleshoot_2.sql
Normal file
50
Tanel/ast/04_cbo_troubleshoot_2.sql
Normal file
@ -0,0 +1,50 @@
|
||||
SELECT /*+ leading (dep e o c oi)
|
||||
use_hash(oi)
|
||||
xuse_nl(oi)
|
||||
xindex(oi iii)
|
||||
NO_SWAP_JOIN_INPUTS(@"SEL$4B12EFE6" "C"@"SEL$1")
|
||||
NO_SWAP_JOIN_INPUTS(@"SEL$5488CC2B" "C"@"MAIN")
|
||||
opt_param('_optimizer_use_feedback', 'false')
|
||||
qb_name(main)
|
||||
*/
|
||||
dep.department_name
|
||||
, e.first_name
|
||||
, e.last_name
|
||||
, prod.product_name
|
||||
, c.cust_first_name
|
||||
, c.cust_last_name
|
||||
, SUM(oi.quantity)
|
||||
, sum(oi.unit_price * oi.quantity) total_price
|
||||
FROM
|
||||
hr.departments dep -- 1
|
||||
, hr.employees e -- 1
|
||||
, oe.orders o -- ?
|
||||
, oe.order_items oi -- ?
|
||||
, oe.products prod -- 1
|
||||
, oe.customers c -- 1
|
||||
, oe.promotions prom -- ?
|
||||
WHERE
|
||||
-- joins
|
||||
o.order_id = oi.order_id
|
||||
AND oi.product_id = prod.product_id
|
||||
AND o.promotion_id = prom.promo_id (+)
|
||||
AND o.customer_id = c.customer_id
|
||||
AND o.sales_rep_id = e.employee_id
|
||||
AND dep.department_id = e.department_id
|
||||
-- filters
|
||||
AND dep.department_name = 'Sales' -- 1 row
|
||||
AND e.first_name = 'William' -- 1 row
|
||||
AND e.last_name = 'Smith'
|
||||
AND prod.product_name = 'Mobile Web Phone' -- 1 row (view)
|
||||
AND c.cust_first_name = 'Gena' --
|
||||
AND c.cust_last_name = 'Harris' -- 1 row
|
||||
GROUP BY
|
||||
dep.department_name
|
||||
, e.first_name
|
||||
, e.last_name
|
||||
, prod.product_name
|
||||
, c.cust_first_name
|
||||
, c.cust_last_name
|
||||
ORDER BY
|
||||
total_price
|
||||
/
|
||||
58
Tanel/ast/04_cbo_troubleshoot_denormalized.sql
Normal file
58
Tanel/ast/04_cbo_troubleshoot_denormalized.sql
Normal file
@ -0,0 +1,58 @@
|
||||
SELECT
|
||||
/*+ opt_param('_optimizer_use_feedback', 'false')
|
||||
dynamic_sampling(4) opt_param('_optimizer_use_feedback', 'false')
|
||||
leading(c d e o oi)
|
||||
use_hash(o)
|
||||
use_hash(oi)
|
||||
index(o)
|
||||
index(oi)
|
||||
NO_SWAP_JOIN_INPUTS(@"SEL$4B12EFE6" "I"@"SEL$2")
|
||||
NO_SWAP_JOIN_INPUTS(@"SEL$4B12EFE6" "D"@"SEL$2")
|
||||
*/
|
||||
d.department_name
|
||||
, e.first_name
|
||||
, e.last_name
|
||||
, prod.product_name
|
||||
, c.cust_first_name
|
||||
, c.cust_last_name
|
||||
, SUM(oi.quantity)
|
||||
, sum(oi.unit_price * oi.quantity) total_price
|
||||
FROM
|
||||
oe.orders o
|
||||
, oe.order_items oi
|
||||
, oe.products prod
|
||||
, oe.customers c
|
||||
, oe.promotions prom
|
||||
, hr.employees e
|
||||
, hr.departments d
|
||||
WHERE
|
||||
-- joins
|
||||
o.order_id = oi.order_id
|
||||
AND oi.product_id = prod.product_id
|
||||
AND o.promotion_id = prom.promo_id (+)
|
||||
AND o.customer_id = c.customer_id
|
||||
AND o.sales_rep_id = e.employee_id
|
||||
AND d.department_id = e.department_id
|
||||
-- filters
|
||||
AND d.department_name = 'Sales'
|
||||
AND e.first_name = 'William'
|
||||
AND e.last_name = 'Smith'
|
||||
AND prod.product_name = 'Mobile Web Phone'
|
||||
AND c.cust_first_name = 'Gena'
|
||||
AND c.cust_last_name = 'Harris'
|
||||
AND o.customer_id = 189 -- (select customer_id from oe.customers c2
|
||||
-- WHERE c2.cust_first_name = 'Gena'
|
||||
-- AND c2.cust_last_name = 'Harris')
|
||||
AND oi.customer_id = 189 -- (select customer_id from oe.customers c3
|
||||
-- WHERE c3.cust_first_name = 'Gena'
|
||||
-- AND c3.cust_last_name = 'Harris')
|
||||
GROUP BY
|
||||
d.department_name
|
||||
, e.first_name
|
||||
, e.last_name
|
||||
, prod.product_name
|
||||
, c.cust_first_name
|
||||
, c.cust_last_name
|
||||
ORDER BY
|
||||
total_price
|
||||
/
|
||||
46
Tanel/ast/04_cbo_troubleshoot_save.sql
Normal file
46
Tanel/ast/04_cbo_troubleshoot_save.sql
Normal file
@ -0,0 +1,46 @@
|
||||
SELECT /*+ leading (dep e o)
|
||||
NO_SWAP_JOIN_INPUTS(@"SEL$5488CC2B" "C"@"MAIN")
|
||||
opt_param('_optimizer_use_feedback', 'false')
|
||||
qb_name(main)
|
||||
*/
|
||||
dep.department_name
|
||||
, e.first_name
|
||||
, e.last_name
|
||||
, prod.product_name
|
||||
, c.cust_first_name
|
||||
, c.cust_last_name
|
||||
, SUM(oi.quantity)
|
||||
, sum(oi.unit_price * oi.quantity) total_price
|
||||
FROM
|
||||
hr.departments dep -- 1
|
||||
, hr.employees e -- 1
|
||||
, oe.orders o -- ?
|
||||
, oe.order_items oi -- ?
|
||||
, oe.products prod -- 1
|
||||
, oe.customers c -- 1
|
||||
, oe.promotions prom -- ?
|
||||
WHERE
|
||||
-- joins
|
||||
o.order_id = oi.order_id
|
||||
AND oi.product_id = prod.product_id
|
||||
AND o.promotion_id = prom.promo_id (+)
|
||||
AND o.customer_id = c.customer_id
|
||||
AND o.sales_rep_id = e.employee_id
|
||||
AND dep.department_id = e.department_id
|
||||
-- filters
|
||||
AND dep.department_name = 'Sales' -- 1 row
|
||||
AND e.first_name = 'William' -- 1 row
|
||||
AND e.last_name = 'Smith'
|
||||
AND prod.product_name = 'Mobile Web Phone' -- 1 row (view)
|
||||
AND c.cust_first_name = 'Gena' --
|
||||
AND c.cust_last_name = 'Harris' -- 1 row
|
||||
GROUP BY
|
||||
dep.department_name
|
||||
, e.first_name
|
||||
, e.last_name
|
||||
, prod.product_name
|
||||
, c.cust_first_name
|
||||
, c.cust_last_name
|
||||
ORDER BY
|
||||
total_price
|
||||
/
|
||||
68
Tanel/ast/04_cbo_troubleshoot_setup.sql
Normal file
68
Tanel/ast/04_cbo_troubleshoot_setup.sql
Normal file
@ -0,0 +1,68 @@
|
||||
INSERT INTO oe.promotions
|
||||
SELECT 10+rownum promo_id, 'promotion '||to_char(10+rownum)
|
||||
FROM dual CONNECT BY level < 90
|
||||
/
|
||||
|
||||
INSERT INTO oe.promotions VALUES (100, 'online super-sale');
|
||||
|
||||
exec dbms_stats.gather_schema_stats('OE');
|
||||
|
||||
exec dbms_stats.create_stat_table('OE', 'STATS_BACKUP');
|
||||
|
||||
exec dbms_stats.export_schema_stats('OE', 'STATS_BACKUP', 'AST_04_TROUBLE_01');
|
||||
|
||||
CREATE TABLE oe.tmp AS SELECT * FROM oe.orders WHERE 1=0;
|
||||
|
||||
INSERT /*+ APPEND */ INTO oe.tmp
|
||||
SELECT
|
||||
oe.orders_seq.NEXTVAL
|
||||
, sysdate -- order date
|
||||
, 'online' -- order mode
|
||||
, 189 -- customer id
|
||||
, 12 -- order status
|
||||
, 99.95 -- order_total
|
||||
, 171 -- sales rep
|
||||
, 100 -- promotion_id
|
||||
FROM
|
||||
dual CONNECT BY level <= 100000
|
||||
/
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO oe.orders (
|
||||
order_id NOT NULL NUMBER(12)
|
||||
, order_date NOT NULL TIMESTAMP(6) WITH LOCAL TIME ZONE
|
||||
, order_mode VARCHAR2(8)
|
||||
, customer_id NOT NULL NUMBER(6)
|
||||
, order_status NUMBER(2)
|
||||
, order_total NUMBER(8,2)
|
||||
, sales_rep_id NUMBER(6)
|
||||
, promotion_id
|
||||
)
|
||||
SELECT * FROM oe.tmp
|
||||
ORDER BY
|
||||
dbms_random.random -- to increase pk clustering factor
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
|
||||
BEGIN
|
||||
FOR i IN (SELECT order_id FROM oe.tmp) LOOP
|
||||
-- such a lousy loop is needed as there's a "single row" trigger on order_items tab
|
||||
INSERT INTO oe.order_items (ORDER_ID,PRODUCT_ID,UNIT_PRICE,QUANTITY)
|
||||
VALUES ( i.order_id, 3337, 9.95, power(2,power(2,dbms_random.value(1,3))) );
|
||||
-- commit in a loop so i wouldnt blow up my little undo tablespace
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
-- save old "bad" stats
|
||||
exec dbms_stats.export_schema_stats('OE', 'STATS_BACKUP', 'AST_04_TROUBLE_BEGIN');
|
||||
-- to restore:
|
||||
-- exec dbms_stats.import_schema_stats('OE', 'STATS_BACKUP', 'AST_04_TROUBLE_BEGIN', NO_INVALIDATE=>FALSE);
|
||||
|
||||
-- run the 04_cbo_troubleshoot_1.sql and troubleshoot! :)
|
||||
|
||||
|
||||
|
||||
|
||||
21
Tanel/ast/ast_setup.sql
Normal file
21
Tanel/ast/ast_setup.sql
Normal file
@ -0,0 +1,21 @@
|
||||
DEF datafile_dir=/export/home/oracle/oradata/SOL102
|
||||
|
||||
CREATE TABLESPACE ast DATAFILE '&datafile_dir/ast.01.dbf' SIZE 200M AUTOEXTEND ON;
|
||||
|
||||
CREATE USER ast IDENTIFIED BY ast DEFAULT TABLESPACE ast TEMPORARY TABLESPACE temp;
|
||||
|
||||
ALTER USER ast QUOTA UNLIMITED ON ast;
|
||||
|
||||
GRANT CREATE SESSION TO ast;
|
||||
GRANT CONNECT, RESOURCE TO ast;
|
||||
GRANT SELECT ANY DICTIONARY TO ast;
|
||||
|
||||
GRANT EXECUTE ON DBMS_LOCK TO ast;
|
||||
GRANT EXECUTE ON DBMS_MONITOR TO ast;
|
||||
|
||||
GRANT EXECUTE ON DBMS_SQLTUNE TO ast;
|
||||
GRANT EXECUTE ON DBMS_WORKLOAD_REPOSITORY TO ast;
|
||||
|
||||
-- for testing
|
||||
GRANT DBA TO ast;
|
||||
|
||||
73
Tanel/ast/ast_setup_schema.sql
Normal file
73
Tanel/ast/ast_setup_schema.sql
Normal file
@ -0,0 +1,73 @@
|
||||
CREATE TABLE test_objects AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE test_objects10 AS SELECT * FROM test_objects WHERE rownum <= 10;
|
||||
CREATE TABLE test_objects100 AS SELECT * FROM test_objects WHERE rownum <= 100;
|
||||
CREATE TABLE test_users AS SELECT * FROM all_users;
|
||||
|
||||
CREATE TABLE indexed_objects AS SELECT * FROM dba_objects;
|
||||
CREATE UNIQUE INDEX pk_obj_id ON indexed_objects (object_id);
|
||||
CREATE INDEX idx_owner_name ON indexed_objects(owner,object_name);
|
||||
|
||||
CREATE TABLE dummy1 AS SELECT 1 a, 'one' b FROM dual;
|
||||
CREATE TABLE dummy2 AS SELECT 1 a, 'one' b FROM dual;
|
||||
|
||||
CREATE TABLE indexed_source AS SELECT * FROM dba_source;
|
||||
CREATE INDEX idx1_indexed_source ON indexed_source (owner,name,line);
|
||||
|
||||
|
||||
EXEC DBMS_STATS.SET_PARAM('METHOD_OPT', 'FOR ALL COLUMNS SIZE REPEAT');
|
||||
|
||||
--EXEC DBMS_STATS.GATHER_SCHEMA_STATS('AST');
|
||||
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(user);
|
||||
|
||||
-- deterministic PL/SQL functions can utilize PL/SQL function result caching
|
||||
CREATE OR REPLACE FUNCTION my_multiply(a IN NUMBER, b IN NUMBER) RETURN NUMBER AS
|
||||
BEGIN
|
||||
DBMS_OUTPUT.PUT_LINE('x');
|
||||
RETURN a * b;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE FUNCTION my_multiply_d (a IN NUMBER, b IN NUMBER) RETURN NUMBER
|
||||
DETERMINISTIC
|
||||
AS
|
||||
BEGIN
|
||||
RETURN a * b;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE FUNCTION my_sqrt (a IN NUMBER) RETURN NUMBER
|
||||
AS
|
||||
BEGIN
|
||||
RETURN SQRT(a);
|
||||
END;
|
||||
/
|
||||
|
||||
-- select max(my_sqrt(mod(rownum,100))) from dual connect by level<=100000;
|
||||
CREATE OR REPLACE FUNCTION my_sqrt_d (a IN NUMBER) RETURN NUMBER
|
||||
DETERMINISTIC
|
||||
AS
|
||||
BEGIN
|
||||
RETURN SQRT(a);
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
|
||||
|
||||
-- additional stuff in scott and other standard demo schemas
|
||||
|
||||
create or replace view scott.high_pay_depts as
|
||||
select
|
||||
*
|
||||
from
|
||||
scott.dept d
|
||||
where
|
||||
exists (select 1
|
||||
from
|
||||
scott.emp e
|
||||
where
|
||||
e.deptno = d.deptno
|
||||
and e.sal > 4500
|
||||
)
|
||||
/
|
||||
|
||||
22
Tanel/ast/subquery_execution.sql
Normal file
22
Tanel/ast/subquery_execution.sql
Normal file
@ -0,0 +1,22 @@
|
||||
-- starting from 10g, the push_subq hint must be specified in the subquery block
|
||||
-- you wish to push earlier (or with the @subq hint addressing)
|
||||
|
||||
select
|
||||
e.*
|
||||
, d.dname
|
||||
from
|
||||
scott.emp e
|
||||
, scott.dept d
|
||||
where
|
||||
e.deptno = d.deptno
|
||||
and exists (
|
||||
select /*+ no_unnest push_subq */
|
||||
1
|
||||
from
|
||||
scott.bonus b
|
||||
where
|
||||
b.ename = e.ename
|
||||
and b.job = e.job
|
||||
)
|
||||
/
|
||||
|
||||
116
Tanel/ast/test_plan.txt
Normal file
116
Tanel/ast/test_plan.txt
Normal file
@ -0,0 +1,116 @@
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | Writes | OMem | 1Mem | Used-Mem |
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
| 0 | SELECT STATEMENT | | 1 | | 2 |00:00:06.65 | 50499 | 2086 | 1041 | | | |
|
||||
| 1 | TEMP TABLE TRANSFORMATION | | 1 | | 2 |00:00:06.65 | 50499 | 2086 | 1041 | | | |
|
||||
| 2 | LOAD AS SELECT | | 1 | | 0 |00:00:06.32 | 48405 | 2 | 1041 | 530K| 530K| 530K (0)|
|
||||
|* 3 | TABLE ACCESS BY INDEX ROWID | SUM$ | 3 | 1 | 0 |00:00:00.01 | 3 | 0 | 0 | | | |
|
||||
|* 4 | INDEX UNIQUE SCAN | I_SUM$_1 | 3 | 1 | 3 |00:00:00.01 | 2 | 0 | 0 | | | |
|
||||
| 5 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 6 | INDEX RANGE SCAN | I_OBJ1 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 7 | FILTER | | 1 | | 73027 |00:00:05.77 | 47342 | 2 | 0 | | | |
|
||||
|* 8 | HASH JOIN | | 1 | 74860 | 74936 |00:00:00.79 | 948 | 0 | 0 | 1063K| 1063K| 1234K (0)|
|
||||
| 9 | TABLE ACCESS FULL | USER$ | 1 | 104 | 104 |00:00:00.01 | 7 | 0 | 0 | | | |
|
||||
|* 10 | HASH JOIN | | 1 | 74860 | 74936 |00:00:00.51 | 941 | 0 | 0 | 981K| 981K| 1254K (0)|
|
||||
| 11 | INDEX FULL SCAN | I_USER2 | 1 | 104 | 104 |00:00:00.01 | 1 | 0 | 0 | | | |
|
||||
|* 12 | TABLE ACCESS FULL | OBJ$ | 1 | 74860 | 74936 |00:00:00.18 | 940 | 0 | 0 | | | |
|
||||
|* 13 | TABLE ACCESS BY INDEX ROWID | IND$ | 4995 | 1 | 4087 |00:00:00.04 | 933 | 0 | 0 | | | |
|
||||
|* 14 | INDEX UNIQUE SCAN | I_IND1 | 4995 | 1 | 4995 |00:00:00.01 | 134 | 0 | 0 | | | |
|
||||
|* 15 | HASH JOIN | | 25955 | 1 | 24502 |00:00:03.60 | 26661 | 0 | 0 | 981K| 981K| 1051K (0)|
|
||||
|* 16 | INDEX RANGE SCAN | I_OBJAUTH1 | 25955 | 1 | 24747 |00:00:00.19 | 26661 | 0 | 0 | | | |
|
||||
| 17 | FIXED TABLE FULL | X$KZSRO | 24589 | 100 | 27424 |00:00:00.18 | 0 | 0 | 0 | | | |
|
||||
|* 18 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 19 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 20 | NESTED LOOPS | | 1645 | 1 | 96 |00:00:00.01 | 1865 | 0 | 0 | | | |
|
||||
|* 21 | INDEX RANGE SCAN | I_OBJAUTH1 | 1645 | 1 | 133 |00:00:00.01 | 1865 | 0 | 0 | | | |
|
||||
|* 22 | FIXED TABLE FULL | X$KZSRO | 133 | 1 | 96 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 23 | HASH JOIN | | 2845 | 1 | 1478 |00:00:00.48 | 3051 | 0 | 0 | 990K| 990K| 485K (0)|
|
||||
|* 24 | INDEX RANGE SCAN | I_OBJAUTH1 | 2845 | 1 | 1551 |00:00:00.02 | 3051 | 0 | 0 | | | |
|
||||
| 25 | FIXED TABLE FULL | X$KZSRO | 1493 | 100 | 1853 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 26 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 27 | NESTED LOOPS | | 1255 | | 0 |00:00:00.35 | 7429 | 0 | 0 | | | |
|
||||
| 28 | NESTED LOOPS | | 1255 | 1 | 0 |00:00:00.35 | 7429 | 0 | 0 | | | |
|
||||
| 29 | NESTED LOOPS | | 1255 | 1 | 0 |00:00:00.35 | 7429 | 0 | 0 | | | |
|
||||
| 30 | NESTED LOOPS | | 1255 | 1 | 28865 |00:00:00.25 | 4702 | 0 | 0 | | | |
|
||||
| 31 | MERGE JOIN CARTESIAN | | 1255 | 1 | 28865 |00:00:00.12 | 3445 | 0 | 0 | | | |
|
||||
|* 32 | INDEX RANGE SCAN | I_OBJ5 | 1255 | 1 | 1255 |00:00:00.01 | 3445 | 0 | 0 | | | |
|
||||
| 33 | BUFFER SORT | | 1255 | 100 | 28865 |00:00:00.07 | 0 | 0 | 0 | 2048 | 2048 | 2048 (0)|
|
||||
| 34 | FIXED TABLE FULL | X$KZSRO | 1255 | 100 | 28865 |00:00:00.03 | 0 | 0 | 0 | | | |
|
||||
|* 35 | INDEX RANGE SCAN | I_USER2 | 28865 | 1 | 28865 |00:00:00.07 | 1257 | 0 | 0 | | | |
|
||||
|* 36 | INDEX RANGE SCAN | I_OBJAUTH1 | 28865 | 1 | 0 |00:00:00.06 | 2727 | 0 | 0 | | | |
|
||||
|* 37 | INDEX RANGE SCAN | I_DEPENDENCY1 | 0 | 3 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 38 | TABLE ACCESS BY INDEX ROWID | DEPENDENCY$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 39 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 40 | NESTED LOOPS | | 617 | 1 | 7 |00:00:00.01 | 1923 | 0 | 0 | | | |
|
||||
| 41 | NESTED LOOPS | | 617 | 1 | 19 |00:00:00.01 | 1923 | 0 | 0 | | | |
|
||||
|* 42 | TABLE ACCESS BY INDEX ROWID | TRIGGER$ | 617 | 1 | 592 |00:00:00.01 | 1245 | 0 | 0 | | | |
|
||||
|* 43 | INDEX UNIQUE SCAN | I_TRIGGER2 | 617 | 1 | 617 |00:00:00.01 | 628 | 0 | 0 | | | |
|
||||
|* 44 | INDEX RANGE SCAN | I_OBJAUTH1 | 592 | 1 | 19 |00:00:00.01 | 678 | 0 | 0 | | | |
|
||||
|* 45 | FIXED TABLE FULL | X$KZSRO | 19 | 1 | 7 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 46 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 47 | NESTED LOOPS | | 240 | | 0 |00:00:00.07 | 1471 | 0 | 0 | | | |
|
||||
| 48 | NESTED LOOPS | | 240 | 1 | 0 |00:00:00.07 | 1471 | 0 | 0 | | | |
|
||||
| 49 | NESTED LOOPS | | 240 | 1 | 0 |00:00:00.07 | 1471 | 0 | 0 | | | |
|
||||
| 50 | NESTED LOOPS | | 240 | 1 | 5727 |00:00:00.05 | 926 | 0 | 0 | | | |
|
||||
| 51 | MERGE JOIN CARTESIAN | | 240 | 1 | 5727 |00:00:00.02 | 684 | 0 | 0 | | | |
|
||||
|* 52 | INDEX RANGE SCAN | I_OBJ5 | 240 | 1 | 249 |00:00:00.01 | 684 | 0 | 0 | | | |
|
||||
| 53 | BUFFER SORT | | 249 | 100 | 5727 |00:00:00.01 | 0 | 0 | 0 | 2048 | 2048 | 2048 (0)|
|
||||
| 54 | FIXED TABLE FULL | X$KZSRO | 240 | 100 | 5520 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 55 | INDEX RANGE SCAN | I_USER2 | 5727 | 1 | 5727 |00:00:00.01 | 242 | 0 | 0 | | | |
|
||||
|* 56 | INDEX RANGE SCAN | I_OBJAUTH1 | 5727 | 1 | 0 |00:00:00.01 | 545 | 0 | 0 | | | |
|
||||
|* 57 | INDEX RANGE SCAN | I_DEPENDENCY1 | 0 | 3 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 58 | TABLE ACCESS BY INDEX ROWID | DEPENDENCY$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 59 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 60 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 61 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 62 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 63 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 64 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 65 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 66 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 67 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 68 | VIEW | | 52 | 1 | 52 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 69 | FAST DUAL | | 52 | 1 | 52 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 70 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 71 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 72 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 73 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 74 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 75 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 76 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 77 | FIXED TABLE FULL | X$KZSPR | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 78 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 79 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 80 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 81 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 82 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 83 | INDEX RANGE SCAN | I_OBJAUTH1 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 84 | FIXED TABLE FULL | X$KZSRO | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 85 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 86 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 87 | INDEX RANGE SCAN | I_OBJAUTH1 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 88 | FIXED TABLE FULL | X$KZSRO | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 89 | FIXED TABLE FULL | X$KZSPR | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 90 | VIEW | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 91 | SORT GROUP BY | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | 73728 | 73728 | |
|
||||
| 92 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 93 | MERGE JOIN CARTESIAN | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 94 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 95 | INDEX UNIQUE SCAN | I_OLAP_CUBES$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 96 | TABLE ACCESS BY INDEX ROWID| OLAP_DIMENSIONALITY$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|* 97 | INDEX RANGE SCAN | I_OLAP_DIMENSIONALITY$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 98 | BUFFER SORT | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | 73728 | 73728 | |
|
||||
| 99 | INDEX FULL SCAN | I_OLAP_CUBE_DIMENSIONS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|*100 | INDEX RANGE SCAN | I_OBJ1 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 101 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|*102 | INDEX FULL SCAN | I_USER2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
|*103 | INDEX RANGE SCAN | I_OBJ4 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | 0 | | | |
|
||||
| 104 | UNION-ALL | | 1 | | 2 |00:00:00.33 | 2091 | 2084 | 0 | | | |
|
||||
| 105 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.18 | 1047 | 1042 | 0 | | | |
|
||||
| 106 | VIEW | | 1 | 31935 | 73027 |00:00:00.13 | 1047 | 1042 | 0 | | | |
|
||||
| 107 | TABLE ACCESS FULL | SYS_TEMP_0FD9D6637_489CA79 | 1 | 31935 | 73027 |00:00:00.07 | 1047 | 1042 | 0 | | | |
|
||||
| 108 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.15 | 1044 | 1042 | 0 | | | |
|
||||
| 109 | VIEW | | 1 | 31935 | 73027 |00:00:00.12 | 1044 | 1042 | 0 | | | |
|
||||
| 110 | TABLE ACCESS FULL | SYS_TEMP_0FD9D6637_489CA79 | 1 | 31935 | 73027 |00:00:00.05 | 1044 | 1042 | 0 | | | |
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
10950
Tanel/ast/trace/04_cbo_troubleshoot_1.trc
Normal file
10950
Tanel/ast/trace/04_cbo_troubleshoot_1.trc
Normal file
File diff suppressed because it is too large
Load Diff
10920
Tanel/ast/trace/a.txt
Normal file
10920
Tanel/ast/trace/a.txt
Normal file
File diff suppressed because it is too large
Load Diff
13
Tanel/ast/trace/cbo_analyze.sh
Normal file
13
Tanel/ast/trace/cbo_analyze.sh
Normal file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
cat $1 | awk '
|
||||
|
||||
function p(str) { printf("%6d: %s\n", NR, str) ; return 0 }
|
||||
|
||||
/Now joining|Join order/{ p($0) }
|
||||
|
||||
/^Best::/{ x=1 ; p($0) }
|
||||
|
||||
(!/Best::/ && x ==1) { p($0) ; x=0 }
|
||||
|
||||
'
|
||||
0
Tanel/aud.sql
Normal file
0
Tanel/aud.sql
Normal file
1
Tanel/audo.sql
Normal file
1
Tanel/audo.sql
Normal file
@ -0,0 +1 @@
|
||||
@@audo2 "%&1%" "%&2%"
|
||||
10
Tanel/audo2.sql
Normal file
10
Tanel/audo2.sql
Normal file
@ -0,0 +1,10 @@
|
||||
select
|
||||
*
|
||||
from
|
||||
dba_audit_object
|
||||
where
|
||||
upper(owner) like upper('&1')
|
||||
and upper(obj_name) like upper('&2')
|
||||
order by
|
||||
timestamp desc
|
||||
/
|
||||
19
Tanel/awr/awr_system_event.sql
Normal file
19
Tanel/awr/awr_system_event.sql
Normal file
@ -0,0 +1,19 @@
|
||||
SELECT
|
||||
CAST(begin_interval_time AS DATE) begin_time
|
||||
, event_name
|
||||
, time_waited_micro
|
||||
, total_waits
|
||||
, total_timeouts
|
||||
, time_waited_micro/nullif(total_waits,0) avg_wait_micro
|
||||
FROM
|
||||
dba_hist_snapshot
|
||||
NATURAL JOIN
|
||||
dba_hist_system_event
|
||||
WHERE
|
||||
event_name IN ('log file sync', 'log file parallel write', 'ksfd: async disk IO')
|
||||
AND begin_interval_time > SYSDATE - 30
|
||||
ORDER BY
|
||||
event_name
|
||||
, begin_time
|
||||
/
|
||||
|
||||
18
Tanel/awr/other_xml.sql
Normal file
18
Tanel/awr/other_xml.sql
Normal file
@ -0,0 +1,18 @@
|
||||
select
|
||||
-- sql_id
|
||||
-- , child_number
|
||||
-- , plan_hash_value
|
||||
substr(extractvalue(value(d), '/hint'), 1, 100) as outline_hints
|
||||
from
|
||||
xmltable('/*/outline_data/hint'
|
||||
passing (
|
||||
select
|
||||
xmltype(other_xml) as xmlval
|
||||
from
|
||||
dba_hist_sql_plan
|
||||
where
|
||||
sql_id = '&1'
|
||||
and other_xml is not null
|
||||
)
|
||||
) d
|
||||
/
|
||||
11
Tanel/ba.sql
Normal file
11
Tanel/ba.sql
Normal file
@ -0,0 +1,11 @@
|
||||
col ba_blsiz head BLSZ for 99999
|
||||
|
||||
select
|
||||
-- addr,
|
||||
indx,hladdr,
|
||||
blsiz ba_blsiz,
|
||||
flag,lru_flag,ts#,file#,
|
||||
dbarfil,dbablk,class,state,mode_held,obj,tch
|
||||
from x$bh where ba = hextoraw(lpad('&1',16,0))
|
||||
/
|
||||
|
||||
19
Tanel/bclass.sql
Normal file
19
Tanel/bclass.sql
Normal file
@ -0,0 +1,19 @@
|
||||
-- blcass.sql by Tanel Poder (http://blog.tanelpoder.com)
|
||||
--
|
||||
-- Usage: @bclass <block_class#>
|
||||
|
||||
--with undostart as (select r from (select rownum r, class from v$waitstat) where class = 'undo header')
|
||||
|
||||
select class, r undo_segment_id from (
|
||||
select class, null r
|
||||
from (select class, rownum r from v$waitstat)
|
||||
where r = bitand(&1,to_number('FFFF','XXXX'))
|
||||
union all
|
||||
select
|
||||
decode(mod(bitand(&1,to_number('FFFF','XXXX')) - 17,2),0,'undo header',1,'undo data', 'error') type
|
||||
, trunc((bitand(&1,to_number('FFFF','XXXX')) - 17)/2) undoseg_id
|
||||
from
|
||||
dual
|
||||
)
|
||||
where rownum = 1
|
||||
/
|
||||
1
Tanel/bg.sql
Normal file
1
Tanel/bg.sql
Normal file
@ -0,0 +1 @@
|
||||
@@bg2 "%&1%"
|
||||
18
Tanel/bg2.sql
Normal file
18
Tanel/bg2.sql
Normal file
@ -0,0 +1,18 @@
|
||||
select /*+ ordered use_hash(s) */
|
||||
b.paddr
|
||||
, s.saddr
|
||||
, p.spid
|
||||
, p.pid
|
||||
, s.sid
|
||||
, b.name
|
||||
, b.description
|
||||
from
|
||||
v$bgprocess b
|
||||
, v$process p
|
||||
, v$session s
|
||||
where
|
||||
b.paddr = p.addr
|
||||
and b.paddr = s.paddr
|
||||
and p.addr = s.paddr
|
||||
and (lower(b.name) like lower('&1') or lower(b.description) like lower('&1'))
|
||||
/
|
||||
55
Tanel/bhdo.sql
Normal file
55
Tanel/bhdo.sql
Normal file
@ -0,0 +1,55 @@
|
||||
SELECT
|
||||
hladdr
|
||||
-- , blsiz
|
||||
-- , nxt_hash
|
||||
-- , prv_hash
|
||||
-- , nxt_repl
|
||||
-- , prv_repl
|
||||
, flag
|
||||
, rflag
|
||||
, sflag
|
||||
, lru_flag
|
||||
, ts#
|
||||
, file#
|
||||
-- , dbarfil
|
||||
, dbablk
|
||||
, class
|
||||
, state
|
||||
, mode_held
|
||||
, changes
|
||||
, cstate
|
||||
, le_addr
|
||||
, dirty_queue
|
||||
, set_ds
|
||||
, obj
|
||||
, ba
|
||||
, cr_scn_bas
|
||||
, cr_scn_wrp
|
||||
, cr_xid_usn
|
||||
, cr_xid_slt
|
||||
, cr_xid_sqn
|
||||
, cr_uba_fil
|
||||
, cr_uba_blk
|
||||
, cr_uba_seq
|
||||
, cr_uba_rec
|
||||
, cr_sfl
|
||||
, cr_cls_bas
|
||||
, cr_cls_wrp
|
||||
, lrba_seq
|
||||
, lrba_bno
|
||||
, hscn_bas
|
||||
, hscn_wrp
|
||||
, hsub_scn
|
||||
, us_nxt
|
||||
, us_prv
|
||||
, wa_nxt
|
||||
, wa_prv
|
||||
, obj_flag
|
||||
, tch
|
||||
, tim
|
||||
FROM
|
||||
x$bh
|
||||
WHERE
|
||||
obj IN (&1)
|
||||
/
|
||||
|
||||
43
Tanel/bhla.sql
Normal file
43
Tanel/bhla.sql
Normal file
@ -0,0 +1,43 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: bhla.sql (Buffer Headers by Latch Address)
|
||||
-- Purpose: Report which blocks are in buffer cache, protected by a cache
|
||||
-- buffers chains child latch
|
||||
--
|
||||
-- Author: Tanel Poder
|
||||
-- Copyright: (c) http://www.tanelpoder.com
|
||||
--
|
||||
-- Usage: @bhla <child latch address>
|
||||
-- @bhla 27E5A780
|
||||
--
|
||||
--
|
||||
-- Other: This script reports all buffers "under" the given cache buffers
|
||||
-- chains child latch, their corresponding segment names and
|
||||
-- touch counts (TCH).
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
col bhla_object head object for a40 truncate
|
||||
col bhla_DBA head DBA for a20
|
||||
|
||||
select /*+ ORDERED */
|
||||
trim(to_char(bh.flag, 'XXXXXXXX')) ||':'||
|
||||
trim(to_char(bh.lru_flag, 'XXXXXXXX')) flg_lruflg,
|
||||
bh.obj,
|
||||
o.object_type,
|
||||
o.owner||'.'||o.object_name bhla_object,
|
||||
bh.tch,
|
||||
file# ||' '||dbablk bhla_DBA,
|
||||
bh.class,
|
||||
bh.state,
|
||||
bh.mode_held,
|
||||
bh.dirty_queue DQ
|
||||
from
|
||||
x$bh bh,
|
||||
dba_objects o
|
||||
where
|
||||
bh.obj = o.data_object_id
|
||||
and hladdr = hextoraw(lpad('&1', vsize(hladdr)*2 , '0'))
|
||||
order by
|
||||
tch asc
|
||||
/
|
||||
27
Tanel/bhobjects.sql
Normal file
27
Tanel/bhobjects.sql
Normal file
@ -0,0 +1,27 @@
|
||||
col bhobjects_owner head OWNER for a30
|
||||
col bhobjects_object_name head OBJECT_NAME for a30
|
||||
col bhobjects_subobject_name head SUBOBJECT_NAME for a30
|
||||
col bhobjects_object_type head OBJECT_TYPE for a20 word_wrap
|
||||
|
||||
|
||||
|
||||
select * from (
|
||||
select
|
||||
count(*) buffers
|
||||
, o.owner bhobjects_owner
|
||||
, o.object_name bhobjects_object_name
|
||||
, o.subobject_name bhobjects_subobject_name
|
||||
, o.object_type bhobjects_object_type
|
||||
from
|
||||
v$bh bh
|
||||
, dba_objects o
|
||||
where
|
||||
bh.objd = o.data_object_id
|
||||
group by
|
||||
o.owner, o.object_name, o.subobject_name, o.object_type
|
||||
order by
|
||||
buffers desc
|
||||
)
|
||||
where rownum <=30
|
||||
/
|
||||
|
||||
75
Tanel/bhobjects2.sql
Normal file
75
Tanel/bhobjects2.sql
Normal file
@ -0,0 +1,75 @@
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON
|
||||
|
||||
col bhobjects_owner head OWNER for a30
|
||||
col bhobjects_object_name head OBJECT_NAME for a30
|
||||
col bhobjects_subobject_name head SUBOBJECT_NAME for a30
|
||||
col bhobjects_object_type head OBJECT_TYPE for a20 word_wrap
|
||||
|
||||
select * from v$sgainfo;
|
||||
select * from v$sga_dynamic_components;
|
||||
select * from v$buffer_pool;
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
TO_CHAR(ROUND(RATIO_TO_REPORT( ROUND(SUM(ts.block_size) / 1048576) ) OVER () * 100, 1), '999.9')||' %' "%BUFCACHE"
|
||||
, ROUND(SUM(ts.block_size) / 1048576) MB
|
||||
--, count(*) buffers
|
||||
, bh.objd dataobj_id
|
||||
, ts.tablespace_name
|
||||
, o.owner bhobjects_owner
|
||||
, o.object_name bhobjects_object_name
|
||||
, o.subobject_name bhobjects_subobject_name
|
||||
, o.object_type bhobjects_object_type
|
||||
FROM
|
||||
v$bh bh
|
||||
, (SELECT data_object_id
|
||||
, MIN(owner) owner
|
||||
, MIN(object_name) object_name
|
||||
, MIN(subobject_name) subobject_name
|
||||
, MIN(object_type) object_type
|
||||
, COUNT(*) num_duplicates
|
||||
FROM dba_objects GROUP BY data_object_id) o
|
||||
, v$tablespace vts
|
||||
, dba_tablespaces ts
|
||||
WHERE
|
||||
bh.objd = o.data_object_id (+)
|
||||
AND bh.ts# = vts.ts#
|
||||
AND vts.name = ts.tablespace_name
|
||||
GROUP BY
|
||||
bh.objd, ts.tablespace_name, o.owner, o.object_name, o.subobject_name, o.object_type
|
||||
ORDER BY
|
||||
mb DESC
|
||||
)
|
||||
WHERE ROWNUM <=30
|
||||
/
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
TO_CHAR(ROUND(RATIO_TO_REPORT( ROUND(SUM(ts.block_size) / 1048576) ) OVER () * 100, 1), '999.9')||' %' "%BUFCACHE"
|
||||
, ROUND(SUM(ts.block_size) / 1048576) MB
|
||||
, ts.tablespace_name
|
||||
, bh.status
|
||||
FROM
|
||||
v$bh bh
|
||||
, (SELECT data_object_id
|
||||
, MIN(owner) owner
|
||||
, MIN(object_name) object_name
|
||||
, MIN(subobject_name) subobject_name
|
||||
, MIN(object_type) object_type
|
||||
, COUNT(*) num_duplicates
|
||||
FROM dba_objects GROUP BY data_object_id) o
|
||||
, v$tablespace vts
|
||||
, dba_tablespaces ts
|
||||
WHERE
|
||||
bh.objd = o.data_object_id (+)
|
||||
AND bh.ts# = vts.ts#
|
||||
AND vts.name = ts.tablespace_name
|
||||
GROUP BY
|
||||
ts.tablespace_name
|
||||
, bh.status
|
||||
ORDER BY
|
||||
mb DESC
|
||||
)
|
||||
WHERE ROWNUM <=30
|
||||
/
|
||||
|
||||
12
Tanel/bitmask.sql
Normal file
12
Tanel/bitmask.sql
Normal file
@ -0,0 +1,12 @@
|
||||
select
|
||||
level - 1 bit
|
||||
,DECODE(bitand(to_number('&1','XXXXXXXXXXXXXXXX'),power(2,level-1)),0,0,1) is_set
|
||||
,to_char(power(2,level-1),'XXXXXXXXXXXXXXXX') val_hex
|
||||
,bitand(to_number('&1','XXXXXXXXXXXXXXXX'),power(2,level-1)) val_dec
|
||||
from
|
||||
dual
|
||||
where
|
||||
DECODE(bitand(to_number('&1','XXXXXXXXXXXXXXXX'),power(2,level-1)),0,0,1) != 0
|
||||
connect by
|
||||
level <= (select log(2,to_number('&1','XXXXXXXXXXXXXXXX'))+2 from dual)
|
||||
/
|
||||
84
Tanel/bufprof.sql
Normal file
84
Tanel/bufprof.sql
Normal file
@ -0,0 +1,84 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: BufProf 1.03 ( Buffer Get Profiler )
|
||||
-- Purpose: Display buffer gets done by a session and their reason
|
||||
--
|
||||
-- Author: Tanel Poder
|
||||
-- Copyright: (c) http://www.tanelpoder.com
|
||||
--
|
||||
-- Usage: @bufprof <SID> <#samples>
|
||||
-- @bufprof 142 1000
|
||||
--
|
||||
-- Other: This is an experimental script, which may or may not work for you
|
||||
-- It's dependent on the size of the cache buffers handles array
|
||||
-- (db_handles), so if you have lots of sessions configured
|
||||
-- scanning this repeatedly may be slow.
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
--DEF bufprof_cols=KCBBFSO_TYP,KCBBFSO_OWN,DECODE(KCBBFCR,1,'CR','CUR'),KCBBFWHR,KCBBFWHY,w.KCBWHDES,KCBBPBH,KCBBPBF,m.ksmmmval,p.sid,p.username,p.program
|
||||
--DEF bufprof_cols=KCBBFSO_OWN,DECODE(KCBBFCR,1,'CR','CUR'),w.KCBWHDES,KCBBPBF,m.ksmmmval,p.sid
|
||||
--DEF bufprof_cols=p.sid,kcbbfwhy,kcbbfso_flg,TO_CHAR(kcbbfflg,'XXXXXXXX'),TO_CHAR(KCBBFCM,'XXXXXXXX'),KCBBFSO_OWN,DECODE(KCBBFCR,1,'CR','CUR'),w.KCBWHDES
|
||||
DEF bufprof_cols=p.sid,DECODE(KCBBFCR,1,'CR','CUR'),w.KCBWHDES
|
||||
|
||||
COL kcbwhdes FOR A35
|
||||
|
||||
COL bufprof_addrlen NEW_VALUE addrlen
|
||||
COL bufprof_addrmask NEW_VALUE addrmask
|
||||
|
||||
SET TERMOUT OFF
|
||||
SELECT VSIZE(addr) bufprof_addrlen, LPAD('X',VSIZE(addr)*2,'X') bufprof_addrmask FROM x$kcbsw WHERE ROWNUM = 1;
|
||||
SET TERMOUT ON
|
||||
|
||||
DEF num_samples=&2
|
||||
|
||||
PROMPT
|
||||
PROMPT -- BufProf 1.03 (experimental) by Tanel Poder ( http://www.tanelpoder.com )
|
||||
PROMPT
|
||||
|
||||
WITH
|
||||
s AS (SELECT /*+ NO_MERGE MATERIALIZE */ 1 r FROM DUAL CONNECT BY LEVEL <= &num_samples),
|
||||
p AS (SELECT p.addr paddr, s.saddr saddr, s.sid sid, p.spid spid, s.username, s.program, s.terminal, s.machine
|
||||
FROM v$process p, v$session s WHERE s.paddr = p.addr),
|
||||
t1 AS (SELECT hsecs FROM v$timer),
|
||||
samples AS (
|
||||
SELECT /*+ ORDERED USE_NL(bf) USE_NL(m) USE_NL(p) USE_NL(w) */
|
||||
&bufprof_cols,
|
||||
m.ksmmmval proc_so,
|
||||
COUNT(*) total_samples
|
||||
FROM
|
||||
s, -- this trick is here to avoid an ORA-600 in kkqcbydrv:1
|
||||
(SELECT /*+ NO_MERGE */
|
||||
b.*,
|
||||
HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(b.kcbbfso_own),'&addrmask')+&addrlen*2,'&addrmask')) ) call_so -- call state object
|
||||
FROM x$kcbbf b
|
||||
WHERE 1=1
|
||||
AND bitand(b.KCBBFSO_FLG,1) = 1
|
||||
--AND b.KCBBFCM > 0
|
||||
) bf,
|
||||
X$KSMMEM m,
|
||||
p,
|
||||
x$kcbwh w
|
||||
WHERE
|
||||
1=1
|
||||
AND bf.call_so = m.addr
|
||||
AND m.ksmmmval = p.paddr -- compare the fetched word to process state object address
|
||||
AND BITAND(bf.KCBBFSO_FLG,1) = 1 -- buffer handle in use
|
||||
AND bf.kcbbfwhr = w.indx
|
||||
--AND (p.sid LIKE '&1' OR p.sid IS NULL)
|
||||
AND (p.sid LIKE '&1')
|
||||
AND (p.sid != (select sid from v$mystat where rownum = 1))
|
||||
GROUP BY &bufprof_cols , m.ksmmmval
|
||||
),
|
||||
t2 AS (SELECT hsecs FROM v$timer)
|
||||
SELECT /*+ ORDERED */
|
||||
s.*
|
||||
, (t2.hsecs - t1.hsecs) * 10 * s.total_samples / &num_samples active_pct
|
||||
FROM
|
||||
t1,
|
||||
samples s,
|
||||
t2
|
||||
ORDER BY
|
||||
s.total_samples DESC
|
||||
/
|
||||
59
Tanel/bufprof_wrong.sql
Normal file
59
Tanel/bufprof_wrong.sql
Normal file
@ -0,0 +1,59 @@
|
||||
--DEF bufprof_cols=KCBBFSO_TYP,KCBBFSO_OWN,DECODE(KCBBFCR,1,'CR','CUR'),KCBBFWHR,KCBBFWHY,w.KCBWHDES,KCBBPBH,KCBBPBF,m.ksmmmval,p.sid,p.username,p.program
|
||||
--DEF bufprof_cols=KCBBFSO_OWN,DECODE(KCBBFCR,1,'CR','CUR'),w.KCBWHDES,KCBBPBF,m.ksmmmval,p.sid
|
||||
DEF bufprof_cols=kcbbfso_own,p.sid,DECODE(KCBBFCR,1,'CR','CUR'),w.KCBWHDES
|
||||
|
||||
COL kcbwhdes FOR A30
|
||||
|
||||
COL bufprof_addrlen NEW_VALUE addrlen
|
||||
COL bufprof_addrmask NEW_VALUE addrmask
|
||||
|
||||
SET TERMOUT OFF
|
||||
SELECT VSIZE(addr) bufprof_addrlen, LPAD('X',VSIZE(addr)*2,'X') bufprof_addrmask FROM x$kcbsw WHERE ROWNUM = 1;
|
||||
SET TERMOUT ON
|
||||
|
||||
DEF num_samples=&2
|
||||
|
||||
WITH
|
||||
s AS (SELECT /*+ NO_MERGE MATERIALIZE */ 1 r FROM DUAL CONNECT BY LEVEL <= &num_samples),
|
||||
p AS (SELECT p.addr paddr, s.saddr saddr, s.sid sid, p.spid spid, s.username, s.program, s.terminal, s.machine
|
||||
FROM v$process p, v$session s WHERE s.paddr = p.addr),
|
||||
t1 AS (SELECT hsecs FROM v$timer),
|
||||
samples AS (
|
||||
SELECT /*+ ORDERED USE_NL(bf) USE_NL(m) USE_NL(b) */
|
||||
&bufprof_cols,
|
||||
COUNT(*) total_samples
|
||||
FROM
|
||||
s, -- this trick is here to avoid an ORA-600 in kkqcbydrv:1
|
||||
(SELECT /*+ NO_MERGE */ caddr top_so, bf.*, m.* FROM
|
||||
(SELECT /*+ NO_MERGE */
|
||||
b.*,
|
||||
HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(b.kcbbfso_own),'&addrmask')+&addrlen*2,'&addrmask')) ) caddr -- call SO address
|
||||
FROM x$kcbbf b
|
||||
WHERE bitand(b.KCBBFSO_FLG,1) = 1
|
||||
) bf,
|
||||
x$ksmmem m
|
||||
WHERE
|
||||
m.addr = bf.caddr
|
||||
AND BITAND(bf.KCBBFSO_FLG,1) = 1 -- buffer handle in use
|
||||
) b,
|
||||
p,
|
||||
x$kcbwh w
|
||||
WHERE
|
||||
--m.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(bf.KCBBFSO_OWN),'&addrmask')+&addrlen,'&addrmask')) )
|
||||
--m.addr = bf.KCBBFSO_OWN
|
||||
b.top_SO = p.paddr(+)
|
||||
AND b.kcbbfwhr = w.indx
|
||||
AND (p.sid LIKE '&1' OR p.sid IS NULL)
|
||||
GROUP BY &bufprof_cols
|
||||
),
|
||||
t2 AS (SELECT hsecs FROM v$timer)
|
||||
SELECT /*+ ORDERED */
|
||||
s.*
|
||||
, (t2.hsecs - t1.hsecs) * 10 * s.total_samples / &num_samples active_pct
|
||||
FROM
|
||||
t1,
|
||||
samples s,
|
||||
t2
|
||||
ORDER BY
|
||||
s.total_samples DESC
|
||||
/
|
||||
54
Tanel/c.sql
Normal file
54
Tanel/c.sql
Normal file
@ -0,0 +1,54 @@
|
||||
col c_objtype head OBJTYPE for a20
|
||||
col c_kglhdnsp head NAMESPACE for a20
|
||||
col c_kglnaobj head SQL_TEXT for a40 word_wrap &1
|
||||
col c_kglnaown head OWNER for a25 word_wrap &1
|
||||
col c_kglnadlk head DB_LINK for a25 word_wrap &1
|
||||
|
||||
select /*+ ORDERED USE_NL(o) */
|
||||
kglhdadr,
|
||||
kglhdpar,
|
||||
kglnatim tstamp,
|
||||
-- kglnaptm prev_tstamp,
|
||||
-- decode(kglhdnsp,0,'CURSOR',1,'TABLE/PROCEDURE',2,'BODY',3,'TRIGGER',
|
||||
-- 4,'INDEX',5,'CLUSTER',6,'OBJECT',13,'JAVA SOURCE',14,'JAVA RESOURCE', 15,'REPLICATED TABLE OBJECT',
|
||||
-- 16,'REPLICATION INTERNAL PACKAGE', 17,'CONTEXT POLICY',18,'PUB_SUB',19,'SUMMARY',20,'DIMENSION',
|
||||
-- 21,'APP CONTEXT',22,'STORED OUTLINE',23,'RULESET',24,'RSRC PLAN', 25,'RSRC CONSUMER GROUP',
|
||||
-- 26,'PENDING RSRC PLAN',27,'PENDING RSRC CONSUMER GROUP', 28,'SUBSCRIPTION',29,'LOCATION',30,'REMOTE OBJECT',
|
||||
-- 31,'SNAPSHOT METADATA',32,'JAVA SHARED DATA',33,'SECURITY PROFILE', 'INVALID NAMESPACE') c_kglhdnsp,
|
||||
decode(bitand(kglobflg,3),0,'NOT LOADED',2,'NON-EXISTENT',3,'INVALID STATUS',
|
||||
decode(kglobtyp,0,'CURSOR',1,'INDEX',2,'TABLE',3,'CLUSTER',4,'VIEW', 5,'SYNONYM',6,'SEQUENCE',7,'PROCEDURE',
|
||||
8,'FUNCTION',9,'PACKAGE',10, 'NON-EXISTENT',11,'PACKAGE BODY',12,'TRIGGER',13,'TYPE',14,'TYPE BODY',
|
||||
15,'OBJECT',16,'USER',17,'DBLINK',18,'PIPE',19,'TABLE PARTITION', 20,'INDEX PARTITION',21,'LOB',22,'LIBRARY',
|
||||
23,'DIRECTORY',24,'QUEUE', 25,'INDEX-ORGANIZED TABLE',26,'REPLICATION OBJECT GROUP', 27,'REPLICATION PROPAGATOR',
|
||||
28,'JAVA SOURCE',29,'JAVA CLASS',30,'JAVA RESOURCE',31,'JAVA JAR', 32,'INDEX TYPE',33, 'OPERATOR',
|
||||
34,'TABLE SUBPARTITION',35,'INDEX SUBPARTITION', 36, 'REPLICATED TABLE OBJECT',37,'REPLICATION INTERNAL PACKAGE',
|
||||
38,'CONTEXT POLICY',39,'PUB_SUB',40,'LOB PARTITION',41,'LOB SUBPARTITION', 42,'SUMMARY',43,'DIMENSION',
|
||||
44,'APP CONTEXT',45,'STORED OUTLINE',46,'RULESET', 47,'RSRC PLAN',48,'RSRC CONSUMER GROUP',49,'PENDING RSRC PLAN',
|
||||
50,'PENDING RSRC CONSUMER GROUP',51,'SUBSCRIPTION',52,'LOCATION', 53,'REMOTE OBJECT',54,'SNAPSHOT METADATA',
|
||||
55,'IFS', 56,'JAVA SHARED DATA',57,'SECURITY PROFILE','INVALID TYPE')) as cc_objtype,
|
||||
kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6 heapsize,
|
||||
kglhdldc,
|
||||
kglhdexc,
|
||||
kglhdlkc,
|
||||
kglobpc0,
|
||||
decode(kglhdkmk,0,'NO','YES'),
|
||||
kglhdclt,
|
||||
kglhdivc,
|
||||
kglhdkmk,
|
||||
kglnaown c_kglnaown,
|
||||
kglnaobj c_kglnaobj,
|
||||
kglnadlk c_kglnadlk
|
||||
from
|
||||
v$open_cursor c,
|
||||
x$kglob o
|
||||
where
|
||||
c.hash_Value = o.kglnahsh
|
||||
and c.address = o.kglhdadr
|
||||
--and o.kglnaobj = 'select /*tanel*/ * from dual'
|
||||
--and c.sid = (select sid from v$mystat where rownum = 1)
|
||||
and c.sid in (&1)
|
||||
--kglhdadr in (
|
||||
-- select /**/ address from v$open_cursor
|
||||
-- where sid = (select sid from v$mystat where rownum = 1)
|
||||
-- )
|
||||
/
|
||||
53
Tanel/calc.sql
Normal file
53
Tanel/calc.sql
Normal file
@ -0,0 +1,53 @@
|
||||
--------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: calc.sql
|
||||
-- Purpose: Basic calculator and dec/hex converter
|
||||
--
|
||||
-- Author: Tanel Poder
|
||||
-- Copyright: (c) http://www.tanelpoder.com
|
||||
--
|
||||
-- Usage: @calc <num1> <operation> <num2>
|
||||
-- @calc 10 + 10
|
||||
-- @calc 10 + 0x10
|
||||
-- @calc 0xFFFF - 0x5F
|
||||
-- @calc xBB * 1234
|
||||
-- Other:
|
||||
-- Can calculate only 2 operands a time
|
||||
-- You can use just "x" instead of "0x" for indicating hex numbers
|
||||
--
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
COL calc_dec HEAD "DEC" FOR 9999999999999999999.999999
|
||||
COL calc_hex HEAD "HEX" FOR A20 JUSTIFY RIGHT
|
||||
|
||||
|
||||
with
|
||||
p1 as (
|
||||
select case
|
||||
when lower('&1') like '%x%' then 'XXXXXXXXXXXXXXXXXX'
|
||||
else '999999999999999999999999999.9999999999'
|
||||
end
|
||||
format
|
||||
from dual
|
||||
),
|
||||
p3 as (
|
||||
select case
|
||||
when lower('&3') like '%x%' then 'XXXXXXXXXXXXXXXXXX'
|
||||
else '999999999999999999999999999.9999999999'
|
||||
end
|
||||
format
|
||||
from dual
|
||||
)
|
||||
select
|
||||
-- decimal
|
||||
to_number(substr('&1',instr(upper('&1'),'X')+1), p1.format)
|
||||
&2
|
||||
to_number(substr('&3',instr(upper('&3'),'X')+1), p3.format) calc_dec,
|
||||
-- hex
|
||||
to_char( to_number(substr('&1',instr(upper('&1'),'X')+1), p1.format)
|
||||
&2
|
||||
to_number(substr('&3',instr(upper('&3'),'X')+1), p3.format)
|
||||
, 'XXXXXXXXXXXXXXXXXXX') calc_hex
|
||||
from
|
||||
p1,p3
|
||||
/
|
||||
208
Tanel/cbo_helper.sql
Normal file
208
Tanel/cbo_helper.sql
Normal file
@ -0,0 +1,208 @@
|
||||
begin
|
||||
for i in (select value from v$parameter where name = 'user_dump_dest') loop
|
||||
execute immediate 'create or replace directory e2sn_udump as '''||i.value||'''';
|
||||
end loop;
|
||||
end;
|
||||
/
|
||||
|
||||
|
||||
create or replace package e2sn_monitor as
|
||||
function get_trace_file (file_name in varchar2) return dbms_debug_vc2coll pipelined;
|
||||
function get_session_trace ( p_sid in number default sys_context('userenv','sid') ) return dbms_debug_vc2coll pipelined;
|
||||
procedure cbo_trace_on;
|
||||
procedure cbo_trace_off;
|
||||
procedure sql_trace_on (p_waits in boolean default true, p_binds in boolean default true);
|
||||
procedure sql_trace_off;
|
||||
|
||||
procedure set_tracefile_identifier(p_text in varchar2);
|
||||
function trace_dump (p_exec_statement in varchar2) return dbms_debug_vc2coll pipelined;
|
||||
function test (p_select_statement in varchar2 default 'select count(*) from dba_segments') return dbms_debug_vc2coll pipelined;
|
||||
end e2sn_monitor;
|
||||
/
|
||||
|
||||
|
||||
create or replace package body e2sn_monitor as
|
||||
|
||||
procedure sql_trace_on (p_waits in boolean default true, p_binds in boolean default true)
|
||||
as
|
||||
begin
|
||||
execute immediate 'alter session set events ''10046 trace name context forever, level 12''';
|
||||
--dbms_monitor.session_trace_enable(waits=>p_waits, binds=>p_binds);
|
||||
end; -- sql_trace_on
|
||||
|
||||
procedure sql_trace_off
|
||||
as
|
||||
begin
|
||||
execute immediate 'alter session set events ''10046 trace name context off''';
|
||||
--dbms_monitor.session_trace_disable;
|
||||
end; -- sql_trace_off
|
||||
|
||||
procedure cbo_trace_on
|
||||
as
|
||||
begin
|
||||
--dbms_output.put_line('setting 10053');
|
||||
execute immediate 'alter session set events ''10053 trace name context forever, level 1''';
|
||||
--execute immediate 'alter session set "_optimizer_trace"=all';
|
||||
--dbms_output.put_line('event 10053 set');
|
||||
end cbo_trace_on;
|
||||
|
||||
procedure cbo_trace_off
|
||||
as
|
||||
begin
|
||||
execute immediate 'alter session set events ''10053 trace name context off''';
|
||||
--execute immediate 'alter session set "_optimizer_trace"=none';
|
||||
end cbo_trace_off;
|
||||
|
||||
procedure set_tracefile_identifier(p_text in varchar2)
|
||||
as
|
||||
begin
|
||||
dbms_output.put_line('trci='||p_text);
|
||||
execute immediate 'alter session set tracefile_identifier='||p_text;
|
||||
end;
|
||||
|
||||
function trace_dump (p_exec_statement in varchar2) return dbms_debug_vc2coll pipelined
|
||||
as
|
||||
j number;
|
||||
l_prefix varchar2(100);
|
||||
begin
|
||||
l_prefix := upper('CBOHELP_'||to_char(sysdate, 'YYYYMMDD_HH24_MI_SS'));
|
||||
|
||||
set_tracefile_identifier(l_prefix);
|
||||
|
||||
--cbo_trace_on;
|
||||
--sql_trace_on;
|
||||
|
||||
execute immediate p_exec_statement ||' /* E2SN CBO helper: '||l_prefix||'*/ ';
|
||||
dbms_output.put_line(j);
|
||||
|
||||
--sql_trace_off;
|
||||
--cbo_trace_off;
|
||||
|
||||
for i in (select column_value from table(e2sn_monitor.get_session_trace)) loop
|
||||
pipe row (i.column_value);
|
||||
end loop;
|
||||
end trace_dump;
|
||||
|
||||
function test (p_select_statement in varchar2 default 'select count(*) from dba_segments') return dbms_debug_vc2coll pipelined
|
||||
as
|
||||
j number;
|
||||
l_prefix varchar2(100);
|
||||
begin
|
||||
l_prefix := upper('CBOHELP_'||to_char(sysdate, 'YYYYMMDD_HH24_MI_SS'));
|
||||
|
||||
set_tracefile_identifier(l_prefix);
|
||||
|
||||
--cbo_trace_on;
|
||||
--sql_trace_on;
|
||||
|
||||
execute immediate p_select_statement ||' /* E2SN CBO helper: '||l_prefix||'*/ ' INTO j;
|
||||
dbms_output.put_line(j);
|
||||
|
||||
--sql_trace_off;
|
||||
--cbo_trace_off;
|
||||
|
||||
for i in (select column_value from table(e2sn_monitor.get_session_trace)) loop
|
||||
pipe row (i.column_value);
|
||||
end loop;
|
||||
end test;
|
||||
|
||||
function get_trace_file (file_name in varchar2) return dbms_debug_vc2coll pipelined
|
||||
as
|
||||
invalid_file_op exception;
|
||||
pragma exception_init(invalid_file_op, -29283);
|
||||
|
||||
f utl_file.file_type;
|
||||
line varchar2(32767);
|
||||
begin
|
||||
|
||||
dbms_output.put_line('opening file='||file_name);
|
||||
f := utl_file.fopen('E2SN_UDUMP', file_name, 'R', 32767);
|
||||
|
||||
loop
|
||||
begin
|
||||
utl_file.get_line(f, line);
|
||||
exception
|
||||
when no_data_found then utl_file.fclose(f) ; exit;
|
||||
when others then utl_file.fclose(f) ; raise;
|
||||
end;
|
||||
|
||||
if length(line) > 1000 then
|
||||
for i in 0..trunc(length(line)/1000) loop
|
||||
pipe row(substr(line,i*1000+1,1000));
|
||||
end loop;
|
||||
else
|
||||
pipe row(line);
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
return;
|
||||
|
||||
exception
|
||||
when invalid_file_op then raise_application_error(-20000, 'ERROR: Unable to open tracefile. Maybe it does not exist');
|
||||
end get_trace_file;
|
||||
|
||||
|
||||
function get_session_trace ( p_sid in number default sys_context('userenv','sid') ) return dbms_debug_vc2coll pipelined
|
||||
as
|
||||
tracefile_name varchar2(4000);
|
||||
tracefile_name_lower varchar2(4000);
|
||||
begin
|
||||
|
||||
begin
|
||||
select par.value ||'/'||(select instance_name from v$instance) ||'_ora_'||s.suffix|| '.trc' into tracefile_name
|
||||
from
|
||||
v$parameter par
|
||||
, (select spid||case when traceid is not null then '_'||traceid else null end suffix
|
||||
from v$process where addr = (select paddr from v$session
|
||||
where sid = p_sid
|
||||
)
|
||||
) s
|
||||
where name = 'user_dump_dest';
|
||||
|
||||
select par.value ||'/'||(select lower(instance_name) from v$instance) ||'_ora_'||s.suffix|| '.trc' into tracefile_name_lower
|
||||
from
|
||||
v$parameter par
|
||||
, (select spid||case when traceid is not null then '_'||traceid else null end suffix
|
||||
from v$process where addr = (select paddr from v$session
|
||||
where sid = p_sid
|
||||
)
|
||||
) s
|
||||
where name = 'user_dump_dest';
|
||||
|
||||
exception
|
||||
when no_data_found then raise_application_error(-20000, 'ERROR: No matching SID/SERIAL# combination found');
|
||||
end;
|
||||
|
||||
begin
|
||||
for i in (select column_value from table(get_trace_file( tracefile_name ))) loop
|
||||
pipe row(i.column_value);
|
||||
end loop;
|
||||
|
||||
return;
|
||||
|
||||
exception
|
||||
when others then
|
||||
begin
|
||||
for i in (select column_value from table(get_trace_file( tracefile_name_lower ))) loop
|
||||
pipe row(i.column_value);
|
||||
end loop;
|
||||
|
||||
return;
|
||||
exception
|
||||
when others then raise_application_error(-20000, 'Unknown error: '||sqlerrm||chr(10)||dbms_utility.format_error_backtrace);
|
||||
end;
|
||||
end;
|
||||
|
||||
return;
|
||||
|
||||
end get_session_trace;
|
||||
|
||||
end e2sn_monitor;
|
||||
/
|
||||
show err;
|
||||
|
||||
|
||||
-- grant execute on e2sn_monitor to public;
|
||||
-- create public synonym e2sn_monitor for e2sn_monitor;
|
||||
|
||||
27
Tanel/cborun.sql
Normal file
27
Tanel/cborun.sql
Normal file
@ -0,0 +1,27 @@
|
||||
exec e2sn_monitor.cbo_trace_on;
|
||||
|
||||
def cbo_suffix ="/* cbotrace &_DATE */"
|
||||
|
||||
clear buffer
|
||||
1 &1 &cbo_suffix
|
||||
/
|
||||
|
||||
exec e2sn_monitor.cbo_trace_off
|
||||
|
||||
prompt Fetching tracefile...
|
||||
set trimspool on termout off
|
||||
spool &_tpt_tempdir/cbotrace_&_tpt_tempfile..txt
|
||||
|
||||
prompt &1 &cbo_suffix
|
||||
select column_value CBO_TRACE
|
||||
from table (e2sn_monitor.get_session_trace)
|
||||
where regexp_like(column_value, '&2', 'i') or lower(column_value) like lower('&2');
|
||||
|
||||
spool off
|
||||
set termout on
|
||||
|
||||
set define ^
|
||||
host mvim ^_tpt_tempdir/cbotrace_^_tpt_tempfile..txt &
|
||||
set define &
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user