連接權(quán)限 要連接oracle數(shù)據(jù)庫的用戶必須有create session系統(tǒng)權(quán)限或CONNECT角色。 連接方式 1. 本地連接 $ sqlplus user/password 2. 遠程連接,service即tnsnames.ora中配置的服務 $ sqlplus user/password@service
SQL*PLUS連接方法 1. $ sqlplus "user/password[@service] [as sysdba]" 2. $ sqlplus /nolog SQL> conn user/password[@service] [as sysdba] 連接oracle實例時的驗證方式 對于sysdba和sysoper來說,驗證方式為: 1. 口令文件驗證,必須要有口令文件 2. 操作系統(tǒng)驗證,用戶必須為dba組 對于普通數(shù)據(jù)庫用戶(口令文件中沒有的用戶)來說,驗證方式為: 1. 數(shù)據(jù)字典驗證,數(shù)據(jù)庫為open狀態(tài) 2. 操作系統(tǒng)驗證,操作系統(tǒng)用戶為對應的數(shù)據(jù)庫externally認證用戶。由于不能將sysdba或sysoper權(quán)限賦予使用externally認證的oracle數(shù)據(jù)庫用戶,所以也要求數(shù)據(jù)庫為open狀態(tài)。 驗證相關(guān)配置和參數(shù) 1. sqlnet.ora的配置 參數(shù)SQLNET.AUTHENTICATION_SERVICES,設(shè)置為none時為口令文件驗證,設(shè)置為all支持所有驗證方式,設(shè)置為nts支持Windows NT操作系統(tǒng)認證。 刪除這個參數(shù)時,Windows下為口令文件認證,Unix/Linux下為操作系統(tǒng)認證。 2. 參數(shù)remote_login_passwordfile remote_login_passwordfile設(shè)置為none時,為操作系統(tǒng)驗證,設(shè)置為shared或exclusive時為口令文件驗證。在oracle 10g中,設(shè)置為shared或exclusive時,都會按照orapwSID、orapw的順序查找口令文件,即優(yōu)先使用orapwSID文件。但設(shè)置為shared時無法修改口令文件中的密碼,會報錯。 ORA-01999: password file cannot be updated in SHARED mode 口令文件與sysdba 1. 口令文件默認路徑為$ORACLE_HOME/dbs,文件名為orapwSID,二進制文件,修改將導致文件無效。 2. 若口令文件丟失,可以使用orapwd命令新建,參數(shù)指定口令文件的路徑,密碼,允許作為sysdba或sysoper連接的不同用戶的最大數(shù)目。如果超過該值,則必須創(chuàng)建一個新的口令文件??诹钗募J只有一個用戶SYS。 3. 使用SYS用戶賦予其他oracle數(shù)據(jù)庫用戶sysdba或sysoper權(quán)限,其實是將該數(shù)據(jù)庫用戶的用戶名和密碼添加到口令文件中。 5. DBA角色不擁有sysdba和sysoper權(quán)限。 4. 不能將sysdba或sysoper權(quán)限賦予角色,也不能賦予使用externally認證的oracle數(shù)據(jù)庫用戶。 6. SYS用戶只能以sysdba或sysoper登陸。 7. 默認情況下SYSTEM用戶擁有DBA角色,但是沒有sysdba和sysoper權(quán)限。 SYSOPER和SYSDBA的區(qū)別 以sysdba登陸時schema為sys,以sysoper登陸時schema為public
SYSOPER
|
RECOVER DATABASE ALTER DATABASE BACKUP CONTROLFILE TO ALTER DATABASE OPEN | MOUNT SHUTDOWN STARTUP ALTER DATABASE ARCHIVELOG RESTRICTED SESSION
|
SYSDBA
|
SYSDBA SYSOPER PRIVILEGES WITH ADMIN OPTION CREATE DATABASE ALTER TABLESPACE BEGIN/END BACKUP RESTRICTED SESSION RECOVER DATABASE UNTIL
|
SQL*PLUS不同的連接和驗證方式 1. $ sqlplus "user/password@service as sysdba" 作為sysdba遠程連接,口令文件驗證,要求監(jiān)聽已經(jīng)啟動。 若數(shù)據(jù)庫在該監(jiān)聽中進行了靜態(tài)注冊,即通過SID,實例任何狀態(tài)都可以連接,使用TCP協(xié)議。 若為動態(tài)注冊,即通過service_name連接,則無法作為sysdba遠程連接到idle或nomount狀態(tài)的實例。 2. $ sqlplus "user/password as sysdba" 非操作系統(tǒng)dba組用戶,作為sysdba本地連接,口令文件驗證,使用IPC協(xié)議,無需監(jiān)聽器。 3. $ sqlplus "/as sysdba" 操作系統(tǒng)dba組用戶,作為sysdba本地連接,操作系統(tǒng)驗證,使用IPC協(xié)議,無需監(jiān)聽器。 dba組用戶無論輸入什么用戶和密碼,都將驗證通過。 4. $ sqlplus "user/password@service" 普通數(shù)據(jù)庫用戶遠程連接,數(shù)據(jù)字典驗證,要求監(jiān)聽已經(jīng)啟動,數(shù)據(jù)庫為open狀態(tài),使用TCP協(xié)議。 5. $ sqlplus "user/password" 普通數(shù)據(jù)庫用戶本地連接,數(shù)據(jù)字典驗證,要求數(shù)據(jù)庫為open狀態(tài),使用IPC協(xié)議,無需監(jiān)聽器。 6. $ sqlplus "/ @service" 普通數(shù)據(jù)庫用戶遠程連接,操作系統(tǒng)驗證,要求監(jiān)聽已經(jīng)啟動,數(shù)據(jù)庫為open狀態(tài),使用TCP協(xié)議。 7. $ sqlplus "/" 普通數(shù)據(jù)庫用戶本地連接,操作系統(tǒng)驗證,要求數(shù)據(jù)庫為open狀態(tài),使用IPC協(xié)議,無需監(jiān)聽器。 普通用戶的操作系統(tǒng)驗證配置 實例參數(shù)remote_os_authent默認為false。這個參數(shù)控制某個用戶是否能夠在不需要給出口令的情況下從遠程計算機上連接數(shù)據(jù)庫。現(xiàn)代計算機系統(tǒng)不再需要執(zhí)行這種操作,但是仍然保留了改功能。 無論是本地的還是遠程的身份驗證都涉及到os_authent_prefix實例參數(shù)。默認值為"ops$"的os_authent_prefix參數(shù)指定了一個前綴,操作系統(tǒng)用戶名在被映射為oracle數(shù)據(jù)庫用戶名之前必須應用這個前綴。
使用下面的語句可以修改remote_os_authent參數(shù),重新啟動數(shù)據(jù)庫后生效。 SQL> alter system set remote_os_authent=true scope=spfile;
除非將os_authent_prefix參數(shù)設(shè)置為空,否則在建立需要操作系統(tǒng)驗證的數(shù)據(jù)庫用戶時,需要加上os_authent_prefix前綴。 SQL> create user ops$ocean identified externally; SQL> grant create session to ops$ocean;
然后,無論遠程或本地,非DBA組的操作系統(tǒng)用戶ocean,不用輸入用戶名和密碼就可以連接到oracle實例 SQL> conn / @test02 SQL> show user USER is "OPS$OCEAN"
|