1

我刚刚在 Redhat 5 上安装了 11g2。我使用 sqlplus 登录如下:

$sqlplus sys/abcabc as sysdba

我创建了一个用户如下:

sqlplus> create user "xyz" 
           profile "DEFAULT" 
           identified by "abcabc" 
           default tablespace "MYTAB" 
           temporary tablespace "TEMP" 
           account unlock;

sqlplus> grant dba to "xyz"

sqlplus> commit

sqlplus 报告用户已创建并已授予 dba。sqlplus 没有报告任何错误。

现在,当我尝试按如下方式登录时:

$sqlplus xyz/abcabc

我再次收到登录提示,重试 3 次后,我被踢出局。

但是,如果我按如下方式登录:

$sqlplus xyz/abcabc as sysdba

我登录了。

可能是什么问题呢?我之前多次遵循完全相同的程序来创建用户,并且它总是有效的。这次我需要以 sysdba 身份登录有什么不同?

谢谢

4

2 回答 2

2

您确定要创建区分大小写的用户名吗?那将是非常非常不寻常的。

当您使用双引号将 Oracle 标识符括起来时,您是在要求 Oracle 将其视为区分大小写的标识符。所以当你

create user "xyz"

您要求输入区分大小写的用户名。许多工具在传递区分大小写的标识符时不会遇到问题,您必须担心在您的 shell 中正确转义双引号。

最有可能的是,您真的不想要区分大小写的标识符。您只想使用标准的不区分大小写的标识符

 create user xyz
     profile "DEFAULT" 
     identified by "abcabc" 
     default tablespace "MYTAB" 
     temporary tablespace "TEMP" 
     account unlock;

我希望从表空间名称和配置文件名称中删除双引号,但这不会导致您的问题。

于 2012-10-26T23:23:15.850 回答
0

但是,如果我按如下方式登录:

$sqlplus xyz/abcabc as sysdba

我登录了。

您还可以像这样登录:

$sqlplus / as sysdba

这是因为/ as sysdbaOracle 依赖于操作系统身份验证的原因。如果您的操作系统用户是dba组的一部分(在 Unix 上)或具有管理员权限(在 Windows 上),那么您就在其中。

但是无论您是否指定了用户,您都是 SYS。这很危险,因为 SYS 是数据字典的所有者,因此如果您不知道自己在做什么,很容易彻底破坏数据库。

于 2012-10-27T06:40:27.650 回答