数据库启动时restrict,quiesce , suspend


restricted模式:

实现命令:
1、实例启动时
sql>startup restrict;
2、以管理员身份登录后
sql>alter system [enable/disable] restricted session;

a、当数据库以RESTRICT状态启动,或者进入到RESTRICT状态,则Oracle禁止普通用户连接数据库,错误提示:
ORA-01035:ORACLE only available to users with restricted session privilege
而拥有DBA角色的用户,或者拥有RESTRICTED SESSION权限的用户可以登陆数据库。
通常在要执行一些管理性的操作,而这些操作运行的时候不能有其他用户同时访问数据库时,启用restrict模式。

b、但是请注意:不拒绝已经登录的其他用户的操作,包括对数据库执行修改的dml语句。
因此如果想彻底不让不用访问数据库,最好是startup restrict。

c、对于RESTRICTED SESSION状态,RAC环境的各个实例之间是相互独立的,各自的状态完全由各自的实例进行设置。

二、quiesce restricted模式:
实现命令:
sql>alter system quiesce restricted;
sql>alter system unquiesce;
此模式下,其他用户登录和执行sql语句都不提示错误,而是一直等待。在命令行表现为语句或登录行为停着不动了,不被执行,一直持续到管理员更改系统为unquiesce.

a、即使拥有了DBA角色,也被QUIESCE状态所禁止,而只有SYS和SYSTEM用户可以对数据库进行管理操作。

b、quiesce似乎和restrict很相似,都是修改数据库的状态,使得DBA用户可以进行管理操作,避免非DBA用户同时访问。但是二者还是有明显的区别的。首先RESTRICT是禁止普通用户登陆,而对已经登陆的用户无能为力。如果要彻底禁止普通用户的访问,就必须通过重启或者手工判断已经连接的普通会话,并执行KILL SESSION的操作。而QUIESCE并不是这样,通过设置系统的QUIESCE RESTRICTED,使得所有的非DBA用户处于等待状态,不管是新登陆的还是已经存在的普通用户会话,都无法执行新的操作,直到系统退出QUIESCE状态。

因此QUIESCE状态对于7*24环境是十分有帮助的,对于其他用户而言,只是操作的等待时间变得很长,而并不会报错。9i数据库必须配置资源管理Resource Management,10g取消了这个限制。

c、QUIESCE会传播到RAC环境的其他实例。虽然执行QUIESCE命令是ALTER SYSTEM语句,但是QUIESCE命令对整个数据库都是生效的,且RAC的其他实例是无法在QUIESCE状态下启动的。

d、如果有活动动作或者事务,或者某个当前会话(不包括管理员的会话)正在占用数据库任何资源,则alter system quiesce restricted命令也将一直等待所有资源被释放或者事务完成才把数据库更改

为quiesce模式

三、suspend模式

实现命令:

sql>alter system quiesce suspend;

sql>alter system resume;

RESTRICT、QUIESCE不同的是,SUSPEND主要是限制数据库IO操作的。而且SUSPEND限制的不仅仅是普通用户,而是数据库中任何的用户。

a、由于数据库已经运行了一段时间,很多数据都在缓存之中,因此无论是DBA用户,还是普通用户,都可以正常登陆,且都可以执行查询操作,只要结果可以在CACHE中找到,不引起物理IO,就不会被阻塞,直到查询引发了物理IO操作,导致会话被挂起。

b、SUSPEND对所有当前运行的RAC实例生效,而新启动的实例,数据库状态并非SUSPEND,而是ACTIVE,但是和文档描述不同的是,这个实例根本无法成功的启动,从这一点上将,SUSPEND还是会对整个数据库起作用的。在任何一个实例上都可以执行RESUME命令,来恢复数据库状态。


可以看到,当数据库以RESTRICT状态启动,或者进入到RESTRICT状态,则Oracle禁止普通用户连接数据库。而拥有DBA角色的用户,或者拥有RESTRICTED SESSION权限的用户可以登陆数据库。
  
虽然数据库处于RESTRICTED SESSION状态,但是数据库中已经登陆的会话可以继续执行任何操作,直到会话断开连接。这个现象说明,如果希望数据库处于RESTRICTED SESSION状态,且此时不希望普通用户登陆数据库,那么最好的方法是采用STARTUP RESTRICT的方式来启动数据库,这样可以确保没有普通用户登陆。而ALTER SYSTEM ENABLE RESTRICTED SESSION的方式虽然可以使得数据库进入RESTRICT状态,但是不能保证现有的连接用户都是具有RESTRICTED SESSION权限的。即使是在STARTUP之后,马上发出ENABLE RESTRICTED SESSION命令也是不可靠的,因为这个时间差可能使得后台JOB运行了。因此如果是使用ENABLE RESTRINCTED SESSION方式,还需要在后台通过ALTER SYSTEM KILL SESSION的方式清除掉所有的普通用户连接。
最后来看看RESTRICTED SESSION状态和RAC环境的关系。

RESTRICTED命令是在实例上执行的,因此Oracle是否将这个命令应用到整个RAC环境需要通过测试来说明。

为了更好的说明情况,下面的测试在一个三节点的RAC环境中进行,其中两个节点处于启动状态,另一个节点关闭。

随后在实例1上发出ALTER SYSTEM ENABLE RESTRICTED SESSION语句,检查这个操作对实例2是否生效,将实例3启动,检查这个限制新启动的实例3是否有效


下面回到会话 1 ,将数据库置于 RESTRICT SESSION 状态:
SQL> alter system enable restricted session






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30166976/viewspace-1660127/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30166976/viewspace-1660127/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值