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"