日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle密码文件认证,Oracle OS认证与口令文件认证详解

發布時間:2024/10/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle密码文件认证,Oracle OS认证与口令文件认证详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

特殊權限與Oracle登陸認證管理

在開始學Oracle的時候有件事一直讓我感覺很奇怪,就是為什么在數據沒有起來的時候只要登錄到安裝Oracle的操作系統中直接用sqlplus / as sysdba就能登陸到數據庫中然后對數據庫進行啟動停止之類的操作。后來看到關于Oracle口令文件相關資料的時候才豁然開朗:數據庫認證信息并不一定存在數據庫中的,這點和SQL Server很是不一樣。

在Oracle中有兩類特殊的權限SYSDBA和SYSOPER,當DBA需要對數據庫進行維護管理操作的時候必須具有這兩類特殊權限之中的一種。在數據庫沒有打開的時候,使用數據庫內建的賬號是無法登陸數據庫的,但是擁有SYSDBA或是SYSOPER權限的用戶是可以登陸的。認證用戶是否擁有兩類特殊權限的方法有兩種:OS認證和口令文件認證。

OS認證和口令文件認證方法

Oracle特殊權限認證方法

(來源:Oracle? Database Administrator’s Guide 10g Release 2)

Oracle數據庫究竟使用OS認證還是口令文件認證來進行管理取決于下面三個因素:

SQLNET.ORA參數文件中的參數SQLNET.AUTHENTICATION_SERVICES設置

PFILE(SPFILE)參數文件中的參數REMOTE_LOGIN_PASSWORDFILE設置

口令文件orapw$SID(Linux) | PWD$SID.ora(Windows)

Oracle權限認證的基本順序是這樣的,先由SQLNET.AUTHENTICATION_SERVICES的設置值來決定是使用OS認證還是口令文件認證,如果使用口令文件認證的話就要看后面兩個條件了:如果REMOTE_LOGIN_PASSWORDFILE參數設置為非NONE而且口令文件存在的話就能正常使用口令文件認證,否則將會失敗。

SQLNET.AUTHENTICATION_SERVICES參數

在SQLNET.ORA(位于$ORACLE_HOME/NETWORK/ADMIN目錄中)文件中,需要修改時直接用文本編輯器打開修改就行了,對于不同的操作系統SQLNET.AUTHENTICATION_SERVICES的取值會有些不一樣,通常我們會用到下面的一些設置值:

SQLNET.AUTHENTICATION_SERVICES = (ALL)

對Linux系統,支持OS認證和口令文件認證。

對Windows系統,實際實驗是不支持此參數,驗證失敗。

SQLNET.AUTHENTICATION_SERVICES = (NTS)

此設置值僅用于Windows NT系統,此設置同時支持OS認證和口令文件認證,只有在設置了(NTS)值之后運行在Windows系統上的Oracle才支持OS認證。

SQLNET.AUTHENTICATION_SERVICES = (NONE)

此設置值在Windows和Linux是作用一樣的,指定Oracle只使用口令文件認證。

不設置此參數或SQLNET.AUTHENTICATION_SERVICES =

對Linux系統,默認支持OS認證和口令文件認證。

對Windows系統,默認只支持口令文件認證,不支持OS認證。

OS認證實現

Oracle使用操作系統中的兩個用戶組來控制OS認證,在不同的操作系統中這兩個用戶組的名稱是不一樣的,一般來說他們是OSDBA 和 OSOPER,這兩個用戶組都是在Oracle安裝的時候創建的。下面列出不同系統中這兩個用戶組的名字:Operating System GroupUNIX User GroupUNIX User Group

OSDBAdbaORA_DBA

OSOPERoperORA_OPER

OSDBA用戶組的用戶可以使用SYSDBA權限登陸數據庫,OSOPER用戶組的的用戶可以使用SYSOPER權限來登陸數據庫。使用sqlplus可以用下面方法登陸

CONNECT/ASSYSDBACONNECT/ASSYSOPER

擁有OS權限的用戶登陸數據庫時不再需要輸入用戶名和密碼,因此使用下面的命令也是可以正常登陸的:

CONNECTANY_USER_NAME/ANY_PASSWORDASSYSDBACONNECTANY_USER_NAME/ANY_PASSWORDASSYSOPER

因此要創建一個新的OS認證帳號步驟是:

建立一個OS用戶

將用戶加入到OSDBA或是OSOPER用戶組

用新增加的用戶登陸系統,然后輸入sqlplus / AS SYSDBA進行登陸

REMOTE_LOGIN_PASSWORDFILE參數

REMOTE_LOGIN_PASSWORDFILE系統參數的設置制定了數據庫使用口令文件的方法,此參數可以設置的值有三個:

REMOTE_LOGIN_PASSWORDFILE = NONE

不使用口令文件

REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE

使用口令文件,但只有一個數據庫實例可用使用

REMOTE_LOGIN_PASSWORDFILE = SHARED

多個數據庫實例共用一個口令文件,這種設置下是不能增加其他數據庫用戶作為特殊權限用戶到口令文件中的。

REMOTE_LOGIN_PASSWORDFILE參數屬于初始化參數,只能在init.ora/pfile中指定或是在數據庫打開狀態下使用下面語句修改,然后重新啟動數據庫。

ALTERSYSTEMSETREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVESCOPE=SPFILE;

要檢查當前REMOTE_LOGIN_PASSWORDFILE的設定值在登陸Oracle后輸入下面的命令

SQL>showparameterremote/** 這是輸出結果,看remote_login_passwordfile一行

NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?TYPE? ? ? ? VALUE

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

remote_archive_enable? ? ? ? ? ? ? ? string? ? ? true

remote_dependencies_mode? ? ? ? ? ? ?string? ? ? TIMESTAMP

remote_listener? ? ? ? ? ? ? ? ? ? ? string

remote_login_passwordfile? ? ? ? ? ? string? ? ? EXCLUSIVE

remote_os_authent? ? ? ? ? ? ? ? ? ? boolean? ? ?FALSE

remote_os_roles? ? ? ? ? ? ? ? ? ? ? boolean? ? ?FALSE

SQL>

*/

口令文件和口令文件認證

口令文件存放著被授予SYSDBA或SYSOPER權限的用戶的用戶名和密碼。它是一個加密的文件,用戶不能修改這個文件,

在Linux系統中口令文件一般保存在$ORACLE_HOME/dbs目錄下,文件名為orapw$SID;在Windows系統中口令文件一般保存在$ORACLE_HOME/database目錄下,文件名為PWD$SID.ora。

使用口令文件認證的基本步驟是:

使用orapwd工具生成口令文件

設置REMOTE_LOGIN_PASSWORDFILE為EXCLUSIVE或是SHARED

使用SYS登陸數據庫,創建新的數據庫用戶

使用GRANT命令授予新創建的用戶SYSDBA/SYSOPER權限

1、使用orapwd工具生成口令文件

我們可以使用Oracle提供的工具orapwd來創建或者重新初始化一個口令文件:

[oracle@RHEL4 dbs]$ 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? ? ?force - whether to overwrite existing file (opt),

OPERs (opt),

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

[oracle@RHEL4 ~]$ orapwd file='$ORACLE_HOME/dbs/orapw$ORACLE_SID' password=pwd entries=10 force=y

[oracle@RHEL4 ~]$

注意:使用orapwd重新生成口令文件之后以保存的授予的其他用戶的SYSDBA或是SYSOPER權限將會丟失,需要重新的GRANT。

設定的entries值是不能修改的,如果要修改entries的話需要重新生成口令文件,在生成口令文件之前可以先通過V$PWFILE_USERS視圖查詢出當前被授予SYSDBA/SYSOPER權限的用戶,然后在重新生成口令文件以后重新對這些用戶授予SYSDBA/SYSOPER權限

2、設置REMOTE_LOGIN_PASSWORDFILE為EXCLUSIVE或是SHARED

ALTERSYSTEMSETREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVESCOPE=SPFILE;

3、使用SYS登陸數據庫,創建新的數據庫用戶

CREATEUSERtestIDENTIFIEDBYtest;

4、使用GRANT命令授予新創建的用戶SYSDBA/SYSOPER權限

GRANTSYSDBATOtest.

每次在Oracle系統里面使用GRANT SYSDBA/SYSOPER授予新用戶特殊權限或是ALTER USER命令修改擁有SYSDBA/SYSOPER權限的用戶密碼的時候,Oracle都會自動的修改口令文件,增加或是修改相應的項目,這樣保證在數據沒有打開的情況擁有特殊權限的用戶能正常的登陸數據庫以進行管理操作。

實驗

上面長篇大論的說了那么多,下面我們來做實驗驗證一下。實驗都是基于Linux系統來做的,做實驗之前先使用下面的命令創建一個口令文件:

[oracle@RHEL4 ~]$ orapwd file='$ORACLE_HOME/dbs/orapw$ORACLE_SID' password=pwd entries=10 force=y

1、驗證OS認證

設置SQLNET.ORA中參數SQLNET.AUTHENTICATION_SERVICES = (ALL)或是不設置,REMOTE_LOGIN_PASSWORDFILE = NONE,然后進行下面的操作。

本地使用下面兩種方式登陸,都能成功

[oracle@RHEL4 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 7 15:06:55 2008

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@RHEL4 dbs]$ sqlplus aaa/bbb as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 7 15:16:25 2008

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>

遠程使用口令文件方式登陸,失敗

D:\Oracle\SQLPlus10.2> sqlplus sys/pwd@192.168.0.201/orcl as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sat Jun 7 19:06:55 2008

Copyright (c) 1982, 2007, Oracle.? All Rights Reserved.

ERROR:

ORA-01017: invalid username/password; logon denied

