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

Oracle数据库非Dba角色用户使用as sysdba仍然可以连接相关问题

 
阅读更多

1. Oracle 默认的三个重要角色

CONNECT创建session角色
RESOURCE创建资源角色,Create table 等等
DBA数据库管理员角色

参考网址:http://www.blogjava.net/caihaibo2008/archive/2008/12/11/245723.html

2.Oracle有两个具有dba角色的用户,分别是sys与system,他们都可以以sysdba身份登录数据库。既然system具有dba角色,为什么还分配他sysoper身份?

【sys】所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户。
【system】用户用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。system用户拥有普通dba角色权限。

其次的区别,权限的不同。
【system】用户只能用normal身份登陆em,除非你对它授予了sysdba的系统权限或者syspoer系统权限。
【sys】用户具有“SYSDBA”或者“SYSOPER”系统权限,登陆em也只能用这两个身份,不能用normal。

3. 在今天的数据库实验课上遇到了如下所示的问题:

如上图所示,SYS用户可以正常登录数据库,但是其他用户、甚至随便乱写,以as sysdba的方式也可以成功连接数据库,并且show user显示的仍然是SYS,这是什么原因呢???


Oracle登录的时候有三种登录验证机制

1. 操作系统验证

2. 密码文件验证

3. 数据库验证

一般权限用户的登录验证都是第三种方式,即数据库验证,因为用户名和密码都是存储在数据库当中的。然而,SYS用户(具有SYSDBA和SYSOPER权限的用户)却不是数据库验证。在oracle数据没有启动的时候,SYS用户就可以连接到数据库,并对其进行启动等操作,所以不可能是数据库验证。SYS用户采用的是第一种和第二种验证方式。

Linux下Oracle的启动过程

lsnrctl start 启动监听(接收用户请求)。此时数据库没启动,所以不能验证普通权限用户

sqlplus /nolog 启动sqlplus

conn sys/oracle as sysdba,监听看到是sysdba用户,就进行操作系统验证或者文件验证,如果正确

startup 启动数据库实例。

当此时再以普通权限用户连接时,就直接将请求发送给数据库进行数据库验证。

Windows下Oracle的启动过程

lsnrctl start 启动监听

oradim -startup -sid orcl 将复杂的过程封装了

conn / as sysdba; 这样写居然可以连接!或者随便写个名字都可以连接,只要/保留就可以。如下图:


因为,默认采用的验证方式是操作系统验证!如下图所示,在计算机管理里面的ORA_DBA组有当前计算机操作系统用户uestcong



当我把uestcong这个用户删除之后,再重新使用conn a/b as sysdba登录,就出现如下所示的情况了:


显示权限不足,没有验证通过。

以uestcong登录操作系统时,默认就是DBA管理员,在监听看到as sysdba时,就首先进行操作系统验证,操作系统的用户uestcong当然就能通过验证。当我把uestcong删除之后,就会用密码文件的方式验证,此时把sys和正确的密码重新连接时,就可以直接连接了。


所以在使用oracle进行开发时,应该把操作系统验证取消,使用密码文件验证的方式。如果密码忘记,可以把密码文件删除,用新的密码文件代替就可以。

密码文件的路径:D:\oraclexe\app\oracle\product\10.2.0\server\database\PWDXE.ora(PWDXE.ora我使用的是XE版本),当把密码文件删除时,再用正确的用户名密码连接,就无法进行连接了。


感谢传智博客王治国的精彩讲解!

参考网址:http://topic.csdn.net/u/20110823/18/e9846996-22f4-4429-a7f5-47877a729ef0.html

分享到:
评论

