Oracle管理員認證方式
作者: 不剪發(fā)的Tony老師
畢業(yè)于北京航空航天大學,十多年數(shù)據(jù)庫管理與開發(fā)經驗,目前在一家全球性的金融公司從事數(shù)據(jù)庫架構設計。CSDN學院簽約講師以及GitChat專欄作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net
數(shù)據(jù)庫管理員DBA通常執(zhí)行一些特殊操作,如打開與關閉數(shù)據(jù)庫。這些管理操作需要通過兩個特殊的系統(tǒng)權限執(zhí)行:SYSDBA和SYSOPER。
以SYSDBA或SYSOPER權限連接時,連接的是一個默認模式,而不是與當前用戶的模式。對于SYSDBA,模式為SYS;對于SYSOPER,模式為PUBLIC。
SQL> conn scott/tiger as sysdba;
Connected.
SQL> show user
USER is "SYS"
數(shù)據(jù)管理員認證的方式有兩種:
l 操作系統(tǒng)OS認證
l 口令文件認證
執(zhí)行遠程數(shù)據(jù)庫管理,需要注意大多數(shù)流行的連接協(xié)議,如TCP/IP和DECnet,是不安全的。因此需要使用口令文件認證。
1、操作系統(tǒng)OS認證
首先,需要一個操作系統(tǒng)用戶,屬于OSDBA或OSOPER組。在Windows下,組名稱分別為ORA_DBA和ORA_OPER,在“計算機管理”下的“本地用戶和組”中可以看到;在Unix下,組名稱分別為dba和oper。
設置文件sqlnet.ora。默認位置為%ORACLE_HOME%/network/admin (Windows),$ORACLE_HOME/network/admin (Unix)。
SQLNET.AUTHENTICATION_SERVICES= (NTS) (Windows)
SQLNET.AUTHENTICATION_SERVICES= (ALL) (Unix)
設置初始化參數(shù):REMOTE_LOGIN_PASSWORDFILE=NONE。
可以根據(jù)SPFILE生成文本參數(shù)文件,然后修改文本文件,再生成SPFILE。
SQL> create pfile from spfile;
編輯文本參數(shù)文件。關閉數(shù)據(jù)庫。
SQL> shutdown immediate;
SQL> create spfile from pfile;
SQL> startup;
測試,不需要密碼即可登陸。
SQL> conn / as sysdba;
SQL> conn sys/whatever as sysdba; //隨便什么口令,不輸入也可以
注:此時遠程連接不能使用OS認證,但我在VMWARE中創(chuàng)建的兩個Windows Server2003卻可以遠程連接。
SQL> conn /@primary as sysdba
Connected.
其中primary為連接字符串。
使用另一臺物理機連接時(TCP/IP),出現(xiàn)以下錯誤:
SQL> conn /@primary as sysdba
ERROR:
ORA-01031:insuffient privileges
此時,遠程管理需要使用口令文件。
2、口令文件認證
首先,使用ORAPWD工具創(chuàng)建口令文件。
orapwd file=’C:/oracle/product/10.1.0/Db_1/database’ password=oracle entries=20
設置初始化參數(shù):REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE。方法參見前文。
將超級用戶權限SYSDBA和SYSOPER授予其他用戶。
SQL> grant sysdba to scott;
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
SCOTT TRUE FALSE
為了測試效果,可以先禁用操作系統(tǒng)認證方式。編輯sqlnet.ora文件:
SQLNET.AUTHENTICATION_SERVICES= (NONE)
測試,本地連接方式:
SQL> conn sys/whatever as sysdba //操作系統(tǒng)認證方式被禁用
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
SQL> conn sys/oracle as sysdba //口令文件認證
Connected.
SQL> conn scott/tiger as sysdba; //注意登錄用戶為SYS
Connected.
SQL> show user
USER is "SYS"
測試,遠程連接方式:
SQL> conn sys/oracle@primary as sysdba
Connected.
SQL> conn scott/tiger@primary as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> conn scott/tiger@primary //以scott登錄
Connected.
SQL> show user
USER is "SCOTT"