Existe-t-il un équivalent à la SHOW DATABASES
déclaration MySQL ?
Est-il possible de trouver des bases de données dans un cluster? c'est-à-dire des bases de données présentes sur le réseau sur un autre système?
Puis-je analyser les fichiers présents sur une installation Oracle pour les trouver?
Étant donné les informations d'identification d'accès complètes à un système Oracle, comment procéder pour énumérer toutes les bases de données existantes?
Réponses:
Il n'y a pas une telle chose. Vous pouvez interroger des écouteurs sur une machine (
lsnrctl status
) pour voir quels services y sont enregistrés, mais cela ne mappe pas un à un vers la base de données (et il peut y avoir plusieurs écouteurs sur la même machine). Sinon, les outils couramment utilisés se connectent à une instance de base de données et une instance appartient à une seule base de données.Si vous parlez de clusters Oracle RAC, chaque instance connaît ses homologues (d'autres instances qui desservent la même base de données) et vous pouvez trouver les autres instances actuellement démarrées pour cette base de données à l'aide de la
gv$instance
vue.Vous pouvez également utiliser l'
crsctl
utilitaire pour répertorier les services (y compris les bases de données) qui sont enregistrés dans le cluster et leur état.Si vous parlez d'un logiciel de mise en cluster d'un autre fournisseur, je suis quasiment sûr qu'ils ont tous ces types d'utilitaires de gestion des ressources à interroger.
Si vous ne parlez que d'un tas de machines, alors non, il n'existe aucun moyen fiable à 100% d'énumérer toutes les bases de données sur un réseau.
Pour trouver des bases de données actives (c'est-à-dire démarrées), recherchez les
*_pmon_*
processus sous Unix (il y en a un par instance de base de données) et les services Oracle sous Windows.Pour localiser les installations du logiciel de base de données Oracle, regardez
/etc/oratab
sous Unix. Il doit contenir tous lesORACLE_HOME
s installés. Vous pouvez regarder à l' intérieur chacun de ceux$ORACLE_HOME/dbs
pourspfile<SID>.ora
et / ouinit<SID>.ora
fichiers - il y aura une pour chaque base de données.(Je pense que vous pouvez trouver l'équivalent des informations dans
oratab
les clés de registre Windows ciHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
- dessous , mais je ne connais pas sa structure.)Maintenant, bien sûr, si vous avez enregistré toute votre base de données avec un serveur OEM (Enterprise Manager) lorsque vous les avez installés, vous pouvez trouver la liste complète là-bas - mais je suppose que si vous demandez ce n'est pas le cas.
la source
Oracle n'a pas de bases de données mais des schémas, vous pouvez les répertorier avec
ou quelque chose comme ça :
la source
En termes simples, il n'y a pas d'analogie directe avec les "bases de données" MySQL ou un "cluster" sur Oracle: la correspondance la plus proche est un "schéma" mais cela reste très différent.
Cela va apparemment changer en 12c avec l'introduction de bases de données enfichables:
la source
Je pense qu'une réponse pour les futurs navigateurs sur * nix pourrait être:
chat / etc / oratab
la source
Connectez-vous simplement à ASM et vérifiez le client de base de données.
la source
Si vous disposez de bases de données enfichables (recommandées) sur Oracle 12, vous pouvez effectuer les opérations suivantes:
la source
Pour que la base de données autonome obtienne la liste des bases de données qui démarrent automatiquement après le redémarrage de l'hôte:
ou tout simplement pour obtenir la liste de toutes les bases de données:
Pour les bases de données RAC, la méthode suivante peut être utile:
De plus, comme cela a déjà été mentionné, la base de données dans MySQL n'est pas la même que la base de données dans Oracle. Dans Oracle, il est plus proche du schéma - c'est-à-dire nommé conteneur pour les objets de l'utilisateur. Pour obtenir la liste des schémas, vous pouvez utiliser l'instruction SQL suivante:
ou pour obtenir la liste des schémas non liés au système (disponible dans Oracle RDBMS à partir de la version 12c):
la source