http://dev.firnow.com/course/7_databases/oracle/oraclejs/20091217/184945_3.html
数据库的这三种状态有相似之处,这里简单总结一下。
这一篇介绍SYSPEND状态。
RESTRICT、QUIESCE和SUSPEND(一):http://yangtingkun.itpub.net/post/468/483100
RESTRICT、QUIESCE和SUSPEND(二):http://yangtingkun.itpub.net/post/468/483165
RESTRICT限制的是没有RESTRICTED SESSION权限的用户,使得这些用户无法登陆数据库。而QUIESCE针对所有的非SYS、SYSTEM用户,禁止这个用户的任何新的操作,包括登陆、查询、DML等等。和RESTRICT、QUIESCE不同的是,SUSPEND主要是限制数据库IO操作的。而且SUSPEND限制的不仅仅是普通用户,而是数据库中任何的用户。
SQL> alter system suspend;
系统已更改。
在另一个终端上执行:
SQL> SET SQLP 'SQL2> 'ITPUB个人空间Z6q,@7k0H/t3M5qX
SQL2> conn test/testITPUB个人空间3[M/nR:?W
已连接。
CVRqgVe0SQL2> conn / as sysdbaITPUB个人空间A] Nm2{
已连接。ITPUB个人空间*vA;Ig(lY
SQL2> select * from dual;
DU
,q9oj1ca;H#LT1L0--ITPUB个人空间7} | M b8HL1y5u#s
X
SQL2> conn test/testITPUB个人空间*{eJcJ0O}
已连接。
9~L&KMu}7e0SQL2> select * from dual;
DU
i u*?Kw5V0--
'C$BC){_ H0X
SQL2> select count(*) from t;
由于数据库已经运行了一段时间,很多数据都在缓存之中,因此无论是DBA用户,还是普通用户,都可以正常登陆,且都可以执行查询操作,只要结果可以在CACHE中找到,不引起物理IO,就不会被阻塞,直到查询引发了物理IO操作,导致会话被挂起。
SQL> alter system resume;
系统已更改。
直到执行了RESUME命令,被挂起的操作恢复执行:
8JC7] H;NGn0 COUNT(*)
1E}4DPQ]6d#j,[0----------ITPUB个人空间(L.h-qq,a6Pl
54020
SQL2> select * from session_roles;
ROLE
&@(Ms.|7R-b0------------------------------------------------------------
YX8\C.Y#f0CONNECT
R ` FG5v*AU}!c0V0RESOURCE
下面再次将数据库置于SUSPEND状态:
SQL> alter system suspend;
系统已更改。
执行刚才被阻塞的SQL:SELECT COUNT(*) FROM T。
SQL2> select count(*) from t;
COUNT(*)
'FU&u2Rq4L+v0----------
z z+r@{8Zf`0 54020
SQL2> delete t;
由于CACHE缓存的作用,这次查询T表所有的IO都是逻辑IO,不会导致物理IO的产生,因此上一次被阻塞的操作,这次可以顺利执行,不过随后的DELETE操作由于要产生物理IO,因此被阻塞了。
SQL> alter system resume;
系统已更改。
执行RESUME后,DELETE操作完成:
ITPUB个人空间 qXjK ]vhF_C#HM
已删除54020行。
SQL2> select sid from v$mystat where rownum = 1;
SIDITPUB个人空间7u7d Q'`$l5u8d3T$To^#|-A
----------
@!E C9[[,i G Jd!hZ0 155
查询V$SESSION_WAIT的信息,并将数据库再次置于SYSPEND状态:
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/7_databases/oracle/oraclejs/20091217/184945.html
SQL> select event from v$session_wait where sid = 155;
EVENTITPUB个人空间 S(aMU!M?l3C:T|
--------------------------------------------------------------------------------
e:Y T+e1ZQb/N0SQL*Net message from client
SQL> alter system suspend;
系统已更改。
在会话2执行ROLLBACK操作:
SQL2> rollback;
由于ROLLBACK会导致物理IO,会话被阻塞,下面回到会话1,检查会话2的等待事件:
SQL> select event from v$session_wait where sid = 155;
EVENT
,KuaK!Wl!k G0--------------------------------------------------------------------------------ITPUB个人空间&|5m2Cg7R3k^'ly
writes stopped by instance recovery or database suspension
这是写操作被阻塞时,会话的等待事件,这个事件的名称已经很清楚的说明了问题。
最后还是看看RAC环境下SUSPEND对不同实例的影响。
依旧是在一个三节点的RAC环境中进行测试,其中两个节点处于启动状态,另一个节点关闭。
随后在实例1上发出ALTER SYSTEM SUSPEN语句,检查这个操作对实例2是否生效,将实例3启动,检查这个限制新启动的实例3是否有效。
bash-2.03$ srvctl status db -d testrac
lcf&IF8j0Instance testrac1 is running on node racnode1ITPUB个人空间dY+wRM'Y&wv
Instance testrac2 is running on node racnode2ITPUB个人空间*O c2^8G[D8lFM
Instance testrac3 is running on node racnode3ITPUB个人空间}RD9M,s7BD6I
bash-2.03$ srvctl stop inst -d testrac -i testrac3ITPUB个人空间.o0X*e`Jo
bash-2.03$ srvctl status db -d testracITPUB个人空间)VNe s-q'u\,y
Instance testrac1 is running on node racnode1ITPUB个人空间}:Iz\z BV} o%G
Instance testrac2 is running on node racnode2
GJ#uV w/OK jlX0Instance testrac3 is not running on node racnode3
C.phcPi0bash-2.03$ sqlplus "/ as sysdba"
SQL*Plus: Release10.2.0.3.0 - Production on星期五2月20 19:17:04 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ITPUB个人空间3_P&d(|j,M"c6R8iW
连接到:ITPUB个人空间N`0E`-N`+sAu
Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit ProductionITPUB个人空间h#N;Xe?@ b
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> alter system suspend;
系统已更改。
SQL> select instance_name from v$instance;
INSTANCE_NAMEITPUB个人空间%C ] bdY(o5Y7M O4z
----------------
y P%~ ^dR@0B}0testrac1
现在检查实例2上是否也会产生禁止物理IO的产生:
SQL> conn test/test@testrac2
"UsF+?S)j.u8K0已连接。
2RHm d)h8q`0E ^0SQL> select instance_name from v$instance;
INSTANCE_NAMEITPUB个人空间;Y(lU yt
----------------
M/D'z$d3Ge0testrac2
SQL> select * from tab;
显然实例2上的操作被阻塞了,现在启动实例3,看看实例3上是否也会阻塞物理IO操作:
SQL> host
+m9\(ZG2T$zuV0$ srvctl start inst -d testrac -i testrac3
SVRCTL命令居然也被HANG住了,那么SUSPEND是否和QUIESCE一样,禁止没有启动的实例启动呢,通过sqlplus直接连接实例3:
$ sqlplus /nolog
SQL*Plus: Release10.2.0.3.0 - Production on星期五2月20 19:23:02 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> conn sys@testrac3 as sysdba
]yNS7I01
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/7_databases/oracle/oraclejs/20091217/184945_2.html
>输入口令:
f_O"gB Y.]O0已连接。ITPUB个人空间b \5mn-Tx [!L(K
SQL> select instance_name from v$instance;
INSTANCE_NAME
p H \,X!MT0----------------
&^+S.q/{%}J+W%qd0testrac3
SQL> conn test/test@testrac3
*A_ID7ic9IjLF0ERROR:ITPUB个人空间)_ D&_~q]|P
ORA-01033: ORACLE initialization or shutdown in progress
/D DU6dC&Tt0警告:您不再连接到ORACLE。
可以看到,数据库还没有完全被打开,就处于被阻塞状态了。
登陆实例3:
SQL> conn sys@testrac3 as sysdba
W,@|#p/r5@ N;SSU0输入口令:
Q:TG)gyc~a/I0已连接。ITPUB个人空间0ACY M7pqT1v
SQL> select instance_name, status, database_status from v$instance;
INSTANCE_NAME STATUS DATABASE_STATUS
u0TA(C&u4Z8fm0---------------- ------------ -----------------
SM9^`:t0testrac3 STARTED ACTIVE
SQL> conn sys@testrac1 as sysdba
h!}ls+v:Ft0输入口令:
n'L$v*? e3w0已连接。
`#e S&V-`{~*Va0SQL> select instance_name, status, database_status from v$instance;
INSTANCE_NAME STATUS DATABASE_STATUSITPUB个人空间P,mH3IU\'vRK
---------------- ------------ -----------------ITPUB个人空间S+y0t#@H4g [
testrac1 OPEN SUSPENDED
SQL> conn sys@testrac2 as sysdbaITPUB个人空间$X0b sAe-t
输入口令:ITPUB个人空间4f4e sy \4i7q
已连接。
s\+\.i8N,r2Ux2JG0SQL> select instance_name, status, database_status from v$instance;
INSTANCE_NAME STATUS DATABASE_STATUSITPUB个人空间|h G:P7j3|)|
---------------- ------------ -----------------
4N};y~b!h n0testrac2 OPEN SUSPENDED
显然SUSPEND对所有当前运行的RAC实例生效,而新启动的实例,数据库状态并非SUSPEND,而是ACTIVE,但是和文档描述不同的是,这个实例根本无法成功的启动,从这一点上将,SUSPEND还是会对整个数据库起作用的。
同样在实例1和实例2上,都可以执行RESUME命令,来恢复数据库状态:
SQL> conn sys@testrac2 as sysdbaITPUB个人空间S,s-XOS4~:L+S
输入口令:
xvG`3YxT#c3@ q0已连接。
R-B$BNh"z t'e.A0SQL> alter system resume;
系统已更改。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/7_databases/oracle/oraclejs/20091217/184945_3.html
- 大小: 55.9 KB
- 大小: 67.6 KB
分享到:
相关推荐
数据库系统概论5版第三章关系数据库标准语⾔SQL【上】 ——数据定义(create、drop。。。 ⼀、 ⼀、SQL概念 概念 (⼀)、什么是 (⼀)、什么是SQL? ? 1、SQL(Structured Query Language)结构化查询语⾔,是...
大连海事大学 数据库原理课程实验大纲 实验名称: 实验五 视图 实验学时: 2 适用专业: 实验环境: SQL.serve2008 执 笔 者: 编写... 根据书上的例子,针对TPCH数据库模式设计各种视图语句,每种类型视图语句至少要
数据库相关操作 Hive配置单元包含一个名为 default 默认的... --加入cascade关键字,可以强制删除一个数据库,默认是restrict,表示有限制的 eg. hive> drop database if exists users cascade; use ; --切换数据库
iOS 修改反注入标识__RESTRICT为其它值,同时具有注入功能
ldidY
A-PDF Restrict Remover.exe 可以破解pdf文件的密码的软件。
在cmd命令窗口,直接输入”sqlplus”,直接进入oracle管理界面,输入用户名和密码后,开始启动数据库,启动数据库三个步骤:启动实例、加载数据库、打开数据库 命令格式: startup [nomount|mount|open|force]...
本体合理有效的存储是保证本体共享利用的前提,现有的关系数据库本体存储模式在存储OWL 本体后会出现查 询推理效率低、维护困难等问题。文中在分析现有模式的基础上,针对OWL 本体类和属性的特点,通过单独设立类关系 ...
数据库系统原理练习1 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的 括号内...在面向对象数据库中,查找对象的方法有哪三种? 35
mysql中的cascade级联,set null,restrict限制 都是什么意思,有何区别.zip
restrict user login times
甚至超级用户也可以禁止删除数据库和角色(如果不是主角色)。 要求 PostgreSQL 9.3+ 编译安装 该扩展在PostgreSQL上受支持。 安装步骤取决于您的操作系统。 您还可以掌握克隆Git存储库的最新修补程序和功能。 $ git...
create trigger elective_restrict on 选课表 for insert, update as begin if update (课程号) begin declare @num varchar(10) declare @count int select @num=课程号 from inserted select @count = ...
如果设置为 N 表示不通过 dbstart 和 dbshut 启动和关闭实例数据库 CAMS 系统要求在 安装完 ORACLE 后要求将该参数修改为 Y 以保证 ORACLE 数据库自启动 和关闭 1.2.3 数据库实例初始化...
Node-restrict 能够阻止应用程序使用 procss.binding('process_wrap'), process.kill 和 child_process 的 Nodejs 模块。 代码示例: var restrict = require('restrict'); // ls is whitelisted restrict...
html-restrict:HTML :: Restrict-剥离不需要HTML标记
通过使用 A-PDF Restrict Remover,你可以立刻移除PDF文档的密码以及各种限制,它不是一个密码恢复工具,因为在您移除文档限制时不需要输入密码,A-PDF Restrict Remover 非常简单易用,在windows资源管理器中仅通过...
在创建索引时, 可以指定在删除、更新父表时,对子表进行的相应操作,包括 RESTRICT、CASCADE、SET NULL 和 NO ACTION。 RESTRICT和NO ACTION相同, 是指限制在子表有关联记录的情况下, 父表不能更新; CASCADE...