জাভা জেডিবিসি - এসআইডি-র পরিবর্তে পরিষেবার নাম ব্যবহার করে ওরাকলে কীভাবে সংযুক্ত হবে


250

আমার কাছে একটি জাভা অ্যাপ্লিকেশন রয়েছে যা জেডিবিসি ব্যবহার করে (জেপিএ হয়ে) যা হোস্ট-নেম, পোর্ট এবং ওরাকল এসআইডি ব্যবহার করে কোনও ডেভেলপমেন্ট ডাটাবেসে সংযুক্ত ছিল:

JDBC: ওরাকল: পাতলা: @ oracle.hostserver1.mydomain.ca: 1521: XYZ

এক্সওয়াইজেড ছিল ওরাকল এসআইডি। এখন আমাকে একটি ভিন্ন ওরাকল ডাটাবেসের সাথে সংযোগ স্থাপন করতে হবে যা কোনও এসআইডি ব্যবহার করে না, তবে পরিবর্তে একটি ওরাকল "পরিষেবা নাম" ব্যবহার করে।

আমি এটি চেষ্টা করেছিলাম কিন্তু এটি কার্যকর হয় না:

JDBC: ওরাকল: পাতলা: @ oracle.hostserver2.mydomain.ca: 1522: ABCD

এবিসিডি হ'ল অন্যান্য ডাটাবেসের পরিষেবার নাম।

আমি কি ভুল করছি?

উত্তর:


426

http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA

পাতলা স্টাইলের পরিষেবার নাম সিনট্যাক্স

পাতলা স্টাইলের পরিষেবার নামগুলি কেবল জেডিবিসি থিন ড্রাইভার দ্বারা সমর্থিত। বাক্য গঠনটি হ'ল:

@ // HOST_NAME: port_number / SERVICE_NAME

উদাহরণ স্বরূপ:

JDBC: ওরাকল: পাতলা: স্কট / বাঘ @ // myhost: 1521 / myservicename

সুতরাং আমি চেষ্টা করব:

JDBC: ওরাকল: পাতলা: @ // oracle.hostserver2.mydomain.ca:1522/ABCD

এছাড়াও, রবার্ট গ্রেটহাউসের উত্তর অনুসারে, আপনি নীচের মত জেডিবিসি ইউআরএল এ টিএনএস নামটি নির্দিষ্ট করতে পারেন:

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))

উত্তর পূর্ণতা অর্জনের জন্য আপনি @ রবার্ট গ্রেটহাউস থেকে উত্তর প্রতি টিএনএসএনএমএস ফর্ম্যাট সম্পর্কে পয়েন্টটি অন্তর্ভুক্ত করতে পারেন?
আলিস্টার লি

আমার জন্য এটি @ এর সাথে কাজ করে না, আমাকে জেডিবিসি: ওরাকল: পাতলা: // মাইহোস্ট: 1521 / মাইসারসিসেনাম ব্যবহার করতে হয়েছিল, তবে আমি ব্যবহারকারীর শংসাপত্রও সরবরাহ করিনি
ড্যানিয়েল

আমি গুগল অ্যাপ স্ক্রিপ্টে জেডিবিসি পাতলা ড্রাইভার ব্যবহার করে কীভাবে ওরাকলটির সাথে সংযোগ স্থাপন করব তা জানার চেষ্টা করেছি এবং সফলতা ছাড়াই বেশ কয়েকটি সিনট্যাক্স চেষ্টা করেছি। jdbc:oracle:thin:USER/PWD@//my.ip.address:1521/SERVICENAMEবা jdbc:oracle:thin:@//my.ip.address.1521/SERVICENAME, ব্যবহারকারীর নাম এবং পাসওয়ার্ড যুক্তি হিসাবে jdbc.getConnection()। এখনও অবাক।
বেঞ্জামিন

92

সুতরাং এই কাজটি করার দুটি সহজ উপায় আছে। বার্ট এফ দ্বারা পোস্ট করা সমাধানটি কার্যকর কাজ করে যদি আপনার অন্য কোনও বিশেষ ওরাকল-নির্দিষ্ট সংযোগের বৈশিষ্ট্য সরবরাহ করার প্রয়োজন না হয়। এর জন্য ফর্ম্যাটটি হ'ল:

jdbc:oracle:thin:@//HOSTNAME:PORT/SERVICENAME

তবে, যদি আপনাকে অন্যান্য ওরাকল-নির্দিষ্ট সংযোগের বৈশিষ্ট্য সরবরাহ করতে হয় তবে আপনাকে দীর্ঘ TNSNAMES শৈলী ব্যবহার করতে হবে। ওরাকল ভাগ করা সংযোগগুলি (যেখানে সার্ভারটির নিজস্ব সংযোগ পুলিং রয়েছে) সক্ষম করতে আমাকে সম্প্রতি এটি করতে হয়েছিল। টিএনএস ফর্ম্যাটটি হ'ল:

