IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

[21] Erreur ORA-01858 lors d'une insertion dans une table immutable


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [21] Erreur ORA-01858 lors d'une insertion dans une table immutable
    Bonjour

    Je crée une petite table immutable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE IMMUTABLE TABLE t_imm (
        id  NUMBER   CONSTRAINT pk_imm PRIMARY KEY
    )
    NO DROP UNTIL 1 DAYS IDLE
    NO DELETE UNTIL 16 DAYS AFTER INSERT;
    Je tente ensuite d'insérer une ligne dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO t_imm (id) VALUES (1);
    et là j'obtiens une erreur :
    ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique
    Si je crée la table sans le mot IMMUTABLE, pas d'erreur.


    SQL> select banner_full from v$version;
    
    BANNER_FULL
    --------------------------------------------------------------------------------
    Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
    Version 21.3.0.0.0
    
    Oracle 21 sur Windows.

    Quelle erreur ai-je commise ?

    Merci

    Philippe

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 998
    Points : 2 501
    Points
    2 501
    Par défaut
    Ma version d'Oracle n'accepte pas la création de tables immutables mais essaye l'ordre SQL suivant : ça a l'air bête mais peut-être que ça passera.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO t_imm (id) VALUES (to_number(1));
    Si c'est encore KO, remplace la colonne NUMBER par une VARCHAR2 ou DATE et regarde ce qui se passe avec une valeur VARCHAR2 ou DATE; je me demande si le message d'erreur affiché est le bon.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    essaye l'ordre SQL suivant : ça a l'air bête mais peut-être que ça passera.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO t_imm (id) VALUES (to_number(1));
    Hélas, même erreur !

    Citation Envoyé par Ikebukuro Voir le message
    Si c'est encore KO, remplace la colonne NUMBER par une VARCHAR2 ou DATE et regarde ce qui se passe avec une valeur VARCHAR2 ou DATE;
    Hélas, même erreur !

    Citation Envoyé par Ikebukuro Voir le message
    je me demande si le message d'erreur affiché est le bon.
    En effet... et je ne pense pas que ce soit un problème de droit.
    Merci quand même ;-)

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 159
    Points : 1 949
    Points
    1 949
    Par défaut
    Bonjour,

    Je ne connaissais pas ce nouveau type de table. Pour en savoir plus sur l'erreur, peux-tu activer une trace pour l'insert. Dans une session, exécute les instructions suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alter session set events '1858 trace name errorstack level 3';
    INSERT INTO t_imm (id) VALUES (1);
    alter session set events '1858 trace name context off';
    Une trace doit alors être générée sur le serveur. Récupère là et vois ce qu'elle dit.

  5. #5
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 998
    Points : 2 501
    Points
    2 501
    Par défaut
    C'est quoi l'event 1858?

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci

    Alors j'ai effectué la commande. Effectivement ça produit une trace (alert.log) , mais ça ne dit pas grand chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    2022-04-04T15:13:31.754334+02:00
    ORACLE(5):Errors in file A:\APP\ORACLE21_BASE\diag\rdbms\ora21\ora21\trace\ora21_ora_5652.trc:
    ORA-01858: Caractère non numérique trouvé Ã* la place d'un caractère numérique
    et dans le fichier trc mentionné, de la poésie du genre
    2IF-k+xI$dbked.c*data_guard_broker_runtime_state*1kK092j
    IIYkx+xZp1%dbkedDefDump*ddedmp*dbked.c*data_guard_broker_runtime_state*3L|nKORACLE*5Z1V77|J65bFedB61|0

    Y a-t-il un outil qui permet d'analyser cette trace ?

    Merci

  7. #7
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 998
    Points : 2 501
    Points
    2 501
    Par défaut
    Ton INSERT, tu le fais comment?
    Avec SQL*Plus? avec SQL Developper? avec un outil tiers?
    Est-ce que tu fais un copier-coller depuis word ou un autre logiciel, ce qui expliquerait qu'il pourrait y avoir un caractère caché non numérique avant ou après le 1.

    Si ce n'est pas déjà fait, fait ton INSERT via SQL*Plus, sans aucun copier/coller pour voir ce qui se passe.

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 159
    Points : 1 949
    Points
    1 949
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    C'est quoi l'event 1858?
    C'est le code de l'erreur

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 159
    Points : 1 949
    Points
    1 949
    Par défaut
    Citation Envoyé par philippe_l Voir le message
    Merci

    Alors j'ai effectué la commande. Effectivement ça produit une trace (alert.log) , mais ça ne dit pas grand chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    2022-04-04T15:13:31.754334+02:00
    ORACLE(5):Errors in file A:\APP\ORACLE21_BASE\diag\rdbms\ora21\ora21\trace\ora21_ora_5652.trc:
    ORA-01858: Caractère non numérique trouvé Ã* la place d'un caractère numérique
    et dans le fichier trc mentionné, de la poésie du genre
    2IF-k+xI$dbked.c*data_guard_broker_runtime_state*1kK092j
    IIYkx+xZp1%dbkedDefDump*ddedmp*dbked.c*data_guard_broker_runtime_state*3L|nKORACLE*5Z1V77|J65bFedB61|0

    Y a-t-il un outil qui permet d'analyser cette trace ?

    Merci
    Difficile à déchiffrer en effet. Ca a l'air de parler de Data Guard, donc c'est peut-être lié? Tu as Data Guard configuré sur cet env?
    En général les nouveautés occasionnent des bugs, à part ouvrir une SR chez Oracle je vois pas trop.

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Je viens de retaper la requête à la main (drop de la table, création de la table puis insert) , sans aucun copier-coller, et sur sql developer et sur sql*plus. Même erreur.
    C'est quand même très bizarre.
    J'ai refais ce qu'Oracle indique dans sa doc https://docs.oracle.com/en/database/...471129646.html
    Rien à faire, toujours la même erreur. Les requêtes SELECT et DESC de l'exemple fonctionnent bien, mais pas l'INSERT.

    Je n'ai pas vu sur Internet un lien entre les tables immutables et cette erreur à croire que soit ça fonctionne pour tout le monde soit personne n'utilise ce genre de table.
    Même connecté en tant qu'utilisateur sys, même problème donc aucun rapport avec un droit quelconque.

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    Difficile à déchiffrer en effet. Ca a l'air de parler de Data Guard, donc c'est peut-être lié? Tu as Data Guard configuré sur cet env?
    En général les nouveautés occasionnent des bugs, à part ouvrir une SR chez Oracle je vois pas trop.
    Mais Dataguard, ça ne me dit rien. En tout cas j'ai une toute petite base de données, même l'archivage n'est pas activé...

    Oui tu dois avoir raison, il y a peut-être un bug.

    Vu mes besoins je vais me rabattre sur une désactivation de modification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE emp ADD 
       CONSTRAINT lecture_seule 
          CHECK (1=1) DISABLE VALIDATE;
    Ce n'est pas l'idéal mais c'est mieux que rien.

    Merci !

  12. #12
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 998
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    C'est le code de l'erreur
    Et cela te permet donc d'avoir des infos beaucoup plus précises?
    Intéressant...

  13. #13
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 159
    Points : 1 949
    Points
    1 949
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Et cela te permet donc d'avoir des infos beaucoup plus précises?
    Intéressant...
    Oui, tu peux le faire avec toutes les erreurs, quand tu veux un peu plus de détails. Bon, dès fois la trace ne t'en dit pas forcément plus

  14. #14
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Vous avez essayé en mettant un (scale,precision) au NUMBER dans le CREATE TABLE ?

  15. #15
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    Vous avez essayé en mettant un (scale,precision) au NUMBER dans le CREATE TABLE ?
    Oui, mais pareil. Et sans spécifier le mot clé IMMUTABLE tout fonctionne bien. Ce n'est manifestement pas encore très au point...

  16. #16
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 998
    Points : 2 501
    Points
    2 501
    Par défaut
    Après tous ces tests, je te conseille de poser ta question sur le site AskTom et, si possible, de contacter le support.
    Peut-être que tu as détecté un bug mais c'est étonnant car ce que tu fais est vraiment basique.

  17. #17
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Je ne connaissais pas non plus cette fonctionnalité, en tout cas sur db<>fiddle ça fonctionne comme attendu :
    https://dbfiddle.uk/?rdbms=oracle_21...947059d87d5525

  18. #18
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Points : 279
    Points
    279
    Par défaut
    Bonjour,

    Plus d'un an après j'ai le même 'bug' sur une base en 19C (patch 21), sous linux

    Et c'est le seul endroit ou on en parle

Discussions similaires

  1. Erreur lors de l'insert dans une BDD MySQL
    Par gagaz21 dans le forum C#
    Réponses: 4
    Dernier message: 16/07/2011, 00h10
  2. Réponses: 0
    Dernier message: 13/07/2011, 13h57
  3. Réponses: 7
    Dernier message: 12/05/2010, 15h33
  4. Erreur SQL 82086 lors d'une insertion
    Par Andry dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/11/2007, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo