dbi services Blog
Welcome to the dbi services Blog! This blog focuses on database infrastructure and middleware topics. It covers technologies such as Oracle, Microsoft SQL Server, MySQL, Sybase, Linux, or Documentum (etc.). The dbi services blog represents the view of our consultants, not necessarily that of dbi services. Feel free to comment on the postings!
Aprés une migration de 10gR2 vers 11gR2, une application utilisant les packages DBMS_XMLQUERY pour générer des documents xml est en erreur. Le format des dates a changé, qu'a fait le DBA ?
Un examen des paramètres NLS ne révèle pas de différences entre les deux environnements, au niveau database. La documentation sur le sujet est identique en version 11.2 et 10.2, comme vous pouvez le constater.
S'est posé alors à moi la question suivante : de quoi dépend le résultat ? Y a-t-il une dépendance au NLS_DATE_FORMAT de l'instance ou de la session ?
Pour cela, une fonction de validation fut écrite :
create or replace function xmldate return clob as
ctxhdl dbms_xmlquery.ctxtype;
begin
ctxhdl:=dbms_xmlquery.newcontext('select sysdate from dual');
return(dbms_xmlquery.getxml(ctxhdl));
end;
/
Cette fonction fut testé avec la commande suivante : select xmldate from dual;
On constate rapidement que le xml généré n'est pas dépendant du NLS_DATE_FORMAT.
Test 1 :
alter session set NLS_DATE_FORMAT='DD-MON-RR HH12:MI:SS';select '11.2.0.1',sysdate , xmldate from dual;
alter session set succeeded.
'11.2.0.1' SYSDATE XMLDATE
---------- ------------------------- -----------------------------------------------
11.2.0.1 02-DEC-10 01:13:00
Test 2 :
alter session set NLS_DATE_FORMAT='YYYYMMDD HH24:MI:SS'; select '11.2.0.1',sysdate , xmldate from dual;alter session set succeeded.
'11.2.0.1' SYSDATE XMLDATE
---------- ------------------------- --------------------------------------------
11.2.0.1 20101202 13:13:44
Si ce n'est le format de date de la session, serait-ce la version ?
|
Version |
|
|
10.2.0.4 |
|
|
11.1.0.7 |
|
|
12.2.0.1 |
On constate un changement de comportement en version 12.2.0.1. Est-ce un bug ?
Le support Oracle nous a rappelé qu'une fonction existait pour definir le format dont nous avions besoin. :-)
Ajoutez la ligne suivante dans le code de la fonction xmldate et le format sera toujours le même.
dbms_xmlquery.setdateformat(ctxhdl, 'MM/dd/yyyy HH:mm');Heureusement qu'il y a des bonnes pratiques... :-)
Bon XML !
Pierre
Related Post
- How to handle mutex issues after migrating to Oracle 11.1 You have recently migrated to Oracle Database 11g Release 1 (11.1) and have had some issues with so called "mutexes"? Don't worry, these nasty sound...
- Getting rid of network acces issues after migrating to Oracle 11.2 Are you experiencing network access issues after a migration to Oracle Database 11g Release 2 (11.2)? If yes, you have to make sure the concerned PL/S...
- How to avoid strange figures in the Oracle optimizer system statistics Have you ever noticed strange figures while collecting the Oracle optimizer system statistics ? If so, you need to provide the optimizer with the corr...
- Automatic Storage Management (ASM) : pourquoi pas ? Depuis la sortie de la version Oracle 11g R2, il y a désormais de nombreuses raisons d'utiliser ASM (Automatic Storage Management) pour gérer l'espa...
- Oracle Basics (1): Oracle Database vs Oracle Instance While beginning to work with Oracle, one of the most common confusions is between Oracle Database and Oracle Instance. The term Oracle Database is m...


