普通用戶和公共用戶
在oracle 12c之前數(shù)據(jù)庫和數(shù)據(jù)庫實例之間的關系是多對一或者一對一的關系,在oracle 12c 中引進了多租戶的概念,實現(xiàn)了數(shù)據(jù)庫實例可以對應多個數(shù)據(jù)庫。cdb代表的是容器數(shù)據(jù)庫,pdb代表的是可插拔數(shù)據(jù)庫,實際上就是傳統(tǒng)的數(shù)據(jù)庫.而且現(xiàn)在也衍生了兩種用戶,一種是cbd用戶,另外一種是pdb用戶
pdb用戶:只能訪問可插拔數(shù)據(jù)庫(pdb)
cbd用戶:既可以訪問cbd(根數(shù)據(jù)庫),也可以訪問pdb數(shù)據(jù)庫(需要有權限)
創(chuàng)建cbd 用戶
(1)打開sql plus
(2)用戶登錄 sys / as sysdba,查看當前容器是哪個容器數(shù)據(jù)庫
可以看到我們目前處于一個cbd環(huán)境下。
(3)創(chuàng)建一個cdb環(huán)境下的公共用戶, create user c##xxx identified by xxx;這里要注意,創(chuàng)建cdb用戶必須要加上c##,否則會創(chuàng)建失敗 如用戶名未以C##或者c##開頭,則會報錯:ORA-65096: 公用用戶名或角色名無效。
使用命令查看,創(chuàng)建的用戶 select username ,con_id from cdb_users where username=‘C##XXX’;
注意:這里如果顯示的不是很好的話,一列就換行,我們可以使用以下步驟:①set linesize = 200,② col username format a20;
可以看到上面的用戶已經(jīng)創(chuàng)建了,同樣這個con_id=3代表的是第一個pdb數(shù)據(jù)庫的id,說明這個用戶也在pdb中創(chuàng)建了。
(4)給這個用戶賦權讓這個用戶可以訪問所有的容器:grant create session to c##xxx container=all;
(5)現(xiàn)在可以切換到pdb數(shù)據(jù)庫 :
①查看容器數(shù)據(jù)庫有哪些,可以看到狀態(tài),連接名稱,是否開啟。
②切換到pdb數(shù)據(jù)庫,alter session set container = orclpdb;
③連接pdb: conn sys/orcl@pdb as sysdba(注意這個@pdb,如下圖,連接到的服務。另外as sysdba也必須要加上,文件位置:D:\developsoftware\server\oracle12\oracle\app\product\12.2.0\dbhome_1\network\admin)
④給創(chuàng)建的cbd用戶賦權:grant resource ,create session to c##xxx;
⑤使用cbd用戶連接pdb數(shù)據(jù)庫:conn c##xxx/xxx@pdb;
用pl sql去連接一下
如上圖可以看到,我們也是可以連接上的。也可以看到這個這個數(shù)據(jù)庫中有這個用戶,如下圖
⑥:先查看一下這個用戶的權限 select * from dba_sys_privs where grantee=‘C##XXX’;
上面我們給用戶權限,由于權限比較小,所以我們無法創(chuàng)建本地用戶和表空間:所以我們給這個用戶授予dba權限:
首先用sys/orcl@pdb登錄上去,這個用戶具有dba的權限
REVOKE DBA FROM 用戶名(撤銷權限)
授予權限:命令 GRANT unlimited tablespace to c##xxx;授權可以在表空間建表
GRANT CREATE USER TO C##XXX;授權可以創(chuàng)建用戶;
GRANT CREATE TABLESPACE TO C##XXX;授權創(chuàng)建表空間
GRANT ALTER ANY TABLE TO C##XXX;授權可以修改表;
GRANT RESOURCE TO C##XXX;授權可以修改表(增刪改查)
創(chuàng)建普通用戶
①創(chuàng)建一個表空間(xxx代表表空間的邏輯名字,datafile:表空間的物理空間,size:初始大小,autoextend on next:初始空間用完后的擴展空間/每次,maxsize:最大空間)
create tablespace xxx datafile ‘d:\xxx.dbf’ size 50M autoextend on next 30m maxsize 100m;
②創(chuàng)建用戶pdb create user xxx1 identified by xxx1 defalut tablespace xxx temporary tablespace temp account lock;(解釋:xxx1是用戶名和密碼,可以自己指定,tablespace:用戶所屬的表空間,temporary tablespace:臨時表空間,用來存儲臨時數(shù)據(jù)的,比如:排序數(shù)據(jù),account lock,創(chuàng)建出來的用戶是鎖定裝態(tài))
③解鎖創(chuàng)建的用戶:alter user xxx1 account unlock;
④用戶連接到pdb數(shù)據(jù)庫:conn xx1/xx1@pdb;
這個時候我們登錄的話,還是登錄不上的,因為我們還沒有給用戶權限:
賦權:grant resource ,create session to xxx1;
grant restricted session to xxx1;
再次去連接:conn xxx1/xxx1@pdb文章來源:http://www.zghlxwxcb.cn/news/detail-430027.html
創(chuàng)建表
①創(chuàng)建表:create table a(a number(11,0),name varchar2(18));
②需要給用戶進行表空間分配權限,才能進行操作表:alter user xxx1 quota unlimited on xxx;
或者:alter user xxx1 quota 5m on xxx; xxx代表表空間文章來源地址http://www.zghlxwxcb.cn/news/detail-430027.html
到了這里,關于oracle 12c 容器數(shù)據(jù)庫公共用戶去訪問pdb數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!