MYSQL网页设计利用Oracle9i的新特性-停留(QUIESCING)...
尽管DBaaS模式有缺点,但它还是适合某些客户群体,这为解决方案提供商提供了新的商机。鉴于云服务的增长,解决方案提供商除了拥抱这些技术还有什么选择呢?如果他们不这样做,他们就会冒着被竞争对手击败的风险。但他们不能只想到如何把DBaaS的利润率与企业内部系统相比较。oracle|数据|数据库原SameerWadhwa
停留(Quiescing)一个数据库是一个壮大的新特性,使得DBA能够完成一些数据库处于受限形式(restrictedmode)才干完成的一些操纵。利用这个特性,当以sys或system帐户上岸后,DBA能够实行查询,PL/SQL,和举行别的的一些事件。而一切别的用户的会话都将处于停息(suspended)的形态,一旦DBA把数据库置回到一般形式,用户的这些会话又将会主动持续运转了。
a:数据库处于一般形态.
b:数据库处于形态.
a是数据库处于一般形式的体系形态,在这类形式中DBA和用户的事件都是运转着的。一些DBA的事件是被限定着的,由于数据库必需处于受限形式时才能够运转这些事件。相反的方面,b是数据库处于停留形态的情形,在图中,一切用户的事件都是被堵塞(blocked)着的,而没有重启数据库到受限形式,DBA的事件也毫无成绩的运转着。
一旦一切举动的会话都实行了commit或rollback,数据库将会被停留。
让我们看一下它是怎样举行的。停留数据库所用的次要的命令为ALTERSYSTEMQUIESCERESTRICTED;我将起首利用SQLPLUS上岸实行这个操纵。
C:>U:>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0-ProductiononWedApr1616:08:272003
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>connectsys/change_on_installassysdba
Connected.
SQL>ALTERSYSTEMQUIESCERESTRICTED;
ALTERSYSTEMQUIESCERESTRICTED
*
ERRORatline1:
ORA-25507:resourcemanagerhasnotbeencontinuouslyon
如上的毛病标明资本办理器(resourcemanager)长短举动的,要使它举动你能够如许:
SQL>altersystemsetresource_manager_plan=SYSTEM_PLANscope=spfilesid=OR9I;
Systemaltered.
OR9i是我的SID.
做完这个操纵你不能不重启一下数据库了。
SQL>showparameterRESOURCE_MANAGER_PLAN
NAMETYPEVALUE
---------------------------------------------------------------
resource_manager_planstringSYSTEM_PLAN
SQL>ALTERSYSTEMQUIESCERESTRICTED;
Systemaltered.
假如有一些未决的事件必要提交或回滚的话,先前的那条命令将会挂起而守候事件的完成。如想断定是哪些用户的会话没提交或回滚,你能够用以下的语句。
SELECTS.SID,S.SERIAL#,S.MACHINE,S.TERMINAL,S.USERNAME
FROMV$SESSIONSWHERES.SIDIN
(SELECTSIDFROMV$LOCKWHERETYPE=TX)
/
查询的了局将会供应充分的信息使你可以请求那些用户提交、回滚或停止他们的事件。更坏一点的情形是你能够杀失落这些会话,会话将被被主动回滚。体系处于停留形态后,你就能够不受别的用户的搅扰举行事情了,完成事情后你能够用以下命令排除这类停留的形态:
SQL>ALTERSYSTEMUNQUIESCE;
Systemaltered.
情形1:
事件按次
用户会话
DBA会话
(1)
ConnectedwithSCOTT
SQL>updateemp3set
ename=John
whereename=samir;
ConnectedwithSYS
(2)
SQL>ALTERSYSTEMQUIESCERESTRICTED;
守候用户SCOTT完成事件.
(3)
SQL>commit;
Commitcomplete.
(4)
Systemaltered.
第一种情形标明,在一切举动的事物完成前DBA是不克不及停留数据库的。一旦数据库停留了,库对别的的用户出现的是中断(halt)或非举动(inactive)的形态。然后当数据库变成一般形态后,一切的数据块和停息的事件又持续运转了。
情形2:
事件按次
用户会话
DBA会话
(1)
ConnectedwithScottUser.
ConnectedwithSYS.
SQL>ALTERSYSTEMQUIESCERESTRICTED;
Systemaltered.
(2)
Select*fromEMP;
waitforresult
(3)
SQL>ALTERSYSTEMUNQUIESCE;
Systemaltered.
EMPNOENAMESALARY
-----------------------------
1Sasa1000
2John5000
3Hema7000
Usercanseetheresults.
情形2标明它怎样影响了用户的会话。简而言之,此时体系关于终极用户是一时的有效。
一般的一些成绩:
(Q)做为DBA的你怎样反省你的数据库是甚么形态呢?
(A)你能够反省V$INSTANCE视图中的ACTIVE_STATE这上字段。
SQL>SELECTACTIVE_STATEFROMV$INSTANCE;
ACTIVE_ST
---------
NORMAL
ACTIVE_STATE有以下几个大概值:
Active_state
形貌
Normal
数据库处于一般形态
QUIESCING
DATABASEwantstoQUIESCEDbutwaitingforactiverunningtransactionstofinish.
数据库要想停留,但要守候举动的运转事件完成。
Quiesced
数据库处于停留的形态了.
(Q)如何断定哪些毗连着库的会话在守候停留着的数据库呢?
(A)能够用以下的查询来断定:
SELECTSID,EVENT,TOTAL_WAITS,TIME_WAITED"TIMEWAITED",
AVERAGE_WAITFROMV$SESSION_EVENT
WHEREEVENT=waitforpossibleQUIESCEfinish
/
SQL>
SIDEVENTTOTAL_WAITSTimeWaitedAVERAGE_WAIT
-----------------------------------------------------------------------------------
6waitforpossibleQUIESCEfinish412126532307
"waitforpossibleQUIESCEfinish"这个事务标明会话正等着“正停留”的数据库以致于它不克不及举行它的事物。库停留后这些会话将出现hung的形态。
(Q)在停留数据库之前,关于资本办理器企图(resourcemanagerplan)必要做甚么设定?
(A)当你停留了数据库,INTERNAL_QUIESCE资本企图被激活了。除SYS_GROUPS别的一切的资本组中的ACTIVE_SESS_POOL_P1应被设置为0。因SYS和SYSTEM用户都属于SYS_GROUPS组,以是只要它们能够毗连到数据库。
要检察细节的信息能够查询DBA_RSRC_PLAN_DIRECTIVES这个视图。
记住以下几点:
处于停留形态的数据库只要SYS和SYSTEM是无效的用户来实行保护的事情;别的有DBA权限的用户也被视为一样平常的用户。在停留的数据库中备份数据文件(泠备,拷贝数据文件)是有效的。假如库中有“举动”的事件,库是不克不及被停留的。.
必要启动数据库以设置资本企图
停留数据是9i的新特性,因而之前的版本中是不克不及用的。
结论:
停留数据库是一个壮大的特性使DBA不用重启数据库就能够实行一些出格的保护事情。
与其他数据库相比,MySQL易学易用。 比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。 可以动态传入参数,省却了动态SQL的拼写。 个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。 相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐 但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右) 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
页:
[1]