oracle的参数文件

来源:互联网 发布:淘宝拍下后改成0.1元 编辑:程序博客网 时间:2024/05/01 17:50
 

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

密码文件的存放位置为:

n   Linux:$ORACLE_HOME/dbs/orapw$ORACLE_SID即:ORACLE_HOME/dbs/orapw<sid>

n   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参数文件中

n   none : 不使用密码文件认证

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

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

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

 $ORACLE_HOME/network/admin/sqlnet.ora 

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

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

n   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只是个角色而已.


 

附:sysdba用户与sysoper用户的差异

SYSOPER特权也是Oracle数据库的一种特殊权限。当用户具有该特权时,可以启动数据库,关闭数据库,但是不能建立数据库,也不能执行不完全恢复,这也是和SYSDBA的最大区别,另外,也不具有DBA角色的任何权限。我使用sys as sysoper登陆oracle11g的时候,查询user_sys_privs,可以看到一个CREATE VIEW权限,登陆oracle10g时没有任何权限。建立了Oracle数据库后,默认情况下只有SYS用户具有SYSOPER特权。当以SYSOPER身份登陆时,必须带有AS SYSOPER选项

sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户,所有oracle的数据字典的基表和视图都存放在sys用户中,登陆时也只能用sysdba、sysoper这两个身份,不能用normal身份。 Oracle system用户拥有dba角色权限,只能用normal身份登陆,除非你对它授予了sysdba的系统权限或者syspoer系统权限。

任何用户作用sysdba登陆后,所使用的schema是sys,将看不到用户自己创建的方案对象。如果我们将sysdba权限授权给一个普通用户user01,利用这个用户进行登陆 user01 as sysdba,登陆成功之后使用命令show user,发现显示出来的不是user01而是sys。as sysoper登陆后使用的schema是public

附: ORACLE 官方PASSWORDFILE文档

Oracle provides a password utility, orapwd, to create a password file. When you connect using SYSDBA privilege, you are connecting as SYS schema and not the schema associated with your username. For SYSOPER, you are connected to the PUBLIC schema. Access to the database using the password file is provided by special GRANT commands issued by privileged users.

Typically, the password file is not included in backups, because, in almost all situations, the password file can be re-created as a last resort. If you lose the password file, to re-create it requires that you shut down and restart the database at least once. To avoid unneccessary down time, you should include the password file in your backups.

NOTE: Do not remove or modify the password file if you have a database or instance mounted using REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE (or SHARED). If you do, you will be unable to reconnect remotely using the password file. Even if you replace it, you cannot use the new password file, because the timestamps and checksums will be wrong.