Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/07/2011, 07h41   #1
Invité de passage
 
Inscription : mai 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 66
Points : 3
Points : 3
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 :
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 :
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,
villegente est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 16h07   #2
Membre du Club
 
Inscription : octobre 2009
Messages : 62
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 62
Points : 57
Points : 57
Bonjour,

Citation:
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
Citation:
ajoutée automatiquement lors de la copie de l'utilisateur (SQL Developer)
?

A+
marsup077 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/07/2011, 23h05   #3
Invité de passage
 
Inscription : mai 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 66
Points : 3
Points : 3
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) :
Citation:
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,
villegente est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 01h47   #4
Invité de passage
 
Inscription : mai 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 66
Points : 3
Points : 3
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,
villegente est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 06h01   #5
Invité de passage
 
Inscription : mai 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 66
Points : 3
Points : 3
Après plusieurs tentatives, la mise à jour a été effectuée.
Reste à résoudre l'erreur :

Code :
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.
villegente est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 09h45   #6
Membre expérimenté
 
François
Inscription : février 2010
Messages : 305
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 305
Points : 535
Points : 535
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
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 02h04   #7
Invité de passage
 
Inscription : mai 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 66
Points : 3
Points : 3
Citation:
Envoyé par Rams7s Voir le message
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
Je ne vois pas pourquoi l'erreur indiquée ici aurait un lien avec le procédure mise en cause dans le premier message.
La procédure en question se trouve sur notre serveur sous Oracle 11. L'erreur indiquée dans le dernier post vient elle lorsque j'essais d'upgrader la base de mon serveur qui était en Oracle 10 vers Oracla 11. Plus précisement, lors de l'exécution de l'outils d'upgrade des bases.

Bonne Jorunée,
villegente est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 09h43   #8
Membre expérimenté
 
François
Inscription : février 2010
Messages : 305
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 305
Points : 535
Points : 535
C'est vrai, je me suis enflamme.
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h25.


 
 
 
 
Partenaires

Hébergement Web