你是如何配置數據庫的?您是否檢查了Pluggable database
的選項?如果是,請確保您登錄到PDB
而不是CDB
。
請閱讀Oracle 12c Post Installation Mandatory Steps。
默認情況下,pre-installed
用戶喜歡SCOTT
,HR
等駐留在container database
而不是pluggable database
。
的tnsnames.ora
編輯tnsnames.ora文件添加PDB細節。例如,
PDBORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdborcl)
)
)
打開所有PDBS
登錄後立即打開所有/特定PDBS,創建一個CDB 開機後系統級觸發器。
因爲PDB沒有通過CDB開始打開。讓我們來看看:
SHUTDOWN IMMEDIATE;
STARTUP;
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBP6 MOUNTED
所以,爲了讓所有的PDBS自動開啓,這樣做:
做「SQLPLUS/AS SYSDBA
」,然後執行:
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
它創建CDB啓動後的系統級觸發器。
SQLPLUS/AS SYSDBA
最常見的誤解是關於「SQLPLUS/AS SYSDBA」的用法。
由於我們檢查了創建單個CDB的選項,因此「SQLPLUS/AS SYSDBA」命令將始終登錄到CDB。通常,開發人員用於在以SYSDBA身份登錄後直接解鎖「SCOTT」帳戶。但這裏有一個訣竅:
「SCOTT」和其他示例模式位於PDB中,而不位於CDB中。因此,您需要以sysdba身份登錄到PDB。
sqlplus SYS/[email protected] AS SYSDBA
SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
sqlplus scott/[email protected]
SQL> show user;
USER is "SCOTT"
你在容器數據庫或可插拔數據庫中運行這個嗎?確切地說,你如何連接HR並嘗試解鎖該賬戶? – 2014-10-27 16:12:40