কম্পিউটার

মাল্টিটেন্যান্ট ডাটাবেস আনপ্লাগ করা এবং প্লাগ করা

এই ব্লগটি সোর্স কন্টেইনার ডাটাবেস (CDB) থেকে একটি প্লাগেবল ডাটাবেস (PDB) বিচ্ছিন্ন করে একটি টার্গেট CDB এর সাথে সংযুক্ত করার বিষয়ে আলোচনা করে। এই ব্লগের উদ্দেশ্যে, PDB হল সেই ডাটাবেস যেখানে আমরা আমাদের সমস্ত অ্যাপ্লিকেশন-সম্পর্কিত ডেটাবেস সংরক্ষণ করি।

পরিচয়

একটি CDB বিভিন্ন অ্যাপ্লিকেশনের সাথে সম্পর্কিত শূন্য বা তার বেশি PDB ডেটাবেস ধারণ করে এবং এতে ঠিক একটি রুট কন্টেইনার থাকে যা Oracle®-সম্পর্কিত মেটাডেটা এবং সাধারণ ব্যবহারকারীদের সংরক্ষণ করে। রুট কন্টেইনারের নাম হল CDB$ROOT . মূল পাত্রে একটি বীজ PDB, PDB$SEED রয়েছে . এই বীজ PDB হল একটি সিস্টেম-সাপ্লাইড টেমপ্লেট যা CDB নতুন PDB তৈরি করতে ব্যবহার করতে পারে। একটি PDB একই ডেটাবেস যা আমরা নন-কন্টেইনার পরিবেশে ব্যবহার করি। সংস্করণ 12c-এ, ওরাকল এই ধারক এবং PDB বৈশিষ্ট্যটি চালু করেছে, যা আপনাকে আপনার ব্যবসার প্রয়োজনীয়তার উপর ভিত্তি করে PDB যোগ করতে সক্ষম করে। উদাহরণস্বরূপ, আপনি একটি PDB ডাটাবেস তৈরি করতে পারেন যা একটি বিক্রয় অ্যাপ্লিকেশনে বিক্রয় বিভাগের ডেটা এবং একটি HR অ্যাপ্লিকেশনে মানব সম্পদ (HR) বিভাগের ডেটা ধারণ করে৷

একটি PDB আনপ্লাগ করার অর্থ হল উৎস CDB থেকে একটি PDB ডাটাবেস বিচ্ছিন্ন করা এবং একটি টার্গেট CDB এর সাথে সংযুক্ত করা৷

এই ব্লগে, উৎস CDB, TEST12 , দুটি PDB আছে, PDB1 এবং PDB2 . লক্ষ্য CDB, DEV12 , আনপ্লাগড PDB গুলি গ্রহণ করে৷

আনপ্লাগ এবং PDB নমুনা প্লাগ করুন

এই বিভাগে, আপনি কীভাবে PDB1 আনপ্লাগ করবেন তা শিখবেন এবং PDB2 CDBTEST12 উৎস থেকে এবং তাদের লক্ষ্য CDB DEV12-এ প্লাগ করুন .

পরিবর্তন করার আগে, উত্স PDB গুলি MOUNTED হয়৷ নিম্নলিখিত ছবিতে দেখানো হয়েছে:

মাল্টিটেন্যান্ট ডাটাবেস আনপ্লাগ করা এবং প্লাগ করা

লক্ষ্যযুক্ত CDB-এর সাথে PDB সামঞ্জস্যতা যাচাই করুন

প্লাগ অপারেশন শুরু করার আগে, নিশ্চিত করুন যে প্লাগ-ইন করা PDB নতুন হোস্ট CDB-এর সাথে সামঞ্জস্যপূর্ণ। যদি তারা সামঞ্জস্যপূর্ণ না হয়, নিম্নলিখিত 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 বন্ধ করুন

PDB গুলি বন্ধ করুন যাতে নিম্নলিখিতSQL*Plus® স্টেটমেন্টগুলি চালিয়ে সেগুলিকে আনপ্লাগ করা যায়:

<প্রাক . oraenv [enter test12 at the prompt] sqlplus / as sysdba alter pluggable database pdb1 close immediate; alter pluggable database pdb2 close immediate;

উত্স PDBs মাউন্ট অবস্থায় থাকা উচিত 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');
[you will see no rows]
exit
 

PDB প্লাগ করুন

আপনি PDB-কে লক্ষ্য CDB-তে প্লাগ করতে পারেন কপি পদ্ধতি, NOCOPY বা ক্লোন মুভ পদ্ধতি ব্যবহার করে।

কপি পদ্ধতির সাথে প্লাগ করুন

PDB প্লাগ করার জন্য কপি পদ্ধতি ব্যবহার করতে, নতুন ডেটা ফাইলের জন্য একটি গন্তব্য তৈরি করুন এবং সংজ্ঞায়িত করুন, আনপ্লাগড PDB কে টার্গেট CDB-তে প্লাগ করুন এবং তারপর আনপ্লাগড PDB-এর ডেটা ফাইল কপি করুন৷

নিম্নলিখিত কমান্ডগুলি চালিয়ে গন্তব্য ডিরেক্টরি তৈরি করুন:

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

PDB কে CDB-তে প্লাগ করার জন্য আনপ্লাগ করা PDB-এর ডেটা ফাইলগুলি ব্যবহার করুন এবং নিম্নলিখিত কমান্ডগুলি চালিয়ে ডেটা ফাইলগুলিকে একটি নতুন অবস্থানে অনুলিপি করুন:

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-এর ডেটা ফাইল ব্যবহার করে PDB-কে টার্গেট CDB-তে প্লাগ করে কোনো কপি তৈরি বা ব্যবহার না করে।

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 ইতিমধ্যেই কপি পদ্ধতি ব্যবহার করে প্লাগ করা হয়েছে, যা নিম্নলিখিত ছবিতে দেখানো 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
 

পিডিবিগুলিকে আবার উৎস CDB-এ সরান

নিম্নলিখিত কমান্ডগুলি চালিয়ে সমস্ত প্লাগযোগ্য ডেটাবেস বন্ধ করুন:

<প্রাক . 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-এ ফিরে যান নিম্নলিখিত কমান্ডগুলি চালানোর মাধ্যমে 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
 

উপসংহার

PDBs আনপ্লাগ করা এবং প্লাগ করা সার্ভারের মধ্যে ফাইল স্থানান্তর সহজ করতে পারে এবং মানুষের ত্রুটির সম্ভাবনা কমাতে পারে। উদাহরণস্বরূপ, আপনি সমস্ত PDB ডাটাবেসের জন্য একটি প্যাচিন এক শট প্রয়োগ করতে পারেন, যেখানে একটি নন-কন্টেইনার পরিবেশে আপনাকে আলাদাভাবে সমস্ত ডাটাবেসে একটি প্যাচ প্রয়োগ করতে হবে। একটি ধারক এবং PDB পরিবেশে ব্যাকআপ এবং অন্যান্য রক্ষণাবেক্ষণের কাজগুলি অনেক সহজ। সার্ভারের মধ্যে একটি ফাইল পরিবহন করা সহজ কারণ আপনি ভুলবশত এক বা একাধিক ফাইল স্থানান্তর করতে ভুলে যেতে পারবেন না।

আশা করি, এই ব্লগটি আপনাকে 12c PDB সংস্করণ এবং নন-কন্টেইনার ডাটাবেসের উপর CDB সুবিধা সম্পর্কে আরও ভাল ধারণা দিয়েছে।

কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাবটি ব্যবহার করুন৷

আমাদের ডাটাবেস পরিষেবাগুলি সম্পর্কে আরও জানুন৷


  1. একটি ভার্টিকা ডাটাবেস ব্যাক আপ এবং পুনরুদ্ধার করুন

  2. কিভাবে PostgreSQL এবং CockroachDB এর মধ্যে নির্বাচন করবেন

  3. ডেটাবেস-এ-সার্ভিস-এর সুবিধা এবং অসুবিধা

  4. ওরাকল এসকিউএল প্রোফাইল এবং বেসলাইন