oracle超级用户connection

 oracle中的口令不是不能够与用户名相同吗?但为什么可以以sys/sys as sysdba这样的方式登录ORACLE数据库呢?

解答:

密码设成什么样式可以通过profile来约束,但是默认一般可以设置为与用户名同名;
另外sys/sys as sysdba这种登录方式一般用得都是操作系统验证方式,并不验证密码,你可以试试,随便输一个密码或者干脆不输入密码都可以的。例如:
sqlplus sys/123 as sysdba
sqlplus / as sysdba
进入后执行show user命令,会看到一样都是sys用户

sys/admin as sysdba

解锁用户和更改用户密码:

alter user scott account unlock;

 

 

 

 


SQL> alter user system identified by admin;

用户已更改。

SQL> alter user scott identified by tiger;

 

解释中现象:

Oracle的口令文件的作用是存放所有以sysdba或者sysoper权限连接数据库的用户的口令,如果想以sysdba权限远程连接数据库,必须使用口令文件,否则不能连上,由于sys用户在连接数据库时必须以sysdba or sysoper方式,也就是说sys用户要想连接数据库必须使用口令文件。安装完oracle,还没有给普通用户授予sysdba权限,口令文件中只存放了sys的口令,如果之后把sysdba权限授予了普通用户,那么此时会把普通用户的口令从数据库中读到口令文件中保存下来,这时必须要求数据库处于open状态。


如果数据库的sysdba是通过数据库认证的,那么密码的信息就保存在这个文件中,如果不小心把sys的密码忘记了该怎么办呢?


第一步,将Oracle的sysdba登录修改为os认证:

F:\oracleintall\intall1\product\11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora

sqlnet.ora文件修改为:


SQLNET.AUTHENTICATION_SERVICES= (NTS)


这时候只要是属于ORA_DBA组的用户就可以不用密码而以sysdba登录数据库了,如sqlplus sys as sysdba,甚至是指定了一个错误的密码也可以登录sqlplus sys/aaaaa@orcl as sysdba;,因为这时候不检查密码,实际上根本不检查是不是sys用户,只要指定了as sysdba 任何用户都可以登录。


第二步,重新建立口令文件:
orapwd file=Dorapwd file=F:\oracleintall\intall1\product\11.2.0\dbhome_1\database\PWDoracle.ora password=admin



第三步,将数据库登录改为数据库认证:(:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\sqlnet.ora)


SQLNET.AUTHENTICATION_SERVICES= (NONE)


这时候再以不正确的密码登录就会得到错误:ORA-01017: invalid username/password; logon denied


以第二步指定的密码则可以正确登录:sqlplus sys/admin@orcl as sysdba;



 可以使用ORAPWD.EXE 工具修改密码。

把原来的密码文件可以删除的,再重建
 开始菜单->运行->输入‘CMD’,打开命令提示符窗口,输入如下命令:
 orapwd file=F:\oracleintall\intall1\product\11.2.0\dbhome_1\database\PWDoracle.ora password=sys



 

你可能感兴趣的:(oracle超级用户connection)