Oracle Database12c ORA 01918和连接错误

时间:2014-10-27 15:50:24

标签: database oracle oracle12c

我已经安装了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"? "连接"是连接到特定的数据库,是吗? 谢谢。

1 个答案:

答案 0 :(得分:5)

您是如何配置数据库的?您检查了Pluggable database的选项吗?如果是,请确保您登录PDB而不是CDB

请阅读Oracle 12c Post Installation Mandatory Steps

默认情况下,pre-installedSCOTTHR用户位于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"