یکی از راههایی که برای مدیریت cdb ها و pdbها وجود داره، استفاده از dbca هست. تو این نوشته چند تا کار رو سعی می کنیم باهاش انجام بدیم.
برای اجرای دستور dbca احتیاج هست که ORACLE_HOME و PATH به درستی ست شده باشه. همچنین این ORACLE_HOME باید به HOME دیتبایس اشاره کنه وگرنه با خطای زیر مواجه میشیم:
من از دستور oraenv بصورت زیر برای تنظیم Env استفاده می کنم:
[oracle@test12cr2 ~]$ . oraenv ORACLE_SID = [+ASM] ? cdb2 ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.2.0/dbhome_1 The Oracle base remains unchanged with value /u01/app/oracle
[oracle@test12cr2 dbhome_1]$ . oraenv ORACLE_SID = [oracle] ? cdb2
The Oracle base has been changed from /home/oracle to /u01/app/oracle
[oracle@test12cr2 dbhome_1]$ sqlplus / as sysdba
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBTESTCDB2 READ WRITE NO
4 PDB3 READ WRITE NO
SQL> alter session set container=pdb3;
SQL> create user vahid identified by vahid ;
SQL> grant dba to vahid;
SQL> create table vahid.t1 (f1 number);
SQL> insert into vahid.t1 values (1);
SQL> commit;
حالا دوباره دستور dbca را انتخاب می کنیم و باز به قسمت manage pluggable database می رویم و اینبار گزینه unplug a pluggable database را انتخاب می کنیم.
آن cdb که pdb مدنظر ما در آن است را انتخاب می کنیم و در صفحه بعدی گزینه generate pluggable database file set را انتخاب کرده و آدرس می دهیم. در صورتی که گزینه اول را انتخاب کنیم، با خطا مواجه می شویم و دلیل آن نیز این داکیومنت است:
DBT-15011 During Unplug PDB by DBCA (Doc ID 2350135.1)
من از توضیحی که داد قانع نشدم و تنها گفت که باید با ابزاری مثل sqlplus اینکار را انجام دهیم.
خلاصه ای از کاری که می خواهد انجام بدهد را می گوید و در نهایت این pdb را unplug می کند.
SQL> select pdb_id , pdb_name from cdb_pdbs;
PDB_ID
----------
PDB_NAME
--------------------------------------------------------------------------------
3
PDBTESTCDB2
2
PDB$SEED
حالا یک حرکت قشنگ می کنیم و این دیتابیس unplug شده را به cdb دیگر می زنیم. دوباره دستور dbca و انتخاب گزینه manage pluggable databases و گزینه create a pluggable database و اینبار دیتابیس cdb دیگر را انتخاب می کنیم.
گزینه create pluggable database from an unplugged pdb را انتخاب می کنیم و با دادن مسیر فایلی که در مراحل قبل ساختیم، کار را ادامه می دهیم.
حالا نام pdb و نام ادمین و پسوردش را وارد می کنیم.
این صفحه رو نمی دونم چرا گذاشت :)
سپس یه خلاصه به ما نشان می دهد و این pdb را به cdb جدید اضافه می کند.
حالا می توانیم از cdb جدید داده ای که قبلاً اضافه کرده بودیم را ببینیم.
[oracle@test12cr2 ~]$ . oraenv
ORACLE_SID = [testcdb] ?
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@test12cr2 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 7 06:43:50 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TESTPDB MOUNTED
4 FROMCDB2PDB READ WRITE NO
SQL>
SQL>
SQL> alter session set container=fromcdb2pdb;
Session altered.
SQL> select * from vahid.t1;
F1
----------
1
- ۹۸/۰۹/۱۶




















