一、Oracle安装之后默认情况下是启用了OS认证的,这里提到的os认证是指服务器端os认证。OS认证的意思把登录数据库的用户和口令校验放在了操作系统一级。如果以安装Oracle时的用户登录OS,那么此时在登录Oracle数据库时不需要任何验证

1. 使用操作系统验证

2个前提必须同时满足

1)os下建立用户ORA_DBA用户组,

然后可以新建立用户或者把原来的用户加入到ORA_DBA组中,然后使用这个用户在安装了数据库的本地机器登陆或者使用安全的远程连接登陆,可以作为sysdba登录,在数据库级不需要提供密码。

2)sqlnet.ora文件中加入

SQLNET.AUTHENTICATION_SERVICES=(NTS)

SQLNET.AUTHENTICATION_SERVICES参数

在SQLNET.ORA(位于$ORACLE_HOME/NETWORK/ADMIN目录中)文件中,需要修改时直接用文本编辑器打开修改就行了,对于不同的操作系统SQLNET.AUTHENTICATION_SERVICES的取值会有些不一样,通常我们会用到下面的一些设置值:

  • SQLNET.AUTHENTICATION_SERVICES = (ALL)

对Linux系统,支持OS认证和口令文件认证。

对Windows系统,实际实验是不支持此参数,验证失败。

  • SQLNET.AUTHENTICATION_SERVICES = (NTS)

此设置值仅用于Windows NT系统,此设置同时支持OS认证和口令文件认证,只有在设置了(NTS)值之后运行在Windows系统上的Oracle才支持OS认证。

  • SQLNET.AUTHENTICATION_SERVICES = (NONE)

此设置值在Windows和Linux是作用一样的,指定Oracle只使用口令文件认证。

  • 不设置此参数或SQLNET.AUTHENTICATION_SERVICES =

对Linux系统,默认支持OS认证和口令文件认证。

对Windows系统,默认只支持口令文件认证,不支持OS认证。

下列方式都是使用os验证登陆

Sqlplus “/ as sysdba”

Sqlplus “sys/sys as sysdba”

Sqlplus “sys/sdf as sysdba”           //sys口令错误

Sqlplus “scott/sdf as sysdba”         //scott口令错误

以上登录方式都可以登录到数据库。只要是通过了服务器级别的认证就可以登录到数据库上(必须as sysdba)。不管数据库中是否存在登录的用户名或者密码的对错一律不校验。

此时show user 都是sys

说明;只要在登陆时有/ as sysdba。就使用os验证方式。不管是否是sys用户,或者密码是否正确,这样存在安全隐患。

2. 关闭os验证

1)      把操作系统用户的ORA_DBA组取消或者把当前登录用户从ora_dba组中删除。

2)      sqlnet.ora文件SQLNET.AUTHENTICATION_SERVICES= (NONE)      关闭os认证方式

目录E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN>

2个条件满足任何一个即可。

二、Oracle的口令文件的作用是存放所有以sysdba或者sysoper权限连接数据库的用户的口令,如果想以sysdba权限远程连接数据库,必须使用口令文件,否则不能连上。

由于sys用户在连接数据库时必须以sysdba or sysoper方式,也就是说sys用户要想连接数据库必须使用口令文件。使用口令文件的好处是即使数据库不处于open状态,依然可以通过口令文件验证来连接数据库。开始安装完oracle,没有给普通用户授予sysdba权限,口令文件中只存放了sys的口令,如果之后把sysdba权限授予了普通用户,那么此时会把普通用户的口令从数据库中读到口令文件中保存下来,当然这时必须要求数据库处于open状态

1、使用口令文件验证

如果当前没有使用口令文件验证。可以采用如下方法开启口令文件验证。

1.建立口令文件

C:\>orapwd file=C:\oracle\ora92\database\pwdtest.ora password=admin entries=5

口令文件名格式

pwd + sid + .ora

必须按照这个格式命名。缺省情况下,windows下口令文件的格式是pwdsid.ora(大小写不敏感)

2.确认参数是否正确

Remote_login_passwordfile=exclusive

通过数据字典v$parameter来查看静态参数Remote_login_passwordfile的值

ex:select name,value from v$parameter where name = 'Remote_login_passwordfile';

如果Remote_login_passwordfile的值不是exclusive那么可以通过alter system来修改初始化参数文件中的值。

Remote_login_passwordfile值保存在初始化参数文件中即spfile中,不是动态参数。故修改该参数的值后需要重启数据库重新加载spfile才能生效。

ex: SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;

各参数值的含义:

None:      不使用口令文件验证,如果不使用口令文件验证时,没有用户在ora_dba组中,那么就没有任何用户可以作为sysdba进入数据库了。Oracle数据库不允许远                程SYSDBA/SYSOPER身份登录

Exclusive: 表示实例独占使用口令文件,也就是各自实例使用单独的口令文件

Shared       表示多个实例共享一个口令文件

注:

Shared说明

当remote_login_passwordfile=shared时候,

在C:\oracle\ora92\database目录下仍然生成pwd+sid.ora文件。每个数据库实例使用自己的sys用户和对应的密码,但是不能再加入新的有sysdba权限的用户

如果remote_login_passwordfile=exclusive 而且os中有ora_dba组。那么用户如果作为ora_dba组登陆的话。仍然可以使用os的验证

3.重新启动数据库,sys自动被加入到口令文件中

此时。口令文件中没有任何用户。因为刚建立起来。

通过查询 select * from v$pwfile_users; 可以知道

如果利用grant sysdba to sys; 把sys加入到口令文件。会报错。必须要重启,会自动把sys加入进去

