|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : mai 2007 Messages : 385 ![]() |
Bonjour,
Je suis en Oralce 10G R2. Je souhaite savoir s'il y a une vue DBA qui me donnerait la dernière date à laquelle j'ai modifié ou inséré des lignes dans une table oracle. En vous remerciant, LBO72. |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Cyrille Administrateur de base de données Inscription : avril 2005 Messages : 112 ![]() |
je dirai non. Je ne crois pas qu'il y ai une vue avec ce genre d'informations... Mais je ne suis pas sur
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() Administrateur de base de données Inscription : novembre 2007 Messages : 341 ![]() |
je dirais pareil.
la vue dba_tab_modifications donnera les modif faites depuis le dernier calcul de stats (inserts, delete, ...) mais c'est très approximatif si les stats ne sont pas forcées tous les jours. sinon, il reste l'audit sur les tables ou la base en entier, ou encore alimenter une table avec un trigger after update after insert par exemple. |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : mai 2007 Messages : 385 ![]() |
C'est la réponse à laquelle je m'attendais... :-(
Merci. LBO72. |
|
|
00
|
|
|
#5 | ||||
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
La réponse n'est pas strictement négative, au pire, ça dépend.
Depuis la V10 il existe dans chaque table la pseudo-colonne ORA_ROWSCN, qui mémorise le SCN de la dernière modification apportée au bloc dans lequel se situe la ligne de données consultée. Ce SCN peut être converti en temps grâce à la fonction SCN_TO_TIMESTAMP. Code :
Code :
SELECT max(scn_to_timestamp(ora_rowscn)) FROM emp; 1) Par défaut, la granularité est du niveau du bloc : on a l'impression que toutes les lignes du bloc ont été modifiées à la même date, ce qui peut être complètement faux. Pour avoir une granularité de niveau ligne, il faut recréer la table avec l'option ROWDEPENDENCIES, ce qui en général n'est pas possible, pas souhaitable ou trop tardif face au besoin immédiat de savoir de quand date la modification. 2) La fonction SCN_TO_TIMESTAMP fait appel à la table système SMON_SCN_TIME, qui stocke la correspondance entre SCN et temps. (Cette correspondance ne peut pas être obtenue par une formule de calcul, car les SCN et le temps évoluent de manière autonome. Il n'y a donc pas d'autre solution que de stocker régulièrement les valeurs respectives). Le souci, c'est que SMON_SCN_TIME a une capacité limitée, à ma connaissance non paramétrable, qui serait de 5 jours dans le cas le plus défavorable. Exemple de modification trop ancienne : Code :
Tout ça pour dire que si vous vous intéressez à une modification récente, vous pouvez le savoir facilement (à l'échelle du bloc), sinon vous devez mettre en place des colonnes d'audit (date_modif, auteur) dans vos tables.
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
||||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com