`
zpball
  • 浏览: 897799 次
  • 性别: 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
 
分享到:
评论

相关推荐

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

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

    sys用户与system用户.txt

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

    oracle查看用户权限

    1查看所有用户 2查看用户或角色系统权限(直接赋值给用户或角色的系统权限) 3查看角色(只能查看登陆用户拥有的角色)所包含的权限 4查看用户对象权限: 5查看所有角色 6查看用户或角色所拥有的角色 7.查看哪些用户有...

    Oracle数据库的启动和关闭

    要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆。一般我们常用INTERNAL用户来启动和关闭数据库(INTERNAL用户实际上 是SYS用户以SYSDBA连接的同义词)。...

    oracle用户权限

    解决PL-sql里面system只能以sysdba身份登录,不能以normal身份登录

    oracle用户权限管理使用详解

    1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是sys。登录语句:SQL&gt; conn sys/sys as sysdba; 2)system用户是管理操作员,权限也很大。具有sysoper角色,没有...

    查看oracle数据库的连接数以及用户、数据库锁定进程

    查看oracle数据库的连接数以及用户 1、查询oracle的连接数 2、查询oracle的并发连接数 ... 10、查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限) 查看数据库锁定进程 杀掉锁定进程

    oracle笔记

    sys, system 比较高级的权限,sys(必须以管理员的身份进行登录)的权限高于system。 sysman 用于操作企业管理器,管理员级别权限 scott 默认密码tiger 不是只有系统用户才可以登录SQL Plus,也可自己创建用户  ...

    Oracle中sys和system用户、系统权限和角色的区别

    1)最重要的区别,存储的数据的重要性不同 【sys】 所有oracle的数据字典的基表和视图都存放在sys用户中,...【system】用户只能用normal身份登陆em,除非你对它授予了sysdba的系统权限或者syspoer系统权限。 【sys】用

    Oracle 用户权限管理方法

    sys;//系统管理员,拥有最高权限 system;...//登陆sys帐户 sqlplus sys as sysdba;//同上 sqlplus scott/tiger;//登陆普通用户scott sqlplus / as sysdba;//登陆sys帐户 sqlplus sys as sysdba;//同上 sqlplus s

    Oracle通过sqlplus连接数据库的方式

    在oracle服务器,可以直接通过操作系统权限认证,使用sysdba方式登陆,前提是你可以登入服务器,并且拥有此权限。 oracle@e871d42341c0:~$ id uid=1000(oracle) gid=1000(dba) groups=1000(dba) oracle@e87

    Oracle中sys和system的区别小结

    1. SYS用户具有DBA权限,并且拥有SYS模式,只能通过SYSDBA登陆数据库。是Oracle数据库中权限最高的帐号 SYSTEM具有DBA权限。但没有SYSDBA权限。平常一般用该帐号管理数据库就可以了。 2. (1)sys — sysdba system ...

    给orcl数据库创建用户并授权SQL语句 (2).sql

    登陆Orcal的sys用户后,创建用户名、表空间等sql语句操作

    Oracle_OS认证与口令文件认证详解

    在开始学 Oracle 的时候有件事一直让我感觉很奇怪,就是为什么在数据没有起来的时候只要登录到安装Oracle 的操作系统中直接用sqlplus / as sysdba 就能登陆到数据库中然后对数据库进行启动停止之类的操作。...

    韩顺平老师oracle教程听课笔记

    1.Oracle认证,与其它数据库比较,安装 Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2)...

    Oracle知识点总结

    (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2)system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限...

    oracle学习文档

    Oracle学习总结 1、 一般一台服务器只安装一个数据库,一个数据库可以有很多用户,不同的用户拥有自己的数据库对象,一个...Sysdba:即数据库管理员,sys用户必须用sysdba身份才能登录,system用户可以用普通身份登录。

    Oracle 启动与关闭

    要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆。

    oracle12c ORA-01017: 用户名/口令无效; 登录被拒绝 解决方案

    oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。

    Oracle环境通过SQL*PLUS本地登录时报错的解决过程

    一. 问题描述 ...sqlplus sys/admin as sysdba –成功登录! sqlplus sys/admin as sysdba –成功登录! 2. 带详细信息指定本机IP和实例登录 sqlplus sys/admin@127.0.0.1:1521/ORCL as sysdba –成功登录! s

Global site tag (gtag.js) - Google Analytics