oracle 關於--密碼檔案

邱東陽發表於2014-03-26

 

對於密碼檔案認證 還是os認證取決於remote_login_passwordfile 引數與SQLNET.AUTHENTICATION_SERVICES引數。


remote_login_passwordfile
引數有三個值:預設為(exclusive

 

none----不使用密碼檔案認證

exclusive---需要密碼檔案認證  自己獨佔使用

shared ---需要密碼檔案認證 不同例項dba使用者可以共享密碼檔案

 

還有一個引數,這個引數位於$ORACLE_HOME/network/admin/sqlnet.ora檔案中

引數是:SQLNET.AUTHENICATION_SERVICES

SQLNET.AUTHENTICATION_SERVICES也有三個值:

none---關閉OS認證,只能密碼檔案認證

all---linuxunix關閉本機密碼檔案認證,採用作業系統認證,遠端(異機)可以

nts---windows密碼認證

 

密碼檔案的作用

 

密碼檔案是用來為對具有sysdba許可權與sysoper許可權使用者進行密碼認證的。

 

 

密碼檔案的預設位置

 

$ORACLE_HOME/dbs/orapw$ORACLE_SID

 

 

作業系統認證

我資料庫sys使用者的正確密碼為oracle111

 

SQL> conn sys/oracle111 as sysdba

conn sys/oracle111 as sysdba

Connected.

SQL> conn sys/qwer as sysdba

conn sys/ws qwer sysdba

Connected.

SQL> conn / as sysdba

conn / as sysdba

Connected.

SQL>

可以看到,密碼正確不正確或者沒有使用者密碼也是一樣登入的,這就是作業系統認證

 

關閉作業系統認證

 

[oracle@dongyang admin]$ vi $ORACLE_HOME/network/admin/sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES=none

 

[oracle@dongyang admin]$ sqlplus /nolog

 

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 21 15:21:57 2014

 

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

 

SQL> conn sys/oracle111 as sysdba

Connected.

SQL> conn sys/qwer as sysdba

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Warning: You are no longer connected to ORACLE.

SQL> conn / as sysdba

ERROR:

ORA-01031: insufficient privileges

 

SQL>

[oracle@dongyang admin]$ sqlplus sys/oracle111@orcl as sysdba

 

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 21 15:34:48 2014

 

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

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

 

SQL>

[oracle@dongyang admin]$ sqlplus sys/qwer@orcl as sysdba

 

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 21 15:35:34 2014

 

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

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Enter user-name:

可以看到,關閉作業系統認證就需要使用密碼檔案認證,密碼錯誤就登入不了

 

SQLNET.AUTHENTICATION_SERVICES引數值設定為all

 

[oracle@dongyang admin]$ sed 's/none/all/' -i $ORACLE_HOME/network/admin/sqlnet.ora

[oracle@dongyang admin]$ cat $ORACLE_HOME/network/admin/sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES=all

 

[oracle@dongyang admin]$ sqlplus /nolog

 

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 21 15:29:13 2014

 

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

 

SQL> conn sys/oracle111 as sysdba

Connected.

SQL> conn sys/qwer as sysdba

Connected.

SQL> conn / as sysdba

Connected.

SQL>

但是使用連線字串就登入不了

[oracle@dongyang admin]$ sqlplus sys/oracle111@orcl  as sysdba

 

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 21 15:31:57 2014

 

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

 

ERROR:

ORA-12641: Authentication service failed to initialize

 

Enter user-name:

使用遠端連線(使用winCMD

C:\>D:\app\oracle10g\sqlplus sys/oracle111@orclasm as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 21 15:34:48 2014

 

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

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

 

SQL>

 

 

 

修改密碼檔案

所謂的DBA使用者就是有sysdba許可權或者sysoper許可權。

具有以上許可權的使用者的密碼都會以二進位制方式存放在密碼檔案中。

 

不推薦使用ORAPWD命令重建密碼檔案。(刪除密碼檔案在重建,使用者具有sysdbasysoper許可權是登入不上的)

 

密碼檔案存放的位置

ongyang admin]$ ll  $ORACLE_HOME/dbs/orapw$ORACLE_SID

-rw-r----- 1 oracle oinstall 1536 Mar 20 10:34 /u01/app/oracle/product/10.2.0/db_1/dbs/orapwfengzi

[oracle@dongyang admin]$

檢視orapwd命令

[oracle@dongyang admin]$ orapwd

Usage: orapwd file= password= entries= force=

            

  where

    file - name of password file (mand),

    password - password for SYS (mand),

entries - maximum number of distinct DBA and –可以有多少sysdba,sysoper許可權使用者放到密碼檔案中

 force - whether to overwrite existing file (opt),

OPERs (opt),

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

[oracle@dongyang admin]$

修改密碼為oracle

[oracle@dongyang admin]$ cd $ORACLE_HOME/dbs

[oracle@dongyang dbs]$ orapwd file=orapwfengzi password=oracle force=y

[oracle@dongyang dbs]$

 

推薦修改密碼方式

 

[oracle@dongyang ~]$ sqlplus "/ as sysdba"

 

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 24 09:23:12 2014

 

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

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

 

SQL>alter user sys identified by oracle

User altered.

SQL>

這時候密碼檔案中的內容。

[oracle@dongyang dbs]$ strings orapwfengzi

]\[Z

ORACLE Remote Password file

INTERNAL

AB27B53EDC5FEF41

8A8F025737A9097A

[oracle@dongyang dbs]$

在修改一次密碼檢視密碼檔案是否改變。

[oracle@dongyang ~]$ sqlplus "/ as sysdba"

 

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 24 09:23:12 2014

 

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

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

 

SQL> alter user sys identified by oracle123;

 

User altered.

 

SQL>

再次檢視密碼檔案的值

[oracle@dongyang dbs]$ strings orapwfengzi

]\[Z

ORACLE Remote Password file

INTERNAL

87C5F4BF47942D0E

4CCF4A082AD3F312      

[oracle@dongyang dbs]$

根據這個特性,推薦使用alter user 修改使用者的密碼。

普通使用者具備sysdba的許可權

 

密碼檔案當前值

[oracle@dongyang dbs]$ strings orapwfengzi

]\[Z

ORACLE Remote Password file

INTERNAL

87C5F4BF47942D0E

4CCF4A082AD3F312

[oracle@dongyang dbs]$

授予普通使用者sysdba許可權

SQL> grant sysdba to qiu;

 

Grant succeeded.

 

SQL>

再次檢視密碼檔案

[oracle@dongyang dbs]$ strings orapwfengzi

]\[Z

ORACLE Remote Password file

INTERNAL

87C5F4BF47942D0E

4CCF4A082AD3F312

41B03979723DCD31

[oracle@dongyang dbs]$

使用密碼檔案認證登陸到資料庫

[oracle@dongyang ~]$ sqlplus qiu/oracle@orcl as sysdba

 

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 24 09:51:02 2014

 

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

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

 

SQL>

SQL> show user

USER is "SYS"     sysdba許可權的使用者登入到資料庫其實就是登陸的sys使用者)

