আমি কীভাবে একটি ডেটাবেস ওরাকল এবং এটি এসকিউএল ব্যবহার করে যা সংস্করণটি নিশ্চিত করতে পারি?


165

আমি একটি অ্যাপ্লিকেশন জন্য একটি ইনস্টলার নির্মাণ করছি। ব্যবহারকারীরা কনফিগার করেছেন এমন একটি ডেটাসোর্স নির্বাচন করতে এবং এটি কোন ধরণের ডাটাবেসটি মনোনীত করতে পারে। আমি নিশ্চিত করতে চাই যে ডাটাবেস টাইপটি আসলেই ওরাকল, এবং যদি সম্ভব হয় তবে ডেটাসোর্সে একটি এসকিউএল বিবৃতি প্রেরণ করে তারা ওরাকলের কোন সংস্করণ চলছে running


আপনার প্রোগ্রামিং ভাষা সম্পর্কে কি? এই জাতীয় প্রশ্নটি সত্যিই ডিবি অ্যাক্সেসের জন্য ভাষা API এ নির্ভর করে।
গ্যাজেট

আমি ধরে নিতে পারি আমার একটি জেডিবিসি ডেটাসোর্স রয়েছে। যদি সংযোগ ব্যর্থ হয়, বা স্কেল বিবৃতিটি উত্পন্ন করে এবং ত্রুটি হয় তবে আমি অবশ্যই এটি ফাঁদে ফেলতে পারি এবং সেই অনুসারে এটি আচরণ করতে পারি।
modius

উত্তর:


286

এই এসকিউএল চালান:

select * from v$version;

এবং আপনি এর মতো ফলাফল পাবেন:

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

2
ওরাকল এর সমস্ত সংস্করণ আমি কখনও ব্যবহার করেছি। আমি ওরাকল 5.0 এবং এর আগে কথা বলতে পারি না!
টনি অ্যান্ড্রুজ

1
এই কৌশলটি আমার জন্য ওরাকল 11.2.0.2.0 এ ব্যর্থ হয়েছে, তবে আমার কিছু লগইন অনুমতি সমস্যা রয়েছে। Product_component_version থেকে নির্বাচন করুন *: যাইহোক, ঐ যে আমাকে একই নৌকা হতে পারে জন্য, দ্বিতীয় কৌশল এই পৃষ্ঠার লরেন্স কাজ করেনি দ্বারা উল্লেখ করা
sugardaddy

1
আপনার কাছে ভি ভিউ দেখার অনুমতি না থাকলে কাজ করে না। লরেন্সের উত্তরের এর জন্য একটি উত্তর রয়েছে
জাম্পিংজেজা

@ টনিঅ্যান্ড্রুজ: ভি $ সংস্করণ থেকে * নির্বাচন করার সময় আউটপুট কেমন হয়; ব্যর্থ?
আত্মেশ মিশ্র

@ আটমেশমিশ্রা: আমি নিশ্চিত নই - সম্ভবত ORA-00942: table or view does not exist? তুমি কি পেলে?
টনি অ্যান্ড্রুজ

46

দুটি পদ্ধতি:

select * from v$version;

তোমাকে দিবে:

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

বা আপনার ওরাকল ডেটাবেস সফ্টওয়্যার প্রকাশের শনাক্তকরণ :

select * from product_component_version;

তোমাকে দিবে:

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

দুর্দান্ত ... আমার কাছে প্রোডাক্ট_কোম্পোনেন্ট_ভারশন দরকার .. যেমন আমার ভি
ভিউতে

এই দ্বিতীয় ক্যোয়ারী স্বয়ংক্রিয় চেকিংয়ের জন্য অনেক বেশি উপযুক্ত, কারণ এটি অ্যাড-হক পার্সিংয়ের উপর নির্ভর করার পরিবর্তে কোনও ডেটা ফর্ম্যাটকে সংজ্ঞায়িত করে। পোস্ট করার জন্য ধন্যবাদ!
jpaugh

29
SQL> SELECT version FROM v$instance;
VERSION
-----------------
11.2.0.3.0

1
সেরা উত্তর যেহেতু এটি কেবলমাত্র সংস্করণ নম্বর দেয়, সুতরাং একটি স্বয়ংক্রিয় স্ক্রিপ্টে সংস্করণটি বের করার জন্য আউটপুট পার্স করার প্রয়োজন নেই।
সিডোকোড

@omeinush আমার সাথে পুরোপুরি কাজ করে (১১.২.০.৩)
কলস্পার

@tjati এটি সংস্করণের উপর নির্ভর করে না, তবে ব্যবহারকারীর অনুমতিগুলির উপর নির্ভরশীল বলে মনে হচ্ছে। V$INSTANCEদৃশ্যত বিশ্বব্যাপী ডিফল্টরূপে উপলব্ধ নয়।
jpmc26

7

আপনি হয় ব্যবহার করতে পারেন

SELECT * FROM v$version;

অথবা

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

আপনি যদি ভি $ সংস্করণের আউটপুট বিশ্লেষণ করতে না চান।


3

যদি আপনার দৃষ্টান্তটি বন্ধ থাকে তবে আপনি সতর্কতা.লগে সংস্করণ তথ্য সন্ধান করছেন

বা অন্য কোনও অশোধিত উপায় হ'ল ওরাকল বাইনারি অনুসন্ধান করা, যদি ডিবি লিনাক্সে হোস্ট করা হয় তবে ওরাকল বাইনারিতে স্ট্রিং চেষ্টা করুন।

strings -a $ORACLE_HOME/bin/oracle |grep RDBMS | grep RELEASE

1

ওরাকল ব্যবহারের জন্য:

Select * from v$version;

এসকিউএল সার্ভার ব্যবহারের জন্য:

Select @@VERSION as Version

এবং মাইএসকিউএল ব্যবহারের জন্য:

Show variables LIKE "%version%";

0

নিম্নলিখিত এসকিউএল বিবৃতি:

select edition,version from v$instance

আয়:

  • ডাটাবেস সংস্করণ যেমন। "XE"
  • ডাটাবেস সংস্করণ যেমন। "12.1.0.2.0"

(ভি-ইনস্ট্যান্স ভিউতে সুবিধাগুলি নির্বাচন করুন অবশ্যই প্রয়োজনীয়)


0

ওরাকল এর সংস্করণ নম্বর পেতে আমরা নীচের পদ্ধতিগুলি ব্যবহার করতে পারি।

পদ্ধতি নং: 1

set serveroutput on;
BEGIN 
DBMS_OUTPUT.PUT_LINE(DBMS_DB_VERSION.VERSION || '.' || DBMS_DB_VERSION.RELEASE); 
END;

পদ্ধতি নং: 2

SQL> select *
  2  from v$version;

-2

এখানে একটি সাধারণ ফাংশন:

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
/

সম্পন্ন.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.