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 :

Table système DICT inconnue si ouverture base étape par étape [11gR2]


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    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 : 2 005
    Par défaut Table système DICT inconnue si ouverture base étape par étape
    Bonjour,

    Je travaille sur Oracle 11gR2 et j'ai constaté que la table système DICT n'était pas accessible si j'ouvre la base de donnée étape par étape et non pas avec un startup simple.
    Est-ce que vous savez pourquoi?

    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
    SQL> connect / as sysdba
    Connected to an idle instance.
     
    SQL> startup nomount
    ORACLE instance started.
     
    Total System Global Area 1085640704 bytes
    Fixed Size                  2210208 bytes
    Variable Size             704644704 bytes
    Database Buffers          369098752 bytes
    Redo Buffers                9687040 bytes
     
    SQL> desc dict;
    ERROR:
    ORA-04043: object dict does not exist
    La table DICT n'est pas connue à cette étape, c'est normal, la base n'est pas ouverte.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> alter database mount;
    Database altered.
     
    SQL> desc dict;
    ERROR:
    ORA-04043: object dict does not exist
    La table DICT n'est toujours pas connue à cette étape, c'est normal, la base n'est pas ouverte.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> alter database open;
    Database altered.
     
    SQL> desc dict;
    ERROR:
    ORA-04043: object dict does not exist
    Là par contre, je ne comprends pas

    Pour prouver que ma base est OK, je fais un shutdown puis un startup simple --> DICT est bien connue

    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
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
     
    SQL> startup
    ORACLE instance started.
     
    Total System Global Area 1085640704 bytes
    Fixed Size                  2210208 bytes
    Variable Size             704644704 bytes
    Database Buffers          369098752 bytes
    Redo Buffers                9687040 bytes
    Database mounted.
    Database opened.
     
    SQL> desc dict;
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     TABLE_NAME                                         VARCHAR2(30)
     COMMENTS                                           VARCHAR2(4000)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Par défaut
    Bonjour,

    DICT n'est pas une table, mais un synonyme public qui redirige sur la vue SYS.DICTIONARY.

    Cela ne change rien au problème, évidemment. Il n'existe aucune raison logique pour que cela ne fonctionne pas.

    Le problème m'intéressant, j'ai procédé à des tests de mon coté, en faisant exactement les mêmes commandes que vous avez passées : et dans un premier temps, le phénomène s'est reproduit; dict n'était pas utilisable, même après m'être reconnecté sous un autre utilisateur, et les autres synonymes publics étaient tout à fait ok...

    J'ai procédé à plusieurs redémarrages pour vérifier tout ça, et le phénomène a persisté un certain temps, et puis, hop, soudain, il ne se reproduit plus, pendant plusieurs redémarrages de suite, alors que je suivais bien les étapes. J'ai été un instant perplexe, avant de réaliser une chose : j'avais omis de faire un desc dict dans les différents modes.

    Pris d'une intuition, j'ai alors refait un démarrage en plusieurs étapes, en faisant cette fois-ci un desc tab en mode nomount. Une fois la base ouverte, un desc dict renvoyait un résultat correct, en revanche un desc tab renvoyait une erreur... Je fais alors un alter system flush shared_pool; et... le desc tab renvoie alors un résultat correct ! Victoire !

    Conclusion : Oracle conserve dans le shared pool le résultat des commandes desc passées en mode nomount/mount et les restitue fidèlement après le passage en mode open, jusqu'à ce que le contenu du shared pool change ou soit purgé.

  3. #3
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    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 : 2 005
    Par défaut
    Bonsoir Baldrick,

    Je te remercie pour ta réponse détaillée, je vais tester cela de suite

    [EDIT]
    C'est bon, ça marche
    A nouveau merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération étape par étape d'un SELECT
    Par miabi dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/12/2010, 14h21
  2. [Livre]:SQL server 2008 : Étape par Étape
    Par Community Management dans le forum Livres
    Réponses: 1
    Dernier message: 27/10/2010, 17h39
  3. Postfix étape par étape
    Par death_style dans le forum Réseau
    Réponses: 9
    Dernier message: 26/05/2010, 00h21
  4. Taches étapes par étapes
    Par dondano dans le forum Langage
    Réponses: 6
    Dernier message: 19/01/2007, 11h43

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