學(xué)校網(wǎng)站建設(shè)措施seo策略工具
oracle12c的新特性
Oracle 12C引入了CDB與PDB的新特性,在ORACLE 12C數(shù)據(jù)庫(kù)引入的多租用戶環(huán)境(Multitenant Environment)中,允許一個(gè)數(shù)據(jù)庫(kù)容器(CDB)承載多個(gè)可插拔數(shù)據(jù)庫(kù)(PDB)。CDB全稱為Container Database,中文翻譯為數(shù)據(jù)庫(kù)容器,PDB全稱為Pluggable Database,即可插拔數(shù)據(jù)庫(kù)。在ORACLE 12C之前,實(shí)例與數(shù)據(jù)庫(kù)是一對(duì)一或多對(duì)一關(guān)系(RAC):即一個(gè)實(shí)例只能與一個(gè)數(shù)據(jù)庫(kù)相關(guān)聯(lián),數(shù)據(jù)庫(kù)可以被多個(gè)實(shí)例所加載。而實(shí)例與數(shù)據(jù)庫(kù)不可能是一對(duì)多的關(guān)系。當(dāng)進(jìn)入ORACLE 12C后,實(shí)例與數(shù)據(jù)庫(kù)可以是一對(duì)多的關(guān)系。下面是官方文檔關(guān)于CDB與PDB的關(guān)系圖。
cdb相當(dāng)于操作系統(tǒng),調(diào)用并管理各個(gè)pdb。pdb相當(dāng)于真正提供業(yè)務(wù)需求的數(shù)據(jù)庫(kù)實(shí)例。oracle 12c安裝后只創(chuàng)建了cdb,需要自己生成相應(yīng)的pdb。oracle 12c使用了CDB-PDB架構(gòu),類似于docker,在container-db內(nèi)可以加載多個(gè)pluggable-db.
?
理解了CDB與PDB的關(guān)系后我們就知道,我們的平時(shí)的數(shù)據(jù)庫(kù)操作大多數(shù)和PDB相關(guān)
oracle 12c截止2018年7月25日是兩個(gè)版本,一個(gè)是Oracle Database 12c 第 1 版,另一個(gè)是Oracle Database 12c 第 2 版
Oracle Database 12c 第 1 版安裝的時(shí)候會(huì)默認(rèn)安裝一個(gè)名稱為pdborcl的實(shí)例(Oracle Database 12c 第 2 版默認(rèn)名是orclpdb),具體安裝不再敘說,詳情請(qǐng)參閱:
https://blog.csdn.net/anxpp/article/details/51345074
?
安裝成功后修改tnsnames.ora
我的在D:\app\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN文件夾下
############################tnsnames.ora###################### #cdb orcl = (DESCRIPTION = ?(ADDRESS_LIST = ?(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ?(CONNECT_DATA = ?(SERVICE_NAME = orcl) #cdb的db_name ?) ) #pdb pdborcl = (DESCRIPTION = ?(ADDRESS_LIST = ?(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ?) ?(CONNECT_DATA = ?(SERVICE_NAME = pdborcl) #pdb的db_name ?) ) ##########################tnsnames.ora###################### |
數(shù)據(jù)庫(kù)下拉框會(huì)出現(xiàn)pdborcl選項(xiàng)
?
遇到的坑
?
使用system登錄,PLSQL Developer選擇ORCL,執(zhí)行
select name,open_mode from v$pdbs;?用來查看當(dāng)前CDB容器中包含的PDB容器
?pdborcl的open_mide的狀態(tài)是READ WRITE,使用pdborcl也能登錄,但是你重啟服務(wù)器這個(gè)狀態(tài)會(huì)變?yōu)?/p>
這時(shí)候PLSQL Developer選擇pdborcl就不能登錄了,出現(xiàn)錯(cuò)誤
?
因?yàn)榉?wù)器重啟時(shí),pdb默認(rèn)不啟動(dòng)
PLSQL Developer選擇ORCL. system登錄(或使用sqlplus)執(zhí)行
alter pluggable database PDBORCL open;?啟動(dòng)pdb
創(chuàng)建用戶
創(chuàng)建新用戶,注意CDB容器中創(chuàng)建一個(gè)通用用戶,用戶名必須以C##或者c##開頭,因?yàn)镃DB中默認(rèn)創(chuàng)建的是common user
如果想要?jiǎng)?chuàng)建本地用戶,則要在PDB容器中創(chuàng)建,下面會(huì)說如何切換到PDB容器
create user C##test identified by 123456;? ? //其中C##test為用戶名,123456為密碼
?
給新用戶授權(quán)
grant create session to C##test;??
? ? ? ? ? ?grant create table to? ?C##test;??
? ? ? ? ? ?grant create tablespace to? ?C##test;??
? ? ? ? ? ?grant create view to? ?C##test;
?
切換至查到的某個(gè)PDB容器(上面查到的是PDBORCL)
注意使用這個(gè)命令需要的sysdba級(jí)別的權(quán)限,否則無法執(zhí)行,切換后才可使用當(dāng)前pdb的私有用戶進(jìn)行操作,12c數(shù)據(jù)庫(kù)創(chuàng)建完成后,默認(rèn)情況下使用sqlplus / as sysdba ?登錄連接的是CDB。
?
alter session set container=PDBORCL
切換到PDB容器就可以創(chuàng)建本地用戶了
create user test identified by 123456;
如果要切換回CDB容器只需將容器名換為CDB容器的名字即可,一個(gè)CDB只有一個(gè)根
?alter session set container=CDB$ROOT;? ?
?
常用命令
切換當(dāng)前會(huì)話到某個(gè)pdb中。
?
alter session set container=PDBNAME
?
關(guān)閉當(dāng)前會(huì)話所在的cdb/pdb
?
startup/shutdown immediate
?
打開指定pdb
?
alter pluggable database PDBNAME open ;
?
關(guān)閉指定pdb
alter pluggable database PDBNAME close immediate ;
?
啟動(dòng)或者關(guān)閉一個(gè)或多個(gè) PDB,指定的名稱為一個(gè)以逗號(hào)分隔的列表
?
啟動(dòng)或者關(guān)閉 all pdbs
? ? ? ? ? ?ALTER PLUGGABLE DATABASE ALL OPEN;
? ? ? ? ? ?ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;
?
可插接式數(shù)據(jù)庫(kù)(PDB) 自動(dòng)啟動(dòng)
默認(rèn)情況下,在CDB 啟動(dòng)的時(shí)候,all 的PDB 都是mount狀態(tài)。我們可以通過觸發(fā)器來實(shí)現(xiàn)pdbs隨cdb自動(dòng)啟動(dòng),但這里可以通過觸發(fā)器來實(shí)現(xiàn)PDB的自動(dòng)open:
?
sqlplus / as sysdba
?
? |
?
其他
--第1步:創(chuàng)建臨時(shí)表空間 create temporary tablespace TBS_JBDP_TEMP ? tempfile 'd:\oracle\product\oradata\TBS_JBDP_TEMP.dbf' size 50m ? autoextend on ? next 50m maxsize 20480m ? extent management local; ? ? --第2步:創(chuàng)建數(shù)據(jù)表空間 create tablespace TBS_JBDP_DATA ? logging ? datafile 'd:\oracle\product\oradata\TBS_JBDP_DATA.dbf' size 50m ? autoextend on ? next 50m maxsize 20480m ? extent management local; ? ? --第3步:創(chuàng)建用戶并指定表空間 create user hjjc identified by hjjc123456 ? default tablespace TBS_JBDP_DATA ? temporary tablespace TBS_JBDP_TEMP; ? ? --第4步:給用戶授予權(quán)限 grant connect,resource,dba to hjjc; ? --刪除用戶 drop user hjjc?cascade; ? --刪除表空間(含物理位置) drop tablespace ?TBS_JBDP_DATA ?including contents and datafiles; |
?
?
參考
https://blog.csdn.net/aaronmer/article/details/78748952
https://www.jb51.net/article/106497.htm
https://cloud.tencent.com/info/3b736c62a8acb13e8aff0fbcd91686fb.html
?
?
?
?
?
?
?
?