Oracle管理员认证方式

作者: 不剪发的Tony老师
毕业于北京航空航天大学,十多年数据库管理与开发经验,目前在一家全球性的金融公司从事数据库架构设计。CSDN学院签约讲师以及GitChat专栏作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net


数据库管理员DBA通常执行一些特殊操作,如打开与关闭数据库。这些管理操作需要通过两个特殊的系统权限执行:SYSDBA和SYSOPER。

以SYSDBA或SYSOPER权限连接时,连接的是一个默认模式,而不是与当前用户的模式。对于SYSDBA,模式为SYS;对于SYSOPER,模式为PUBLIC。

SQL> conn scott/tiger as sysdba;

Connected.

SQL> show user

USER is "SYS"

数据管理员认证的方式有两种:

    l         操作系统OS认证
    l         口令文件认证

      

              

 

执行远程数据库管理,需要注意大多数流行的连接协议,如TCP/IP和DECnet,是不安全的。因此需要使用口令文件认证。

1、操作系统OS认证

首先,需要一个操作系统用户,属于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)

设置初始化参数:REMOTE_LOGIN_PASSWORDFILE=NONE。

可以根据SPFILE生成文本参数文件,然后修改文本文件,再生成SPFILE。

SQL> create pfile from spfile;

编辑文本参数文件。关闭数据库。

SQL> shutdown immediate;

SQL> create spfile from pfile;

SQL> startup;

测试,不需要密码即可登陆。

SQL> conn / as sysdba;

SQL> conn sys/whatever as sysdba;  //随便什么口令,不输入也可以

注:此时远程连接不能使用OS认证,但我在VMWARE中创建的两个Windows Server2003却可以远程连接。

SQL> conn /@primary as sysdba

Connected.

其中primary为连接字符串。

使用另一台物理机连接时(TCP/IP),出现以下错误:

SQL> conn /@primary as sysdba

ERROR:

ORA-01031:insuffient privileges

此时,远程管理需要使用口令文件。

2、口令文件认证

首先,使用ORAPWD工具创建口令文件。

orapwd file=’C:/oracle/product/10.1.0/Db_1/database’ password=oracle entries=20

设置初始化参数: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                                      

为了测试效果,可以先禁用操作系统认证方式。编辑sqlnet.ora文件:

SQLNET.AUTHENTICATION_SERVICES= (NONE)

测试,本地连接方式:

SQL> conn sys/whatever as sysdba  //操作系统认证方式被禁用

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"