你是如何配置你的数据库的?您是否检查了该选项Pluggable database
?如果是,请确保您登录PDB
并不是CDB
.
请阅读Oracle 12c 安装后强制步骤 https://lalitkumarb.wordpress.com/2014/10/01/mandatory-steps-for-12c-installation/.
默认情况下,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)
)
)
打开所有 PDB
要在登录后立即打开所有/特定 PDB,请创建启动后CDB 中的系统级触发器。
因为,PDB 不是通过 CDB 启动打开的。让我们来看看 :
SHUTDOWN IMMEDIATE;
STARTUP;
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBP6 MOUNTED
因此,为了让所有 PDB 自动打开,请执行以下操作:
Do, “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/password@PDBORCL AS SYSDBA
SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
sqlplus scott/tiger@pdborcl
SQL> show user;
USER is "SCOTT"