oracle赋权sysdba,Oracle 学习笔记:SYSDBA登陆权限问题

本文环境配置:Oracle10gR2,Windows XP

Oracle的用户信息一般来说是保存在数据字典里的,所以常规用户在Oracle数据库没有启动的时候是无法登陆的。但有两类用户例外,这就是具有sysdba或者sysoper权限的用户。Oracle sysdba或者sysoper用户的登陆有两种方式:一是通过OS认证,二是通过密码文件验证。

究竟使用哪一种验证方式以及能否成功登陆取决于三个方面的因素:

1. sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的设置

2. 参数文件中REMOTE_LOGIN_PASSWORDFILE的设置

3. 密码文件 PWD%sid%.ora

Oracle进行权限验证的大致顺序如下:

1. 根据SQLNET.AUTHENTICATION_SERVICES的值决定是进行os验证还是密码文件验证。

2. 如果是os验证,根据当前用户的用户组判断是否具有sysdba权限。如果os验证失败,则进行密码文件验证。

2. 如果是密码文件验证,REMOTE_LOGIN_PASSWORDFILE的值以及密码文件是否存在决定了验证是否成功。

1. OS 验 证

要启用os验证,就必须在qlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES=(NTS),然后在Windows中建立ora_dba用户组,把相关用户加入到这个组中(e.g., administrator),这样administrator就可以在不用提供用户名和密码(或者提供任意的用户名和密码)的情况下以sysdba身份本地登陆。因为操作系统已经代替Oracle进行了验证。

测试一:ora_dba用户本地登陆

Sql代码 icon_copy.gif

C:\>sqlplus /assysdba

Connectedto:

OracleDatabase10g Enterprise Edition Release 10.2.0.1.0 - Production

Withthe OLAPandData Mining options

SQL>

C:\>sqlplus wrong_user/wrong_passwordassysdba

Connectedto:

OracleDatabase10g Enterprise Edition Release 10.2.0.1.0 - Production

Withthe OLAPandData Mining options

SQL>C:\>sqlplus / as sysdba

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the OLAP and Data Mining options

SQL>

C:\>sqlplus wrong_user/wrong_password as sysdba

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the OLAP and Data Mining options

SQL>

测试二:非ora_dba用户本地登陆

Java代码 icon_copy.gif

C:\>sqlplus / as sysdba

ERROR:

ORA-01031: insufficient privileges

Enter user-name:

C:\>sqlplus wrong_user/wrong_password sysdba

ERROR:

ORA-01017: invalid username/password; logon denied

Enter user-name:

C:\>sqlplus sys/change_on_install as sysdba

Connected to:

Oracle Database 10g Enterprise Edition Release10.2.0.1.0- Production

With the OLAP and Data Mining options

SQL>C:\>sqlplus / as sysdba

ERROR:

ORA-01031: insufficient privileges

Enter user-name:

C:\>sqlplus wrong_user/wrong_password sysdba

ERROR:

ORA-01017: invalid username/password; logon denied

Enter user-name:

C:\>sqlplus sys/change_on_install as sysdba

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the OLAP and Data Mining options

SQL>

2. 密码文件验证

密码文件包含了被授予sysdba和sysoper权限的用户的用户名和密码。这是一个加密文件,一般来说存放在%oracle_home%/database目录下,文件名为PWD%sid%.ora。

如果要使用密码文件验证,则把sqlnet.ora改为SQLNET.AUTHENTICATION_SERVICES=none,或者从sqlnet.ora中删除SQLNET.AUTHENTICATION_SERVICES。同上匿名登陆sqlplus会失败,给出用户名和密码就可以成功登陆。

Sql代码 icon_copy.gif

C:\>sqlplus /assysdba

ERROR:

ORA-01031: insufficientprivileges

Enteruser-name:

C:\>sqlplus sys/change_on_installassysdba

Connectedtoan idle instance.

idle>C:\>sqlplus / as sysdba

ERROR:

ORA-01031: insufficient privileges

Enter user-name:

