`
zpball
  • 浏览: 919616 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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用户本地登陆


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>  

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用户本地登陆

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>  

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会失败,给出用户名和密码就可以成功登陆。

 
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>  

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> 

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

C:\>sqlplus sys/change_on_install as sysdba   
ERROR:   
ORA-01031: insufficient privileges  
Enter user-name:  

C:\>sqlplus sys/change_on_install as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name: 

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

 
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:  

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> 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>  

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> select * from v$pwfile_users;   
  
USERNAME                        SYSDB    SYSOP   
------------------------------  -------  -------   
SYS                             TRUE     TRUE  

SQL> select * from v$pwfile_users;

USERNAME                        SYSDB    SYSOP
------------------------------  -------  -------
SYS                             TRUE     TRUE 


每次使用grant sysdba/sysoper授予新用户特殊权限或是alter user命令修改拥有sysdba/sysoper权限的用户密码的时候,Oracle都会自动的同步密码文件,这样保证在数据库没有打开的情况拥有特殊权限的用户能正常的登陆数据库以进行管理操作。
 SQL> grant sysdba to logicgate;   
Grant succeeded.   
  
SQL> select * from v$pwfile_users;   
  
USERNAME                       SYSDB     SYSOP   
------------------------------- -------- --------   
SYS                             TRUE     TRUE  
LOGICGATE                       TRUE     FALSE  

SQL> grant sysdba to logicgate;
Grant succeeded.

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB     SYSOP
------------------------------- -------- --------
SYS                             TRUE     TRUE
LOGICGATE                       TRUE     FALSE 

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

C:\>orapwd   
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>   
  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)  

C:\>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>
  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同步密码文件。

C:\>orapwd file=%oracle_home%\database\PWDepcit.ora password=temp entries=20 force=y;   
  
C:\>sqlplus sys/temp as sysdba   
Connected to:   
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production   
With the OLAP and Data Mining options   
  
SQL> select * from v$pwfile_users;   
  
USERNAME                        SYSDB    SYSOP   
------------------------------- -------- --------   
SYS                             TRUE     TRUE  

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

C:\>sqlplus sys/temp as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options

SQL> select * from v$pwfile_users;

USERNAME                        SYSDB    SYSOP
------------------------------- -------- --------
SYS                             TRUE     TRUE
 
分享到:
评论

相关推荐

    Oracle用sysdba登录问题

    当使用SYSDBA模式登录Oracle数据库时,实际上是在告诉数据库服务器:“我是以系统管理员的身份登录,请赋予我最高权限。”这种方式并不需要提供具体的用户名和密码,而是利用操作系统(OS)级别的身份验证机制来确认...

    Sys和system用户、sysdba 和sysoper系统权限、dba角色的区别

    `sys`用户在登录时只能以`sysdba`或`sysoper`身份,而`system`用户在默认情况下只能以普通身份登录,但可以通过授予`sysdba`或`sysoper`权限来提升其登录权限。 `dba`角色是一个包含多个系统权限的角色,通常授予...

    oracle sysdba 密码解释

    此时,即使用户拥有`SYSDBA`或`SYSOPER`权限,也无法通过SQL*Plus或其他客户端工具以这些身份登录。 - **SHARED**:表示使用共享密码文件。这种类型的密码文件允许多个用户同时访问数据库,但只能以`SYSOPER`权限...

    dba和sysdba的区别

    在实际应用中,SYSDBA权限是通过Oracle提供的工具和命令行接口授予的,例如在SQL*Plus中可以使用如下命令授予SYSDBA权限: ```sql GRANT SYSDBA TO 用户名; ``` 同样地,撤销SYSDBA权限也是通过工具和命令行接口...

    解决windows10下"sqlplus / as sysdba"执行提示无权限问题

    主要介绍了解决windows10下"sqlplus / as sysdba"执行提示无权限问题,在文中给大家介绍了Windows下sqlplus “/as sysdba”登陆报“ORA-01031: insufficient privileges”处理方法,感兴趣的朋友跟随脚本之家小编...

    oracle用户权限

    ### Oracle用户权限:解决PL/SQL Developer中SYSTEM用户只能以SYSDBA身份登录,而不能以NORMAL身份登录 #### 背景与问题概述 在Oracle数据库管理中,经常遇到的一种情况是,作为数据库管理员(DBA),我们需要对...

    Oracle用户权限及权限设置

    - 使用`sqlplus`工具登录Oracle,如`sqlplus / as sysdba`以sys身份登录,或`sqlplus username/password`以普通用户登录。 - 用户管理涉及创建新用户、更改密码(如`ALTER USER scott IDENTIFIED BY tiger`)。 3...

    oracle登录报错案例分析

    通过上述案例分析,我们可以了解到当遇到Oracle登录权限不足的问题时,应首先检查用户的权限配置以及系统中的用户组设置。对于本案例中的情况,将Oracle用户添加到正确的管理权限组即可解决问题。在实际应用中,还...

    Oracle权限

    - **SYS用户登录**:使用`SQLPLUS / AS SYSDBA`或`SQLPLUS SYS AS SYSDBA`命令可以登录到SYS用户。 - **SCOTT用户登录**:使用`SQLPLUS SCOTT/TIGER`命令登录SCOTT用户。 #### 四、创建和管理用户 - **创建新用户*...

    Oracle中两个主要的用户、三个重要权限的区别和联系

    - **登录方式**:SYS用户登录时通常采用AS SYSDBA或AS SYSOPER模式,以便根据实际需求调整其权限级别。 - **SYSTEM用户**: - **特点**:SYSTEM用户也是一个预定义的用户,但其权限相对SYS用户较低。 - **权限**...

    Oracle 8x监控sysdba角色用户登陆情况

    在Unix平台的Oracle数据库产品中,每次当用户以sysdba权限登陆数据库时,系统会自动创建一个名为ora_.aud的文件,该文件默认在$ORACLE_HOME/rdbms/audit目录下。该文件记录了连接的用户、终端机器的名称以及登陆时间...

    oracle查看用户权限

    7. 查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限) 8. 查看Oracle提供的系统权限 9. 查看一个用户的所有系统权限 ### 1. 查看所有用户 为了获取Oracle数据库中所有用户的列表,可以使用以下几种...

    基于数据库的通用权限管理模块的设计与实现

    具体来说,系统中会预先设定一个具有管理员权限的固定用户(如SYSDBA),当其他用户尝试登录系统时,实际上是SYSDBA代为执行登录操作,并验证用户提供的信息是否正确。类似地,在用户尝试访问数据时,也是通过SYSDBA...

    数据泵导入导出

    sqlplus / as sysdba ``` ##### 步骤2:创建目录 在SQL*Plus中执行命令来创建一个目录对象: ```sql CREATE DIRECTORY 目录名 AS '路径'; ``` 例如: ```sql CREATE DIRECTORY dmp目录 AS 'D:/expdp_dmp'; ``` ###...

    Oracle设置用户权限

    完成用户创建和权限分配后,需要验证用户是否能够成功登录。 1. **退出当前会话**: - 使用`EXIT`命令退出当前的SQL*Plus会话。 2. **重新登录**: - 再次使用SQL*Plus登录,输入命令`sqlplus lkSoft/admin`...

    oracle用户创建及权限设置

    ### Oracle用户创建及权限设置详解 #### 一、Oracle用户管理概述 在Oracle数据库中,用户管理和权限控制是非常重要的组成部分,它们确保了数据的安全性和访问的合理性。通过创建不同的用户并赋予相应的权限,可以...

    10 oracle管理权限和角色 PPT

    19. 保留字角色(Reserved Roles):Oracle有一些保留的角色,如SYSDBA和SYSOPER,它们提供超级管理员级别的权限。 20. 审计权限(Auditing Privileges):Oracle提供审计功能,可以记录用户对权限的使用情况,以便...

    oracle用户区分

    在使用`sys`和`system`用户时,一个关键的区别在于,以`as sysdba`登录时,无论是`system`还是其他用户,都会以`sys`用户的权限运行,这意味着创建的对象将归属于`sys`用户,而不是登录的原始用户。因此,这需要特别...

    sys用户与system用户.txt

    【 system 】用户只能用 normal 身份登陆 em ,除非你对它授予了 sysdba 的系统权限(grant sysdba to system)或者 sysoper 系统权限。 【 sys 】用户具有 “SYSDBA” 或者 “SYSOPER” 系统权限,登陆 em 也只能用...

Global site tag (gtag.js) - Google Analytics