以前在SQlPlus中连接数据库时:运行一下命令行:
    sqlplus /nolog
    connect sys/sys@Mydata as SYSDBA
    start 
    今天突然想到一个问题:当用Connect连接数据库时,数据库的实例还没有启动,
那么你用connect连接数据时输入的用户和密码,是从哪里进行验证的,这些用户的信息是从哪里得到的?
这时只是启动了服务而已呀。用户和密码是哪里得到的?    请各位高手给予解答,不胜感激!

解决方案 »

  1.   

    你去看看Oracle的三种用户验证机制。
      

  2.   

    从密码 文件里读取在,可以看我的BLOG,关于密码文件在相关信息
      

  3.   

    从密码文件中读取的。 2. 口令文件
    Oracle的口令文件的作用是存放所有以sysdba或者sysoper权限连接数据库的用户的口令,如果想以sysdba权限远程连接数据库,必须使用口令文件,否则不能连上,由于sys用户在连接数据库时必须以sysdba or sysoper方式,也就是说sys用户要想连接数据库必须使用口令文件,因此我认为在数据库中存放sys用户的口令其实没有任何意义!使用口令文件的好处是即使数据库不处于open状态,依然可以通过口令文件验证来连接数据库。开始安装完oracle,没有给普通用户授予sysdba权限,口令文件中只存放了sys的口令,如果之后把sysdba权限授予了普通用户,那么此时会把普通用户的口令从数据库中读到口令文件中保存下来,当然这时必须要求数据库处于open状态。如:
    Oracle OS认证 口令文件 密码丢失处理:http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4698293.aspx
    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    DBA1 群:62697716(满); DBA2 群:62697977
      

  4.   


    问一个问题:
    就是我吧SQLNET.ora文件中的SQLNET.AUTHENTICATION_SERVICES= (NTS)注释掉了;有密码文件。并且参数文件中的remote_login_passwordfile = EXCLUSIVE,然后我用sys/sys用户登录,这样就失败了,不知道是为什么?
    还有这个时候我用其他用户登录:SA/SA可以登录,这是为什么?