ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 特权帐号以及密码文件

Oracle 特权帐号以及密码文件

原创 Linux操作系统 作者:chinak62 时间:2010-05-13 18:17:04 0 删除 编辑

注:学习环境:Redhat 5.0 64bit + Oracle 10g 10.2.0.1 64bit
这两天学习了一下oracle的口令文件。通过实验验证发现以下几点:
1:Oracle 10g安装好以后默认支持OS验证,所有属于linux上dba组的用户均可以以sys权限登录oracle而不需要验证用户名和密码---哪怕随意输入oracle用户名和密码均可以验证通过,
修改设置:在linux上如果需要手动设定oracle不支持OS验证。则需要作如下设定:
在文件sqlnet.ora中增加SQLNET.AUTHENTICATION_SERVICES=(none)以及删除dba(groupdel dba)组或者把oracle用户从dba组中删除都可以屏蔽os认证
---此修改即时生效不需要重启oracle,但是对已经存在oracle连接无影响

注:在win下只要把oracle_home/NETWORK/admin/sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (nts)nts改成none或者注释掉这句话(在前面加上#),就可以屏蔽os功能,要想以sys用户连上数据库必须输入正确的sys口令,
实验验证:输入任何用户名(即时用户在数据库中根本不存在),只要以sysdba权限连接数据库,都可以连接上,并且连接用户是sys,
SQL> connect /as sysdba
已连接。

SQL> connect  sys/aaa@abc  as sysdba
已连接。

SQL> connect sys/bbb as sysdba
已连接。

SQL> connect aaa/bbb as sysdba
已连接。

SQL> show user
USER 为 "SYS"

2:Oracle10g安装好以后默认使用密码文件。文件为
$ORACLE_HOME/dbs/orapwSID---------注:此处SID为oracle实例名,区分大小写
如果该密码文件不存在, 则oracle会使用另一个密码文件:$ORACLE_HOME/dbs/orapw 即:密码文件orapwSID的优先级比orapw优先级高
  注:在windows环境下:则密码文件的优先顺序为:一:参数ORA_sid_PWFILE指定的密码文件,二:参数ORA_PWFILE指定的密码文件, 三:$ORACLE_HOME/database/PWDSID.ORA   参数的设置:在注册表里,HKEY_LOCALMACHINE->SOFTWARE->ORACLE->KEY_OraDb10g_home1创建字符串值,ORA_sid_PWFILE 和 ORA_PWFILE,值取为你创建的口令文件的绝对路径.

修改密码文件的设置:可以在oracle中修改参数来设置是否使用密码文件,设定如下:
  2.1查看参数的设置sqlplus>show parameter password

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      EXCLUSIVE
  2.2修改参数的设置:-------remote_login_passwordfile为静态参数需要重新启动oracle生效
sqlplus> alter system set remote_login_passwordfile=NONE | EXCLUSIVE | SHARED  三种不同的取值的意义为:
NONE :指示 Oracle 系统不使用密码文件,特权用户的登录通过操作系统进行身份验证;

EXCLUSIVE :指示只有一个数据库实例可以使用此密码文件。只有在此设置下的密码文件可以包含有除 INTERNAL / SYS 以外的用户信息,即允许将系统权限 SYSOPER / SYSDBA 授予除 INTERNAL / SYS 以外的其他用户。

SHARED :指示可有多个数据库实例可以使用此密码文件。在此设置下只有 INTERNAL / SYS 帐号能被密码文件识别,即使文件中存有其他用户的信息,也不允许他们以 SYSOPER / SYSDBA 的权限登录。此设置为缺省值。 同时在设置shared值后,不再允许修改密码文件。除非使用orapwd命令重建

3:如果oracle支持使用密码文件,则在远程客户端或linux本地非dba组用户连接oracle时,如果以sysdba角色或sysoper角色登录。则仅使用密码文件进行密码的验证。如果密码文件不存在,则验证无法通过,但是如果以normal身份登录时。则是以oracle数据库中的密码进行验证

4:通过以下语句可以指定其他用户具有sysdba权限。
sqlplus>grant sysdba to testa -------------注:testa为一普通oracle用户
       当使用该语句赋予testa具有sysdba权限时。oracle会自动在密码文件中添加一笔记录。且其密码是从testa在数据库中的密码复制而来。但是如果本次密码文件中已经有testa用户。则密码文件不会有任何改变。
查询密码文件的记录:在sqlplus中可以通过查询一个动态试图得到密码中的记录:
sqlplus>select * from v$pwfile_users;
注:当使用具有sysdba权限的testa登录oracle时。如果通过sqlplus登录一切正常。当时登录EM时。会提示错误“应用程序要求的数据库权限超出了您当前具有的权限”如果还需要EM登录。则必须通过以下语句赋予用户另一个角色SELECT_CATALOG_ROLE的权限:
sqlplus>grant select_catalog_role to testa 则testa登录EM正常。

回收sysdba权限的语句为:sqlplus>revoke sysdba from testa;

5:当在sqlplus中使用语句:sqlplus>alter user testa identified by test1234。修改用户testa的密码为test1234时。如果testa用户在密码文件有记录,则oracle会同时修改数据库以及密码文件中的用户密码

6:密码文件中保存的用户密码并不会和数据库中保存的密码自动同步,除非使用第5点提到的密码修改语句。
实验验证:通过复制密码文件后修改用户密码,然后再把复制的密码文件还原。创建一个环境:teata在密码文件中的密码和数据库的密码不一致。
通过使用nomal身份以及sysdba身份登录。可以验证同一个用户使用不同身份登录需要不同的密码。验证本文的第3点。

7:在linux操作系统可以使用命令orapwd来创建密码文件,注:等号=两边不允许有空格  
ORAPWD FILE=< FILENAME >PASSWORD =< PASSWORD > ENTRIES=< MAX_USERS > FORCE=N/Y
各命令参数的含义为:

  FILENAME:密码文件名;

  PASSWORD:设置INTERNAL/SYS帐号的口令;

        FORCE=N/Y --默认为N,指定当同名文件存在时是否覆盖

  MAX_USERS:密码文件中可以存放的最大用户数,对应于允许以SYSDBA/SYSOPER权限登录数据库的最大用户数。由于在以后的维护中,若用户数超出了此限制,则需要重建密码文件,所以此参数可以根据需要设置得大一些。到底可以有几个用户被授予sysdba或者sysoper权限,是由创建口令文件时指定的entries数决定的,准确的说还不完全是,最终还和os block的大小有关,如果entries指定了5,一个os block可以存放8个用户的口令,那么可以由8个用户被授予sysdba或者sysoper。

8:oracle的账户密码不区分大小写,并且密码经过加密长产生的字符串长度是一致的。

本文参考文档:http://www.linuxdiyf.com/viewarticle.php?id=73786

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

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-04-18

  • 博文量
    12
  • 访问量
    35605