Après combien de temps l'oracle ferme-t-il un curseur explicitement défini?Comment connaître l'heure en vie d'un curseur explicite?
Répondre
Oracle ne ferme pas votre curseur à moins que vous ne le demandiez explicitement. Vous pouvez ouvrir un curseur sur une table inactive, attendre 24 heures puis récupérer les lignes du curseur.
Sur les tables actives (tables pouvant être mises à jour/supprimées/insérées), vous pouvez exécuter ORA-1555 après un certain temps (la table a été modifiée et les informations pour reconstruire les anciennes versions ont été remplacées). Si votre tablespace UNDO est défini comme AUTOEXTEND, vous pouvez en toute sécurité chercher de tout curseur ouvert il y a moins UNDO_RETENTION
secondes:
SQL> show parameter undo_retention
NAME TYPE VALUE
------------------------------------ ----------- ------
undo_retention integer 900
Sur mon DB je peux en toute sécurité à partir chercher les curseurs pendant 900 secondes (15 minutes). Ceci est un seuil bas (Oracle conservera suffisamment de données pour reconstruire les anciennes versions de blocs pour au moins 15 minutes).
Merci pour les informations –
duplication possible de [Durée de vie d'un curseur dans Oracle] (http://stackoverflow.com/questions/2991515/lifetime-of-a-cursor-in-oracle) –