1. 使用操作系统验证
2个前提必须同时满足
1)os下建立用户ORA_DBA用户组,
然后可以新建立用户或者把原来的用户加入到ORA_DBA组中,然后使用这个用户在安装了数据库的本地机器登陆或者使用安全的远程连接登陆,可以作为sysdba登录,在数据库级不需要提供密码。
2)sqlnet.ora文件中加入
SQLNET.AUTHENTICATION_SERVICES=(NTS)
下列方式都是使用os验证登陆
Sqlplus “/ as sysdba”
Sqlplus “sys/sys as sysdba”
Sqlplus “sys/sdf as sysdba” //sys口令错误
Sqlplus “scott/sdf as sysdba” //scott口令错误
此时show user 都是sys
说明;只要在登陆是有/ as sysdba。就使用os验证方式。不管是否是sys用户,或者密码是否正确。
这样存在安全隐患
2. 关闭os验证
1) 把操作系统用户的ORA_DBA组取消
2) sqlnet.ora文件SQLNET.AUTHENTICATION_SERVICES= (NONE) 关闭os认证方式
目录E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN>
2个条件满足任何一个即可。
3. 使用口令文件验证
如果当前没有使用口令文件验证。可以采用如下方法开启口令文件验证。
1.建立口令文件
C:\>orapwd file=C:\oracle\ora92\database\pwdtest.ora password=admin entries=5
口令文件名格式
pwd + sid + .ora
必须按照这个格式命名。
oracle 11g目录
C:\app\dell\product\11.2.0\dbhome_1\database
2.确认参数是否正确
Remote_login_passwordfile=exclusive
None 不使用口令文件验证,如果不使用口令文件验证时,没有用户在ora_dba组中,那么就没有任何用户可以作为sysdba进入数据库了。
Exclusive 一个数据库使用一个口令文件
Shared 多个数据库使用一个口令文件
如果remote_login_passwordfile=exclusive 而且os中有ora_dba组。那么用户如果作为ora_dba组登陆的话。仍然可以使用os的验证
Shared说明
当remote_login_passwordfile=shared时候,
在C:\oracle\ora92\database目录下仍然生成pwd+sid.ora文件。每个数据库使用自己的sys用户和对应的密码,但是不能再加入新的有sysdba权限的用户
3.重新启动数据库,sys自动被加入到口令文件中
此时。口令文件中没有任何用户。因为刚建立起来。
通过查询 select * from v$pwfile_users; 可以知道
如果利用grant sysdba to sys; 把sys加入到口令文件。会报错。
必须要重启,会自动吧sys加入进去
4. 把system用户写入口令文件中
Grant sysdba to system;
授权命令成功后。
select * from v$pwfile_users;
可以看到system已经在口令文件中
6.忘记sys口令的话,2种做饭都可以。
1)打开os认证方式,/as sysdba连接进去。 Alter user sys identified by sys;
2)通过删除口令文件.然后用orapwd命令重新建立口令文件来做.但是需要重启数据库