Ticket n°5

Format de date sous Oracle RMan

Le 29 Jul 2016Thierry Valléerman
Lorsque l'on utilise RMan, le format de date affiché ne correspond pas forcement à celui souhaité (pour un 'list backup summary' par exemple), ou le format saisie dans un Run{ set until time=???; ...} lors d'un restauration à une heure donnée.
Voici quelques astuces pour appliquer le bon format.

Préparation du format dans l'OS

Avant d'exécuter RMan, on peut positionner la variable NLS_DATE_FORMAT (idem pour SqlPlus)

Exemple pour Unix

Unix > export NLS_DATE_FORMAT="dd/mm/yyyy hh24:mi:ss"
Unix > rman target /
RMAN> list backup summary;
Liste des sauvegardes
===============
Key     TY LV S Device Type Completion Time     #Pieces #Copies Compressed Tag
------- -- -- - ----------- ------------------- ------- ------- ---------- ---
144101  B  F  A DISK        25/04/2012 22:04:04 8       1       NO         TAG20120425T220014
144102  B  A  A DISK        25/04/2012 22:04:09 1       1       NO         TAG20120425T220409
144103  B  A  A DISK        25/04/2012 22:05:05 1       1       NO         TAG20120425T220505

Exemple pour Windows

Attention pour Windows ne pas mettre de quote autour du format
C:\Windows>set NLS_DATE_FORMAT=DD/MM/YY HH24:MI
C:\Windows>rman target /
RMAN> list backup summary;
Liste des sauvegardes
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
156     B  F  A DISK        25/04/12 18:09  1       1       NO         TAG20120425T180806
157     B  A  A DISK        25/04/12 18:09  1       1       NO         TAG20120425T180952

Spécification pour le SET UNTIL TIME

Lorsque l'on souhaite faire une restauration à une heure donnée, on doit renseigner la date dans un RUN{} avec la commande set until time=.
Dans ce cas Oracle attends une date au format spécifié dans le NLS_DATE_FORMAT ou dans le format d'origine spécifié dans les paramètres de l'instance.
Pour éviter toute erreur de syntaxe, on peut tout simplement forcer le format de date lors de la commande:
run
{
 set until time="TO_DATE('27/08/2015 08:00', 'DD/MM/YYYY HH24:MI')"
...
}
Dans ce cas le format spécifié sur la commande outrepasse tout autre formatage.