【问题标题】:Oracle DB 12c: sqlplus as sysdba causes ORA-01017Oracle DB 12c:sqlplus as sysdba 导致 ORA-01017
【发布时间】:2017-04-15 05:37:30
【问题描述】:

美好的一天。如果我这样做 sqlplus user/oracle@db 我已经成功连接到 db。

如果我这样做 sqlplus user/oracle@db as sysdba 我有错误 ORA-01017。

但是在服务器上这个命令执行成功了。

我的 tnsnames.ora:

db =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.175)(PORT = 1521))
    )
    (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = orcl)
    )
  )

我也不能sqlplus /@db as sysdba。在sqlplus user@db as sysdba 之后,我输入了密码,也出现了这个错误。在服务器上执行没有错误。有什么问题?

带有 Win2008、Oracle 12c 的 Oracle VirtualBox

【问题讨论】:

    标签: oracle oracle12c


    【解决方案1】:

    完全可以从远程计算机以 SYSDBA 身份连接,就像您所做的那样:指定密码,而不依赖于操作系统身份验证机制(操作系统身份验证不参与远程身份验证过程,例如)。

    只有,您必须激活密码文件机制(默认情况下禁用)。

    为此,请将参数remote_login_passwordfile 的值更改为sharedexclusive。如果是shared,它适用于该机器上运行的所有数据库,并且只能包含SYS 用户(如果是exclusive,它可以包含任何用户,其范围是目标数据库)。

    重要提示:只有在启用密码文件并授予他们SYSDBAsysoper 权限之后,用户才会被添加到密码文件中;即不会自动添加预先存在的用户 (!),您必须重新授予他们 SYSDBASYSOPER 角色。

    最后,这个视图可以让您查看密码文件的逻辑内容

    select * from v$pwfile_users;
    

    更多详情请见Creating and Maintaining a Password File

    【讨论】:

      【解决方案2】:

      只有在获得许可的情况下,您才能使用as sysdba。运行

      GRANT SYSDBA TO user;
      

      为了允许这样做。

      sqlplus /@db as sysdba 无法从远程计算机上运行 - 这会将数据库打开到整个世界,每个人都可以在没有任何密码的情况下以 SYSDBA 权限连接!

      sqlplus /@db as sysdba 仅允许来自本地计算机,因为您已经(通常)作为操作系统用户“oracle”进行了身份验证。

      【讨论】:

      • 这是一个很好且可以接受的解决方案,谢谢,但是如何处理系统用户?有什么解决办法吗?
      • system user 是什么意思?
      • 用户名为system,可用于连接
      • 如果你的意思是Oracle用户SYSTEM:一个Oracle数据库有几个内部账户,SYSSYSTEM只是其中两个,还有更多。让它们保持原样。
      猜你喜欢
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多