溫馨提示×

溫馨提示×

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

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

oracle12c解決plsql登錄CDB和PDB問題

發(fā)布時間:2020-08-17 16:52:47 來源:ITPUB博客 閱讀:621 作者:clarkbg 欄目:關(guān)系型數(shù)據(jù)庫
今天閑來無事,在win10上安裝了oracle12c,想著平時可以操作操作,在安裝過程中有一個創(chuàng)建為容器數(shù)據(jù)庫的勾選,雖然不明白是什么意思,我還是勾選了。

oracle12c解決plsql登錄CDB和PDB問題

后來在使用plsql登錄的時候,發(fā)現(xiàn)沒有scott用戶,what?難道是12c取消了scott用戶嗎?網(wǎng)上轉(zhuǎn)了一圈發(fā)現(xiàn),原來12c引入了CDB和PDB的概念,具體內(nèi)容可以自行去了解一下,這里就再詳解了?,F(xiàn)在的問題是,我正常連接的數(shù)據(jù)庫是CDB,但是scott用戶又是在PDB下的,我也不想去在CDB 下重新新建scott用戶和相關(guān)表,所以試著去了解了下怎么用plsql直接登錄到PDB,網(wǎng)上的方法基本是在sqlplus下切換CDB與PDB,我試了網(wǎng)上的方法:
1.在tns文件里添加
PDBORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdborcl.microdone.cn)
    )
  )

2.去sqlplus 執(zhí)行
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用戶,查到了??!
oracle12c解決plsql登錄CDB和PDB問題 
接著我把觸發(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))
    )
  )
 


向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI