oracle pdb是什么意思,浅谈Oracle数据库12c PDB技术
PDB大致功能描述:
創(chuàng)建:
用create pluggable database的命令,
用file_name_convert的方式拷貝seed pdb的文件到對(duì)應(yīng)的新pdb的路徑下。拷貝的是最基本system和sysaux表空間,
將新建的pdb從mount的狀態(tài)打開到read write的狀態(tài)。
建立pdb用戶的默認(rèn)表空間。
拔出:
a)用dbca進(jìn)行拔出有2種生成結(jié)果,一種是生成打包文件,一種是生成.xml文件和.DFB文件。
a .1)打包方式:
操作的時(shí)候,先close pdb,然后在$ORACLE_HOMEassistantsdbcatemplates,生成一個(gè)xml文件描述pdb原來文件的路徑和scn等信息;
將pdb的數(shù)據(jù)文件復(fù)制到$ORACLE_HOMEassistantsdbcatemplates路徑下;
生成一個(gè)pdb_info.txt描述本次pdb unplug的相關(guān)文件。
將上述3種類型的文件打包成一個(gè)gz包。
在cdb中,以drop pluggable database的方式,刪除pdb的信息和在物理上刪除pdb的數(shù)據(jù)文件。
a.2)生成.xml和.DFB文件的方式
也是類似,只是不打包成一個(gè)gz包,且pdb的多個(gè)數(shù)據(jù)文件也被整合在一個(gè).DFB文件中。最后也刪除cdb中關(guān)于此pdb的信息。
插入:
如果用dbca,原來打包成gz包的來做plug就非常方便,只要選中g(shù)z包,直接plug即可。如果原來是分開文件的方式,也只需根據(jù)xml文件和.DFB文件,先restore數(shù)據(jù)文件,再create pluggable database using xml文件。
克隆:
將pdb至于read only模式,然后利用create pluggable database xxx from xxx…命令進(jìn)行可克隆。注該方法需要將原pdb至于read only模式。可以常用在測試環(huán)境用克隆另外一個(gè)類似的環(huán)境。
PDB手工操作:
a)創(chuàng)建
SQL>?CREATE?PLUGGABLE?DATABASE?mypdb1?ADMIN?USER?pdbadmin?IDENTIFIED?BY?Orac1e_1981?ROLES=(CONNECT)
2??file_name_convert=(‘E:ORA12CAPPORACLEUSERORADATAORA12CPDBSEED’,’E:ORA12CAPPORACLEUSERORADATAORA12Cmypdb1′);
Pluggable?database?created.
SQL>
SQL>?alter?pluggable?database?mypdb1?open;
Pluggable?database?altered.
SQL>
b)拔出:
SQL>?ALTER?PLUGGABLE?DATABASE?mypdb1?CLOSE;
Pluggable?database?altered.
SQL>
SQL>?alter?pluggable?database?MYPDB1?unplug?into?‘E:ora12capporacleuserproduct12.1.0dbhome_1assistantsdbcatemplatesora12c_MYPDB1.xml’;
Pluggable?database?altered.
SQL>
SQL>?host?cp?-R?E:ora12capporacleuseroradataora12cmypdb1?E:ora12capporacleuseroradataora12cmypdb1_bak
SQL>?DROP?PLUGGABLE?DATABASE?mypdb1?including?datafiles;
Pluggable?database?dropped.
c)插入:
SQL>??–注:不需要拷貝回去temp?tablespace的文件。不然在下一個(gè)create?pluggable?database的時(shí)候會(huì)報(bào)錯(cuò)ORA-01119。
SQL>?host?cp?E:ora12capporacleuseroradataora12cmypdb1_bak*.DBF??E:ora12capporacleuseroradataora12cmypdb1
SQL>
SQL>?create?pluggable?database?b_pdb1?using?‘E:ora12capporacleuserproduct12.1.0dbhome_1assistantsdbcatemplatesora12c_MYPDB1.xml’?nocopy;
Pluggable?database?created.
SQL>
SQL>?alter?pluggable?database?b_pdb1?open;
Pluggable?database?altered.
SQL>
d)克隆:
SQL>?select?dbid,name,open_mode?from?v$pdbs;
DBID?NAME???????????????????????????OPEN_MODE
———-?——————————?———-
4039091088?PDB$SEED???????????????????????READ?ONLY
2213957720?B_PDB1?????????????????????????READ?WRITE
4261134367?MYPDB2?????????????????????????READ?WRITE
SQL>
SQL>
SQL>
SQL>?alter?pluggable?database?mypdb2?close;
Pluggable?database?altered.
SQL>?alter?pluggable?database?mypdb2?open?read?only;
Pluggable?database?altered.
SQL>?create?pluggable?database?b_pdb2
2??from?MYPDB2
3??file_name_convert?=(‘E:ora12capporacleuseroradataora12cmypdb2′,’E:ora12capporacleuseroradataora12cb_pdb2’);
Pluggable?database?created.
SQL>?select?dbid,name,open_mode?from?v$pdbs;
DBID?NAME???????????????????????????OPEN_MODE
———-?——————————?———-
4039091088?PDB$SEED???????????????????????READ?ONLY
2213957720?B_PDB1?????????????????????????READ?WRITE
4261134367?MYPDB2?????????????????????????READ?ONLY
2540280635?B_PDB2?????????????????????????MOUNTED
SQL>?alter?pluggable?database?B_PDB2?open;
Pluggable?database?altered.
SQL>
常用檢查語句:
SQL>?SELECT?sys_context(‘userenv’,’con_name’)?MY_CONTAINER?FROM?dual;
MY_CONTAINER
——————–
CDB$ROOT
SQL>
SQL>?SHOW?con_name
CON_NAME
——————————
CDB$ROOT
SQL>
SQL>?SELECT
2??‘DB_NAME:?‘??||sys_context(‘userenv’,?‘db_name’)||
3??‘?/?CDB?:?‘?????||(select?cdb?from?v$database)||
4??‘?/?AUTH_ID:?‘??||sys_context(‘userenv’,?‘a(chǎn)uthenticated_identity’)||
5??‘?/?USER:?‘?????||sys_context(‘userenv’,?‘current_user’)||
6??‘?/?CONTAINER:?‘||nvl(sys_Context(‘userenv’,?‘con_Name’),?‘NON-CDB’)
7??as?“DB?DETAILS”
8??FROM?DUAL;
DB?DETAILS
—————————————————————————————————-
DB_NAME:?ora12c?/?CDB?:?YES?/?AUTH_ID:?HE-PCjijihe?/?USER:?SYS?/?CONTAINER:?CDB$ROOT
SQL>
SQL>?alter?session?set?container=MYPDB2;
Session?altered.
SQL>?SELECT
2??‘DB_NAME:?‘??||sys_context(‘userenv’,?‘db_name’)||
3??‘?/?CDB?:?‘?????||(select?cdb?from?v$database)||
4??‘?/?AUTH_ID:?‘??||sys_context(‘userenv’,?‘a(chǎn)uthenticated_identity’)||
5??‘?/?USER:?‘?????||sys_context(‘userenv’,?‘current_user’)||
6??‘?/?CONTAINER:?‘||nvl(sys_Context(‘userenv’,?‘con_Name’),?‘NON-CDB’)
7??as?“DB?DETAILS”
8??FROM?DUAL;
DB?DETAILS
————————————————————————————————
DB_NAME:?ora12c?/?CDB?:?YES?/?AUTH_ID:?HE-PCjijihe?/?USER:?SYS?/?CONTAINER:?MYPDB2
SQL>
SQL>?select?v.name,?v.open_mode,?nvl(v.restricted,?‘n/a’)?“RESTRICTED”,?d.status
2??from?v$PDBs?v?inner?join?dba_pdbs?d
3??using?(GUID)
4??order?by?v.create_scn
5??/
NAME???????????????????????????OPEN_MODE??RESTRICTED??????STATUS
——————————?———-?—————?————-
PDB$SEED???????????????????????READ?ONLY??NO??????????????NORMAL
MYPDB1?????????????????????????READ?WRITE?NO??????????????NORMAL
MYPDB2?????????????????????????READ?WRITE?NO??????????????NORMAL
SQL>?alter?pluggable?database?mypdb1?close;
Pluggable?database?altered.
SQL>?select?v.name,?v.open_mode,?nvl(v.restricted,?‘n/a’)?“RESTRICTED”,?d.status
2??from?v$PDBs?v?inner?join?dba_pdbs?d
3??using?(GUID)
4??order?by?v.create_scn
5??/
NAME???????????????????????????OPEN_MODE??RESTRICTED??????STATUS
——————————?———-?—————?————-
PDB$SEED???????????????????????READ?ONLY??NO??????????????NORMAL
MYPDB1?????????????????????????MOUNTED????n/a?????????????NORMAL
MYPDB2?????????????????????????READ?WRITE?NO??????????????NORMAL
SQL>?alter?pluggable?database?mypdb1?open?restricted;
Pluggable?database?altered.
SQL>?select?v.name,?v.open_mode,?nvl(v.restricted,?‘n/a’)?“RESTRICTED”,?d.status
2??from?v$PDBs?v?inner?join?dba_pdbs?d
3??using?(GUID)
4??order?by?v.create_scn
5??/
NAME???????????????????????????OPEN_MODE??RESTRICTED??????STATUS
——————————?———-?—————?————-
PDB$SEED???????????????????????READ?ONLY??NO??????????????NORMAL
MYPDB1?????????????????????????READ?WRITE?YES?????????????NORMAL
MYPDB2?????????????????????????READ?WRITE?NO??????????????NORMAL
SQL>
評(píng):感覺PDB不像什么革命性的技術(shù),只是將數(shù)據(jù)庫至于mount模式后,拷貝數(shù)據(jù)文件,做成一個(gè)備份,然后將此備份plug和unplug。這樣的技術(shù),感覺跨平臺(tái)的遷移不太理想。
另外,由于一個(gè)cdb中可以掛多個(gè)pdb,資源的分配使用就變得非常重要了,在12c中,估計(jì)原來幾乎不常用的Resource Manager plan會(huì)逐步用起來。
關(guān)于redo,由于redo是可以多個(gè)pdb共享,因此cdb的管理者可以通過logmnr的方式去挖對(duì)應(yīng)pdb的日志,從dump出來的redo log來看,redo log中含有container id(CON_ID,0為cdb,1為cdb$root, 2為pdb seed,3以上為pdb),pdbid和pxid,至少這些信息可以用于區(qū)分不同pdb中的事務(wù)。
我們一直都在努力堅(jiān)持原創(chuàng).......請(qǐng)不要一聲不吭,就悄悄拿走。
我原創(chuàng),你原創(chuàng),我們的內(nèi)容世界才會(huì)更加精彩!
【所有原創(chuàng)內(nèi)容版權(quán)均屬TechTarget,歡迎大家轉(zhuǎn)發(fā)分享。但未經(jīng)授權(quán),嚴(yán)禁任何媒體(平面媒體、網(wǎng)絡(luò)媒體、自媒體等)以及微信公眾號(hào)復(fù)制、轉(zhuǎn)載、摘編或以其他方式進(jìn)行使用。】
微信公眾號(hào)
TechTarget
官方微博
TechTarget中國
總結(jié)
以上是生活随笔為你收集整理的oracle pdb是什么意思,浅谈Oracle数据库12c PDB技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谁是“地表最强坦克”
- 下一篇: mysql居左查询abcd_MySql速