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

Administration Oracle Discussion :

Compiler suite à migration


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Par défaut Compiler suite à migration
    Bonjour,

    Je rencontre des problèmes pour compiler une de nos fonctions suite au passage à Oracle 11G.
    Cette fonction se compile sans problème sur notre serveur 10gXE mais pas sous la nouvelle machine en 11g.

    Ci-dessous la fonction concernée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    create or replace
    function                sic_bordereau_cc (
    journal in varchar2, 
    bord_prop in varchar2
    )
    return varchar2
    is
     
    bord_seq varchar2(8) := to_char(sysdate,'yymm');
     
    begin
     
    -- controle de la possibilité de créer un bordereau sur le journal
     
    select  
      bord_seq||to_char(jm_inde+1,'FM0000')
      into bord_seq 
      from jourmens@dlpremcc.sic.intra
      where 
        soc='01' 
        and jm_code=journal||bord_seq
        and jm_exer=to_char(sysdate,'yyyy')
        and jm_clot!='1';  
     
    -- si le controle est bon alors BORD_SEQ contient la sequence
     
    if bord_seq is not null
    then
     
      -- mise à jour de JOURMENS pour conserver l'indice de la séquence
     
      update jourmens@dlpremcc.sic.intra
        set jm_inde=jm_inde+1 
        where 
          soc='01' 
          and jm_code=journal||substr(bord_seq,1,4)
          and jm_exer=to_char(sysdate,'yyyy')
          and jm_clot!='1';
      commit;
     
      -- création de l'enregistrement dans la liste des bordereaux
     
      insert into bordereau@dlpremcc.sic.intra (bo_date, bo_ccmp, bo_prop, bo_clot, bo_edit, soc, bo_modu) values
        (sysdate, journal||bord_seq, bord_prop, 0, 0, '01', 'ccecri');
      commit;
     
      -- création de la table du bordereau
     
      sic_commande_directe@dlpremcc.sic.intra (
      'create table s9881_cc_00.XB01'||journal||bord_seq||
      '(
        "BP_DATE" DATE NOT NULL ENABLE,
        "BP_ECRI" VARCHAR2(16 BYTE) NOT NULL ENABLE,
        "BP_LIBE" VARCHAR2(80 BYTE) NOT NULL ENABLE,
        "BP_PIEC" VARCHAR2(2 BYTE),
        "BP_DOSS" VARCHAR2(6 BYTE),
        "BP_CMPT" VARCHAR2(12 BYTE) NOT NULL ENABLE,
        "BP_BUDG" VARCHAR2(15 BYTE),
        "BP_DEBI" NUMBER(16,2),
        "BP_CRED" NUMBER(16,2),
        "BP_ANLY" VARCHAR2(14 BYTE) NOT NULL ENABLE,
        "BP_DATES" DATE NOT NULL ENABLE,
        "BP_SENS"           VARCHAR2(1 BYTE),
        "BP_FACT"           VARCHAR2(8 BYTE),
        "BP_RECE"           VARCHAR2(29 BYTE),
        "BP_BANQ"           VARCHAR2(5 BYTE),
        "BP_LIBBANQ"        VARCHAR2(30 BYTE),
        "BP_GUIC"           VARCHAR2(5 BYTE),
        "BP_CPTE"           VARCHAR2(11 BYTE),
        "BP_CLE"            VARCHAR2(2 BYTE),
        "BP_BENEF"          VARCHAR2(50 BYTE),
        "BP_CCP"            VARCHAR2(1 BYTE),
        "BP_BORD"           VARCHAR2(2 BYTE),
        "DV_CODE"           VARCHAR2(1 BYTE),
        "BP_ADR1"           VARCHAR2(40 BYTE),
        "BP_ADR2"           VARCHAR2(40 BYTE),
        "BP_CP"             VARCHAR2(5 BYTE),
        "BP_VILLE"          VARCHAR2(40 BYTE),
        "BP_CHEQUE"         VARCHAR2(20 BYTE),
        "BP_PIECE"          VARCHAR2(6 BYTE),
        "BP_ECRI_DEST"      VARCHAR2(16 BYTE),
        "BP_ECRI_ORIG"      VARCHAR2(16 BYTE),
        "BP_REG"            VARCHAR2(1 BYTE),
        "BP_DOSSIER"        VARCHAR2(10 BYTE),
        "BP_CMPT_ORI"       VARCHAR2(12 BYTE),
        "BP_EXER_EXT_MODIF" VARCHAR2(1 BYTE),
        "BP_PROG"           VARCHAR2(6 BYTE),
        "BP_LOT"            VARCHAR2(4 BYTE),
        "BP_RIB_MANDAT"     VARCHAR2(35 BYTE)
        )'
        );
     
    end if;
     
    return bord_seq;
    end;
    Et le message d'erreur de compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Erreur(1): ORA-04052: erreurs lors de la consultation de l'objet distant S9881_CC_00.SIC_COMMANDE_DIRECTE@DLPREMCC.SIC.INTRA 
    ORA-00604: une erreur s'est produite au niveau SQL récursif 1 
    ORA-06544: PL/SQL: internal error, arguments: [55916], [], [], [], [], [], [],
    Le fonction est exactement la même sur notre ancien serveur à l'exception de la partie ".sic.intra" qui a été ajoutée automatiquement lors de la copie de l'utilisateur (SQL Developer).

    Avez-vous une solution ?

    Merci,

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 72
    Par défaut
    Bonjour,

    jourmens@dlpremcc.sic.intra
    ça ressemble à l'appel d'une table via un DBLink. Il y avait un DBLink sur l'ancienne base 10G ?

    Qu'entends-tu par
    ajoutée automatiquement lors de la copie de l'utilisateur (SQL Developer)
    ?

    A+

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Par défaut
    Bonjour,

    Citation Envoyé par marsup077 Voir le message
    ça ressemble à l'appel d'une table via un DBLink. Il y avait un DBLink sur l'ancienne base 10G ?
    J'utilise effectivement un DBLink. Celui-ci est d'ailleur fonctionnel puisque j'arrive depuis mon nouveau serveur à faire un select sur une table distante.
    Ce DBLink existait sur l'ancien serveur.

    Par ajout automatique j'entends que mon ancien DBLink ne portait pas .SIC.INTRA. Je pense que se changement vient du paramétrage de ma nouvelle base.


    Je pense avoir trouvé une piste ICI
    Plus précisement là (sans vouloir faire de pub) :
    2.31.5 Interoperability Between Releases

    Interoperability between an 11.1 database or Forms client and a 10.1 or 10.2 database requires a minimum patchset level of 10.1.0.5 (for 10.1) or 10.2.0.2 (for 10.2).
    Enfin, rien de totalement sur, mon nouveau serveur est en 11.2.0.1.0, est le serveur cible en 10.2.0.1.0. Mon ancien serveur était un XE en 10.2.0.1.0.

    Bonne Journée,

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Par défaut
    Le problème n'est pour le moment pas résolu.
    J'essai en vain d'appliquer le patchset. J'ai arrêté ma base, stoppé tout les services Oracle (comme indiqué dans la documentation) et j'ai toujours un message d'imformant que certains fichiers devant être mi à jour sont utilisés, ....

    Même une désactivation des sevice et un reboot n'y a rien fait.
    Comment puis-je connaître les fichiers qui pose problème lorsque ni l'assistant ni le logs n'indique de nom ?

    Bonne Journée,

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Par défaut
    Après plusieurs tentatives, la mise à jour a été effectuée.
    Reste à résoudre l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ORA-01422 : exact fetch returns more than requested number of rows.
    ORA-06512 : at line 2710
    Pour pouvoir tester si cet upgrade corrige mon problème initial.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Par défaut
    Ca c'est assez simple de voir l'origine.

    Votre select du debut ne renvoie pas un, mais plusieurs resultats.

    1. Soit c'est une erreur et ca ne devrait jamais se produire, dans ce cas l'erreur souleve vous indique que vous avez un probleme dans vos donnees, c'est bien.
    2. Soit c'est possible d'avoir plusieurs resultats, et vous devriez faire un bulk collect/une boucle pour traiter tous les resultats.
    3. Soit vous ne voulez qu'un seul resultat et un order by + rownum=1 est approprie.


    Vu votre procedure, je pencherai bien pour le premier choix. Mais c'est un gros pari

Discussions similaires

  1. Compilation apres migration acess97 access2000
    Par galinette dans le forum Access
    Réponses: 2
    Dernier message: 05/10/2006, 15h40
  2. Réponses: 3
    Dernier message: 21/04/2006, 12h13
  3. Pb de select suite à migration d'oracle 8i vers 10G2
    Par childeric dans le forum Oracle
    Réponses: 6
    Dernier message: 19/01/2006, 12h52
  4. Réponses: 13
    Dernier message: 14/10/2005, 11h01
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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