Je construis un installateur pour une application. L'utilisateur peut sélectionner une source de données qu'il a configurée et nommer quel type de base de données il est. Je veux confirmer que le type de base de données est en effet Oracle, et si possible, quelle version d'Oracle ils exécutent en envoyant une instruction SQL à la source de données.Comment puis-je confirmer qu'une base de données est Oracle et quelle version utilise SQL?
Répondre
Exécuter ce SQL:
select * from v$version;
Et vous obtiendrez un résultat comme:
BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
Est-ce que cela fonctionne pour toutes les versions d'Oracle? – modius
Toutes les versions d'Oracle que j'ai jamais utilisées. Je ne peux pas parler pour Oracle 5.0 et avant! –
Cette technique a échoué pour moi sur Oracle 11.2.0.2.0, mais j'ai quelques problèmes d'autorisation de connexion. Cependant, pour ceux qui pourraient être dans le même bateau que moi, la deuxième technique mentionnée sur cette page par Lawrence a fonctionné: select * from product_component_version – sugardaddy
Vous pouvez utiliser
SELECT * FROM v$version;
ou
SET SERVEROUTPUT ON
EXEC dbms_output.put_line(dbms_db_version.version);
si vous ne voulez pas analyser la sortie de la version v $.
Deux méthodes:
select * from v$version;
vous donnera:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Solaris: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
OU Identifying Your Oracle Database Software Release:
select * from product_component_version;
vous donnera:
PRODUCT VERSION STATUS
NLSRTL 11.1.0.6.0 Production
Oracle Database 11g Enterprise Edition 11.1.0.6.0 64bit Production
PL/SQL 11.1.0.6.0 Production
TNS for Solaris: 11.1.0.6.0 Production
super ... j'avais besoin de product_component_version .. comme je n'avais pas accès aux vues v $ – ShoeLace
Cette deuxième requête est bien plus adaptée à la vérification automatique, car elle nécessite de définir un format de données, plutôt que de s'appuyer sur l'analyse ad-hoc. Merci d'avoir posté! – jpaugh
SQL> SELECT version FROM v$instance;
VERSION
-----------------
11.2.0.3.0
Meilleure réponse car elle ne donne que le numéro de version, donc pas besoin d'analyser la sortie pour extraire la version dans un script automatisé. – pseudocode
Ne fonctionne pas avec Oracle 11g. – tjati
@omeinush Fonctionne parfaitement avec moi (11.2.0.3). – collapsar
Si vous avez des privilèges, vous pouvez utiliser ci-dessous VIEW
ou V$VERSION
:
SELECT VERSION FROM V$INSTANCE;
Je ne suis pas l'électeur abattu, mais je vois une réponse plus ancienne en double ... qui peut être la raison du vote négatif. –
Voici une fonction simple:
CREATE FUNCTION fn_which_edition
RETURN VARCHAR2
IS
/*
Purpose: determine which database edition
MODIFICATION HISTORY
Person Date Comments
--------- ------ -------------------------------------------
dcox 6/6/2013 Initial Build
*/
-- Banner
CURSOR c_get_banner
IS
SELECT banner
FROM v$version
WHERE UPPER(banner) LIKE UPPER('Oracle Database%');
vrec_banner c_get_banner%ROWTYPE; -- row record
v_database VARCHAR2(32767); --
BEGIN
-- Get banner to get edition
OPEN c_get_banner;
FETCH c_get_banner INTO vrec_banner;
CLOSE c_get_banner;
-- Check for Database type
IF INSTR(UPPER(vrec_banner.banner), 'EXPRESS') > 0
THEN
v_database := 'EXPRESS';
ELSIF INSTR(UPPER(vrec_banner.banner), 'STANDARD') > 0
THEN
v_database := 'STANDARD';
ELSIF INSTR(UPPER(vrec_banner.banner), 'PERSONAL') > 0
THEN
v_database := 'PERSONAL';
ELSIF INSTR(UPPER(vrec_banner.banner), 'ENTERPRISE') > 0
THEN
v_database := 'ENTERPRISE';
ELSE
v_database := 'UNKNOWN';
END IF;
RETURN v_database;
EXCEPTION
WHEN OTHERS
THEN
RETURN 'ERROR:' || SQLERRM(SQLCODE);
END fn_which_edition; -- function fn_which_edition
/
Terminé.
Si votre instance est en panne, vous êtes regard des informations de version dans alert.log
Ou une autre façon brute est de regarder en binaire Oracle, Si DB hébergé sur Linux, essayez les chaînes sur binaire Oracle.
strings -a $ORACLE_HOME/bin/oracle |grep RDBMS | grep RELEASE
Pour utiliser Oracle:
Select * from v$version;
Pour une utilisation du serveur SQL:
Select @@VERSION as Version
et pour MySQL:
Show variables LIKE "%version%";
- 1. Comment puis-je confirmer qu'une base de données est Postgres et quelle version utilise SQL?
- 2. Comment vérifiez-vous quelle version de SQL Server pour une base de données en utilisant TSQL?
- 3. Quelle est la taille maximale d'une base de données MySQL dans la version 5 et supérieure?
- 4. Dans une base de données Oracle, quelle est la différence entre ROWNUM et ROW_NUMBER?
- 5. Est-ce que quelqu'un utilise Entity Framework avec une base de données Oracle?
- 6. Oracle et SQL Dataset
- 7. Comment puis-je trouver quelle base de données utilise un fichier
- 8. Quelle version de WebKit Adobe Air utilise-t-elle?
- 9. Comment puis-je changer la base de données de SQL Server à Oracle avec SubSonic?
- 10. Quelle est la meilleure colonne pour stocker du XML dans une base de données Oracle?
- 11. Version du programme utilisant la base de données?
- 12. Chaque commande SQL DDL est-elle réversible? [Contrôle de version de base de données]
- 13. Quelle est la différence d'API PL/SQL entre Oracle Express Edition (XE) et Standard Edition (SE)?
- 14. Contrôle de version de base de données SQL Server 2008 Suppression de SP et de fonctions
- 15. Quelle est la meilleure façon de déboguer un Oracle SP?
- 16. Oracle Base de données de performance liées
- 17. Comment contrôler la version des bases de données SQL Server?
- 18. Insérer dans la base de données oracle
- 19. Comment configurer un serveur lié à une base de données Oracle sur SQL 2000/2005?
- 20. Quelle est la signification du symbole '@' dans Oracle SQL?
- 21. De quelle version de SQL Server ai-je besoin pour déplacer la base de données vers le serveur de production?
- 22. Quelle base de données utiliser pour le stockage et la manipulation de gros volumes de données?
- 23. Pourquoi un déclencheur de base de données serait-il invalide dans une base de données Oracle?
- 24. Connexion à une base de données Oracle en C# .Net
- 25. Quelle version de ruby est moins buggée?
- 26. Ant utilise mauvaise version java
- 27. Quelle est la dernière version de Lucene.net?
- 28. Quelle est la meilleure base de données sql locale pour une application client .net?
- 29. Est-il possible d'utiliser un lien de base de données entre une base de données oracle et une base de données postgresql sur différents serveurs physiques?
- 30. Détermination de la base de données Oracle instance
Qu'en est votre langage de programmation? Ce genre de question dépend vraiment de l'API de langage pour l'accès DB. – gizmo
Je peux supposer que j'ai une source de données JDBC. Si la connexion échoue ou si l'instruction sql génère une erreur, je peux certainement la piéger et la traiter en conséquence. – modius