Oracle超級(jí)用戶的權(quán)限管理
Oracle超級(jí)用戶有Oracle數(shù)據(jù)庫(kù)的最高權(quán)限,下面就為您介紹如何管理Oracle超級(jí)用戶的權(quán)限,如果您感興趣的話,不妨一看。
Oracle的用戶根據(jù)所被授予的權(quán)限分為系統(tǒng)權(quán)限和對(duì)象權(quán)限。其中最高的權(quán)限是sysdba。 Sysdba具有控制Oracle一切行為的特權(quán),諸如創(chuàng)建、啟動(dòng)、關(guān)閉、恢復(fù)數(shù)據(jù)庫(kù),使數(shù)據(jù)庫(kù)歸檔/非歸檔,備份表空間等關(guān)鍵性的動(dòng)作只能通過(guò)具有sysdba權(quán)限的用戶來(lái)執(zhí)行。這些任務(wù)即使是普通DBA角色也不行。Sysoper是一個(gè)與sysdba相似的權(quán)限,只不過(guò)比sysdba少了SYSOPER privileges WITH ADMIN OPTION,CREATE DATABASE,RECOVER DATABASE UNTIL這幾個(gè)權(quán)限而已。這兩者的認(rèn)證方式是相同的辦法,所以下面只介紹sysdba的認(rèn)證管理。
一般對(duì)sysdba的管理有兩種方式:操作系統(tǒng)認(rèn)證和密碼文件認(rèn)證。具體選擇那一種認(rèn)證方式取決于:你是想在Oracle運(yùn)行的機(jī)器上維護(hù)數(shù)據(jù)庫(kù),還是在一臺(tái)機(jī)器上管理分布于不同機(jī)器上的所有的Oracle數(shù)據(jù)庫(kù)。若選擇在本機(jī)維護(hù)數(shù)據(jù)庫(kù),則選擇操作系統(tǒng)認(rèn)證可能是一個(gè)簡(jiǎn)單易行的辦法;若有好多數(shù)據(jù)庫(kù),想進(jìn)行集中管理,則可以選擇password文件認(rèn)證方式。
使用操作系統(tǒng)認(rèn)證方式的配置過(guò)程:
1.在操作系統(tǒng)中建立一個(gè)合法帳戶。
具體來(lái)說(shuō),在NT上,首先建立一個(gè)本地用戶組,取名為ORA_<SID>_DBA,其中SID為該數(shù)據(jù)庫(kù)實(shí)例的SID,或者建立一個(gè)ORA_DBA地組,該組不對(duì)應(yīng)于任何一個(gè)單獨(dú)的Oracle實(shí)例。這樣當(dāng)一個(gè)NT上有好幾個(gè)Oracle實(shí)例時(shí),不用分別管理。然后再NT上建立一個(gè)用戶,并且把它歸入該組中。但是實(shí)際上這兩步在Oracle8I安裝過(guò)程中已經(jīng)自動(dòng)完成了,一般不用手動(dòng)進(jìn)行。
第三步:在sqlnet.ora(位于$ORACLE_HOME/NETWORK/ADMIN目錄中)中,把SQLNET.AUTHENTICATION _ SERVICES 設(shè)置為SQLNET.AUTHENTICATION_SERVICES= (NTS),意思為使用NT認(rèn)證方式。
第四步,在INIT<SID>.ORA中,把REMOTE_LOGIN_PASSWORD設(shè)置為NONE,意思是不用password認(rèn)證方式。
完成以上步驟后,就可以在登錄到NT后,直接在SQL*Plus 和SERVER MANAGER中CONNECT INTERNAL (CONNECT / AS SYSDBA)來(lái)作為Oracle超級(jí)用戶登錄到Oracle中,執(zhí)行一些只有Oracle超級(jí)用戶才能進(jìn)行的操作。
在Unix下,情況有些不同。畢竟這是兩個(gè)完全不同的操作系統(tǒng)。
首先,在安裝Oracle之前,建立一個(gè)DBA組,這一步不用說(shuō)了,不然是裝不上Oracle的。一般還建立一個(gè)名為Oracle的用戶,并把它加入到DBA組中。
第二步, 設(shè)置REMOTE_LOGIN_PASSWORD為NONE。在Oracle8.1以后,該參數(shù)默認(rèn)為EXCLUSIVE。一定要記得改過(guò)來(lái)。
第三步, 用該用戶名登錄Unix,運(yùn)行SQL*Plus 或者SERVER MANAGER,輸入以下命令:CONNECT INTERNAL (CONNECT / AS SYSDBA)來(lái)登錄到Oracle中。
使用password文件認(rèn)證的具體步驟:
Oracle提供orapwd實(shí)用程序來(lái)創(chuàng)建password 文件,運(yùn)用orapwd建立該認(rèn)證方式的具體步驟如下:
1.使用Orapwd實(shí)用程序來(lái)創(chuàng)建一個(gè)PASSWORD文件。語(yǔ)法:
orapwd file=文件名 password=internal用戶密碼 entried=entries.
詳細(xì)解釋:
文件名要包含完整的全路徑名,如果不指定,Oracle把它默認(rèn)放置$ORACLE_HOME/dbs(Unix下)或者$ORACLE_HOME/DATABASE(NT下)下。
用戶密碼是用戶internal的密碼。當(dāng)然后來(lái)還可以再向里邊加入別的Oracle超級(jí)用戶。
Entries表示最大允許有的Oracle超級(jí)用戶數(shù)目。這個(gè)是一個(gè)可選的。前兩者是必須指定的。一般會(huì)把它設(shè)置的比實(shí)際需要大一些,以免不夠。
2.把INIT<SID>.ORA中REMOTE_LOGIN_PASSWORD設(shè)置為EXCLUSIVE 或SHARED.使用EXCLUSIVE表示只有當(dāng)前INSTANCE使用這個(gè)password文件。而且允許有別的用戶作為sysdba登錄進(jìn)系統(tǒng)里邊,而若選擇了SHARED,則表明不止一個(gè)實(shí)例使用這個(gè)密碼文件,伴隨著一個(gè)很強(qiáng)的約束:sysdba權(quán)限只能授予sys和internal這兩個(gè)用戶名。(其實(shí)internal不是一個(gè)實(shí)際用戶,而只是sys作為sysdba登錄時(shí)的一個(gè)別名。)
同時(shí)還要記得把sqlnet.ora文件中SQLNET.AUTHENTICATION _SERVICES設(shè)置為NONE。一般在Unix下它是默認(rèn)設(shè)置。在NT下,若選擇典型安裝時(shí),會(huì)使用OS認(rèn)證,而自定義時(shí)會(huì)使用密碼文件認(rèn)證方式。在安裝過(guò)程中會(huì)提示輸入INTERNAL密碼。這樣的話,就不用在手工創(chuàng)建密碼文件和設(shè)定INTERNAL的密碼了。
3.用SQL*Plus 或SERVER MANAGER運(yùn)行下面命令登錄進(jìn)系統(tǒng):CONNECT INTERNAL/密碼。
注意點(diǎn):
1.在Oracle8.1.6安裝在WIN2000下創(chuàng)建數(shù)據(jù)庫(kù)時(shí),常常會(huì)發(fā)生憑證檢索失敗的錯(cuò)誤。這是由于Oracle不能應(yīng)用OS認(rèn)證的結(jié)果。一般可以通過(guò)修改sqlnet.ora中SQLNET.AUTHENTICATION _SERVICES為NONE來(lái)解決。這時(shí),Oracle將采用密碼文件認(rèn)證方式。
2.由于Oracle有幾個(gè)系統(tǒng)預(yù)建的用戶,所以最好在安裝完成以后馬上改變這些用戶的密碼。系統(tǒng)默認(rèn)得密碼分別為:internal/oracle , sys/change_on_install, system/manager.
3.當(dāng)選擇密碼文件認(rèn)證方式時(shí),可以再向系統(tǒng)中加入其他超級(jí)用戶。比如用以下語(yǔ)句把用戶SCOTT加入超級(jí)用戶之中:(由具有sysdba權(quán)限的人執(zhí)行)
SQL>GRANT SYSDBA TO SCOTT;這樣SCOTT用戶就具有了sysdba權(quán)限。注意,此時(shí)SCOTT用戶可以以兩種身份登錄:SCOTT , SYS.當(dāng)SCOTT在登錄時(shí)沒(méi)有輸入AS SYSDBA時(shí),SCOTT是作為普通用戶登錄的。而當(dāng)?shù)卿洉r(shí)輸入了AS SYSDBA時(shí),此時(shí)SCOTT登錄進(jìn)去的用戶實(shí)際上為sys。這可以從下圖觀察:
4.當(dāng)前系統(tǒng)中的具有sysdba權(quán)限的用戶名可以從數(shù)據(jù)字典視圖v$pwfile_user中查詢得到:
SELECT * FROM V$PWFILE_USERS; 如上圖所示。
5. 系統(tǒng)中最大的具有sysdba權(quán)限的用戶數(shù)由創(chuàng)建密碼文件時(shí)的ENTRIES參數(shù)決定。當(dāng)需要?jiǎng)?chuàng)建更多的具有sysdba權(quán)限的用戶時(shí),就需要?jiǎng)h除原有的密碼文件,重新創(chuàng)建一個(gè)。這需要關(guān)閉數(shù)據(jù)庫(kù),刪除密碼文件,重新創(chuàng)建一個(gè)新的密碼文件,在entries中輸入足夠大的數(shù)目。再啟動(dòng)Oracle。這時(shí),所有原來(lái)北授權(quán)的超級(jí)用戶都不再存在,需要重新授權(quán)。所以在重新創(chuàng)建密碼文件前,先要查詢?cè)撘晥D,記下用戶名,再在創(chuàng)建完密碼文件后重新授權(quán)。
6. Internal用戶密碼忘記的處理方法:
有兩種辦法:
1. ALTER USER SYS IDENTIFIED BY 新密碼;//這同時(shí)也改變了Internal的密碼,在Oracle8I中通過(guò)
2. 重新創(chuàng)建一個(gè)新的密碼文件,指定一個(gè)新的密碼。
【編輯推薦】