相关推荐

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

    通过sqlplus可以连接数据库根据用户权限进行数据或者设定操作,这篇文章介绍一下常用的连接方式。 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: https://www.jb51.net/article/153533.htm ...

    解决Oracle iSQL*Plus DBA 无法登陆

    自己写了一个批处理,直接运行BAT就行了,自己看着修改,这样 Oracle数据库的DBA WEB就可以管理了,老鸟绕过吧~ 我是编程新手~QQ:540117918 希望大家多支持!

    Oracle数据库系统加固规范.doc

    " "回退方案 "删除用户:例如创建了一个用户 A,要删除它可以这样 " " "做 " " " " " "connect sys/密码 as sysdba; " " " " " "drop user A cascade;//就这样用户就被删除了 " "判断依据 "标记用户用途,定期建立...

    Oracle 主要配置文件介绍

    系统级的环境变量一般在/etc/profile 文件中定义 在 CAMS 系统 与数据库 相关的环境变量就定义在/etc/profile 文件中 如下所示 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/...

    ORACLE笔记(数据库)

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

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

    说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 ...

    Centos7.0下安装oracle12cR2-v6.0全流程

    Oracle12c安装使用教程,包含各类资源下载链接。 1.启动 1.#su - oracle 切换到 oracle 用户且切换到它的环境 2.$lsnrctl status 查看监听及数据库状态 3.$lsnrctl start 启动监听 4.$sqlplus / as sysdba 以 DBA ...

    ORACLE initialization or shutdown in process

    碎片处理工具,处理碎片至使oracle数据库不能启动, 解决方法: 进入dos: 以DBA用户登录,具体命令是 sqlplus /NOLOG SQL>connect sys/change_on_install as sysdba 提示:已成功 SQL>shutdown normal 提示:...

    韩顺平oracle学习笔记

    用特权用户身份连接时,必须带上as sysdba 或是 as sysoper 例:conn scott/tiger; show user; 显示当前用户 2.断开连接命令 (2) disc[onnect] 说明:该命令用来断开与当前数据库的连接 (3)passw[ord] 说明:该...

    最全的oracle常用命令大全.txt

    Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动...

    ORACLE10G 审计操作

    如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。 如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定...

    oracle 提示登录密码过期完美解决方法

    5.sql: conn /as sysdba;用dba的身份登录 6.修改过期的用户密码设置: 修改用户密码:alter user XXX identified by XXX 修改用户密码之后,重新使用修改的用户密码连接数据库就ok了,假如仍然还有锁定用户操作, ...

    oracle 11g安装配置

    为用户oracle设置环境变量,并允许使用X终端 [root@dbserver ~]# groupadd oinstall //安装组 [root@dbserver ~]# groupadd dba //管理组 [root@dbserver ~]# useradd -g oinstall -G dba oracle [root@dbserver ~]...

    ORACLE 常用手册导入导出

    在进行数据库的恢复时,一定要了解Oracle数据库的原理,分析故障的原因,然后针对故障的情况进行相应的恢复。例如以下情况: - Oracle程序文件损坏? - control file损坏? - Online redo log损坏? - datafile...

    oracle修改字符集

    SQL> conn system/hundsun as sysdba; 停掉数据库 SQL>shutdown immediate; 启动数据库到mount状态下 SQL> STARTUP MOUNT; Java代码 收藏代码 ORACLE instance started. Total System Global Area ...

    oracle11g密码敏感取消

    conn sys /sunshine@mis as sysdba -- select * from dba_profiles -- SELECT * FROM V$PARAMETER; --去掉字符大小写敏感设置:禁止密码大小写敏感 show parameter sec_case_sensitive_logon alter system set sec_...

    orcale常用命令

    Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动...

    oracle万能宝典

    SQL*PLUS命令 启动数据库:在终端输入 sqlplus '/ as sysdba' 进入 sqlplus,在 ...在cmd中输入:sqlplus 用户名/密码@网络服务名 [as sysdba/sysoper/sysasm] --连接到oracle并创建会话【DBA身份:sys或system】

    oracle 视图,函数,过程,触发器自动编译脚本

    日常管理维护一个oracle数据库服务器的时,经常会碰到修改view,table结构的情况,而且由于oracle view,函数,存储过程等对象的相互关联的关系,经常会由于一个view,table,fun,proc的修改而导致相关的对象失效。...

    数据库建库指令

    数据库导出路径为oracle数据库备份/导入设置路径:E:\app\Hejiah\admin\orcl\dpdump exp username/password@sid file=d:\exp.dmp full=y imp wenhb/1@orcl file=D:\app\Hejiah\admin\orcl\dpdump\wenhb.dmp full=y ...

Global site tag (gtag.js) - Google Analytics