Oracle中超級使用者許可權的管理

2021-04-26 07:59:56 字數 3398 閱讀 8047

oracle 的使用者根據所被授予的許可權分為系統許可權和物件許可權。其中最高的許可權是sysdba。 sysdba具有控制oracle一切行為的特權,諸如建立、啟動、關閉、恢復資料庫,使資料庫歸檔/非歸檔,備份表空間等關鍵性的動作只能通過具有 sysdba許可權的使用者來執行。這些任務即使是普通dba角色也不行。sysoper是乙個與sysdba相似的許可權,只不過比sysdba少了 sysoper privileges with admin option,create database,recover database until這幾個許可權而已。這兩者的認證方式是相同的辦法,所以下面只介紹sysdba的認證管理。

一般對sysdba的管理有兩種方式:作業系統認證和密碼檔案認證。具體選擇那一種認證方式取決於:你是想在oracle執行的機器上維護資料庫,還是在一台機器上管理分布於不同機器上的所有的oracle資料庫。若選擇在本機維護資料庫,則選擇作業系統認證可能是乙個簡單易行的辦法;若有好多資料庫,想進行集中管理,則可以選擇 password檔案認證方式。

使用作業系統認證方式的配置過程:

1. 在作業系統中建立乙個合法帳戶。

具體來說,在nt上,首先建立乙個本地使用者組,取名為ora__dba,其中sid為該資料庫例項的sid,或者建立乙個 ora_dba地組,該組不對應於任何乙個單獨的oracle例項。這樣當乙個nt上有好幾個oracle例項時,不用分別管理。然後再nt上建立乙個使用者,並且把它歸入該組中。但是實際上這兩步在oracle8i安裝過程中已經自動完成了,一般不用手動進行。

第三步:在sqlnet.ora(位於$oracle_home/network/admin目錄中)中,把sqlnet.authentication _

services 設定為sqlnet.authentication_services= (nts),意思為使用nt認證方式。

第四步,在init.ora中,把remote_login_password設定為none,意思是不用password認證方式。

完成以上步驟後,就可以在登入到nt後,直接在sql*plus 和server manager中connect internal (connect / as sysdba)來作為超級使用者登入到oracle中,執行一些只有超級使用者才能進行的操作。

在unix下,情況有些不同。畢竟這是兩個完全不同的作業系統。

首先,在安裝oracle之前,建立乙個dba組,這一步不用說了,不然是裝不上oracle的。一般還建立乙個名為oracle的使用者,並把它加入到dba組中。

第二步, 設定remote_login_password為none。在oracle8.1以後,該引數預設為exclusive。一定要記得改過來。

第三步, 用該使用者名稱登入unix,執行sql*plus 或者server manager,輸入以下命令:connect internal

(connect / as sysdba)來登入到oracle中。

使用password檔案認證的具體步驟:

oracle提供orapwd實用程式來建立password 檔案,運用orapwd建立該認證方式的具體步驟如下:

1. 使用orapwd實用程式來建立乙個password檔案。

語法:orapwd file=檔名 password=internal使用者密碼 entries=entries.

詳細解釋:

檔名要包含完整的全路徑名,如果不指定,oracle把它預設放置$oracle_home/dbs(unix下)或者$oracle_home/database(nt下)下。

使用者密碼是使用者internal的密碼。當然後來還可以再向裡邊加入別的超級使用者。

entries表示最大允許有的超級使用者數目。這個是乙個可選的。前兩者是必須指定的。一般會把它設定的比實際需要大一些,以免不夠。

2. 把init.ora中remote_login_password設定為exclusive 或shared.使用exclusive表示只有當前instance使用這個password檔案。而且允許有別的使用者作為sysdba登入進系統裡邊,而若選擇了shared,則表明不止乙個例項使用這個密碼檔案,伴隨著乙個很強的約束:sysdba許可權只能授予sys和internal這兩個使用者名稱。(其實internal不是乙個實際使用者,而只是sys作為sysdba登入時的乙個別名。)

