Oracle Developer
SQL & PL/SQL
DBA
BUGs
OIPStaff
Altro...









Forum Home » DBA

Topic: ORA-1555 trovare informazioni (BIND e User)
Risposte: 14   Pagine: 1   Ultimo Invio: 26-lug-2009 16.57 da: Giovanna

Reply to this Topic
Cerca Forum

Back to Topic List Topics: [ precedente | Prossimo ]
Risposte: 14   Pagine: 1  
Giovanna

Posts: 106
Da: Germania
Registrato: 22-gen-2008
ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 8.31
  Risposta

Salve a tutti,
ho avuto il classico ORA-1555 su una query che vielen eseguita moltissimo. Di solito senza problemi.

Il cliente vuole sapere che i valori delle BIND e l'utente
che ha provocato il problema.

Per cercaree le bind
Intanto mi sono cercata lo SCN che curiosamente mi da una data del giorno prima:
SELECT SCN_TO_TIMESTAMP(11626794108) FROM dual;
27.06.2009 22:36:15,000000000

ORA-01555 caused by SQL statement below (SQL ID: 3y3wpaf8t38yy, Query Duration=24909 sec, SCN: 0x0002.b502cc7c):
Sun Jun 28 05:31:24 2009

Se faccio una ricerca
SELECT SQL_TEXT, HASH_VALUE FROM V$SQLAREA
AS OF SCN 11626794108
WHERE SQL_ID =3y3wpaf8t38yy

SELECT NAME, VALUE_STRING,DATATYPE_STRING FROM V$SQL_BIND_CAPTURE
AS OF SCN 11626794108
WHERE HASH_VALUE = 2442240980

Trovo delle variabili, ma sono sempre le stesse con
o senza as of scn ...

Cosa faccio di sbagliato?
Poi dovrei sapere quale USER ha lanciato questa query,
se cerco SQL_ID nella tabella V$SESSION non lo trovo.

Potete darmi un'altra soluzione?

Mille grazie in anticipo e buona giornata
Gio


Alasondro

Posts: 2.013
Da: Italia
Registrato: 1-dic-2005
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 9.35
  Risposta

prova così per le bind:

select name, position,
datatype_string, was_captured,
value_string,
anydata.accesstimestamp(value_anydata)
from v$sql_bind_capture
where sql_id = '3y3wpaf8t38yy'


poi potresti dare un'occhiata a v$sqlarea e v$active_session_history

Alessandro

Giovanna

Posts: 106
Da: Germania
Registrato: 22-gen-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 12.00
  Risposta

Ciao Alessandro !
grazie, lo provo questa sera.

Dimmi, funzionano le flashback query sulle view V$?

Ho quasi l'imressione che non funzionino.

Io so che all'ora X (del SCN nell'alert log) la query Y é stata eseguita. Perché non trovo nessun User in V$SESSION?

Almeno secondo la mia logica femminile .

Ciao
Gio

Alasondro

Posts: 2.013
Da: Italia
Registrato: 1-dic-2005
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 12.24
  Risposta

no a quanto io sappia;
le v$ del resto sono speciali,
fanno riferimento a strutture interne di Oracle

Ciao
Alessandro

Giovanna

Posts: 106
Da: Germania
Registrato: 22-gen-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 12.56
  Risposta

é tutta la mattina che cerco un riferimento in
proposito nella documentazione.

Se almeno trovassi dove sta sta tabella
o$sql_bind_capture potrei provare ad usare flashback sulla tabella e non sulla view ...

Se trovo qualcosa ti faccio sapere
a dopo
Gio

Alasondro

Posts: 2.013
Da: Italia
Registrato: 1-dic-2005
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 15.19
  Risposta

occhio a non abusare di quelle strutture, puoi crearti molti problemi di performance legati a latch contention e non solo

Alessandro

cristiancudizio

Posts: 88
Da: Italia
Registrato: 3-apr-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 15.23
  Risposta

Secondo me la flashback su quelle tabelle (che non sono vere tabelle ma solo strutture della SGA) non funziona. Non credo che oracle si prenda la briga di generare dell'UNDO per ogni struttura interna.

Saluti
Cristian

cristiancudizio

Posts: 88
Da: Italia
Registrato: 3-apr-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 15.27
  Risposta

Aggiungerei che non hai la certezza di trovare in v$sql_bind_capture i valori dell'esecuzione che ti interessa, perché credo che i valori per uno stesso cursore vengano catturati per default a intervalli, non ad ogni esecuzione (e tu dici che viene eseguita moltissimo).

