1 概述
在ORACLE中有一種特殊層級許可權——sysdba許可權,sysdba許可權擁有ORACLE系統的最高許可權,有開啟資料庫、關閉資料庫、恢複資料庫等進階許可權,我們在工程安裝和日常維護中經常涉及到的sys使用者就有sysdba許可權。sysdba是管理oracle執行個體的,它的存在不依賴於整個資料庫完全啟動,只要執行個體啟動了,他就已經存在。以sysdba身份登陸,裝載資料庫、開啟資料庫。只有資料庫開啟了,或者說整個資料庫完全啟動後,dba角色才有了存在的基礎。
Sysdba使用者有兩種認證方式:作業系統(OS)認證和密碼檔案認證,本文主要闡述的是sysdba許可權不同認證方式的含義和配置說明。
os認證的意思把登入資料庫的使用者和口令校正放在了作業系統一級。如果以安裝oracle時的使用者登入os,那麼此時在登入oracle資料庫時不需要任何驗證。 不論輸入什麼使用者(哪怕這個使用者在資料庫中根本不存在),只要以sysdba許可權串連資料庫,都可以串連上,並且串連使用者是sys,這樣很方便,有時候,如果忘記了資料庫的密碼,而又想登入資料庫,可以通過這種方式,前提是在資料庫伺服器上。
2 Sysdba登陸方式
六種登陸方法(採用作業系統認證):
1. sys/www as sysdba
2. sys / as sysdba
3. sys as sysdba
4. / as sysdba
5. sqlplus /as sysdba
6. sqlplus /nolog
前4種是在SQL*PLUS登陸框的使用者名稱欄目中輸入,後2種是DOS環境下直接輸入。
3 查看具有sysdba許可權的使用者
以sys使用者登陸oracle,執行select * from V_$PWFILE_USERS;可查詢到如下結果:
sql> select * from V_$PWFILE_USERS;
USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
(何為sysoper許可權:SYSOPER特權也是oracle資料庫的一種特殊許可權。當使用者具有該特權時,可以啟動資料庫,關閉資料庫,但是不能建立資料庫,也不能執行不完全恢複,這也是和SYSDBA的最大區別,另外,也不具有DBA角色的任何許可權。建立了Oracle資料庫後,預設情況下只有SYS使用者具有SYSOPER特權。需要注意的是,如果要以SYSOPER身份登陸,要求OS使用者必須具有OSOPER角色(windows平台:ORA_OPER角色),當以SYSOPER身份登陸時,必須帶有AS SYSOPER選項。)
4 相關參數含義
(Sysdba許可權認證過程主要涉及ORACLE中的相關參數和設定檔說明如下
4.1 SQLNET.AUTHENTICATION_SERVICES
該參數在$ORACLE_HOME/NETWORK/ADMIN/sqlnet.ora目錄下, 是ORACLE的網路設定檔,SQLNET.AUTHENTICATION_SERVICES參數可以通常設定為:
■ NONE 採用密碼檔案認證方式,需要輸入使用者名稱稱和密碼。
■ NTS 採用WINDOWS的安全認證方式(WINDOWS專用);
■ ALL 可以採用密碼和作業系統認證方式。
4.2 remote_login_passwordfile
該參數可以設定為:
■ NONE 採用作業系統方式認證,不需要使用者名稱稱密碼;
■ EXCLUSIVE 採用密碼檔案方式認證,且密碼檔案只能被一個執行個體使用;
■ SHARED 採用密碼檔案方式認證, 密碼檔案可以被多個執行個體使用;
(注意:如果密碼檔案被多個執行個體使用,密碼檔案的名稱為去掉sid後的檔案名稱如pwd.ora)
5 各種認證的設定過程
要由於windows和UNIX平台下的設定不盡相同,下面分別進行闡述:
5.1 WINDOWS下的設定:
5.1.1 作業系統認證設定步驟:
■目前登陸的作業系統使用者屬於ora_dba組,一般在安裝ORACLE時候建立;
■ Sqlnet.ora檔案中的設定,需要設定SQLNET.AUTHENTICATION_SERVICES= (NTS),表示通過NT進行認證;
■ ORACLE參數檔案中:remote_login_passwordfile(可以設定為NONE,EXCLUSIVE,SHARED),作業系統認證時候,可以隨便設定。
5.1.2 通過密碼檔案進行認證設定步驟:
■ 密碼檔案的路徑在$ORACLE_HOME/DATABASE/PWDSID.ORA,SID為實際的資料庫SID;
■ Sqlnet.ora檔案中的設定, SQLNET.AUTHENTICATION_SERVICES可以不用設定,可以注釋掉,如果只想用密碼認證需要設定為NONE;
■ ORACLE參數檔案中參數:remote_login_passwordfile,必須設定為EXCLUSIVE,SHARED.
5.2 UNIX下的認證
5.2.1 通過作業系統認證設定:
■ 目前登陸的作業系統使用者屬於dba組,一般在安裝ORACLE時候建立;
■ Sqlnet.ora檔案可以設定為預設不管,但是不能設定為NONE。
■ ORACLE參數檔案中:remote_login_passwordfile(可以設定未NONE,EXCLUSIVE,SHARED),作業系統認證時候,可以隨便設定。
5.2.2 通過密碼檔案進行認證:
■密碼檔案的路徑在$ORACLE_HOME/dbs/orapwsid,SID為實際的資料庫SID;
■ Sqlnet.ora檔案不需要設定。
■ RACLE參數檔案中參數:remote_login_passwordfile,必須設定為EXCLUSIVE,SHARED.)
(注意:不管怎樣如果remote_login_passwordfile設定為exclusive,shared資料庫啟動過程會尋找密碼檔案,設定為none不需要)
6 重建密碼檔案
一般在sys使用者的密碼丟失或者想增加sysdba許可權使用者的個數的時候,需要重新建立密碼檔案。
建立密碼檔案命令和解釋
orapwd file=filename password=sys使用者密碼 entries=entries.
■ File 為密碼檔案的名稱,可以指定路徑,也可以不指定路徑,不指定路徑的情況,windows下該密碼檔案的路徑為:$ORACLE_HOME\DATABASE\pwdsid.ora,unix下的路徑為:$ORACLE_HOME/dbs/orapwsid (sid為執行個體名),該參數必須輸入;
■ Password 為該使用者的密碼,該參數必須輸入;
■ Entries表示最大允許的超級使用者的個數,該參數為選擇性參數,按自己的需要輸入。
Example:orapwd file=orapwora92 password=manager entries=3。