1 sqlplus /nolog,conn /as sysdba 之所以能够登录,在于oracle登录时的身份认证方式。可以试一下这个:sqlplus /nolog,conn abcd/sss as sysdba,你发现也能够登录成功。
2 oracle在登录时,有三种身份认证方式:操作系统身份认证、密码文件认证、数据库认证。而conn /as sysdba是属于操作系统认证。
为什么这样说呢?你当前电脑开机时登录的用户,也就是进入操作系统的用户,例如是gooooal,它在你电脑的ora_dba组中。
可以在“我的电脑”单击右键,找到“管理”,选择“本地用户和组”,发现有一个组叫“ora_dba”,双击它,看到成员列表中有“gooooal”。
也就是在conn /as sysdba,oracle会进行操作系统验证,发现你当前登录的用户就属于ora_dba组,因此才可以登录成功。
你可以把ora_dba组中的“gooooal”用户删除,再conn /as sysdba,就发现进不去了。
3 密码文件验证可以查阅相关资料,百度oracle的身份验证方式,就可以查到相关资料。
4 其实在linux或unix环境下,安装oracle是要设置很多东西的,比如用户和用户组的设置等,不像在windows下,安装傻瓜化了。
5 关于安全性,如果将oracle安装在本地,其实你本地就是oracle服务器,所以权限高一些。你用哪个用户来启动oracle实例?哪个用户来mount数据库?哪个用户来打开数据库?从而才能进行之后的select等sql操作?
在oracle实例等还没有启动的时候,oracle数据库里面建的用户肯定是不能使用的。所以才会有操作系统身份验证。用这个用户,来启动oracle实例
、转载数据库等。之后才能做oracle表的增删改查。
现象:
C:\>sqlplus "/as sysdba"
SQL*Plus:Release 10.2.0.1.0 - Production on Fri Nov 2 16:16:22 2007
Copyright (c) 1982, 2005, Oracle. All right reserved.
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
这个错误一般是由于oracle登录认证出现了问题:
Oracle登录认证有两种方式,基于操作系统的登录认证,基于oracle的验证。
可以通过改变sqlnet.ora文件,可以修改oracle登录认证方式:
SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系统验证;SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle验证;SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。
经过测试,以上规则只适用于windows服务器,在linux下规则如下:
默认情况下linux下的oracle数据库sqlnet.ora文件没有SQLNET.AUTHENTICATION_SERVICES参数,此时是基于操作系统认证和oracle密码验证共存的,加上SQLNET.AUTHENTICATION_SERVICES参数后,不管SQLNET.AUTHENTICATION_SERVICES设置为NONE或者NTS,都是基于oracle密码验证的。
Windows下设置oracle登录验证为操作系统验证方式的方法:
1:把os用户加到ora_dba组
2:设置sqlnet.ora SQLNET.AUTHENTICATION_SERVICES = (NTS)
或者你可以重建口令文件来改密码,只不过原来授予sysdba和sysoper权限的用户,就不再具有这2个权限了。
有一种oracle的登录方式是操作系统验证登录方式,即常说的OS验证登录方式,在SQL server中也有这种方式。
当用Windows的管理员帐户登陆系统后登陆数据库,只要加上 as sysdba,不管用什么用户名和密码登陆,都正确,因为这时系统已经忽略了/ 两边的用户名和密码,默认就是sys用户。
有些朋友经常使用connect / as sysdba登录,但不知道为什么没有提供用户名和密码就得到了sysdba的权限。还认为这样是不是不安全呢?
Oracle在常见的多用户操作系统上都可以进行OS认证方式来登录。例如solaris,windows等等。
下面以常见的windows操作系统来说明看一下这个操作系统认证方式登录的原理。如果你的机器可以使用connect / as sysdba获取sysdba的权限,那么下面的每一个过程你的机器上都会得到验证,如果不能,按照下面的操作更改后,你也能以这种方式登录。
- 在命令行下敲入compmgmt.msc 进入计算机管理
- 选择本地用户和组—>组
- 看是不是有一个组的名字叫做ORA_DBA
- 双击改组可以看到里面是不是有administrator用户
- 想一想你是不是以administrator用户登录的呢?
- 再进入Oracle安装目录(即$ORACLE_HOME 一般是D:"oracle)"ora92"network"admin 找到sqlnet.ora文件看看里面的是不是有SQLNET.AUTHENTICATION_SERVICES= (NTS)
- 如果这些都对的话,你就能已操作系统认证的方式(connect / as sysdba)来登录Oracle
接下来的问题是,如果你的数据很重要,出于安全考虑,希望禁止这种操作系统认证的方式。那么该怎么做呢?
很简单,找到在刚才的第6步骤中的sqlnet.ora文件,将SQLNET.AUTHENTICATION_SERVICES= (NTS)改为SQLNET.AUTHENTICATION_SERVICES=none即可。你再试一下看看会不会得到到如下结果:
ERROR:
ORA-01031: insufficient privileges
警告: 您不再连接到 ORACLE。
如果你的机器不能以系统认证的方式登录,检查以上几个步骤,你总可以找到原因的。
相关推荐
Oracle登录认证方式探讨 Oracle登录认证方式探讨
Oracle禁用操作系统认证方式登陆及禁止SYS远程登录。Oracle数据库默认允许操作系统登录,尝试登录获取SYS权限将带来极大安全威胁。另外禁止SYS远程登录能有效保证数据库安全。
数据库认证大师的考前必备,涉及各个方面的考点,有真题,附答案
课程想以介绍了Oracle认证体系,详细带领同学们进行Oracle实战环境搭建,Oracle体系结构,Oracle数据库创建于安装,管理ASM实力实战,数据并发与控制,实施oracle数据库的审计,数据库的性能管理,备份恢复与数据库...
Oracle认证指南,你可能身为IT行业的一员,拥有这份指南你将会对数据库方面有个明确的道路
概述:本文只讨论 OS 认证和口令文件认证方式的配置方法,如何配置以及使用OS 认证和口令文件认证方式验证SYSDBA/SYSOPER 权限。 在开始学 Oracle 的时候有件事一直让我感觉很奇怪,就是为什么在数据没有起来的时候...
Oracle DBA认证方面的资料 oracle DBA 1z0-001 oracle7.3的4本: M03989 Instroduction to Oracle: SQL and PL/SQL Participant Guide Vol. 1 M03990 Instroduction to Oracle: SQL and PL/SQL Participant ...
ORACLE DBA 认证题 比较杂,下载下来整理
Oracle 10 认证培训资料
Oracle DBA认证题库,内容不多,但是都是历年来常考倒无数学子的问题。希望对冲刺DBA的朋友们有点点帮助。
武汉誉天教育培训机构oracle ocp认证考试题库
oracle登陆认证方式教学内容.pdf
Oracle认证介绍 Oracle练习题
Oracle数据库中OCP认证 042认证题库
ORACLE认证考试大纲,考试内容。 与大家分享
Oracle OCP DBA 认证介绍 Oracle OCP DBA 认证介绍
Oracle认证资料,Oracle认证OCP资料题库
Oracle认证考试介绍!考认证的可以看看!能了解需要学什么!
OCP:Oracle数据库认证专家(Oracle Certified Professional)是Oracle公司的Oracle数据库DBA(Database Administrator 数据库管理员)认证课程,通过这个考试, 说明此人可以管理大型数据库, 或者能够开发可以部署...
oracle OCP 043 认证考试题库 oracle OCP 043 认证考试题库