C:\>sqlplus sys/change_on_install as sysdba

Connected to an idle instance.

idle>

测试一:删除密码文件。使用用户名和密码登陆,失败!

Sql代码 icon_copy.gif

C:\>sqlplus sys/change_on_installassysdba

ERROR:

ORA-01031: insufficientprivileges

Enteruser-name:C:\>sqlplus sys/change_on_install as sysdba

ERROR:

ORA-01031: insufficient privileges

Enter user-name:

测试二:恢复密码文件,设置REMOTE_LOGIN_PASSWORDFILE=none。使用用户名和密码登陆,失败!

Sql代码 icon_copy.gif

SQL>altersystemsetremote_login_passwordfile=none scope=spfile;

System altered.

C:\>sqlplus sys/change_on_installassysdba

ERROR:

ORA-01017: invalid username/password; logon denied

Enteruser-name:SQL> alter system set remote_login_passwordfile=none scope=spfile;

System altered.

C:\>sqlplus sys/change_on_install as sysdba

ERROR:

ORA-01017: invalid username/password; logon denied

Enter user-name:

测试三:恢复密码文件,设置REMOTE_LOGIN_PASSWORDFILE为EXCLUSIVE或者SHARED。使用用户名和密码登陆,成功!

Sql代码 icon_copy.gif

SQL>altersystemsetremote_login_passwordfile=exclusive scope=spfile;

System altered.

C:\>sqlplus sys/change_on_installassysdba

Connectedtoan idle instance.

SQL>SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;

System altered.

C:\>sqlplus sys/change_on_install as sysdba

Connected to an idle instance.

SQL>

3. 密码文件

查看具有sysdba或者sysoper权限的用户:

Sql代码 icon_copy.gif

SQL>select*fromv$pwfile_users;

USERNAME                       SYSDB SYSOP

------------------------------  -------  -------

SYSTRUETRUESQL> select * from v$pwfile_users;

USERNAME SYSDB SYSOP

------------------------------ ------- -------

SYS TRUE TRUE

每次使用grant sysdba/sysoper授予新用户特殊权限或是alter user命令修改拥有sysdba/sysoper权限的用户密码的时候,Oracle都会自动的同步密码文件,这样保证在数据库没有打开的情况拥有特殊权限的用户能正常的登陆数据库以进行管理操作。

Sql代码 icon_copy.gif

SQL>grantsysdbatologicgate;

Grantsucceeded.

SQL>select*fromv$pwfile_users;

USERNAME                       SYSDB SYSOP

------------------------------- -------- --------

SYSTRUETRUE

LOGICGATETRUEFALSESQL> grant sysdba to logicgate;

Grant succeeded.

SQL> select * from v$pwfile_users;

USERNAME SYSDB SYSOP

------------------------------- -------- --------

SYS TRUE TRUE

LOGICGATE TRUE FALSE

使用orapwd命令可以重建密码文件。

Java代码 icon_copy.gif

C:\>orapwd

Usage: orapwd file=password=entries=force=

where

file - name of password file (mandatory),

password - passwordforSYS (mandatory),

entries - maximum number of distinct DBA (optional),

force - whether to overwrite existing file (optional)C:\>orapwd

Usage: orapwd file=password=entries=force=where

file - name of password file (mandatory),

password - password for SYS (mandatory),

entries - maximum number of distinct DBA (optional),

force - whether to overwrite existing file (optional)

其中文件名和密码是必需的。entries设置了密码文件可包含的dba用户的最大数目。force定义了是否覆盖当前文件。重建密码文件会清除系统内除了sys用户以外所有sysdba用户的密码。必须使用grant sysdba同步密码文件。

Java代码 icon_copy.gif

C:\>orapwd file=%oracle_home%\database\PWDepcit.ora password=temp entries=20force=y;

C:\>sqlplus sys/temp as sysdba

Connected to:

Oracle Database 10g Enterprise Edition Release10.2.0.1.0- Production

With the OLAP and Data Mining options

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP

------------------------------- -------- --------

SYS                                  TRUE   TRUE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值