Enter user-name:

2、兩種認證都失效

設置SQLNET.ORA中參數SQLNET.AUTHENTICATION_SERVICES = (NONE),REMOTE_LOGIN_PASSWORDFILE = NONE,然后進行下面的操作。

本地使用下面兩種方式登陸,都失敗

[oracle@RHEL4 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 7 19:22:05 2008

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

ERROR:

ORA-01031: insufficient privileges

Enter user-name:

[oracle@RHEL4 ~]$ sqlplus sys/pwd as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 7 19:22:46 2008

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

ERROR:

ORA-01017: invalid username/password; logon denied

Enter user-name:

遠程使用口令文件方式登陸,失敗

D:\Oracle\SQLPlus10.2> sqlplus sys/pwd@192.168.0.201/orcl as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sat Jun 7 19:06:55 2008

Copyright (c) 1982, 2007, Oracle.? All Rights Reserved.

ERROR:

ORA-01017: invalid username/password; logon denied

Enter user-name:

3、驗證口令文件認證

設置SQLNET.ORA中參數SQLNET.AUTHENTICATION_SERVICES = (NONE)不設置,REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE或SHARED,然后進行下面的操作。

本地使用驗證OS認證,失敗

[oracle@RHEL4 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 7 19:16:56 2008

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

ERROR:

ORA-01031: insufficient privileges

Enter user-name:

本地驗證口令文件認證,成功

[oracle@RHEL4 ~]$ sqlplus sys/pwd as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 7 19:26:48 2008

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>

遠程使用口令文件認證,成功

D:\Oracle\SQLPlus10.2> sqlplus sys/pwd@192.168.0.201/orcl as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sat Jun 7 19:21:18 2008

Copyright (c) 1982, 2007, 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

SYS@192.168.0.201/orcl>

4、兩種認證都成功

設置SQLNET.ORA中參數SQLNET.AUTHENTICATION_SERVICES = (ALL),REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE,然后進行下面的操作。

本地使用驗證OS認證,成功

[oracle@RHEL4 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 7 19:30:33 2008

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>

遠程使用口令文件認證,成功

D:\Oracle\SQLPlus10.2> sqlplus sys/pwd@192.168.0.201/orcl as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sat Jun 7 19:27:11 2008

Copyright (c) 1982, 2007, 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

SYS@192.168.0.201/orcl>

5、將SYSDBA/SYSOPER權限授權給其它數據庫帳戶

先查看口令文件的修改時間

[oracle@RHEL4 dbs]$ ll orapworcl

-rw-r-----? 1 oracle oinstall? 2560 Jun? 7 19:04 orapworcl

用SYS登陸數據庫,創建新用戶test,并賦予SYSDBA權限

[oracle@RHEL4 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 7 21:41:36 2008

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>

SQL>createusertestidentifiedbytest;Usercreated.SQL>grantsysdbatotest;Grantsucceeded.

SQL>exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

再看口令文件,已經修改了

[oracle@RHEL4 dbs]$ ll orapworcl

-rw-r-----? 1 oracle oinstall? 2560 Jun? 7 21:42 orapworcl

再用新的test帳號登陸,能成功的登陸

D:\Oracle\SQLPlus10.2>sqlplus test/test@192.168.0.201/orcl as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sat Jun 7 21:32:37 2008

Copyright (c) 1982, 2007, 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

SYS@192.168.0.201/orcl>

說明:如果要取消SYSDBA權限只需要運行下面的語句就可以了

SQL>revokesysdbafromtest;

常見問題說明

1、如何查找擁有SYSDBA或是SYSOPER權限的用戶

使用視圖V$PWFILE_USERS,結果集中的SYSDB和SYSOP分別代表是否有SYSDBA和SYSOPER權限。

SQL>select*fromv$pwfile_users;/**

USERNAME? ? ? ? ? ? ? ? ? ? ? ?SYSDB SYSOP

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

SYS? ? ? ? ? ? ? ? ? ? ? ? ? ? TRUE? TRUE

TEST? ? ? ? ? ? ? ? ? ? ? ? ? ?TRUE? FALSE

*/

2、授予權限時出現”ORA-01994: GRANT failed: password file missing or disabled”

出現這種情況是因為沒有創建口令文件,或者是口令文件放置的目錄不正確,Oracle找不到。只要重建或將口令文件置于$ORACLE_HOME/dbs/目錄中就可以了。

3、忘記了SYS帳號的密碼怎么辦?

如果數據庫啟用的OS認證登陸,則可以用OS認證登陸數據庫,然后使用下面的命令進行修改

alteruserSYSidentifiedbypwd;

如果沒有啟用OS認證登陸,則需要用orapwd重建口令文件

orapwd file='$ORACLE_HOME/dbs/orapw$ORACLE_SID' password=pwd entries=10 force=y

來至:

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的oracle密码文件认证,Oracle OS认证与口令文件认证详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。