`
logicgate
  • 浏览: 96392 次
  • 性别: Icon_minigender_1
  • 来自: 新力吐皮
社区版块
存档分类
最新评论

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

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>
 

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

 

测试三:恢复密码文件,设置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>

 

3. 密码文件

 

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

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

 

使用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)

 

其中文件名和密码是必需的。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
分享到:
评论
1 楼 wpf523 2012-07-31  
好,不错啊

相关推荐

    韩顺平oracle学习笔记

    韩顺平oracle学习笔记 第0讲:如何学习oracle 一、如何学习oracle Oracle目前最流行的数据库之一,功能强大,性能卓越。学习oracle需要具备一定基础: 1.学习过一门编程语言(如:java ,c) 2.最好学习过一门别的...

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

    【sys】 所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都...sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户。

    Oracle用sysdba登录问题

    Oracle数据库用sysdba登录的时候,不需要提供用户名/密码,或者输入不存在的用户名/密码,也能成功,原因是采用了OS验证方式。

    oracle sysdba 密码解释

    oracle sysdba 密码解释,讲述oracle sysdba的密码机制,以及如何恢复,等操作。

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

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

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

    Oracle dbca时报:ORA-12547: TNS:lost contact错误的解决

    主要给大家介绍了关于Oracle在dbca时报:ORA-12547: TNS:lost contact错误的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

    oracle查看用户权限

    1查看所有用户 2查看用户或角色系统权限(直接赋值给用户或角色的系统权限) 3查看角色(只能查看...查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限) 8 查看oracle提供的系统权限9 查看一个用户的所有系统权限

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

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

    oracle学习文档

    Oracle学习总结 1、 一般一台服务器只安装一个数据库,一个数据库可以有很多用户,不同的用户拥有自己的数据库对象,一个用户如果访问其他用户的数据库对象,必须由对方用户授予一定的权限。不同用户的数据库对象,...

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

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

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

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

    ORACLE常用傻瓜问题

    ORACLE常用傻瓜问题1000问: 1. Oracle安裝完成后的初始口令?  internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_temp  2. ORACLE9IAS WEB CACHE的初始默认用户和密码...

    oracle数据库导入导出命令

    oracle数据库常用到的导入导出命令,txt文档,相当方便、实用。

    oracle对象创建

    Connect name/pwd [as sysdba|normal|sysoper]:sysdba登录可以修改密码、解锁用户 user Create user &lt;user&gt; identified by Alter user &lt;user&gt; default tablespace Alter user &lt;user&gt; quota &lt;size&gt; on Alter ...

    oracle笔记

    非常仔细的个人sql入门笔记,适合0基础 认识表空间 2-1使用系统用户登录oracle  系统用户 sys, system 比较高级的权限,sys(必须以管理员的身份进行登录)的权限高于system。 sysman 用于操作企业管理器,管理员...

    ORACLE笔记(数据库)

    第一课:客户端 ... sqlplus sys/bjsxt as sysdba 2. alter user scott account unlock;(解锁) 第三课:table structure 1. 描述某一张表:desc 表名 2. select * from 表名 第四课:select 语句:

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

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

Global site tag (gtag.js) - Google Analytics