Oracle 12c 資料庫CDB使用者建立與資料表空間分配的問題

來源:互聯網
上載者:User

Oracle 12c 資料庫CDB使用者建立與資料表空間分配的問題

Oracle12c中,增加了可插接資料庫的概念,即PDB,允許一個資料庫容器(CDB)承載多個可插拔資料庫(PDB)。CDB全稱為ContainerDatabase,中文翻譯為資料庫容器,PDB全稱為PluggableDatabase,即可插拔資料庫。在ORACLE 12C之前,執行個體與資料庫是一對一或多對一關聯性(RAC):即一個執行個體只能與一個資料庫相關聯,資料庫可以被多個執行個體所載入。而執行個體與資料庫不可能是一對多的關係。當進入ORACLE 12C後,執行個體與資料庫可以是一對多的關係。下面是官方文檔關於CDB與PDB的關係圖。

對於PDB確實給程式員帶來了不少好處,不過這也給管理者帶來了一些不同。首先,容器資料庫建立新使用者並分配資料表空間時必須在沒有PDB的情況下進行或PDB與CDB有相同的資料表空間的時候進行,否則會報錯。如果是在PDB與CDB有相同資料表空間的情況下給CDB使用者指派資料表空間,則會分配CDB的資料表空間給使用者PDB的資料表空間並不受影響。而且,CDB使用者必須以‘C##’為開頭,否則建立不了,但是,我按照  的方法去建立了一下,確實建立成功了,同時也給他賦了各種許可權,但是在Oracle Enterprise Manager下我看不見我自己建立的角色,在sql-plus視窗下也看不到剛剛建立的使用者,登陸的時候只有以dba身份才能登得上去,不知道是不是我自己電腦的問題還是。以下是建立’c##’開頭的使用者  建立使用者c##admin,並未該使用者賦予了dba許可權,串連。這是在沒有PDB的情況下建立使用者“C##ADMIN”並分配”USERS‘資料表空間。我們再次以system身份串連資料庫,然後在容器資料庫(CDB)中建立資料表空間test,注意,這時插接式資料庫(PDB)中沒有test這個資料表空間,然後在容器資料庫(CDB)建立新的使用者c##test並分配test資料表空間給它作為他的預設資料表空間。由於在PDBORCL中並沒有資料表空間,所以這裡報錯了。 

----切換到PDB “PDBORCL”

SQL> alter sessionset container = pdborcl;

會話已更改。

SQL> createtablespace test    --建立資料表空間test

  2 datafile 'f:\oracledata\test.dbf'

  3  size1m autoextend on;

資料表空間已建立。

--由於現在不論是在CDB好是在PDB中都有了資料表空間test了,所以建立使用者並分配表空

間成功了。

SQL> createuser c##test

  2 identified by test

  3 default tablespace test

  4 temporary tablespace temp;

使用者已建立。

SQL>

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.