关于sys,system,普通用户conn xx/xx@xx 登陆等密码验证

拥有SYSDBA和SYSOPER权限的用户,可以执行类似CREATE DATABASE、DROP DATABASE、RECOVER、STARTUP、SHUTDOWN之类的操作。这两个权限不但很高,而且很特殊。因为这些用户不能通过数据库进行验证。当数据库关闭后,如果一个拥有SYSDBA权限的用户要启动数据库,那么这个用户的验证肯定要放在数据库之外。

因此Oracle提高了操作系统验证和密码文件验证两种方式。而ORAPWD正是Oracle用来生成密码文件的工具。

密码文件一般放在ORACLE_HOME/dbs目录下,对于WINDOWS环境,则是ORACLE_HOME\database目录。文件名称为orapw + $ORACLE_SID。

这个命令很简单:

$ orapwd -h
Usage: orapwd file= password= entries=

  where
    file - name of password file (mand),
    password - password for SYS (mand),
    entries - maximum number of distinct DBA and OPERs (opt), 
  There are no spaces around the equal-to (=) character.

创建密码文件可以重新设置SYS用户的密码:

$ sqlplus /nolog

SQL*Plus: Release 9.2.0.4.0 - Production on 星期五 4月 10 01:44:03 2009

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn sys/abc@bjtest as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied


SQL> conn sys/test@bjtest as sysdba
已连接。
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production中断开

可以看到指定bjtest服务名的时候,是没有使用操作系统验证的,可以看到目前SYS用户的密码是TEST。

下面通过ORAPWD工具新建一个密码文件,指定一个新的密码:

$ cd $ORACLE_HOME/dbs
$ mv orapwbjtest orapwbjtest.bak
$ orapwd file=orapwbjtest password=newpasswd entries=100

其中password用来设置SYS用户密码,而entries表示密码文件中可以保存多少条记录。需要注意,这个值并不是一个确切的数量,真正可以保存的记录数可能会有所出入,这和1个操作系统块能保存多少条记录有关系。

下面看看新密码是否生效:

$ sqlplus /nolog

SQL*Plus: Release 9.2.0.4.0 - Production on 星期五 4月 10 01:45:50 2009

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn sys/test@bjtest as sysdba
ERROR:
ORA-01031: insufficient privileges


SQL> conn sys/newpasswd@bjtest as sysdba
ERROR:
ORA-01031: insufficient privileges


SQL> conn / as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 9432971568 bytes
Fixed Size                   756016 bytes
Variable Size             838860800 bytes
Database Buffers         8589934592 bytes
Redo Buffers                3420160 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn sys/test@bjtest as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied


警告: 您不再连接到 ORACLE。
SQL> conn sys/newpasswd@bjtest as sysdba
已连接。

可以看到将原有的密码文件替换后,新的密码文件并不会当时生效,从返回的错误ORA-1031也可以看出这个问题。

需要Oracle重新启动,加载新的密码文件后才可以生效,这是SYS密码已经变为新设置的密码了。

 

 

也就是说conn sys/iadmin@orcl  as sysdba 是通过orapwdORCL文件来进行验证的

conn scott/iadmin@orcl不是通过orapwdORCL文件来进行验证的验证的

Remote_login_passwordfile设置成none

将直接禁用口令文件验证,sysdba用户只能通过操作系统认证登录数据库。此时的登录将会收到报错:

ORA-01017: invalid username/password; logon denied

 

posted on 2017-09-26 19:09  18520833632  阅读(274)  评论(0编辑  收藏  举报

导航