Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> डेटाबेस

मल्टीटेनेंट डेटाबेस को अनप्लग करना और प्लग करना

यह ब्लॉग स्रोत कंटेनर डेटाबेस (सीडीबी) से एक प्लग करने योग्य डेटाबेस (पीडीबी) को अलग करने और इसे लक्ष्य सीडीबी से जोड़ने पर चर्चा करता है। इस ब्लॉग के प्रयोजनों के लिए, PDB वह डेटाबेस है जिसमें हम अपने सभी एप्लिकेशन-संबंधित डेटाबेस सहेजते हैं।

परिचय

एक CDB में विभिन्न अनुप्रयोगों से संबंधित शून्य या अधिक PDB डेटाबेस होते हैं और इसमें ठीक एक रूट कंटेनर होता है जो Oracle®-संबंधित मेटाडेटा और सामान्य उपयोगकर्ताओं को संग्रहीत करता है। रूट कंटेनर का नाम है CDB$ROOT . रूट कंटेनर में एक बीज PDB भी होता है, PDB$SEED . यह बीज पीडीबी एक प्रणाली द्वारा आपूर्ति किया गया टेम्पलेट है जिसका उपयोग सीडीबी नए पीडीबी बनाने के लिए कर सकता है। PDB वही डेटाबेस है जिसका उपयोग हम गैर-कंटेनर वातावरण में करते हैं। संस्करण 12c में, Oracle ने इस कंटेनर और PDB सुविधा को पेश किया, जो आपको अपनी व्यावसायिक आवश्यकताओं के आधार पर PDB जोड़ने में सक्षम बनाता है। उदाहरण के लिए, आप एक पीडीबी डेटाबेस बना सकते हैं जिसमें एक बिक्री आवेदन में बिक्री विभाग डेटा और एक मानव संसाधन आवेदन में मानव संसाधन (एचआर) विभाग डेटा शामिल है।

पीडीबी को अनप्लग करने का अर्थ है स्रोत सीडीबी से पीडीबी डेटाबेस को अलग करना और इसे लक्ष्य सीडीबी से जोड़ना।

इस ब्लॉग में, स्रोत सीडीबी, TEST12 , में दो PDB हैं, PDB1 और PDB2 . लक्ष्य सीडीबी, DEV12 , अनप्लग्ड पीडीबी प्राप्त करता है।

पीडीबी नमूना अनप्लग और प्लग करें

इस अनुभाग में, आप PDB1 . को अनप्लग करना सीखते हैं और PDB2 स्रोत सीडीबीTEST12 . से और उन्हें लक्ष्य सीडीबी में प्लग करें DEV12

परिवर्तन करने से पहले, स्रोत PDB MOUNTED हैं जैसा कि निम्नलिखित चित्र में दिखाया गया है:

मल्टीटेनेंट डेटाबेस को अनप्लग करना और प्लग करना

लक्ष्य CDB के साथ PDB संगतता की पुष्टि करें

प्लग ऑपरेशन शुरू करने से पहले, सुनिश्चित करें कि प्लग-इन करने के लिए पीडीबी नए होस्ट सीडीबी के साथ संगत है। यदि वे संगत नहीं हैं, तो निम्न PL/SQL ब्लॉक का निष्पादन एक त्रुटि उत्पन्न करता है:

. oraenv
[enter dev12 at the prompt]
sqlplus / as sysdba
set serveroutput on
DECLARE
   compatible BOOLEAN := FALSE;
BEGIN
   compatible := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
        pdb_descr_file => '/home/oracle/app/oradata/TEST12/pdb1/pdb1.xml ');
   if compatible then
      DBMS_OUTPUT.PUT_LINE('Is pluggable PDB1 compatible? YES');
   else DBMS_OUTPUT.PUT_LINE('Is pluggable PDB1 compatible? NO');
   end if;
END;
/

set serveroutput on
DECLARE
   compatible BOOLEAN := FALSE;
BEGIN
   compatible := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
        pdb_descr_file => '/home/oracle/app/oradata/pdb2/pdb2.xml');
   if compatible then
      DBMS_OUTPUT.PUT_LINE('Is pluggable PDB2 compatible? YES');
   else DBMS_OUTPUT.PUT_LINE('Is pluggable PDB2 compatible? NO');
   end if;
END;
/

पीडीबी बंद करें

PDB को बंद करें ताकि निम्नलिखित SQL*Plus® कथन चलाकर उन्हें अनप्लग किया जा सके:

. oraenv
[enter test12 at the prompt]
sqlplus / as sysdba
alter pluggable database pdb1 close immediate;
alter pluggable database pdb2 close immediate;