4. 把system用户写入口令文件中

Grant sysdba to system;

授权命令成功后。

select * from v$pwfile_users;

可以看到system已经在口令文件中

注:忘记sys口令的话,3种做法都可以。

1)打开os认证方式,/as sysdba连接进去。  Alter user sys identified by "newPassword";

2)通过删除口令文件.然后用orapwd命令重新建立口令文件来做.但是需要重启数据库

3)如果没有启用OS认证登陆,则需要用orapwd重建口令文件

orapwd file=D:\oracle10g\database\pwdsid.ora password=newpass

这个命令重新生成了数据库的密码文件。密码文件的位置在ORACLE_HOME目录下的\database目录下。

这个密码是修改sys用户的密码。除sys其他用户的密码不会改变。修改后重启oracle才能生效。

oracle使用口令文件验证和os验证的更多相关文章

  1. Oracle OS认证 口令文件 密码丢失处理

    Oracle OS认证 口令文件 密码丢失处理 分类: Oracle Basic Knowledge2009-10-19 14:24 5031人阅读 评论(9) 收藏 举报 oracleos数据库sq ...

  2. Oracle 物理结构(二) 文件-口令文件

    一.口令文件作用 1.口令文件基本介绍 Oracle数据库口令文件存放有超级用户的口令及其他特殊用户的用户名/口令. 口令文件在数据库创建时,自动创建,存放在$ORACLE_HOME/dbs. 此文件 ...

  3. Oracle OS认证和口令文件认证方法

    OS认证 1.在SQLNET.ORA(位于$ORACLE_HOME/NETWORK/ADMIN文件夹中)文件里,使用vi编辑,凝视掉#SQLNET.AUTHENTICATION_SERVICES = ...

  4. ORACLE模拟临时文件、日志成员、口令文件丢失情况与恢复【weber出品】

    一.临时表空间文件.日志文件和口令文件都属于非关键性文件,因为这些文件丢失后并不会影响到整个数据库的完整性. 但是,当这些文件丢失后我们需要快速的找回这些文件.接下来我将模拟临时表空间文件.日志文件和 ...

  5. golang实现文件上传权限验证(超简单)

    Go语言创建web server非常简单,部署也很容易,不像IIS.Apache等那么重量级,需要各种依赖.配置.一些功能单一的web 服务,用Go语言开发特别适合.http文件上传下载服务,在很多地 ...

  6. --关于null在oracle数据库中是否参与计算,进行验证,

    --关于null在oracle数据库中是否参与计算,进行验证,with td as (select null id,1 name from dual ),td1 as ( select null id ...

  7. Oracle 口令文件:即 oracle密码文件

    一:文件路径位置 [oracle@localhost db_1]$ cd $ORACLE_HOME/dbs [oracle@localhost dbs]$ ls dbsorapwPROD1 hc_or ...

  8. java struts2入门学习--基于xml文件的声明式验证

    一.知识点总结 后台验证有两种实现方式: 1 手工验证顺序:validateXxx(针对Action中某个业务方法验证)--> validate(针对Action中所有的业务方法验证) 2 声明 ...

  9. oracle口令文件在windows和linux系统下的命名和位置

      分类: Oracle 1.windows系统下 oracle口令文件在:$ORACLE_HOME/database目录下: 命名规则为:PWD$SID.ora   2.linux系统下 oracl ...

随机推荐

  1. java基础知识1

    58.线程的基本概念.线程的基本状态以及状态之间的关系线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身.Java中的线程有四种状态分别是:运行.就绪.挂 ...

  2. Yii CDbCriteria的常用方法

    $criteria = new CDbCriteria; $criteria->addCondition("id=1"); //查询条件,即where id = 1 $cri ...

  3. 【solr专题之四】关于VelocityResponseWriter

    一.关于Velocity的基本配置 在Solr中,可以以多种方式返回搜索结果,如单纯的文本回复(XML.JSON.CSV等),也可以返回velocity,js等格式.而VelocityResponse ...

  4. 精简jQuery Tabs

    闲来无事,周末用jQuery写了一个比较精简的Tabs,个别地方可以用到. 截图及代码如下: <!DOCTYPE html> <html> <head lang=&quo ...

  5. Application.DoEvents()

    今天,在按照书上的一个winform例子做练习(实则就是边看边抄了一遍...)的时候,看到Application.DoEvents()这个方法,但是并不明白这个方法是做什么用的.只知道不用这个方法的话 ...

  6. information_schema.partitions 学习

    1.partitions 表中的常用列说明: 1.table_schema:表所在的数据库名 2.table_name:表名 3.partition_method:表分区采用的分区方法 4.parti ...

  7. wordpress教程之函数讲解

    wordpress函数收集 is_home() : 是否为主页is_single() : 是否为内容页(Post),   是否是单篇文章  is_page() : 是否为内容页(Page),   是否 ...

  8. linux mysql 优化

    第一 在 /etc/my.cnf 中加入 skip-name-resolve ,重启mysql,这样就能禁用DNS解析,连接速度会快很多.不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用 ...

  9. BZOJ 2876 骑行川藏

    http://www.lydsy.com/JudgeOnline/problem.php?id=2876 拉格朗日乘数法:f'+入g'=0,f为函数的导数,g为限制条件的导数. 思路:E=Σki*si ...

  10. 从Qt4到Qt5的,主要的进化有三(对于QtWidget的精简和优化会很有限)

    从Qt4到Qt5的,主要的进化有三:1 语言的进化,原来是基于C++(qtwidget)和XML(.ui),现在添加了QML(QtQuick)+JS(v8)的架构.2 绘图系统的进化,原先基于QPai ...