Oracle 密码文件

系统 1643 0

--==============================

-- Oracle 密码文件

--==============================

/*

一、密码文件

    作用:主要进行 DBA 权限的身份认证

    DBA 用户:具有 sysdba sysoper 权限的用户被称为 dba 用户。默认情况下 sysdba 角色中存在 sys 用户, sysoper 角色中存在 system 用户

   

二、 Oracle 的两种认证方式;

    1. 使用与操作系统集成的身份验证

    2. 使用 Oracle 数据库的密码文件进行身份认证

 

三、密码文件的位置

    Linux 下的存放位置: $ORACLE_HOME/dbs/orapw$ORACLE_SID

                  即: ORACLE_HOME/dbs/orapw<sid>

    Windows 下的存放位置 :$ORACLE_HOME/database/PW%ORACLE_SID%.ora

 

    密码文件查找的顺序

    --->orapw<sid>--->orapw--->Failure

 

    两种认证方式:类型与 SQL server 中的 windows 认证和 SQL server 认证

    决定在两个参数中

    1.remote_login_passwordfile = none | exclusive |shared   位于 $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora 参数文件中

       none : 不使用密码文件认证

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

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

      

    2. $ORACLE_HOME/network/admin/sqlnet.ora  

       SQLNET.AUTHENTICATION_SERVICES = none | all | ntf(windows)

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

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

       nts : 用于 windows 平台

      

    不同的组合

      1            2

    none           none       sys 用户无论是本机还是远程均不可用

  

    判断当前使用的是操作系统认证还是密码认证

   

四、演示:

    1. sqlnet.ora 中追加 SQLNET.AUTHENTICATION_SERVICES = none   */

    [oracle@robinson ~]$ sqlplus / as sysdba /* 登陆失败 */

 

    SQL * Plus : Release 10.2.0.1.0 - Production on Fri Apr 9 10 : 41 : 28 2010

 

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

 

    ERROR :

    ORA - 01031 : insufficient privileges

    Enter user - name :

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

    [oracle@robinson ~]$ sqlplus sys / redhat as sysdba /* 使用密码文件认证,登陆成功 */

 

    SQL * Plus : Release 10.2.0.1.0 - Production on Fri Apr 9 10 : 42 : 35 2010

 

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

 

 

    Connected to :

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning , OLAP and Data Mining options

 

    SQL >

    --=================================================================================

   

    2. SQLNET . AUTHENTICATION_SERVICES 的值改为 all

 

    [oracle@robinson admin]$ sqlplus / as sysdba /* 采用本机认证可以登陆 */

 

    SQL * Plus : Release 10.2.0.1.0 - Production on Fri Apr 9 10 : 46 : 55 2010

 

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

 

 

    Connected to :

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning , OLAP and Data Mining options

 

    SQL >

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

    [oracle@robinson admin]$ sqlplus sys / redhat@orcl as sysdba /* 使用密码文件登陆认证失败 */

 

    SQL * Plus : Release 10.2.0.1.0 - Production on Fri Apr 9 10 : 48 : 35 2010

 

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

 

    ERROR :

    ORA - 12641 : Authentication service failed to initialize

 

    Enter user - name :

 

    -- 注:此时可以使用远程登陆。  

 

    -- 使用 # 符号将新增的 SQLNET.AUTHENTICATION_SERVICES 行注释掉恢复到缺省值

 

    /*

五、密码文件的建立: orapwd   */

    [oracle@robinson ~]$ orapwd

    Usage : orapwd file =< fname > password =< password > entries =< users > force =< y / n >

 

      where

       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 表示允许覆盖 */

    OPERs ( opt ),

      There are no spaces around the equal - to (=) character .

     

    -- 修改密码:

    [oracle@robinson ~]$ cd $ORACLE_HOME / dbs

    [oracle@robinson dbs]$ ll orapworcl

    - rw - r ----- 1 oracle oinstall 1536 Apr   7 15:50 orapworcl

    [oracle@robinson dbs]$ orapwd file = orapworcl password = oracle force = y

    [oracle@robinson dbs]$ sqlplus sys / oracle@orcl as sysdba

 

    SQL * Plus : Release 10.2.0.1.0 - Production on Fri Apr 9 11 : 34 : 09 2010

 

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

 

 

    Connected to :

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning , OLAP and Data Mining options

 

    SQL >   

    -- 将密码改回原来的密码

    [oracle@robinson dbs]$ orapwd file = orapworcl password = redhat

 

    OPW - 00005 : File with same name exists - please delete or rename

    [oracle@robinson dbs]$ orapwd file = orapworcl password = redhat force = y

    [oracle@robinson dbs]$ rm orapworcl   /* 删除密码文件 */

    [oracle@robinson dbs]$ orapwd file = orapworcl password = redhat /* 重建密码文件 */

 

    -- 演示将 entries 改为,然后将多个用户设置为 sysdba sysoper

    [oracle@robinson dbs]$ orapwd file = orapworcl password = redhat entries = 1

    [oracle@robinson dbs]$ strings orapworcl

    ]/[Z

    ORACLE Remote Password file

    INTERNAL

    F7AC0C5E9C3C37AB

    E100B964899CDDDF

 

    -- 创建 PL/SQL 增加个新用户

    SQL > begin

      2   for i in 1..20 loop

      3   execute immediate 'create user u' || i|| ' identified by u' || i|| '' ;

      4   end loop ;

      5   end ;

      6   /

    -- 将新用户赋予 sysdba 角色

    PL / SQL procedure successfully completed .

 

    SQL > begin

      2   for i in 1..20 loop

      3   execute immediate 'grant sysdba to u' || i|| '' ;

      4   end loop ;

      5   end ;

      6   /

    begin   /* 得到和密码文件相关的错误提示 */

    *

    ERROR at line 1 :

    ORA - 01996 : GRANT failed : password file '' is full

    ORA - 06512 : at line 3

 

    -- 再次查看 orapworcl 发现多出了行,即当设置为的时候多出了个用户。原因是该密码文件是二进制文件,按矩阵计算可存放多少

    [oracle@robinson dbs]$ strings orapworcl

    ]/[Z

    ORACLE Remote Password file

    INTERNAL

    F7AC0C5E9C3C37AB

    E100B964899CDDDF

    3E81B724A296E296

    668509DF9DD36B43

    9CE6AF1E3F609FFC

    7E19965085C9ED47

 

 

    -- 注意不要轻易删掉密码文件,这样会将其他账户的信息也删除

 

    /*

六、导致密码文件内容修改的几种方式:

    1. 使用 orapwd 建立,修改密码文件,不建议使用

    2. 使用 alter user sys identified by <>

    3. 使用 grant sysdba to <> grant sysoper to <> revoke sysdba |sysoper from <>

 

七、查看密码文件内容 */

 

    [oracle@robinson dbs]$ strings orapworcl

    ]/[Z

    ORACLE Remote Password file

    INTERNAL

    F7AC0C5E9C3C37AB

    E100B964899CDDDF

 

    -- sys 密码不记得可以使用 OS 系统身份认证登陆到 sqlplus, 再使用 alter user 修改密码

    SQL > alter user sys identified by oracle ;

 

    User altered

    -- 再次查看密码文件与上一次对比,已经发生变化

    SQL > ho strings orapworcl

    ]/[Z

    ORACLE Remote Password file

    INTERNAL

    AB27B53EDC5FEF41

    8A8F025737A9097A

 

 

    -- 通过授予权限来修改密码,密码文件中多出了 scott 的信息

    SQL > grant sysdba to scott ;

 

    Grant succeeded .

 

    SQL > ho strings orapworcl

    ]/[Z

    ORACLE Remote Password file

    INTERNAL

    AB27B53EDC5FEF41

    8A8F025737A9097A

    SCOTT

    F894844C34402B67

 

 

    -- 注意此处中登陆后,显示的账户信息还是 sys, 而不是 scott, 但此时的 scott 已经具备了 sys 权限

    [oracle@robinson dbs]$ sqlplus scott / tiger@orcl as sysdba

 

    SQL * Plus : Release 10.2.0.1.0 - Production on Fri Apr 9 11 : 56 : 09 2010

 

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

 

 

    Connected to :

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning , OLAP and Data Mining options

 

    SQL > show user

    USER is "SYS"

 

    /*

八、 sysdba sysoper 的区别 */

    SQL > select * from system_privilege_map where name like '%SYS%' ;

 

      PRIVILEGE NAME                                        PROPERTY

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

           - 3 ALTER SYSTEM                                       0

           - 4 AUDIT SYSTEM                                       0

          - 83 SYSDBA                                             0

          - 84 SYSOPER                                            0

         

    -- 下面的链接是两者不同的权限说明     

    http :// download . oracle . com / docs / cd / B19306_01 / server .102 / b14231 / dba . htm#sthref137

    The manner in which you are authorized to use these privileges depends upon the method of authentication that you use .

 

    When you connect with SYSDBA or SYSOPER privileges , you connect with a default schema ,

    not with the schema that is generally associated with your username .

    For SYSDBA this schema is SYS ; for SYSOPER the schema is PUBLIC .

    -- 两者的 schema 不同

    SQL > show user

    USER is "SYS"

    SQL > conn / as sysoper

    Connected .

    SQL > show user

    USER is "PUBLIC"

 

    -- 查看密码文件视图,可以得到哪些用户为 sysdba, 哪些用户为 sysoper

    SQL > select * from v$pwfile_users ;

 

    USERNAME                        SYSDB SYSOP

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

    SYS                             TRUE   TRUE

    SCOTT                           TRUE   FALSE

    USER1                           FALSE TRUE

    -- 下面演示了使用不同的角色来登陆

    SQL > conn scott / tiger@orcl as sysdba

    Connected .

    SQL > conn scott / tiger@orcl as sysoper   /*scott sysop 列为 false*/

    ERROR :

    ORA - 01031 : insufficient privileges

 

 

    Warning : You are no longer connected to ORACLE .

    SQL > conn user1 / user1@orcl as sysdba

    ERROR :

    ORA - 01031 : insufficient privileges

 

 

    SQL > conn user1 / user1 as sysoper

    Connected .

    /*

九、更多 */

Oracle 数据库实例启动关闭过程

 

Oracle 10g SGA 的自动化管理

 

使用 OEM,SQL*Plus,iSQL*Plus 管理 Oracle 实例

 

Oracle 实例和 Oracle 数据库 (Oracle 体系结构 )

 

SQL 基础 --> 常用函数

 

SQL 基础 --> 过滤和排序

 

SQL 基础 -->SELECT 查询

 

 

Oracle 密码文件


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论