Saluti
Cristian

Giovanna

Posts: 106
Da: Germania
Registrato: 22-gen-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 30-giu-2009 16.46
  Risposta

Ciao ,
execution della view V$SQLAREA riporta 3982
Non sono milioni, ma neanche decine.

Allora devo dire al cliente che non posso dargli le info che vuole ...
almeno senza attivare il trace.

Ciao ciao
Gio

Giovanna

Posts: 106
Da: Germania
Registrato: 22-gen-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 1-lug-2009 9.01
  Risposta

Ciao a tutti,

se la query é piu` vecchia di 30 minuti si deve cercare
nella history

Prima si deve trovare il numero denna snap

SELECT dhsq.snap_id,
sql_id,
plan_hash_value,
To_char(begin_interval_time,'yyyymmdd hh24:mi') begint,
To_char(end_interval_time,'yyyymmdd hh24:mi') endint
FROM dba_hist_sqlstat dhsq,
dba_hist_snapshot dhsn
WHERE dhsq.sql_id = '&SQL_ID'
AND dhsq.snap_id = dhsn.snap_id
ORDER BY 1,2,3

poi:
SELECT NAME,POSITION,DATATYPE_STRING,VALUE_STRING
FROM DBA_HIST_SQLBIND WHERE SQL_ID='' and SNAP_ID=&SNAPID;

Per lo user, non ho ancora una risposta
a dopo
Gio

Alasondro

Posts: 2.013
Da: Italia
Registrato: 1-dic-2005
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 3-lug-2009 16.34
  Risposta

Giovanna,
un utile riassunto da parte di Cristian che ringrazio:

http://cristiancudizio.wordpress.com/2009/07/01/bind-variables-e-vsql_bind_capture/

Ciao
Alessandro

Giovanna

Posts: 106
Da: Germania
Registrato: 22-gen-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 3-lug-2009 17.45
  Risposta

Ciao ,
mille grazie per il riassunto!

Il db continua peró a "sputare" ORA-01555 ...
e io non so cosa pensare, se io provo ad eseguire la stessa query, ci vogliono ca39 msc .
Qualche volta peró dura talmente tanto da non poter essere portata a termine ...

Sono semplici Select ((.

Qualcuno ha una idea?
Questo é il risultato della query
SELECT *
FROM V$SQLAREA
WHERE SQL_ID ='0jh0rns1rj46j';

senza testo della query che e´lunghissimo.

Cosa vi dice la vostra esperienza?

Mille grazie ancora

Gio


SQL_TEXT SQL_FULLTEXT SQL_ID SHARABLE_MEM PERSISTENT_MEM RUNTIME_MEM SORTS VERSION_COUNT LOADED_VERSIONS OPEN_VERSIONS USERS_OPENING FETCHES EXECUTIONS PX_SERVERS_EXECUTIONS END_OF_FETCH_COUNT USERS_EXECUTING LOADS FIRST_LOAD_TIME INVALIDATIONS PARSE_CALLS DISK_READS DIRECT_WRITES BUFFER_GETS APPLICATION_WAIT_TIME CONCURRENCY_WAIT_TIME CLUSTER_WAIT_TIME USER_IO_WAIT_TIME PLSQL_EXEC_TIME JAVA_EXEC_TIME ROWS_PROCESSED COMMAND_TYPE OPTIMIZER_MODE OPTIMIZER_COST OPTIMIZER_ENV OPTIMIZER_ENV_HASH_VALUE PARSING_USER_ID PARSING_SCHEMA_ID PARSING_SCHEMA_NAME KEPT_VERSIONS ADDRESS HASH_VALUE OLD_HASH_VALUE PLAN_HASH_VALUE MODULE MODULE_HASH ACTION ACTION_HASH SERIALIZABLE_ABORTS OUTLINE_CATEGORY CPU_TIME ELAPSED_TIME OUTLINE_SID LAST_ACTIVE_CHILD_ADDRESS REMOTE OBJECT_STATUS LITERAL_HASH_VALUE LAST_LOAD_TIME IS_OBSOLETE CHILD_LATCH SQL_PROFILE PROGRAM_ID PROGRAM_LINE# EXACT_MATCHING_SIGNATURE FORCE_MATCHING_SIGNATURE LAST_ACTIVE_TIME BIND_DATA TYPECHECK_MEM
0jh0rns1rj46j 44.654 17.824 11.104 0 4 1 0 0 67 20 0 15 0 12 2009-07-03/03:38:05 12 20 21 0 403 0 0 0 223.843 0 0 302 3 FIRST_ROWS 1 E289FB89A4E49800CE001000AEF9E3E2CFFA3320564145555195A1005555551545545558591555449665851D5511058555155515152552455580588055A1454A8E09504020000020000000000100001000A0000002002080007D000000007D00000032001010000080830F2000000000190000803E00404A8E0920504696A1252040262320030020003020A000A5A000 558.857.676 59 59 FRA_WH1_HL 0 000000040A7A02C8 58.233.041 494.715.392 892.687.313 MGrntw.exe 1.720.629.873 0 0 104.588 304.132 0000000428F9E7C0 N VALID 0 07.03.2009 17:10:59 N 2 0 0 13.851.651.149.946.400.000 13.851.651.149.946.400.000 07.03.2009 17:19:51 BEDA0A2004004A4E0EBA000307C0021603C22009F00120036703393332C0021604C34A245C 0

Giovanna

Posts: 106
Da: Germania
Registrato: 22-gen-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 4-lug-2009 11.31
  Risposta

Salve a tutti ancora una volta ,

sto provando a confrontare due AWR
und di Novembre 2008

Wait Class Waits %Time -outs Total Wait Time (s) Avg wait (ms) Waits /txn
User I/O 467,961 0.00 3,099 7 2.04
Commit 228,292 0.03 739 3 1.00
System I/O 250,003 0.00 557 2 1.09
Application 7,685 0.57 139 18 0.03
Administrative 18,191 0.00 36 2 0.08
Network 2,849,236 0.00 25 0 12.43
Concurrency 2,306 33.17 24 10 0.01
Other 6,778 11.73 16 2 0.03
Configuration 71 0.00 1 11 0.00


E quella dell'ultimo 01555


Wait Class Waits %Time -outs Total Wait Time (s) Avg wait (ms) Waits /txn
Commit 400,345 0.07 1,125 3 1.00
User I/O 119,152 0.00 777 7 0.30
System I/O 437,103 0.00 688 2 1.09
Application 2,406 0.12 25 10 0.01
Concurrency 1,123 0.36 23 21 0.00
Network 4,520,166 0.00 22 0 11.27
Configuration 257 0.00 3 13 0.00
Other 14,774 0.37 2 0 0.04


Quello che salta agli occhi é che
System I/O é raddoppiato 250,00 /437,103 ma anche i
commit, quindi credo sia normale.

Configuration riporta anche una grande differenza
Configuration 71/257

Io purtroppo non ho la piú pallida idea, se
ci sono stati cambiamenti nell'applicazione.

Sono sempre + nel pallone

Saluti Gio

cristiancudizio

Posts: 88
Da: Italia
Registrato: 3-apr-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 10-lug-2009 16.37
  Risposta

Ciao,
purtroppo l'output della query su V$SQL del post precedente è parzialmente illeggibile. Io vedo ad esempio un buffer gets di 403, quindi un valore basso. Non ho capito qual'è il valore di elapsed_time.
Il problema solitamente è dovuto al fatto che qualcuno
dall'altra parte sta facendo tante modifiche ai dati della tabella e l'aumento di commit non esclude questa
possibilità. Senz'altro tanti commit aumentano la probabilità di avere un ORA-01555.
Se fai delle prove da sql*plus prova ad abilitatere il
"l'autotrace" (set autotrace on) e vedi se c'è generazione di redo allora è probabile ci sia
"delayed cleanout", prova del fatto che i dati della
tabella sono stati modificati massivamente. Ciò
spiegerebbe anche i tempi alti.

Saluti
Cristian


Il messaggio è stato scritto da: cristiancudizio a 10-lug-2009 16.38


Giovanna

Posts: 106
Da: Germania
Registrato: 22-gen-2008
Re: ORA-1555 trovare informazioni (BIND e User)
Inviato: 26-lug-2009 16.57
  Risposta

Ciao ,
io non posso assolutamente fare prove su
questa macchina ...
quasi da non crederci, ma non abbiamo un
sistema di test e ho il divieto assoluto
di settare trace senza il permesso .

Io aspetto che accada un altra volta e forse avró il permesso.
Mille grazie anche per il BLOG.
Buona Domenica
Gio

Risposte: 14   Pagine: 1  
Back to Topic List
Topics: [ precedente | Prossimo ]