最近的时间,在搞数据库的安全加固问题,关于数据库中关于sysdba 权限的登录,通过最近的一些实践和测试,在这里记录一下: 数据库用sysdba 登录的验证有两种方式,一种是通过os 认证,一种是通过密码文件验证;登录方式有两种,一种是在数据库主机直接登录(用os 认证的方式),一种是通过网络远程登录;需要设置的参数有两个,一个是SQLNET.AUTHENTICATION_SERVICES ,一个是REMOTE_LOGIN_PASSWORDFILE。 os 认证:如果启用了 os 认证,以 sysdba 登录,那么我们只要用oracle 软件的安装用户就能登录:sqlplus “/ as sysdba”。如果我们要禁用os 认证,只利用密码文件登录,我们首先要有一个密码文件: D:\oracle\ora92\database>orapwd file=PWDoralocal.ora password=mypassword entries=10; D:\oracle\ora92\database> 然后我们要把$ORACLE_HOME/network/admin/sqlnet.ora中设置: SQLNET.AUTHENTICATION_SERVICES= none 注意一下,密码文件只在数据库启动的时候加载进去,一旦加载进去,密码文件就脱离了oracle 管理,所以我们用orapwd 新建密码文件后,里面指定的密码要在数据重启后才能生效: D:\oracle\ora92\database>sqlplus "sys/mypassword as sysdba" SQL*Plus: Release 9.2.0.1.0 - Production on Fri May 16 21:59:42 2008 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ERROR: ORA-01031: insufficient privileges Enter user-name: ERROR: ORA-01017: invalid username/password; logon denied Enter user-name: ERROR: ORA-01017: invalid username/password; logon denied SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus ### 这里我们通过改 SQLNET.AUTHENTICATION_SERVICES= (NTS)用 os 认证登录数据库: sys@ORALOCAL(192.168.50.29)> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. sys@ORALOCAL(192.168.50.29)> sys@ORALOCAL(192.168.50.29)> sys@ORALOCAL(192.168.50.29)> sys@ORALOCAL(192.168.50.29)> startup ORACLE instance started. Total System Global Area 135338868 bytes Fixed Size 453492 bytes Variable Size 109051904 bytes Database Buffers 25165824 bytes Redo ...