溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【Oracle12C】部署服務建立用戶及建庫建表中遇到的問題以及12C的一些新特性

發(fā)布時間:2020-08-18 07:58:04 來源:網絡 閱讀:4851 作者:Taibai_wu 欄目:關系型數據庫

這是一篇oracle小白由于領導壓迫,不堪折磨,苦苦掙扎研究所作。
詳細安裝文檔在上篇博客,安裝中可能遇到的錯誤以及親測可用的解決方式已給出。

Oracle12C與11g版本的差異

在創(chuàng)建用戶時遇到一個問題(我的發(fā)現都是根據遇到的問題來研究的):
問題描述:
在創(chuàng)建服務所需用戶時提示ORA-65096:公用用戶名或角色無效。
問題原因:
根據Oracle官方文檔得知,12C版本創(chuàng)建公有用戶名(CDB用戶)必須以c##或C##開頭,測試后發(fā)現登陸時也必須加C##用戶名登陸。
【Oracle12C】部署服務建立用戶及建庫建表中遇到的問題以及12C的一些新特性

CDB與PDB解釋:
Oracle 12C引入了CDB與PDB的新特性,在ORACLE 12C數據庫引入的多租用戶環(huán)境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。
CDB全稱為Container Database,中文翻譯為數據庫容器,PDB全稱為Pluggable Database,即可插拔數據庫。
在ORACLE 12C之前,實例與數據庫是一對一或多對一關系(RAC):即一個實例只能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關系。當進入ORACLE 12C后,實例與數據庫可以是一對多的關系。
下面是官方文檔給出的概念圖:
【Oracle12C】部署服務建立用戶及建庫建表中遇到的問題以及12C的一些新特性
我的理解:這個結構有點類似于docker的關系。一個管理庫(CDB)來管理所有的可插拔數據庫(PDB),如果你想在PDB庫中創(chuàng)建用戶是不用加c##的,但是同樣這個用戶也只能在這一個PDB庫中使用,無法應用到其他庫中。
創(chuàng)建公有用戶的示例sql:
CREATE USER c##test IDENTIFIED BY test DEFAULT TABLESPACE test ACCOUNT UNLOCK ;
同樣在做授權或登陸等操作時也必須加c##:
GRANT RESOURCE TO c##test;

附帶PDB與CDB有關的一些常用SQL語句:
創(chuàng)建PDB空間的示例語句(需要先創(chuàng)建表空間文件):
create tablespace TSCREDITLOG datafile '/home/oracle/app/oracle/creditdb/CREDITLOG/TSCREDITLOG01.dbf' size 20M;

查詢所有的PDB及CDB的Name:
SELECT name, pdb FROM v$services ORDER BY name;

只查看PDB庫:show pdbs;
(PDB我看到的有兩種狀態(tài) 讀寫和只讀 )

打開所有PDB庫: alter pluggable database all open;
切換到某個PDB(容器切換):ALTER SESSION SET container=NAMEPDB;
切換到CDB:alter session set container=cdb$root;
察看現在的容器的名稱:show ?conname;


操作中遇到的一些問題以及解決方式:

只是報錯為問號或亂碼:字符集不一致導致 :
運行:alter session set nls_language=american;
如果數據庫提示符都為問號亂碼:
需要在oracle用戶下.bash_profile中添加環(huán)境變量NLS_LANG
創(chuàng)建表空間失敗問題:
1.表空間文件夾授權有問題;
2.表空間文件夾不存在
創(chuàng)建表時提示創(chuàng)建失?。ㄌ崾緳嘞薏蛔?,沒有用戶等等):
檢查了創(chuàng)建用戶的腳本,在第一遍執(zhí)行的時候返回的都是授權成功或者創(chuàng)建成功但是沒有權限,所以重新執(zhí)行了一遍,問題解決(問題規(guī)律—大招:很多問題都可以通過重啟實例或者重新執(zhí)行來解決)。
創(chuàng)建表空間錯誤ORA-65048:
在可插入數據庫PDBORCL中處理當前DDL語句時出錯 ORA-00959:表空間‘TEST’不存在
只需要重啟數據庫即可解決!
?Oracle數據庫的啟動與關閉方法
??sql>shutdown abort;? ? --一一異常關閉,但是最快的關機方式,因新裝的數據庫,就沒有那么多顧忌。
sql>startup?
可以開心的正常創(chuàng)建用戶了~~

Navicat無法連接oracle12c問題,提示沒有匹配的驗證協議:
問題原因:Navicat有一個OCI.dll文件版本過低。再深入的沒研究,下面直接放找到的解決方法。
需要Oracle 的二個文件:
百度云鏈接:http://pan.baidu.com/s/1jIfQ95G 密碼:wm9l
如果沒有Navicat就去百度下一個(Nacicat for oracle)
這里直接把 instantclient-basic-nt-12.1.0.2.0.zip 解壓到 Navicat for Oracle 的解壓目錄的instantclient_10_2目錄下
然后這個目錄下多了instantclient_12_1 這個目錄 ,然后再把instantclient-sqlplus-nt-12.1.0.2.0.zip 解壓到 instantclient_12_1下
完成
最后打開Navicat for Oracle 單擊 工具->選項-> OCI
這里有二個選項 參考我的路徑就知道了
OCI 你的路徑\instantclient_12_1.oci.dll
SQL 你的路徑\instantclient_12_1.sqlplus.exe
【Oracle12C】部署服務建立用戶及建庫建表中遇到的問題以及12C的一些新特性

然后新建連接,連接數據庫:
【Oracle12C】部署服務建立用戶及建庫建表中遇到的問題以及12C的一些新特性
搞定。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI