क्या मैं Oracle डेटाबेस का SID बदल सकता हूँ?


18

सर्वर Oracle डाटाबेस 11g एंटरप्राइज एडिशन रिलीज़ 11.1.0.7.0 - 64 बिट है

क्या सर्वर पर परीक्षण डेटाबेस के SID को बदलने का एक आसान और त्वरित तरीका है?

डेटाबेस को छोड़ना और पुनः बनाना मेरे लिए एक विकल्प है। लेकिन मैं कम समय की आवश्यकता के लिए कुछ देख रहा हूँ।

क्लाइंट tnsnames.ora में नाम निर्दिष्ट करने का दूसरा विकल्प त्रुटियों से ग्रस्त है, क्योंकि वे केंद्र रूप से प्रशासित नहीं हैं।

SQL- सर्वर पर एक डेटाबेस को छोड़ने और बनाने के लिए समय के साथ तुलना में, एक नया Oracle डेटाबेस बनाने के लिए आवश्यक समय की मात्रा अत्यधिक अधिक है। SQL- सर्वर पर आगे आप SQL- सर्वर इंस्टेंसेस का नाम बदल सकते हैं। [आमतौर पर आप उस सर्वर का नाम बदल देते हैं जहाँ SQL- सर्वर चल रहा होता है और कुछ समस्याएँ होती हैं जब तक कि आप सर्वर का नाम नहीं बदल देते]।


आप उल्लेख करते हैं कि आप डेटाबेस को गिरा सकते हैं और फिर से बना सकते हैं। क्या आपके पास उत्पादन डेटाबेस तक पहुंच है और यह बैकअप है? आप डेटाबेस को फिर से बनाने और उसी समय SID को बदलने के लिए RMAN और डुप्लिकेट कमांड का उपयोग कर सकते हैं।
Sumnibot

नहीं, मैं विकास और कुछ परीक्षण ओरेकल डेटाबेस के लिए डीबीए के रूप में काम करता हूं।
bernd_k

2
जब आप SQL सर्वर में डेटाबेस का उपयोग करेंगे तो आप आमतौर पर Oracle में एक स्कीमा (= उपयोगकर्ता) का उपयोग करेंगे। समान नाम का मतलब उन दो दुनियाओं में समान नहीं है
a_horse_with_no_name

जवाबों:


13

चूंकि 9i dbnewid उपयोगिता (nid) का उपयोग डेटाबेस नाम (और यदि आवश्यक हो तो DBID) को बदलने के लिए किया जा सकता है। यदि डेटाबेस का नाम केवल बदला जा रहा है, तो रीसेट करना आवश्यक नहीं है:

  • माउंट मोड में 1 स्टार्टअप डेटाबेस

    shutdown immediate
    startup mount
  • डेटाबेस नाम बदलने के लिए 2 रन एनआईडी:

    nid target=sys/syspassword@dbtns dbname=newname setname=YES
  • माउंट मोड में 3 शटडाउन और प्रारंभ डेटाबेस:

    shutdown immediate
    startup mount
  • 4 db_nameफुफ्फुस में परिवर्तन (या फ़ाइल को संपादित करने में pfile):

    alter system set db_name=newname scope=spfile;
  • 5 पासवर्ड फ़ाइल को फिर से बनाएँ:

    orapwd file=orapwnewname password=syspassword
  • 6 डेटाबेस डेटाबेस स्टार्टअप

    startup
  • 7 पोस्ट नाम बदलें कदम:

    change SID in listener.ora
    correct tnsnames.ora
    remove old trace directories
    change /etc/oratab (UNIX) or rename windows service using oradim

1
मैंने एक विंडोज सर्वर पर इस तरह से 4 ऑरेकल डेटाबेस का नाम बदला। Dbnewid उपयोगिता की खोज करने पर मुझे oracle-base.com/articles/9i/DBNEWID.php मिला , जिसने कुछ अतिरिक्त स्पष्टीकरण दिए।
bernd_k

1
यह एक अच्छा जवाब है जब सवाल था: एक डेटाबेस का नाम कैसे बदलें। सवाल यह है: एक एसआईडी को कैसे बदलना है।
ik_zelf

17

आपको नियंत्रण फ़ाइल को फिर से बनाने की आवश्यकता है

