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

मल्टीटेनेंट डेटाबेस को निर्बाध रूप से अनप्लग और रीप्लग करना: एक व्यावहारिक गाइड

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

परिचय

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

एक PDB को अनप्लग करने का अर्थ है एक PDB डेटाबेस को सोर्स CDB से अलग करना और इसे टार्गेट CDB से जोड़ना।

इस ब्लॉग में, सोर्स CDB, TEST12, में दो PDB, PDB1 और PDB2 हैं। टार्गेट CDB, DEV12, अनप्लग किए गए PDB को प्राप्त करता है।

अनप्लग और प्लग PDB नमूना

इस अनुभाग में, आप सीखते हैं कि सोर्स CDB TEST12 से PDB1 और PDB2 को कैसे अनप्लग करें और उन्हें टार्गेट CDB DEV12 में प्लग करें।

परिवर्तन करने से पहले, सोर्स PDB निम्नलिखित छवि में दिखाए अनुसार MOUNTED हैं:

मल्टीटेनेंट डेटाबेस को निर्बाध रूप से अनप्लग और रीप्लग करना: एक व्यावहारिक गाइड

टार्गेट CDB के साथ PDB संगतता मान्य करें

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

. oraenv [प्रॉम्प्ट पर dev12 दर्ज करें]
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('क्या प्लगेबल PDB1 संगत है? हाँ');
  else
    DBMS_OUTPUT.PUT_LINE('क्या प्लगेबल PDB1 संगत है? नहीं');
  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('क्या प्लगेबल PDB2 संगत है? हाँ');
  else
    DBMS_OUTPUT.PUT_LINE('क्या प्लगेबल PDB2 संगत है? नहीं');
  end if;
END;
/

PDB बंद करें

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

. oraenv [प्रॉम्प्ट पर test12 दर्ज करें]
sqlplus / as sysdba
alter pluggable database pdb1 close immediate;
alter pluggable database pdb2 close immediate;

सोर्स PDB माउंट स्थिति closed में होना चाहिए।

PDB को अनप्लग करें

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

बंद 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');
[आपको कोई पंक्ति दिखाई नहीं देगी]
exit

PDB को प्लग करें

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

COPY विधि के साथ प्लग करें

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

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

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

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

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';
प्लग किए गए PDB की डेटा फाइलों को सूचीबद्ध करें।
select name from v$datafile where con_id=3;
exit

इन ऑपरेशंस का परिणाम निम्नलिखित छवि में दिखाया गया है:

मल्टीटेनेंट डेटाबेस को निर्बाध रूप से अनप्लग और रीप्लग करना: एक व्यावहारिक गाइड

NOCOPY विधि के साथ प्लग करें

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

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

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

यह ऑपरेशन कुछ सेकंड लेता है। अनप्लग किए गए PDB की मूल डेटा फाइलें अब नए होस्ट 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

CLONE MOVE विधि के साथ प्लग करें

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

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

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 खोलें

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

PDB को वापस सोर्स CDB में ले जाएं

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

. oraenv [प्रॉम्प्ट पर dev12 दर्ज करें]
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 CDB में प्लग करें निम्नलिखित कमांड चलाकर:

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 CDB में प्लग करें निम्नलिखित कमांड चलाकर:

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

निष्कर्ष

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

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

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

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

  1. PostgreSQL और CockroachDB के बीच चयन: एक व्यावहारिक गाइड PostgreSQL और CockroachDB के बीच चयन: एक व्यावहारिक गाइड

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

  1. Database-as-a-Service: पेशेवरों और विपक्षों का वजन Database-as-a-Service: पेशेवरों और विपक्षों का वजन

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

  1. Oracle SQL प्रोफाइल और बेसलाइन में महारत: क्वेरी प्रदर्शन बढ़ाएं Oracle SQL प्रोफाइल और बेसलाइन में महारत: क्वेरी प्रदर्शन बढ़ाएं

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