Very easy to use SQL statement (daily arrangement)


1. / * get the path and name of the trace file*/

    || '/'
    || LOWER (RTRIM (i.INSTANCE, CHR (0)))
    || '_ora_'
    || p.spid
    || '.trc' trace_file_name
 FROM (SELECT p.spid
     FROM v$mystat m, v$session s, v$process p
     WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
     FROM v$thread t, v$parameter v
     WHERE v.NAME = 'thread'
      AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
     FROM v$parameter
     WHERE NAME = 'user_dump_dest') d

2. / * shows the SQL statement that generates the lock*/

select /*+ NO_MERGE(a) NO_MERGE(b) NO_MERGE(c) */ a.username, a.machine, a.sid,a.serial#, a.last_call_et "Seconds", b.id1, c.sql_text "SQL" from v$session a, v$lock b,v$sqltext c where a.username is not null and a.lockwait = b.kaddr and c.hash_value =a.sql_hash_value;

3. / * view Oracle hidden parameters*/

select name,
    decode(isdefault, 'TRUE', 'Y', 'N') as "Default",
    decode(ISEM, 'TRUE', 'Y', 'N') as SesMod,
    decode(ISYM, 'IMMEDIATE', 'I', 'DEFERRED', 'D', 'FALSE', 'N') as SysMod,
    decode(IMOD, 'MODIFIED', 'U', 'SYS_MODIFIED', 'S', 'N') as Modified,
    decode(IADJ, 'TRUE', 'Y', 'N') as Adjusted,
    select x.inst_id as instance,
        x.indx + 1,
        ksppinm as name,
        ksppstvl as value,
        ksppstdf as isdefault,
        decode(bitand(ksppiflg / 256, 1), 1, 'TRUE', 'FALSE') as ISEM,
        decode(bitand(ksppiflg / 65536, 3),
            'FALSE') as ISYM,
        decode(bitand(ksppstvf, 7), 1, 'MODIFIED', 'FALSE') as IMOD,
        decode(bitand(ksppstvf, 2), 2, 'TRUE', 'FALSE') as IADJ,
        ksppdesc as description
     from x$ksppi x, x$ksppsv y
     where x.indx = y.indx
      and substr(ksppinm, 1, 1) = '_'
      and x.inst_id = USERENV('Instance'))
 order by name;

4. / * view SQL according to Oracle PID in the system*/

select /*+ ORDERED */ sql_text from v$sqltext a where (a.hash_value,a.address) IN (select decode (sql_hash_value,0,prev_hash_value,sql_hash_value),decode (sql_hash_value,0,prev_sql_addr,sql_address) from v$session b where b.paddr =( select addr from v$process c where c.spid = '&pid')) order by piece ASC;

The above is the article to share a few better SQL statements, I hope you like.