oracle的参数文件_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2637 | 回复: 0   主题: oracle的参数文件        下一篇 
gang
注册用户
等级:上等兵
经验:142
发帖:79
精华:0
注册:2011-12-30
状态:离线
发送短消息息给gang 加好友    发送短消息息给gang 发消息
发表于: IP:您无权察看 2015-6-10 17:55:28 | [全部帖] [楼主帖] 楼主

密码文件主要进行DBA用户的身份认证,具有sysdba,sysoper权限的用户被称为DBA用户。默认情况下sys用户拥有sysdba和sysoper权限,而system用户及不拥有sysdba权限也不拥有sysoper权限。

密码文件的存放位置为:

 Linux:$ORACLE_HOME/dbs/orapw$ORACLE_SID即:ORACLE_HOME/dbs/orapw<sid>
Windows:$ORACLE_HOME/database/PW%ORACLE_SID%.ora


拥有sysdba权限的用户有两种认证方式;使用与操作系统集成的身份验证以及使用Oracle数据库的密码文件进行身份认证 。密码文件验证方式也称之为外部身份验证,即不需要启动数据库就验证用户的身份。

windows认证和oracle认证决定在两个参数中:

1.        remote_login_passwordfile = none | exclusive |shared  位于

$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora参数文件中

      none : 不使用密码文件认证

     exclusive :要密码文件认证,自己独占使用(默认值)

      shared :要密码文件认证,不同实例dba用户可以共享密码文件      

2.        SQLNET.AUTHENTICATION_SERVICES = none | all | ntf(windows)位于

    $ORACLE_HOME/network/admin/sqlnet.ora 

     none : 表示关闭操作系统认证,只能密码认证

      all : 用于linux或unix平台,关闭本机密码文件认证,采用操作系统认证,但远程<异机>可以使用密码文件认证

      nts : 用于windows平台      

NOTE:通过v$pwfile_users数据字典可以查看哪些用户有sysdba和sysoper权限。但是除了sys用户,其余所有用户的登陆密码都不是由密码文件控制的,即使是使用了登陆属性as sysdba。操作系统集成的身份验证只对拥有sysdba权限的用户才有效,有sysoper权限的用户是无法进行系统身份验证的。

代码说话-密码文件对哪些用户起作用:

1.        取消系统集成的身份验证方式:SQLNET.AUTHENTICATION_SERVICES=(NONE)

2.        SQL> conn sys/syspwd as sysdba

已连接。

说明:sys的密码syspwd就是在密码文件中定义的

3.        SQL> select * from v$pwfile_users;

USERNAME           SYSDBA     SYSOPER
----------------------------- --------
SYS                TRUE       TRUE
USER01             TRUE       FALSE
USER02             FALSE      TRUE


说明:user01用户有sysdba权限,user02有sysoper权限

4.        SQL> conn user01/ syspwd as sysdba

ERROR:
ORA-01017: invalid username/password; logon denied


警告: 您不再连接到 ORACLE。

说明:user01无法使用密码文件中定义的密码

5.        SQL> conn user01/user01 as sysdba

已连接。

说明:使用user01自己的密码就可以登陆了

     代码说话-哪些用户可以使用系统集成的身份验证方式

1.        添加系统集成的身份验证方式:SQLNET.AUTHENTICATION_SERVICES=(NTS)

2.        SQL> conn sys/pwd as sysdba

已连接。

USER 为 "SYS"

说明:sys用户系统验证成功

3.        SQL> conn user01/pwd as sysdba

已连接。

USER 为 "SYS"

说明:拥有sysdba权限的用户系统验证也成功

4.        SQL> conn user02/pwd as sysoper

ERROR:
ORA-01031: insufficient privileges


说明:拥有sysoper权限的用户系统验证失败

5.        SQL> conn user02/user02 as sysoper

已连接。

USER 为 "PUBLIC"

说明:user02使用自身密码登陆成功

6.        SQL> conn sys/pwd as sysoper

ERROR:
ORA-01031: insufficient privileges


说明:sys用户作用sysoper用户登陆时也不能成功

oracle提供了一个工具orapwd,专门用来修改或者创建密码文件。在dos下输入orapwd即可看到其使用方法:Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>  

file - name of password file (mand),  /*密码文件的名字orapw<sid>*/
password - password for SYS (mand),   /*sys用户的密码*/
entries - maximum number of distinct DBA and
/*可以有多少个sysdba,sysoper权限用户放到密码文件中去,去掉重复记录*/
/*注意entries中存放的个数但不是实际个数,这个是二进制数据*/
force - whether to overwrite existing file (opt), /*10g新增的参数,默认值为n ,y表示允许覆盖*/
There are no spaces around the equal-to (=) character.


修改密码和重建密码文件的口令是一样的,如下:

orapwd file=?\database\PWDdate0808.ora password=date0808 entries=30 force=yes ignorecase=no


重建之后,密码文件里面之后保存一个用户:sys。其他后期被赋予了sysdba以及sysoper权限的用户都将会丢失

设置密码大小敏感的参数show parameters sec_case_sensitive_logon

查看哪些用户拥有sysdba以及sysoper权限:SQL> select * from v$pwfile_users

dba和sysdba的区别:

sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,它就已经存在,以sysdba身份登陆,装载数据库、打开数据库。只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础,dba只是个角色而已.

 

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论