数据库共有三种状态:quiesce、resrict、suspend

数据库共有三种状态:quiesce、resrict、suspend

一、quiesce模式

首先来说说数据库的静默状态

静默状态是指数据库中只存在sys和system用户建立的活动会话。只有dba能继续操作数据库。
此状态下可以进行一些在非静默状态下执行可能存在不安全因素的特殊操作。
对于必须持续运行的系统,在不关闭数据库就能执行某些特殊操作的功能十分重要。

静默状态下数据库资源管理器(database resource manager)将阻止sys、system用户以外的用户提交操作。

进入静默状态的方法为:
alter system quiesce restricted;(sys或system用户执行)

进入静默模式的过程为:数据库资源管理器控制所有实例,阻止非活动会话恢复为活动状态。普通用户无法执

行新的事务、查询、数据提取和pl/sql过程。如果一个查询是由多个连续的 OCI 数据提取操作执行的,Oracle

不会等待所有的数据提取全部结束。Oracle 只会等待当前的数据提取结束并阻塞之后的数据提取。Oracle 还

会等待所有拥有共享资源的会话(SYS 及 SYSTEM 用户的资源除外)释放资源。上面提到的所有等待都结束之

后,Oracle 可以将数据库置为静默状态,并结束 QUIESCE RESTRICTED 语句。

如果数据库的某个实例是在共享服务模式(shared server mode)下运行的,Oracle 通过数据库资源管理器(

Database Resource Manager)阻止用户(SYS 及 SYSTEM 用户除外)登录到此实例。如果实例运行在专用服务

模式(dedicated server mode)下,Oracle 不会对此实例的用户登录进行限制。

静默状态恢复到正常状态方法为:
alter system unquiesce

可以通过v$instance等视图得到数据库状态。

 

具体实例为:

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

D:\Documents and Settings\tian>set oracle_sid=test_database

D:\Documents and Settings\tian>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期五 10月 19 09:19:50 2012

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn /as sysdba
已连接。
SQL> alter system quiesce restricted
  2  ;
alter system quiesce restricted
*
ERROR 位于第 1 行:
ORA-25507: 没有使资源管理器一直处于打开状态
//如果是9i,那么必须设置resource_limit参数为true,并设置resource_manager_plan参数指向一个资源计划

SQL> alter system set resource_manager_plan='SYSTEM_PLAN' scope=spfile sid='JLRP
S';
//由于数据库没有开启资源管理器,无法执行这个操作。需要开启后重启才生效。

系统已更改。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  126950220 bytes
Fixed Size                   453452 bytes
Variable Size             109051904 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> alter system quiesce restricted;

系统已更改。

SQL> conn scott/tiger@test_database
^C
//此处证明静默模式下其他用户不能登录数据库


D:\Documents and Settings\tian>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期五 10月 19 09:32:07 2012

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn /as sysdba
已连接。
SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION           STARTUP_TI STATUS       PAR    THREAD# ARCHIVE LOG_SWITCH_
----------------- ---------- ------------ --- ---------- ------- -----------
LOGINS     SHU DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST
---------- --- ----------------- ------------------ ---------
              1 test_database
TIANLEI
9.2.0.1.0         19-10月-12 OPEN         NO           1 STARTED
ALLOWED    NO  ACTIVE            PRIMARY_INSTANCE   QUIESCED//处于静默状态


SQL> alter system unquiesce;

系统已更改。

SQL> conn scott/tiger
已连接。
SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION           STARTUP_TI STATUS       PAR    THREAD# ARCHIVE LOG_SWITCH_
----------------- ---------- ------------ --- ---------- ------- -----------
LOGINS     SHU DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST
---------- --- ----------------- ------------------ ---------
              1 test_database
TIANLEI
9.2.0.1.0         19-10月-12 OPEN         NO           1 STARTED
ALLOWED    NO  ACTIVE            PRIMARY_INSTANCE   NORMAL//恢复正常状态了


在设置静默状态时,正在登陆的普通用户被挂起,无法进行操作了。
而当状态改为正常后,普通用户的会话继续执行。
以上的实验是在oracle9i环境下操作的,在10g中,必须开启数据库资源管理器的限制已经被取消了。因此,向

上面实验中的操作其实是没意义的,因为静默状态和restricted状态的区别就在于其不用停掉数据库而执行操

作。

在RAC环境下某个节点设置了静默状态后,其他节点也是能够监测到的。


二、restrict模式:
直接实验

1.会话1中进行操作:

SQL> startup restrict
ORACLE 例程已经启动。

Total System Global Area  126950220 bytes
Fixed Size                   453452 bytes
Variable Size             109051904 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION           STARTUP_TI STATUS       PAR    THREAD# ARCHIVE LOG_SWITCH_
----------------- ---------- ------------ --- ---------- ------- -----------
LOGINS     SHU DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST
---------- --- ----------------- ------------------ ---------
              1 jlrps
TIANLEI
9.2.0.1.0         19-10月-12 OPEN         NO           1 STARTED
RESTRICTED NO  ACTIVE            PRIMARY_INSTANCE   NORMAL

SQL> create user tes1 identified by tes1;

用户已创建

SQL> grant create session to tes1;

授权成功。


2.会话2中进行操作:
SQL> conn tes1/tes1
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege
SQL> conn scott/tiger
已连接。
SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 17-12月-80        800
        20

      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300
        30

      7521 WARD       SALESMAN        7698 22-2月 -81       1250        500
        30
……//结果省略,scott用户拥有dba角色(RESTRICTED SESSION privilege)

3.会话1中操作:
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  126950220 bytes
Fixed Size                   453452 bytes
Variable Size             109051904 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL>

4.会话2中操作:
SQL> conn tes1/tes1
已连接。

可以看到,restrict模式需要重启数据库,且拥有RESTRICTED SESSION privilege的用户在此模式可以登录系

统进行操作。
而quiese模式就死板多了,除了sys、system都不行,不过也更安全。


三、suspend模式:

面向所有用户,限制I/O操作。当我们需要进行物理读操作时,会话会暂停。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  126950220 bytes
Fixed Size                   453452 bytes
Variable Size             109051904 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。


SQL> alter system suspend;

系统已更改。

SQL> select * from scott.emp;

//一直没有查询结果。


这个问题还真不会解决了。将数据库重启再操作还是无效的

 


说到了数据库启停,再复习一下:
启动类型:
startup nomount  --启动实例
startup mount    --启动实例、装载
startup (normal) --启动实例、装载、打开数据库
startup pfile='xx/xx/xx.ora'  --参数文件启动
startup restrict --限制模式,无restricted session权限的用户无法登录
startup force    --强制启动,正常启动不了才用
startup open recover --启动实例,装载数据库和启动完全介质恢复
停止类型:
shutdown (normal) --正常模式
shutdownimmediate --立即模式
shutdown abort    --中断模式,再次启动时可能需要恢复
alter system quiese restricted; --停顿数据库,只有sys、system用户可操作
  挂起数据库
   --暂停对数据文件和控制文件的所有IO,可以在无IO干扰情况先进行备份
   --挂起命令可以挂起数据库而并不指定一个实例
   ALTER SYSTEM SUSPEND;
   --恢复到非挂起状态
   ALTER SYSTEM RESUME;  
   --查看挂起状态
   SELECT DATABASE_STATUS FROM V$INSTANCE;

 

参考文章http://space.itpub.net/4227/viewspace-591661
http://blog.csdn.net/nsj820/article/details/6573525

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

转载于:http://blog.itpub.net/26451536/viewspace-746781/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值