您好,登錄后才能下訂單哦!
alter session set container = PDBORCL;
然后sqlplus登錄就可以查到scott用戶了,但是我們?nèi)粘J褂每隙ㄊ莗lsql用的比較多,plsql登錄會報錯:
ORA-12514: TNS: 監(jiān)聽程序當前無法識別連接描述符中請求的服務(wù)
3.又按照網(wǎng)上說的方法謝了一個觸發(fā)器,讓pdb自動開啟:
CREATE OR REPLACE TRIGGER open_all_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'alter pluggable database all open'; END open_all_pdbs;登錄還是報12514,好吧,先來看看這個報錯能不能解決。
于是cmd窗口查看監(jiān)聽狀態(tài),lsnrctl status
結(jié)果是果然沒有pdborcl這個監(jiān)聽,怎么辦?繼續(xù)找答案,最后才發(fā)現(xiàn)原來我在安裝數(shù)據(jù)庫的時候,全局數(shù)據(jù)庫名使用的的是數(shù)據(jù)庫名+域名的形式,比如我的是orcl.microdone.cn, 但是我添加的pdborcl卻使用的是pdborcl,于是也改成pdborcl.microdone.cn,最后用plsql登錄,perfect,完美登錄,查詢scott用戶,查到了??!
接著我把觸發(fā)器也刪了,登錄pdb也是沒有問題的,說明直接原因還是tns配置的問題。
總結(jié):我是在 http://www.itpub.net/thread-1847024-1-1.html 這篇文章中得到啟發(fā)的,個人認為最終的原因還是在建實例的時候,CDB的global db name使用的是db name+domain的形式,而PDB使用的global db name是db name,導致在添加tns配置的時候也是只使用了db name,應(yīng)該要加上domain。
但是文章中說的要配置listener.ora文件,我沒有配置,還是原有的配置,這里到底需不需要配置,不是太明白,往后再研究。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\app\oracle12c\product\12.1.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle12c\product\12.1.0\dbhome_1\bin\oraclr12.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。