स्रोत पीडीबी माउंट अवस्था में होना चाहिए closed

पीडीबी को अनप्लग करें

PDB को बंद करने के बाद, एक XML मेनिफेस्ट फ़ाइल जनरेट करें। इस एक्सएमएल फ़ाइल में टेबल स्पेस के नामों और पूर्ण पथों के साथ-साथ अनप्लग्ड पीडीबी के लिए डेटा फ़ाइलों के बारे में जानकारी है।

बंद PDB को अनप्लग करें और फिर निम्न कमांड चलाकर XML फ़ाइल का पथ और नाम निर्दिष्ट करें:

alter pluggable database pdb1 unplug into '/home/oracle/app/oradata/TEST12/pdb1/pdb1.xml';
alter pluggable database pdb2 unplug into '/home/oracle/app/oradata/pdb2/pdb2.xml';

बंद PDB को छोड़ें और निम्न कमांड चलाकर डेटा फ़ाइलें रखें:

drop pluggable database pdb1 keep datafiles;
drop pluggable database pdb2 keep datafiles;

निम्न आदेश चलाकर अनप्लग्ड PDB की स्थिति सत्यापित करें:

select pdb_name, status from cdb_pdbs where pdb_name in ('PDB1', 'PDB2');
[you will see no rows]
exit

पीडीबी प्लग करें

आप PDB को COPY विधि, NOCOPY या CLONE MOVE विधि का उपयोग करके लक्ष्य CDB में प्लग कर सकते हैं।

कॉपी विधि से प्लग करें

PDB को प्लग करने के लिए COPY पद्धति का उपयोग करने के लिए, नई डेटा फ़ाइलों के लिए एक गंतव्य बनाएं और परिभाषित करें, अनप्लग्ड PDB को लक्ष्य CDB में प्लग करें, और फिर अनप्लग्ड PDB की डेटा फ़ाइलों को कॉपी करें।

निम्नलिखित कमांड चलाकर गंतव्य निर्देशिका बनाएं:

mkdir /home/oracle/app/oradata/DEV12/pdb1
sqlplus / as sysdba

पीडीबी को सीडीबी में प्लग करने के लिए अनप्लग्ड पीडीबी की डेटा फाइलों का उपयोग करें और निम्नलिखित कमांड चलाकर डेटा फाइलों को एक नए स्थान पर कॉपी करें:

create pluggable database pdb_plug_copy using '/home/oracle/app/oradata/TEST12/pdb1/pdb1.xml '
COPY
FILE_NAME_CONVERT=('/home/oracle/app/oradata/TEST12/pdb1','/home/oracle/app/oradata/DEV12/pdb1');

निम्नलिखित कमांड चलाकर प्लग किए गए PDB की स्थिति और ओपन मोड को सत्यापित करें:

select pdb_name, status from cdb_pdbs where pdb_name='PDB_PLUG_COPY';
select open_mode from v$pdbs where name='PDB_PLUG_COPY';
List the data files of the plugged PDB.
select name from v$datafile where con_id=3;
exit

इन कार्यों का परिणाम निम्न छवि में दिखाया गया है:

मल्टीटेनेंट डेटाबेस को अनप्लग करना और प्लग करना
NOCOPY विधि से प्लग करें

यह विधि बिना किसी प्रति बनाए या उपयोग किए पीडीबी को लक्ष्य सीडीबी में प्लग करने के लिए अनप्लग्ड पीडीबी की डेटा फाइलों का उपयोग करती है।

PDB को प्लग करने के लिए NOCOPY विधि का उपयोग करने के लिए, निम्नलिखित कमांड चलाएँ:

create pluggable database pdb_plug_nocopy using '/home/oracle/app/oradata/pdb2/pdb2.xml'
NOCOPY
TEMPFILE REUSE;

इस ऑपरेशन में कुछ सेकंड लगते हैं। अनप्लग्ड PDBnow की मूल डेटा फ़ाइलें नए होस्ट CDB में नए प्लग-इन PDB से संबंधित हैं। XML फ़ाइल में निर्दिष्ट अस्थायी फ़ाइल के समान नाम वाली फ़ाइल लक्ष्य स्थान में मौजूद है। इसलिए, TEMPFILE_REUSE खंड आवश्यक है।

निम्नलिखित कमांड चलाकर प्लग किए गए PDB की स्थिति और ओपन मोड को सत्यापित करें:

select pdb_name, status from cdb_pdbs where pdb_name='PDB_PLUG_NOCOPY';
select open_mode from v$pdbs where name='PDB_PLUG_NOCOPY';

इन कार्यों के परिणाम निम्न छवि में दिखाए गए हैं:

मल्टीटेनेंट डेटाबेस को अनप्लग करना और प्लग करना

प्लग किए गए PDB की डेटा फ़ाइलों को निम्न कमांड चलाकर सूचीबद्ध करें:

select name from v$datafile where con_id=3;
select name from v$datafile where con_id=4;
exit
क्लोन मूव विधि से प्लग करें

PDB को प्लग करने के लिए CLONE MOVE विधि का उपयोग करने के लिए, नई डेटा फ़ाइलों के लिए एक गंतव्य बनाएं और परिभाषित करें, PDB को लक्ष्य CDB में प्लग करने के लिए अनप्लग्ड PDB की डेटा फ़ाइलों का उपयोग करें, और फिर डेटा फ़ाइलों को किसी अन्य स्थान पर ले जाएँ।

निम्नलिखित कमांड चलाकर गंतव्य निर्देशिका बनाएं:

mkdir /home/oracle/app/oradata/DEV12/clone
sqlplus / as sysdba

PDB को CDB में प्लग करें और निम्न कमांड चलाकर डेटा फ़ाइलों को एक नए स्थान पर ले जाएँ:

create pluggable database pdb_plug_move using '/home/oracle/app/oradata/TEST12/pdb1/pdb1.xml '
MOVE
FILE_NAME_CONVERT=('/home/oracle/app/oradata/TEST12/pdb1','/home/oracle/app/oradata/DEV12/clone ');

एक त्रुटि संदेश प्रदर्शित होता है क्योंकि वैश्विक विशिष्ट पहचानकर्ता (GUID) अद्वितीय नहीं है। PDB1 पहले से ही COPY पद्धति का उपयोग करके प्लग किया गया था, जिसके कारण GUID के साथ यह विरोध हुआ जैसा कि निम्न चित्र में दिखाया गया है:

मल्टीटेनेंट डेटाबेस को अनप्लग करना और प्लग करना

इसे संबोधित करने के लिए, निम्न कोड को AS CLONE . के साथ चलाएँ खंड:

create pluggable database pdb_plug_move
AS CLONE using '/home/oracle/app/oradata/TEST12/pdb1/pdb1.xml '
MOVE
FILE_NAME_CONVERT=('/home/oracle/app/oradata/TEST12/pdb1','/home/oracle/app/oradata/DEV12/clone');

निम्नलिखित कमांड चलाकर प्लग किए गए PDB की स्थिति और ओपन मोड को सत्यापित करें:

select pdb_name, status from cdb_pdbs where pdb_name='PDB_PLUG_MOVE';
select open_mode from v$pdbs where name='PDB_PLUG_MOVE';

प्लग किए गए PDB की डेटा फ़ाइलों को निम्न कमांड चलाकर सूचीबद्ध करें:

select name from v$datafile where con_id=5;

इन कार्यों के परिणाम निम्न छवि में दिखाए गए हैं:

मल्टीटेनेंट डेटाबेस को अनप्लग करना और प्लग करना

प्लग किए गए PDB को खोलें

पीडीबी खोलने और प्लग ऑपरेशन को अंतिम रूप देने के लिए, निम्नलिखित कमांड चलाएँ:

alter pluggable database pdb_plug_nocopy open;
alter pluggable database pdb_plug_copy open;
alter pluggable database pdb_plug_move open;

प्लग-इन PDB से कनेक्ट करें और निम्न कमांड चलाकर कंटेनर नाम सत्यापित करें जिससे आप कनेक्टेड हैं:

connect sys/*****@localhost:1521/pdb_plug_nocopy AS SYSDBA
show con_name
connect sys/******@localhost:1521/pdb_plug_copy AS SYSDBA
show con_name
connect sys/******@localhost:1521/pdb_plug_move AS SYSDBA
show con_name
exit

पीडीबी को स्रोत सीडीबी पर वापस ले जाएं

निम्नलिखित कमांड चलाकर सभी प्लग करने योग्य डेटाबेस बंद करें:

. oraenv
[enter dev12 at the prompt]
sqlplus / as sysdba
alter pluggable database all close immediate;

pdb_plug_copy को अनप्लग करें डेटाबेस ताकि आप इसका उपयोग pdb1 . को फिर से बनाने के लिए कर सकें निम्न आदेश चलाकर डेटाबेस:

alter pluggable database pdb_plug_copy unplug into '/home/oracle/app/oradata /pdb_plug_copy.xml';

pdb_plug_copy ड्रॉप करें निम्न आदेश चलाकर डेटाबेस:

 drop pluggable database pdb_plug_copy;

pdb_plug_nocopy को अनप्लग और ड्रॉप करें डेटाबेस ताकि आप इसका उपयोग करके pdb2 . बना सकें निम्नलिखित कमांड चलाकर डेटाबेस:

alter pluggable database pdb_plug_nocopy unplug into '/home/oracle/app/oradata /pdb_plug_nocopy.xml';
drop pluggable database pdb_plug_nocopy keep datafiles;

pdb_plug_move ड्रॉप करें निम्न आदेश चलाकर डेटाबेस:

drop pluggable database pdb_plug_move;

pdb1 प्लग करें डेटाबेस वापस TEST12 . में निम्नलिखित कमांड चलाकर सीडीबी:

connect sys/*****@localhost:1521/test12 as sysdba
create pluggable database pdb1 AS CLONE using '/u01/app/oracle/oradata/pdb_plug_copy.xml'
MOVE
FILE_NAME_CONVERT=(' /home/oracle/app/oradata/DEV12/pdb1',' /home/oracle/app/oradata/TEST12/pdb1');

pdb2 प्लग करें डेटाबेस वापस TEST12 . में निम्नलिखित कमांड चलाकर सीडीबी:

create pluggable database pdb2 using '/u01/app/oracle/oradata/pdb_plug_nocopy.xml' nocopy tempfile reuse;

pdb1खोलें और pdb2 निम्नलिखित कमांड चलाकर:

alter pluggable database pdb2 open;
alter pluggable database pdb1 open;
exit

निष्कर्ष

पीडीबी को अनप्लग करना और प्लग करना सर्वरों के बीच फाइलों के हस्तांतरण को आसान बना सकता है और मानवीय त्रुटि की संभावना को कम कर सकता है। उदाहरण के लिए, आप सभी पीडीबी डेटाबेस के लिए पैचिन वन शॉट लागू कर सकते हैं, जबकि गैर-कंटेनर वातावरण में आपको सभी डेटाबेस में अलग से पैच लगाने की आवश्यकता होती है। एक कंटेनर और पीडीबी वातावरण में बैकअप और अन्य रखरखाव कार्य बहुत आसान हैं। सर्वर के बीच परिवहन के लिए एक फ़ाइल रखना आसान है क्योंकि आप गलती से एक या अधिक फ़ाइलों को स्थानांतरित करना नहीं भूल सकते।

उम्मीद है, इस ब्लॉग ने आपको संस्करण 12c PDB और गैर-कंटेनर डेटाबेस पर CDB लाभों के बारे में बेहतर जानकारी दी है।

कोई टिप्पणी करने या प्रश्न पूछने के लिए प्रतिक्रिया टैब का उपयोग करें।

हमारी डेटाबेस सेवाओं के बारे में अधिक जानें।


  1. PostgreSQL और CockroachDB के बीच चयन कैसे करें

    मूल रूप से 15 अगस्त, 2019 को ObjectRocket.com/blog पर प्रकाशित किया गया जब संबंधपरक कार्यभार की बात आती है तो कॉकरोचडीबी® और पोस्टग्रेएसक्यूएल® ने बाजार में एक जगह मजबूत कर ली है, कई लोगों ने पूछना शुरू कर दिया है कि उन्हें किसे चुनना चाहिए। कॉकरोचडीबी वितरित लेनदेन के साथ वास्तविक वैश्विक स्तर का

  1. डेटाबेस-ए-ए-सर्विस के पेशेवरों और विपक्ष

    मूल रूप से 7 दिसंबर, 2017 को ObjectRocket.com/blog पर प्रकाशित कई कंपनियां यह तय करने में हिचकिचाती हैं कि कुछ कार्यों को आउटसोर्स करना है या उन्हें इन-हाउस करना है। डेटाबेस-ए-ए-सर्विस (DBaaS) को ध्यान में रखते हुए उन स्थितियों में से एक है जब आपको यह तय करने में परेशानी हो सकती है कि क्या करना है

  1. Oracle SQL प्रोफ़ाइल और आधार रेखा

    यह पोस्ट Oracle® में SQL प्रोफ़ाइल और बेसलाइन के बीच अंतर को हाइलाइट करती है और बताती है कि क्वेरी को ट्यून करते समय यह कैसे काम करता है। अनुकूलक, प्रोफ़ाइल और आधार रेखा उच्च स्तर पर, ये तीन तत्व एक साथ निम्न प्रकार से कार्य करते हैं: क्वेरी ऑप्टिमाइज़र क्वेरी निष्पादन के लिए सर्वोत्तम योजना प्र