Modifica / Prefazione: questa domanda è stata migrata da SO poiché sono particolarmente interessato alla domanda sui timeout nelle query dei collegamenti DB. La soluzione fornita da SO è in qualche modo OK, ma sono davvero interessato alla domanda stessa.
Motivazione:
ho avuto una query in esecuzione "per sempre" (più di 2 giorni, fino a quando ho ucciso la sessione), che utilizzava un collegamento al database. Il problema sembrava essere che il database remoto non era disponibile e per qualche motivo ancora sconosciuto non è ORA-02068
stato sollevato (da non discutere qui) e la query ha semplicemente atteso e atteso.
(La query viene emessa da un lavoro dbms_scheduler, che esegue una procedura in un pacchetto PL / SQL. Di conseguenza, anche il lavoro è stato bloccato. Ma questo non è di particolare interesse per il nocciolo di questa domanda)
Ho simulato questa situazione mettendo uno dei miei DB di test in modalità di sospensione e lo ho interrogato su un collegamento al database. Come anticipato, la query era in attesa di annullamento manuale o di annullamento del DB remoto.
Domanda:
Non ho alcun controllo sul comportamento e sul tempo di attività del database remoto, quindi sono alla ricerca di una possibilità per impostare un timeout su una query che utilizza un collegamento al database.
Ho già esaminato i profili ( CPU_PER_CALL
ecc.), I sqlnet.ora
parametri, l'aggiunta di parametri di denominazione locali direttamente nella stringa di connessione (come l'aggiunta (connect_timeout=10)
alla definizione del collegamento al database), l'esecuzione di un comando con ... for update wait 1
, ma funzionano per sessioni occupate o inattive, ma non per sessioni in attesa.
Quindi sono alla ricerca di qualche opzione sul lato "locale" del collegamento al database, che imposta un timeout per le query sui collegamenti al database.
Alcune soluzioni gradiscono alter session set xyz
o select ... from a@b "wait 100" --(yes, I know this syntax doesn't exist)
sarebbero apprezzate, poiché non ho diritti DBA su questi DB particolari.
Sono attualmente su 10gR2 ma l'aggiornamento a 11gR2 in poche settimane, quindi le idee per una di queste versioni saranno utili.