浅谈Oracle的受限模式(Restricted Mode)

浅谈Oracle 的受限模式(Restricted Mode

一、 概述

Oracle 数据库中,通常我们用v$instance 查看数据库状态以及其他信息,在v$instance 中,有一列为logins ,取值有两个,一个是ALLOWED  ,另一个是RESTRICTED

   一般情况下,我们查看数据库状态,获取的logins 值为ALLOWED  ,那么RESTRICTED 又是什么情况呢,下面我们做一下简单了解。

二、 过程
   我们先看一下contents 中部分说明
 

Restricted Mode of Instance Startup

You can start an instance in restricted  mode (or later alter an existing instance to be in restricted mode). This  restricts connections to only those users who have been granted the RESTRICTED SESSION system privilege.


这是Oracle 数据库的一种状态,受限模式(Restricted Mode) ,如果数据库管理员将数据库的状态设置为Restricted Mode ,那么只能是拥有restrict 权限的用户(受限特权的用户),才能够连接到数据库进行操作。Restricted Mode (受限模式)通常用于数据库管理员在维护数据库的时候使用。Restricted Mode 限制新的没有权限的用户登录进来,但是如果一个没有Restricted Mode 权限的用户在设置Restricted Mode 之前已经登录到了Oracle 那么该用户仍然拥有操作数据库的权限,即Restricted Mode 不妨碍已经登录进来的用户继续执行操作。

 

  下面我们实验测试
查看数据库版本,状态、模式

SQL> select banner from v$version;

 

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release  11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

CORE     11.2.0.4.0      Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 - Production

 

SQL> select status,instance_name,logins from  v$instance;

 

STATUS        INSTANCE_NAME    LOGINS

------------ ---------------- ----------

OPEN         firsoul          ALLOWED


创建测试用户,并修改数据库模式,尝试连接

SQL> create user firsoul identified by firsoul;

 

User created.

 

SQL> grant connect,resource to firsoul;

 

Grant  succeeded.

SQL> alter system enable restricted  session;

 

System  altered.

 

SQL> select status,instance_name,logins  from v$instance;

 

STATUS       INSTANCE_NAME    LOGINS

------------  ---------------- ----------

OPEN          firsoul          RESTRICTED
SQL> conn system/oracle

Connected.

SQL> conn firsoul/firsoul

ERROR:

ORA-01035: ORACLE only available to users with  RESTRICTED SESSION privilege

 

Warning: You are no longer connected to  ORACLE.

 

将权限restricted session 赋予用户firsoul ,再次尝试连接

SQL> grant restricted session to firsoul;

 

Grant succeeded.

 

SQL> conn firsoul/firsoul

Connected.


收回用户firsoul 权限,再赋予其dba 权限

SQL> conn / as sysdba

Connected.

SQL> revoke restricted session from firsoul;

 

Revoke succeeded.

 

SQL> grant dba to firsoul;

 

Grant succeeded.

 

SQL> conn firsoul/firsoul

Connected.


收回dba 权限,使用restricted mode 之前连接的session 对用户firsoul 操作

SQL> conn firsoul/firsoul

Connected.

SQL> insert into t values(1);

 

1 row created.

 

SQL> commit;

 

Commit complete.

 

SQL>

SQL> insert into t values(2);

 

1 row created.

 

SQL> commit;

 

三、 总结

   通过以上,我们得知,如果想数据库设置为Restricted Mode ,只有管理员(dba )以及有restricted session 权限才可以连接用户。在修改为 Restricted Mode 后,之前连接用户不受影响,新用户不能连接。学习数据库中,有许多小知识点,我们通过简单的小实验就可以呈现、更好的掌握、理解它。话说,还有许多基础类的小知识点需要掌握啊,技术不分高低,态度决定一切,加油。

请使用浏览器的分享功能分享到微信等