Oracle 11g SYS用户认证方式总结

OS: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
uname -r: 2.6.9-22.EL
DB: Oracle Database 10g Release 10.2.0.1.0
第一种情况:初始化参数 remote_login_passwordfile 设置为 EXCLUSIVE


查看当前参数的设置值方法如下:

登陆Oracle主机,连上Oracle服务器。

select value from v$parameter t where t.NAME='remote_login_passwordfile';


1. 本地SYS用户登录的情况:
在  $ORACLE_HOME/network/admin/ 目录下查看  sqlnet.ora,默认为:
    NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

    此时本地sys用户的认证方式为系统认证,即可以 sqlplus / as sysdba 方式登录,不检查口令文件。

   如果在sqlnet.ora 中额外添加:
  SQLNET.AUTHENTICATION_SERVICES= (NTS)  或  SQLNET.AUTHENTICATION_SERVICES= (NONE)
  则本地SYS用户必须以 sqlplus sys/123456 as sysdba 方式登录。
  此时本地sys用户认证方式为口令认证,需要检查口令文件,口令文件格式为 orapwSID。如口令文件丢失,则报ORA-01031。
重建口令文件的方法: orapwd file=orapworcl password=123456 entries=2

2. 远程SYS用户登录的情况:
     远程SYS用户登录,一律以 sqlplus sys/123456@orcl as sysdba  的方式登录(无论服务器端sqlnet.ora中如何设置)。
 
     若远程SYS用户登录时报:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务  
     此时检查 $ORACLE_HOME/network/admin/  目录下的listener.ora 文件,根据以下内容进行修改即可。

     LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
    )
  )
localhost需要设置你Oracle服务器的IP,因为我的服务器和客户端都在同一台机器上。
     修改完成后,需要重启下lsnrctl 服务:lsnrctl reload

第二种情况:初始化参数 remote_login_passwordfile 设置为 NONE
sqlnet.ora 中为默认设置,即NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

此时,远程SYS用户无法登录。

注:原文取自:http://blog.163.com/jam_wx731/blog/static/140672287201031245128314/

猜你喜欢

转载自beijishiqidu.iteye.com/blog/1867500