说说密码文件Passwordfile(一)

Oracle数据库系统DBMS是由数据库实例和数据库本身构成的。数据库实例本质上就是一系列Oracle相关的进程外加一块内存区域构成。而数据库本身指的就是保存在物理硬盘上的数据库文件。

 

数据库文件是由多种类型,不同类型文件在数据库工作过程中扮演不同的作用。根据对数据库核心工作的影响,文件也是有等级的。最紧要的文件三个为数据文件、控制文件和在线online日志文件。三个文件如果遭到破坏丢失,会引起数据库崩溃或者严重故障。其次为参数文件、归档文件、密码文件、Alert和跟踪文件等文件。今天我们一起看一下密码文件。

 

密码文件Password解决的是数据库用户非操作系统验证问题。Oracle对用户名、密码的验证是有很多层次的,分别为操作系统层面和数据库层面。

 

操作系统层面验证,就是利用用户登录操作系统时的操作系统帐号作为验证手段。当我们登录一个host主机(操作系统),实际上已经经过了操作系统级别的验证。Oracle在验证用户登录的时候,是可以指定是否使用操作系统的验证结果。如果系统设置为允许操作系统验证结果,那么是不需要输入用户名和密码就可以登入系统的。

 

我们经常登录数据库服务器本机(一般通过ssh或者telnet远程连接),之前是需要输入OS的用户名和密码。之后,常常使用这个命令进行登录。

 

[oracle@oracle11g ~]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 19 01:24:11 2011

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn / as sysdba   //没有指定用户名和密码

Connected.

 

SQL> show user

USER is "SYS"   //竟然是以SYS最高权限用户进行登录的。

SQL>

 

我们常常使用的conn / as sysdba,就表示不使用数据库实例验证,直接使用操作系统层面进行验证。这里面,要注意两个问题:

 

1、  并不是每个操作系统用户都允许这样登录系统,操作系统层面的验证很多时候对我们是很严格的。一般都是在安装Oracle的时候,默认进行的操作系统角色权限配置。比如:在windows环境下,安装oracle的用户(管理员用户)就被GUI安装程序设为为一个ora_dba的角色组。在Unix/Linux环境下,也有osdba的角色组。将登录用户名加入到改组中,实际上就可以通过操作系统验证;

2、  是否使用OS验证,是有相应的选项的。在sqlnet.ora文件中,有对应的参数项,可以适时关闭操作系统验证机制。不允许只通过操作系统就可以登录系统的情况。在这个问题上,可以参考笔者的一篇文章:http://space.itpub.net/17203031/viewspace-681029

 

 

注意:这里对远程登录和本地登录一个区分。本文提到的远程登录,是通过Oracle客户端软件,通过访问远程数据库服务器的监听器,构建与实例的连接。在这个过程中,是没有输入服务器用户名、密码要求的。也就是说,远程登录从没有登录OS。本地登录是通过远程桌面、telnetssh连接到服务器上,输入OS帐号登录。运行的程序是驻留在数据库服务器上的程序。

 

 

数据库层面的验证就是数据库用户名和密码的验证。这部分信息通常是保存在数据库文件内部,是数据字典的一部分内容。只有在数据库实例启动并且加载上的情况下,才可以访问到。

 

这是,就出现了一个矛盾。如果当前我的数据库系统没有启动,没法访问用户帐户信息。怎样进行登录?

 

我们通常的解决方法是使用telnet/ssh登录到服务器本地。使用conn / as sysdba连接上空实例,之后再启动。也就是利用操作系统层面的验证。那么,如果我不希望使用操作系统层面的验证,难道就没有办法登录实例了吗?

 

于是,密码文件就出现了。

 

简单的说,密码文件就是一个保存在数据文件外的信息文件,可以在数据文件没有加载的时候被实例访问到。里面保存的就是用户名信息和密码信息,通常是那些执行启动、关闭等维护权限(sysdba/sysoper)用户的密码,如sys

 

注意:

1、  在创建数据库的时候,如果是使用DBCA进行创建,密码文件是已经创建的;

2、  在早期的版本中,Oracle用户名和密码,特别是密码是没有大小写区分的。从Oracle11gr1开始,用户名密码开始大小写敏感;

 

密码文件在不同平台上的表现形式是有差异的。在windows平台上,密码文件命名为pwd.ora,存放路径为$ORACLE_HOME\database目录。

 

D:\oracle\database>dir

 驱动器 D 中的卷没有标签。

 卷的序列号是 2294-1384

 

 D:\oracle\database 的目录

 

2011-01-19  21:41   

          .

2011-01-19  21:41   

          ..

2008-09-01  20:35   

          archive

2008-09-01  20:52             2,048 hc_orcl.dat

2008-09-01  20:40                39 initorcl.ora

2005-06-25  03:18            31,744 oradba.exe

2011-01-17  20:59            10,178 oradim.log

2010-05-09  13:27             1,536 PWDorcl.ora  //密码文件

               5 个文件         45,545 字节

               3 个目录 65,762,430,976 可用字节

 

 

unix/linux环境下,密码文件通常命名为orapw,位于$ORACLE_HOME/dbs目录下。

 

[oracle@oracle11g ~]$ ls -l $ORACLE_HOME/dbs

total 32

-rw-rw----  1 oracle oinstall 1544 Oct  1 21:44 hc_DBUA0.dat

-rw-rw----  1 oracle oinstall 1544 Oct  1 21:47 hc_wilson.dat

-rw-r--r--  1 oracle oinstall 2851 May 15  2009 init.ora

-rw-r-----  1 oracle oinstall   24 Oct  1 21:48 lkWILSON

-rw-r-----  1 oracle oinstall 1536 Jan  6 14:27 orapwwilson

drwx------  2 oracle oinstall 4096 Oct  1 21:44 peshm_DBUA0_0

drwx------  2 oracle oinstall 4096 Oct  1 21:47 peshm_wilson_0

-rw-r-----  1 oracle oinstall 2560 Jan 19 01:23 spfilewilson.ora

 

 

密码文件中的内容,是进行过加密的。直接打开不能读取,只能通过启动实例之后,在视图v$pwfile_users中查看。

 

SQL> select * from v$pwfile_users;

 

USERNAME                       SYSDB SYSOP SYSAS

------------------------------ ----- ----- -----

SYS                         TRUE  TRUE  FALSE  //只记录了一个拥有sysdba/sysoper权限的用户;

 

 

 

此外,在Oracle中,有一个控制参数remote_login_passwordfile,用来确定登录方式的验证。

 

 

SQL> show parameter remote_login

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

remote_login_passwordfile            string      EXCLUSIVE

 

一般该项参数设置的都是EXCLUSIVE,表示在远程登录的时候使用密码文件验证。此外,还有其他可选择值。

 

NONE:不使用password file进行验证;

Shared:表示在RAC或者多实例公用host的情况下,使用一份passwordfile。这种方式下,sys的密码是不能够轻易修改的。此外,对于非sys用户加入到密码文件中,也有一些限制。

 

 

下面我们来介绍如何来管理密码文件。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-684311/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17203031/viewspace-684311/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值