ওরাকলের জন্য পরিষেবার নাম পরিবর্তন করা যায় না


9

আমি একটি উইন্ডোজ 2003 সার্ভারে একটি ওরাকল 11.2.0.3 ইনস্টলেশনের পরিষেবার নামটি পরিবর্তন করার চেষ্টা করছি।

ইনস্টলেশন চলাকালীন পরিষেবাটির নামটি ডিফল্ট ডোমেন দিয়ে সংজ্ঞায়িত করা হত তবে আমরা এ থেকে মুক্তি পেতে চাই।

দেখি এ পর্যন্ত কাজ করেছেন (এবং আগে কি কাজ করেছে) পরিষেবা নাম পরিবর্তন করতে mydb.foo.barকরতে mydbশুধুমাত্র:

alter system set service_names = 'mydb' scope = both;
alter database rename global_name to mydb;

যা কাজ করেছে বলে মনে হয়:

এসকিউএল> প্যারামিটারের নাম প্রদর্শন করুন

নাম টাইপ মান
------------------------------------ ----------- --- ---------------------------
db_name স্ট্রিং mydb
ডিবি_উনিক_নাম স্ট্রিং মাইডিবি
গ্লোবাল_নাম বুলিয়ান মিথ্যা
উদাহরণ_নাম স্ট্রিং মাইডিবি
পরিষেবা_নাম স্ট্রিং মাইডিবি b
এসকিউএল>

(আমি উপরের আউটপুট থেকে কিছু সম্পত্তি সরিয়েছি যা প্রাসঙ্গিক নয়)

তারপরে alter system registerশ্রোতাদের সাথে পুনরায় নিবন্ধকরণ করতে ব্যবহার করুন ।

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

বর্তমান পরিস্থিতি নিম্নরূপ:

select name from v$active_services আয়:

SERVICE_ID | নাম | আন্তঃজাল নাম       
----------- + + ----------------- + + --------------------
1 | এসওয়াইএস $ ব্যাকগ্রাউন্ড |                    
2 | এসওয়াইএস $ ব্যবহারকারী |                    
3 | mydb | mydb           
5 | mydbXDB | mydbXDB        
6 | mydb.foo.bar | mydb.foo.bar

সুতরাং কোনও কারণে পুরাতন পরিষেবার নামটি এখনও আছে এবং চলছে।

পরিষেবাটি ব্যবহার করে থামানোর চেষ্টা করার সময়

এসকিউএল> exec dbms_service.stop_service ('mydb.foo.bar');
পিএল / এসকিউএল প্রক্রিয়া সফলভাবে সম্পন্ন হয়েছে।

কোনও ত্রুটির খবর পাওয়া যায়নি, তবে পরিষেবাটি মোছার চেষ্টা করার সময়, ওরাকল আমাকে ছাড়তে দেবে না:

এসকিউএল> exec dbms_service.delete_service ('mydb.foo.bar');
BEGIN dbms_service.delete_service ('mydb.foo.bar'); শেষ;

*
লাইন 1 এ ত্রুটি
ORA-44305: পরিষেবা mydb.foo.bar চলছে
ORA-06512: "SYS.DBMS_SYS_ERROR" এ, লাইন 86
ORA-06512: "SYS.DBMS_SERVICE", 454 নম্বরে
ORA-06512: "SYS.DBMS_SERVICE" এ, লাইন 343
ORA-06512: লাইন 1 এ

আমি যাচাই করেছি যে পরিষেবাটি ব্যবহার করে আমার কোনও মুক্ত সংযোগ নেই:

select count(*)
FROM v$session
where service_name = 'mydb.foo.bar';

ফিরে 0(শূন্য)

আমি ওড়াদিম ব্যবহার করে উইন্ডোজ পরিষেবাটি আবারও তৈরি করেছিলাম, তবে কোনও ফলসই হয়নি।

একপর্যায়ে দৌড়ে গেলাম

alter system set service_names = 'mydb,mydb.foo.bar' scope = both;

আমার এখন দুজনেরই কারণ হতে পারে?

তবে কেবলমাত্র একটি নামেই পরিষেবা_নাম পরিবর্তন করার পরে, দ্বিতীয়টিরটি চলে যাওয়া উচিত ছিল, তাই না?

যদি আমি দ্বিতীয় পরিষেবাটি যেতে না পারি তবে দীর্ঘক্ষণের চেয়ে শর্ট সার্ভিসের নাম ব্যবহার করে শ্রোতার সাথে উদাহরণটি নিবন্ধন করা যথেষ্ট হবে।

আমি নিশ্চিত যে আমি বেশ সুস্পষ্ট কিছু মিস করছি, তবে এটি কী তা বুঝতে পারি না।

উত্তর:


5

আমি নিশ্চিত যে আমি বেশ সুস্পষ্ট কিছু মিস করছি, তবে এটি কী তা বুঝতে পারি না।

হ্যাঁ এটি খুব স্পষ্ট কিছু ছিল ...

প্যারামিটারটি DB_DOMAINএখনও রয়েছে foo.barএবং তাই উদাহরণটি ব্যবহার করে নিজেই নিবন্ধিত হয়েছে mydb.foo.bar

করার পরে ক

alter system set db_domain='' scope=spfile; 

এবং ডেটাবেস বাউন্সিং এখন প্রত্যাশার মতো কাজ করছে।

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