कौनन अहमद की यह पोस्ट आवश्यक कदम बताती है:

  1. do: ट्रेस करने के लिए डेटाबेस बैकअप कंट्रोलफाइल में परिवर्तन;
  2. पृष्ठभूमि-डंप-गंतव्य ट्रेसफाइल से "कंट्रोल कंट्रोलाइल बनाएं" कमांड निकालें।
  3. शटडाउन DB।
  4. अपने init.ora में DB-Name को बदलें और init.ora को बदलें
  5. SID को / etc / oratab या / var / opt / oracle / oratab में बदलें
  6. अपने वातावरण में SID बदलें और इसे स्रोत करें
  7. स्टार्टअप को माउंट-स्टेट करने के लिए डेटाबेस को स्टार्टअप करें
  8. स्थिति 2 से कथन के साथ नियंत्रणफल पुन: बनाएँ।
  9. एक परिवर्तन डेटाबेस का नाम बदलकर Global_name बदलकर 10.CNS-TNS- विन्यास के अनुसार $ ORACLE_HOME / नेटवर्क / व्यवस्थापक / * बदलें। SID और GLOBAL_NAME के ​​लिए ora देखें

थ्रेड में संदर्भित अन्य उपकरण हैं।

यहां AskTom द्वारा एक पोस्ट है जो प्रक्रिया को अधिक विस्तार से संदर्भित करता है। जबकि यह 10g के लिए है, यह अभी भी काम करना चाहिए।


5
विंडोज उपयोगकर्ताओं के लिए, आपको नई सेवा सेटअप करने के लिए "oradim" उपयोगिता का उपयोग करने की आवश्यकता होगी।
REW

9

हां, आप कर सकते हैं और यह काफी आसान भी है।

ओरेकल में, ORACLE_SID ओरेकल इंस्टेंस का केवल नाम है और DBNAME के ​​साथ बहुत अधिक नहीं है। PROD नाम का एक डेटाबेस, किसी भी मान्य नाम के साथ इंस्टेंस का उपयोग करके परोसा जा सकता है। SID और DBNAME के ​​बीच कोई सीधा संबंध नहीं है। यह कनेक्शन मापदंडों का उपयोग करके बनाया गया है।

पैरामीटर फ़ाइल को init $ {ORACLE_SID} .ora या spfile $ {ORACLE_SID} के रूप में पहचाना जाता है। पैरामीटर फ़ाइल में पैरामीटर db_name पैरामीटर है। यह वह जगह है जहां ओरेकल इंस्टेंस और डेटाबेस के बीच संबंध बनाया गया है।

इसलिए, आपको एक कंट्रोलफाइल बनाने की आवश्यकता नहीं है, आपको nid का उपयोग करने की आवश्यकता नहीं है, बस यह सुनिश्चित करें कि आपके पैरामीटरफाइल का सही नाम है, पुराने Oracle इंस्टेंस को नीचे लाएं और ORACLE_ID सेट होने के बाद नया Oracle इंस्टेंस प्रारंभ करें नए Oracle इंस्टेंस नाम के लिए। पैरामीटरफाइल और पासवर्ड फ़ाइल दोनों उनके नाम के हिस्से के रूप में $ {ORACLE_SID} का उपयोग करते हुए पाए जाते हैं।

कंट्रोलबाइल को फिर से बनाने की जरूरत तभी पड़ती है जब DBNAME को बदलना होता है। क्लोन ऑपरेशन के बाद एनआईडी की आवश्यकता होती है जहां आपको स्रोत डेटाबेस के बैकअप को नुकसान पहुंचा सकने वाली दुर्घटनाओं को रोकने के लिए DBID को बदलना होगा।


+1 लेकिन मैं अभी भी अनिश्चित हूं कि क्या मैं DB_NAME को भी बदलना चाहता हूं।
bernd_k

यदि आप चाहते हैं: निश्चित रूप से, आप कर सकते हैं, अन्य उत्तर सही तरीके से समझाया गया है कि यह कैसे करना है। किस कारण से करोगे? Db_name बहुत भौतिक है। Db_name जानना एक dba के लिए अच्छा है, लेकिन अधिकांश अन्य लोगों के लिए यह अप्रासंगिक है। एक सामान्य समेकित दृष्टिकोण में आपके पास कई सेवाओं की सेवा करने वाला डेटाबेस है। एक सेवा - एप्लिकेशन - को इस बात की परवाह करने की कोई आवश्यकता नहीं है कि यह किस डेटाबेस में चल रहा है।
ik_zelf २१
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.