我已经安装了Oracle 12c,但在创建第一个数据库并使用它时遇到了问题。 我运行SQL Developer并使用" hr"用户,但它一直告诉我该帐户已被锁定。我搜索了stackoverflow的答案和官方文档,并尝试解锁它:
ALTER USER HR IDENTIFIED BY password ACCOUNT UNLOCK;
但没有成功。我收到错误ORA01918,意味着用户不存在。
然后我尝试使用在安装时创建的用户(SYS as SYSDBA),但之后它说用户/密码不正确。我很确定我已经在我的系统上正确安装了Oracle 12c,这是Windows 8.1 x64。
我该怎么办?请帮我。
我不明白的其他事情是否是数据库"相当于MySQL" Schema"? "连接"是连接到特定的数据库,是吗? 谢谢。
答案 0 :(得分:5)
您是如何配置数据库的?您检查了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)
)
)
打开所有PDB
要在登录后立即打开所有/特定PDB,请在CDB中创建 AFTER STARTUP 系统级别触发器。
因为,PDB不是通过CDB启动而打开的。我们来看看:
SHUTDOWN IMMEDIATE;
STARTUP;
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBP6 MOUNTED
因此,为了让所有PDB自动打开,请执行以下操作:
执行“ 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"