分享知識-快樂自己:oracle12c建立使用者提示ORA-65096:
今天在oracle12c上建立使用者,報錯了。如下圖:
我很鬱悶, 就開啟了oracle官方網站找了下, 發現建立使用者是有限制的。
2.解決方案
建立使用者的時候使用者名稱以c##或者C##開頭即可。
錯誤寫法: create user zhaojiedi identified by oracle; 正確寫法: create user c##zhaojiedi identified by oracle;
注: 如果你不糾結為啥的,上面的解決方案就可以滿足你的要求了,下面的內容可以不用看了。
========================================================================
========================================================================
3. 解決過程
下面的流程是我對於這個問題的解決過程, 也寫出來分享分享。
我進入oracle 12c官方文件的
依次進入以下頁面
Managing Users and Securing the Database
Oracle Database Security Guide
經過一番查詢,在 頁面找到了如下圖的內容:
上面提示的很明確了。 建立公共使用者名稱必須要以c##或者C##開頭了。我們上面的報錯了。 就是因為我們建立公共使用者沒用以c##或者C##開頭的。
到此我們就知道具體錯誤的原因了。 那就贏的解決方案就有了哈。
如果你還糾結公用使用者和本地使用者是啥東東的, 頁面就有簡介。
========================================================================
有些不明白,然後繼續查資料,原因是這樣的:
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
出現如下介面:
點選“下一步”出現如下介面,在建立資料庫的時候將“建立為容器資料庫”項取消勾選。
這樣新建立的資料庫就可以使用了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2325/viewspace-2816488/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 祝福自己生日快樂!
- 【知識分享】 清空linux的DNS快取LinuxDNS快取
- 【知識分享】伺服器如何清理快取伺服器快取
- 【知識分享】
- 【知識分享】快取伺服器有什麼作用快取伺服器
- http快取知識HTTP快取
- 雜亂樂理知識
- 爬知識星球,製作自己的知識倉庫
- 知識分享--架構架構
- 知識分享--雲原生
- 程式設計師如何祝自己生日快樂程式設計師
- 構建自己知識體系
- 任天堂傳奇社長巖田聰:讓自己快樂,也努力讓別人快樂
- 【知識分享】伺服器如何應對大量使用者請求伺服器
- Python基礎知識分享Python
- 知識分享--資料庫資料庫
- 知識分享的網站網站
- 如何配置DHCP 【知識分享】
- GO基礎知識分享Go
- Hibernate【快取】知識要點快取
- 構建自己的知識體系
- 如何搭建自己的知識體系?
- 入駐第一天,分享自己的工作經驗和技術知識
- 【知識分享】如何清空DNS快取以提升伺服器的網路速度DNS快取伺服器
- 知識分享--訊息佇列佇列
- zookeeper基礎知識分享(一)
- HBase基礎知識分享(二)
- hadoop基礎知識分享(二)Hadoop
- JavaSE基礎知識分享(十五)Java
- JavaSE基礎知識分享(六)Java
- JavaSE基礎知識分享(七)Java
- JavaSE基礎知識分享(九)Java
- JavaSE基礎知識分享(十)Java
- JavaSE基礎知識分享(三)Java
- MySQL基礎知識分享(二)MySql
- JavaSE基礎知識分享(十二)Java
- JavaSE基礎知識分享(十四)Java
- JavaSE基礎知識分享(八)Java