同時還要記得把 sqlnet.ora檔案中sqlnet.authentication _services設定為none。一般在unix下它是預設設定。在nt下,若選擇典型安裝時,會使用os認證,而自定義時會使用密碼檔案認證方式。在安裝過程中會提示輸入internal密碼。這樣的話,就不用在手工建立密碼檔案和設定internal的密碼了。

3. 用sql*plus 或server manager執行下面命令登入進系統:connect internal/密碼。

注意:1.在oracle8.1.6安裝在win2000下建立資料庫時,常常會發生憑證檢索失敗的錯誤。這是由於oracle不能應用os認證的結果。一般可以通過修改sqlnet.ora中sqlnet.authentication _services為none來解決。這時,oracle將採用密碼檔案認證方式。

2.由於oracle有幾個系統預建的使用者,所以最好在安裝完成以後馬上改變這些使用者的密碼。系統預設得密碼分別為:internal/oracle , sys/change_on_install, system/manager.

3.當選擇密碼檔案認證方式時,可以再向系統中加入其他超級使用者。比如用以下語句把使用者scott加入超級使用者之中:(由具有sysdba許可權的人執行)

sql>grant sysdba to scott;這樣scott使用者就具有了sysdba許可權。注意,此時scott使用者可以以兩種身份登入:scott , sys.當scott在登入時沒有輸入as sysdba時,scott是作為普通使用者登入的。而當登入時輸入了as sysdba時,此時scott登入進去的使用者實際上為sys。這可以從下圖觀察:

4. 當前系統中的具有sysdba許可權的使用者名稱可以從資料字典檢視v$pwfile_user中查詢得到: select * from v$pwfile_users; 如上圖所示。

5.系統中最大的具有sysdba許可權的使用者數由建立密碼檔案時的entries引數決定。當需要建立更多的具有sysdba許可權的使用者時,就需要刪除原有的密碼檔案,重新建立乙個。這需要關閉資料庫,刪除密碼檔案,重新建立乙個新的密碼檔案,在entries中輸入足夠大的數目。再啟動oracle。這時,所有原來北授權的超級使用者都不再存在,需要重新授權。所以在重新建立密碼檔案前,先要查詢該檢視,記下使用者名稱,再在建立完密碼檔案後重新授權。

6. internal使用者密碼忘記的處理方法:

有兩種辦法:

1. alter user sys identified by 新密碼;//這同時也改變了internal的密碼,在oracle8i中通過

2. 重新建立乙個新的密碼檔案,指定乙個新的密碼。

Oracle中超級使用者許可權的管理

oracle 的使用者根據所被授予的許可權分為系統許可權和物件許可權。其中最高的許可權是sysdba。sysdba具有控制oracle一切行為的特權,諸如建立 啟動 關閉 恢復資料庫,使資料庫歸檔 非歸檔,備份表空間等關鍵性的動作只能通過具有sysdba許可權的使用者來執行。這些任務即使是普通dba...

Oracle中超級使用者許可權的管理

oracle 的使用者根據所被授予的許可權分為系統許可權和物件許可權。其中最高的許可權是sysdba。sysdba具有控制oracle一切行為的特權,諸如建立 啟動 關閉 恢復資料庫,使資料庫歸檔 非歸檔,備份表空間等關鍵性的動作只能通過具有sysdba許可權的使用者來執行。這些任務即使是普通dba...

Oracle中超級使用者許可權的管理

oracle 的使用者根據所被授予的許可權分為系統許可權和物件許可權。其中最高的許可權是sysdba。sysdba具有控制oracle一切行為的特權,諸如建立 啟動 關閉 恢復資料庫,使資料庫歸檔 非歸檔,備份表空間等關鍵性的動作只能通過具有sysdba許可權的使用者來執行。這些任務即使是普通dba...