Le SCN c’est quoi ?
On peut dire que c’est un identifiant interne unique qui s’accroit dans le temps (La fonction SCN possède une sorte d’horloge interne).
Chaque transaction commitée a un SCN associé, ce qui permet d’identifier les
changements fait par un ordre SQL.
Le SCN joue un rôle important dans la consistance de la base de données Oracle, puisque toutes les opérations de restaurations se font à partir du SCN.
Le Thread SMON (System Monitor) se base sur ce SCN pour récupérer une instance après un arrêt anormal, et aussi pour vérifier que les entêtes des fichiers de
données (Datafiles) et des fichiers de contrôles (Control Files) sont synchro au niveau du dernier SCN.
Voir le dernier SCN de la database
SQL> SELECT current_scn FROM V$DATABASE;
SQL> SELECT dbms_flashback.get_system_change_number() from dual;
Voir les SCN par ligne d’une
Table
SQL> SELECT ora_rowscn FROM matable;
Attention si la clause ROWDEPENDENCIES n’a pas été incluse lors de la création de la table, vous ne verrez pas les SCN de chaque ligne mais le
dernier SCN unique pour tous les Block physiques de données.
Connaitre la date (TIMESTAMP) à
partir d’un numéro SCN
SQL> SELECT scn_to_timestamp(ora_rowscn) FROM maTable;
SQL> SELECT scn_to_timestamp(SCN) FROM DUAL;
Connaitre le numéro SCN à partir
d’une date donnée
SQL> SELECT timestamp_to_scn(to_date('20/12/2009 19:53','DD/MM/YYYY HH24:MI')) "SCN"
FROM dual;
Connaître les SCN et Date sur les
5 derniers jours environ.
Table utilisée par le Thread SMON (alimentée toute les 5 minutes environ)
SQL> SELECT time_dp,scn
FROM smon_scn_time
ORDER BY time_dp;
Voir les SCN des transactions en
cours
SQL> SELECT SES_ADDR,
START_SCNB
FROM V$TRANSACTION
ORDER BY START_SCNB;
| Liens en rapport avec l'article et qui sont susceptibles de vous intéresser |
|
• Oracle FLASHBACK VERSIONS QUERY • Oracle FLASHBACK TRANSACTION QUERY |