Oracle12c創建新用戶提示公共用戶名或角色無效


 

  今天將備份的數據庫還原到一台新的電腦上,首先要創建用戶,執行如下語句:

create user fxhy
identified by "123456"
default tablespace USERS
temporary tablespace TEMP;

  結果出現了一個錯誤:

  

  我們可以看出提示的是:公共用戶名或角色無效。這時候我就郁悶了,呃,查資料,發現創建用戶的時候要以c##開頭,也就是剛才的創建語句應該這么寫:

create user c##fxhy
identified by "123456"
default tablespace USERS
temporary tablespace TEMP;

  就這樣試了一下,果真創建成功了,可是為什么要這么做,有些不明白,然后繼續查資料,原因是這樣的:

  Oracle 12C引入了CDB與PDB的新特性,在ORACLE 12C數據庫引入的多租用戶環境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。CDB全稱為Container Database,中文翻譯為數據庫容器,PDB全稱為Pluggable Database,即可插拔數據庫。在ORACLE 12C之前,實例與數據庫是一對一或多對一關系(RAC):即一個實例只能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關系。當進入ORACLE 12C后,實例與數據庫可以是一對多的關系。下面是官方文檔關於CDB與PDB的關系圖。

  

  

  CDB組件(Components of a CDB)

     一個CDB數據庫容器包含了下面一些組件:

    ROOT組件

       ROOT又叫CDB$ROOT, 存儲着ORACLE提供的元數據和Common User,元數據的一個例子是ORACLE提供的PL/SQL包的源代碼,Common User 是指在每個容器中都存在的用戶。

    SEED組件

        Seed又叫PDB$SEED,這個是你創建PDBS數據庫的模板,你不能在Seed中添加或修改一個對象。一個CDB中有且只能有一個Seed. 這個感念,個人感覺非常類似SQL SERVER中的model數據庫。

    PDBS

         CDB中可以有一個或多個PDBS,PDBS向后兼容,可以像以前在數據庫中那樣操作PDBS,這里指大多數常規操作。

  這些組件中的每一個都可以被稱為一個容器。因此,ROOT(根)是一個容器,Seed(種子)是一個容器,每個PDB是一個容器。每個容器在CDB中都有一個獨一無二的的ID和名稱。

  怎么查看數據庫是否為CDB?

    執行下面這條語句:    

select CDB from v$database;

    如果得到的結果為YES,那么就是CDB的數據庫,否則,則不是。

  怎么查看當前的容器?

    執行下面這條語句:

show con_name;

    執行結果如下:

     

  怎么查看CDB中的PDB信息?

    執行下面這條語句:      

select con_id, dbid, guid, name , open_mode from v$pdbs;

   執行結果如下:

   


 啟動PDB數據庫的方式:
  
   執行下面這條語句:
 
     
alter pluggable database PDBORCL open;

   執行結果如下:

  

關閉PDB數據庫的方式:
  
   執行下面這條語句:
 
alter pluggable database PDBORCL close;

   執行結果如下:

  在容器間切換:   

alter session set container=PDBORCL;
alter session set container=CDB$ROOT;

--------------------------------------------------------------分割線------------------------------------------------------------------------

那么說了這么多,怎么就可以創建用戶而不用加c##了呢,我在這里創建一個新的數據庫,步驟如下:

  打開 Database Configuration Assistant

  

  出現如下界面:

  點擊“下一步”出現如下界面,在創建數據庫的時候將“創建為容器數據庫”項取消勾選。

  這樣新創建的數據庫就可以使用了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM