你是如何配置数据库的?您是否检查了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