SQL>

當然密碼錯誤是登入不上的

[oracle@dongyang ~]$ sqlplus qiu/qwer@orcl as sysdba

 

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 24 09:52:36 2014

 

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

 

ERROR:

ORA-01017: invalid username/password; logon denied

 

 

Enter user-name:

給予sysoper許可權一樣是會記錄在密碼檔案中的

 

SQL> create user bj1 identified by bj1;

 

User created.

 

SQL> grant sysoper to bj1;

 

Grant succeeded.

 

SQL>

檢視密碼檔案

[oracle@dongyang dbs]$ strings orapwfengzi

]\[Z

ORACLE Remote Password file

INTERNAL

87C5F4BF47942D0E

4CCF4A082AD3F312

41B03979723DCD31

533C4A5F0CA43E68    (發現又多了一條記錄,這條記錄對應的就是bj1的密碼)

[oracle@dongyang dbs]$

Sysdba許可權與sysoper許可權的區別

 

Sysdbasysoper都是系統許可權

 

Sysdba  預設 schema sys

可以啟動關閉資料庫,可以啟動到openmount

可以進行備份,改變字符集

可以建立資料庫、刪除資料庫

可以建立spfile

可以將資料庫改為歸檔

可以進行恢復

可以進行限制會話操作

Sysoper  預設schema public

也可以進行資料庫的啟動關閉,可以啟動到openmount

也可以進行備份,但是不能改變字符集

不能進行建立資料庫、刪除資料庫

也可以建立spfile

也可以將資料庫改為歸檔

也可以進行恢復,但是僅僅只能進行完全恢復,不能使用不完全恢復

也可以限制會話操作

 

預設schema

SQL> conn / as sysdba

Connected.

SQL> show user

USER is "SYS"

SQL> conn /as sysoper

Connected.

SQL> show user

USER is "PUBLIC"

SQL>

 

檢視那些使用者具有dba相關許可權

 

這個檢視記錄具有sysdbasysoper許可權的使用者

SQL> select * from v$pwfile_users;

 

USERNAME                    SYSDB    SYSOP

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

SYS                            TRUE    TRUE

QIU                            TRUE    FALSE

BJ1                            FALSE    TRUE

 

SQL>

可以看到,sys使用者預設sysdbasysoper許可權都是具備的。

只授予了qiu使用者sysdba許可權,所以只能sysdba許可權登入資料庫

同樣的只授予bj1使用者sysoper許可權,所以只能sysoper許可權登入資料庫

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29532781/viewspace-1130071/,如需轉載,請註明出處,否則將追究法律責任。

相關文章