天天看點

Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者

在Oracle Database 12C R2版本中,Oracle帶來了新的Application Containers特性,該特性增強了原有的多租戶功能,在CDB root容器中可以撞見一個叫做Application root的容器,和CDB root類似,可以在其内建立多個依賴于Application root的Application PDB,接下來将講解基于新特性下的使用者關系。

在多組環境中,共有2種使用者:公用使用者(Common User)和本地使用者。(Local User)。

Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者

1.公共使用者

Oracle提供了2種類型的公共使用者:CDB公共使用者和Application公共使用者。

CDB公共使用者是在CDB root下建立的使用者,在CDB root、每個現有的或者未來建立的PDB和Application root中都存在唯一辨別和密碼。CDB公共使用者既可以是Oracle提供的也可以自己建立,例如SYS和SYSTEM就是Oracle提供的公共使用者,它們具有DBA權限,可以連接配接整個CDB環境。自己建立的CDB公共使用者的使用者名必須以C##或c##開頭。每個CDB公共使用者可以在不同的PDB中擁有不同的權限,例如建立一個使用者c##test,隻賦予它連接配接PDB1的權限而不賦予連接配接PDB2的權限。

Application公共使用者是在Application root下建立的使用者,它隻在Application容器中是公用的。換句話說,Application公共使用者無法CDB公共使用者那樣,能夠連接配接整個CDB環境。Application公共使用者負責建立、打開、關閉、插拔和删除Application PDB。

這兩種使用者都負責管理各自root中的公共對象。如果有合适的權限,甚至也可以在PDB中進行操作,例如賦予local使用者權限。這些使用者還可以在不同的容器中授予公共使用者不同的權限。

下面來舉例來如何建立公共使用者:

1.CDB公共使用者:

CDB公共使用者必須以C##或c##開頭,并且Oracle會在每個 PDB 中同時建立該使用者。

Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者

剛建立好的c##test要有create session權限才能連接配接PDB,下面的例子是單獨賦予PDB1的create session,這樣的話c##test隻能連接配接PDB1,而不能連接配接其他PDB。

Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者

如果想讓c##test連接配接所有的PDB,就需要在CDB root下賦予權限,并加上container=all參數。

Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者

2.Application公共使用者

在建立Application容器的同時,建立Application公共使用者apptest,與CDB公共使用者不同的是使用者名不需要c##開頭。

Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者

建立好了Application容器和使用者後,需要在tnsnames.ora中配置連接配接資訊才能連接配接Application容器apptest(從這點可以看出Application和PDB類似)。

Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者
Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者

總體來說,公共使用者具有以下特點:

1.公共使用者可以連接配接任意容器,包括CDB$ROOT,當然它需要有create session權限。

2.Application公共使用者不會擁有在除自己Application容器外的任何容器的create session權限。是以Application公共使用者會限制于自己的容器中。

3.自己建立的CDB公共使用者必須遵守一個規則,使用者名的字首為參數COMMON_USER_PREFIX指定的值,預設值是C##或c##.

4.公共使用者的使用者名在其所在容器的PDB中都是唯一的。

2.本地使用者

本地使用者和公共使用者不同,它是在PDB中建立的使用者,并隻在建立的PDB中有效。本地使用者也可以擁有系統權限,但是這些權限隻能作用于所在的PDB中。

下面來舉例來如何建立本地使用者:

建立使用者的方式和11G一樣,要注意的是先連接配接PDB後才能建立本地使用者。

Oracle學習筆記之19c的公共使用者和本地使用者1.公共使用者2.本地使用者

差別于公共使用者,本地使用者有以下特點:

1.本地使用者無法建立公共使用者,可以給公共使用者賦權,但是權限隻局限于PDB中,也就是說隻能賦予本地權限,無法賦予公共權限。

2.可以将公共角色賦予本地使用者,但是角色中的權限隻能作用于本地。

3.本地使用者在所在PDB中必須是唯一的。

4.在有合适的權限下,本地使用者可以連接配接公共使用者的對象,例如本地使用者可以連接配接公共使用者的表,隻要公共使用者賦予它權限。