jdbc:oracle:thin:@(description=(address=(host=HOSTNAME)(protocol=tcp)(port=PORT))(connect_data=(service_name=SERVICENAME)(server=SHARED)))

যদি আপনি ওরাকল টিএনএসএনএস ফাইল ফর্ম্যাটটির সাথে পরিচিত হন তবে এটি আপনার পরিচিত হওয়া উচিত। যদি না হয় তবে বিশদটির জন্য এটি কেবল গুগল।


24

আপনি নীচের মত জেডিবিসি ইউআরএল এ টিএনএস নাম নির্দিষ্ট করতে পারেন

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))

17

এটা চেষ্টা কর: jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD

সম্পাদনা করুন: এর নীচে প্রতিটি মন্তব্য যথাযথভাবে সঠিক: jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD(নোটটি নোট করুন// )

এখানে একটি সহায়ক নিবন্ধের লিঙ্ক


3
এটি আমার পক্ষে কাজ করে না, আমাকে ব্যবহার করতে হয়েছিল jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
WynandB

তাহলে এখানে আইপি ব্যবহার করা যাবে oracle.hostserver2.mydomain.ca?
বেনিয়ামিন

8

এই আলোচনাটি যে সমস্যার সাথে আমি বেশ কয়েকদিন ধরে লড়াই করেছিলাম তা সমাধান করতে সহায়তা করেছে। আমি 18 ই মে 11 'এ 15: 17-এ জিম টুফের উত্তর খুঁজে না পাওয়া পর্যন্ত আমি পুরো ইন্টারনেটে ঘুরে দেখলাম। এই উত্তর দিয়ে আমি সংযোগ করতে সক্ষম হয়েছি। এখন আমি ফিরিয়ে দিতে এবং সম্পূর্ণ উদাহরণ দিয়ে অন্যকে সহায়তা করতে চাই। এখানে যায়:

import java.sql.*; 

public class MyDBConnect {

    public static void main(String[] args) throws SQLException {

        try { 
            String dbURL = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=whatEverYourHostNameIs)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=yourServiceName)))";
            String strUserID = "yourUserId";
            String strPassword = "yourPassword";
            Connection myConnection=DriverManager.getConnection(dbURL,strUserID,strPassword);

            Statement sqlStatement = myConnection.createStatement();
            String readRecordSQL = "select * from sa_work_order where WORK_ORDER_NO = '1503090' ";  
            ResultSet myResultSet = sqlStatement.executeQuery(readRecordSQL);
            while (myResultSet.next()) {
                System.out.println("Record values: " + myResultSet.getString("WORK_ORDER_NO"));
            }
            myResultSet.close();
            myConnection.close();

        } catch (Exception e) {
            System.out.println(e);
        }       
    }
}

1

আপনি যদি এসআইডি ছাড়াই ওরাকলটি সংযোগ করতে গ্রহণ করেন cl সেখানে দুটি চালক নির্বাচন করতে হবে, যেমন ওরাকল পাতলা ড্রাইভার এবং অন্যটি অন্য ড্রাইভার। অন্যান্য ড্রাইভার নির্বাচন করুন এবং ডাটাবেস কলামে পরিষেবার নাম লিখুন। এখন আপনি এসআইডি ছাড়াই পরিষেবার নাম ব্যবহার করে সরাসরি সংযোগ করতে পারেন।


আরও গুরুত্বপূর্ণ বিষয় এটি আপনার পাতলা ড্রাইভারের বিপরীতে সংযোগের URL সম্পূর্ণরূপে নির্দিষ্ট করতে দেয়। মজার বিষয় হ'ল, এটি চালুর জন্য আপনাকে এখনও পাতলা ড্রাইভারের ইউআরএল ব্যবহার করতে হবে (পাতলা স্টাইল পরিষেবার নামগুলি কেবল জেডিবিসি পাতলা ড্রাইভার দ্বারা সমর্থিত)। এখানে প্রচুর উদাহরণ পোস্ট করা হয়েছে।
এডি বাইস

0

dagপরিবর্তে ব্যবহার করার সময় thin, পরিষেবার নামটি নির্দেশ করে নীচের বাক্য গঠন আমার জন্য কাজ করে। jdbc:thinসমাধান উপরে কাজ করে নি।

jdbc:dag:oracle://HOSTNAME:1521;ServiceName=SERVICE_NAME

1
দয়া করে আপনার উত্তরে আরও কিছু তথ্য যুক্ত করার বিষয়ে বিবেচনা করুন যা কী কাজ করেছে / কী করে না সে সম্পর্কে আরও কিছু বর্ণনা করে - আপনি কী দেখেন বা জানেন যে কেন এটি কাজ করে?
এজেডি

1
মূল্যবান লক্ষ্য করা যায় - আপনি একটি নির্দিষ্ট ড্রাইভার ব্যবহার করছেন। ওরাকল এর পাতলা চালক আয় ব্যবহার করতে চেষ্টা করা হচ্ছে: Dag: ওরাকল: কোন উপযুক্ত ড্রাইভারের জন্য JDBC পাওয়া //
access_granted

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