Wie kann ich bestätigen, dass eine Datenbank Oracle und welche Version SQL verwendet?


Answers

Zwei Methoden:

select * from v$version;

werde dir geben:

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

ODER Identifizieren Ihrer Oracle Database Software-Version :

select * from product_component_version;

werde dir geben:

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
Question

Ich baue ein Installationsprogramm für eine Anwendung. Der Benutzer wählt eine Datenquelle aus, die er konfiguriert hat, und ernennt, um welche Art von Datenbank es sich handelt. Ich möchte bestätigen, dass der Datenbanktyp tatsächlich Oracle ist, und wenn möglich, welche Version von Oracle wird ausgeführt, indem eine SQL-Anweisung an die Datenquelle gesendet wird.




Sie können entweder verwenden

SELECT * FROM v$version;

oder

SET SERVEROUTPUT ON
EXEC dbms_output.put_line( dbms_db_version.version );

wenn Sie die Ausgabe von v $ version nicht analysieren möchten.




Wenn Sie Berechtigungen haben, können Sie unter VIEW oder V$VERSION :

SELECT VERSION FROM V$INSTANCE;



Hier ist eine einfache Funktion:

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
/

Erledigt.