zoukankan      html  css  js  c++  java
  • OEM中无法用sys用户登录

    开始准备通过实验的方式,把这段日子来看的内容好好的实践一翻。于是乎打开了OEM,却神奇的发现不能用sys用户登录了,与此同时,其他的非sysdba用户可以登录。但是通过sqlplus可以用同样的密码作为sysdba登录,这是怎么一回事呢?

    sysdba或sysoper用户的登录有两种方式:一是通过os认证,二是通过密码文件验证。

    权限验证的大致顺序如下:

           1.根据$ORACLE_HOME/NETWORK/ADMIN下的sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES值来判定是进行os验证还是密码文件验证。 (NTS)表示为os验证;none或文件中没有该参数表示密码文件验证。

           2.os验证,根据当前用户的用户组判断是否具有sysdba权限,验证失败则进行密码文件验证

           3. 密码文件验证,参数REMOTE_LOGIN_PASSWORDFILE的值以及密码文件是否存在决定个验证的结果

    REMOTE_LOGIN_PASSWORDFILE 这个参数10.2的时候可选值有两个NONE,SHARED; 11G开始多了个exclusive(默认值)

          shared:One or more databases can use the password file. The password file can contain SYS as well as non-SYS users.

          exclusive:The password file can be used by only one database. The password file can contain SYS as well as non-SYS users.

          none: Oracle ignores any password file. Therefore, privileged users must be authenticated by the operating system.

    按照上面的顺序,先查看sqlnet.ora文件,发现SQLNET.AUTHENTICATION_SERVICES的值为nts,说明当前使用的是os认证。因为目前的认证原因,所以使用错误的密码只要是sys用户也能登录成功。所以猜测这次错误的原因是因为密码错误?

    事实上因为很久没碰了,忘记了具体的密码,于是乎更改密码 alter user sys identified by new_password; 这之后再次登录,成功。

    该类用户修改密码也有两种方法:

            alter user sys identified by new_password;

            orapwd file=PWDko.ora password=new_password entries=10 (一旦执行后,该密码文件中删除了除sys用户外的所有用户,对于曾有该权限的用户需要重新赋权

    密码文件的路径:

    linux:$ORACLE_HOME/dbs/orapw$ORACLE_SID  

    windows:$ORACLE_HOME/database/PW%ORACLE_SID%.ora

    查看密码文件中数据的状态可以查询v$pwfile_users视图

    该表中的数据会随着 grant sysdba to username而自动同步,列出拥有sysdba权限的用户

    ----------------------------------------------------------------------------------------------------------

    翻了一下以前的笔记,曾在使用pl/sql developer时,这方面遇到错误: ORA-01017:invalid username/password;logon denied

    分析思路:检查密码-->检查验证方法-->检查REMOTE_LOGIN_PASSWORDFILE-->检查密码文件情况

  • 相关阅读:
    统计数据持久化
    缓存层的实现
    C++语法疑点
    为什么需要定义虚的析构函数?
    C++ shared_ptr deleter的实现
    条件变量
    ubuntu  输入时弹出剪切板候选项
    leetcode Bitwise AND of Numbers Range
    C/C++ 字符串 null terminal
    C++ inline weak symbol and so on
  • 原文地址:https://www.cnblogs.com/archersun/p/3173069.html
Copyright © 2011-2022 走看看