2017-02-03 71 views
0

我試圖解鎖HR用戶;我嘗試了所有可能的方式,但我無法實現它。在Oracle 12C中解鎖HR用戶

下面是我緊跟在試圖實現這些步驟:

步驟1:更新我tnsname.ora文件

PDBORCL = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = pdborcl) 
    ) 
) 

步驟2:從CBD$ROOT切換容器PDBORCL

步驟3ALTER SESSION SET CONTAINER = pdborcl;

步驟4ALTER PLUGGABLE DATABASE open;

步驟5ALTER USER hr IDENTIFIED BY hr ACCOUNT unlock;

步驟6conn hr/hr @pdborcl;

截至到第5步,我得到的一切運作良好預期,但對第6步,我得到這個錯誤:

ORA-01045: hr user lacks create session privileges; logon denied

我試圖通過如下登錄授予權限:

connect sys/password as sysdba; 

grant create session to hr 

結果:grant succeeded

現在,當我再次嘗試連接到HR模式運行

conn hr/hr @pdborcl; 

我再次得到相同的以前的錯誤。

有什麼解釋呢?

當我設置SID = pdborcl從SQL Developer中,我得到這個錯誤:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

我在做什麼錯了,我怎樣才能解決這些錯誤?

+1

您必須使用服務名稱從SQL Developer進行連接,而不是SID - 在連接對話框中選擇其他選項。但是,如果你修正SQL \ * Plus的錯誤,你將會遇到相同的ORA問題,所以這是個問題。 –

+0

我已經使用服務名稱即pdborcl連接了,它已連接。但爲什麼呢,連接後我無法看到HR表。我錯過了任何一步? – jase

回答

2

一旦使用sysdba連接,您需要將會話設置爲pdb,然後授予HR用戶創建會話訪問權限。

conn/as sysdba alter session set container = pdborcl; 授權創建會話給HR; 退出 sqlplus hr/hr @ pdborcl 已連接。

+0

這是爲什麼,我連接後無法看到HR表,這裏:sqlplus hr/hr @ pdborcl – jase

+0

如果HR不包含任何表,那麼您將無法看到HR擁有的任何表。 –

0

您需要在pdb的tnsnames.ora文件中再添加一個條目。

PDBORCL1 = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = pdborcl1) 
    ) 
)