??xml version="1.0" encoding="utf-8" standalone="yes"?> 然后在OS通过d理器找到对应的q程Q在杀死这个进E?U程)
1> 通过此语句查询正在锁定的SESSION_ID:
SELECT SESSION_ID FROM V$LOCKED_OBJECT,USER_OBJECTS WHERE V$LOCKED_OBJECT.OBJECT_ID = USER_OBJECTS.OBJECT_ID
2> 通过W一步查询到的SESSION_ID查询SERIAL#
SELECT SERIAL# FROM V$SESSION WHERE SID='12'(此处'12'Z面查询到?/span>'SESSION_ID')
3> Ҏ(gu)1,2步查询到的SESSION_ID和SERIAL#执行
ALTER SYSTEM KILL SESSION '12,154'(12为SESSION_ID的? 154为SERIAL#的?
4> 如果利用上面的命令杀M个进E后Q进E状态被|ؓ(f)"killed"Q但是锁定的资源很长旉没有被释放,那么q可以在os一U再杀ȝ应的q程(U程)Q首先执行下面的语句获得当前q程(U程)的标CPIDQ?br />
select spid, osuser, s.program
2from v$session s,v$process p
3where s.paddr=p.addr and s.sid=12 (12是上面的SESSION_ID)
]]>
我通过存储q程像数据库中批量添加一千万(100000000)条记?l果PL/SQL很长旉没有反映Q结果不得已通过脚本杀掉当前进E,我重新通过存储q程插入10000条数据?br />
脚本Q?br />
--删除用户?/span>
2DROP TABLE T_PORTAL_USER;
3
4--创徏用户?/span>
5CREATE TABLE T_PORTAL_USER
6(
7 id NUMBER PRIMARY KEY, -- 用户表示
8 username VARCHAR2(24) NOT NULL,-- 用户?/span>
9 password VARCHAR2(24) NOT NULL,-- 密码
10 realname VARCHAR2(24) NOT NULL,-- 真实姓名
11 sex VARCHAR2(2) DEFAULT '0',-- 性别 "0":Male "1":Female
12 registerDate TIMESTAMP NOT NULL,-- 注册日期
13 state VARCHAR2(2) NOT NULL -- 账号状?nbsp;"0":启用 "1":注销
14)
15
16--删除用户表序?/span>
17DROP SEQUENCE SEQ_T_PORTAL_USER;
18
19--创徏用户表序?/span>
20CREATE SEQUENCE SEQ_T_PORTAL_USER
21START WITH 1
22INCREMENT BY 1
23NOMAXVALUE
24CACHE 20
-- 扚w新增一万条用户
-- 扚w新增一万条用户
2CREATE OR REPLACE PROCEDURE PROC_USER_CREATE_BAT
3AS
4 startTime VARCHAR2(32);--开始时?/span>
5 endTime VARCHAR2(32);--l束旉
6BEGIN
7 SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss:ff') INTO startTime FROM DUAL;
8 DBMS_OUTPUT.PUT_LINE('Start Time: '||startTime);
9 FOR i in 1..10000 LOOP
10 INSERT INTO T_PORTAL_USER VALUES(SEQ_T_PORTAL_USER.NEXTVAL,'owen'||i,'123456','gekunjin'||i,'0',sysdate,'0');
11 END LOOP;
12 SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss:ff') INTO endTime FROM DUAL;
13 DBMS_OUTPUT.PUT_LINE('End Time: '||endTime);
14END PROC_USER_CREATE_BAT;
]]>
]]>
以下软g试环境为Spring,Struts1
1、通过struts1提供的插件机Ӟ采用Spring提供的ContextLoaderPlugIn
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<global-exceptions />
<global-forwards />
<message-resources parameter="com.portal.ApplicationResources" />
<!-- 通过S1提供的插件机制来初始化Spring容器Q加载Spring配置文g
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<!--
1、ContextLoaderPlugIn默认加蝲配置文g命名规则是actionServlet-servlet.xml,其中actionServlet
是配|org.apache.struts.action.ActionServlet时指定的servlet名称
2、通过配置contextConfigLocation属性来指点Spring配置文g的位|?多个配置文g可以使用 逗号","、分?;"、空? "
-->
<set-property property="contextConfigLocation"
value="/WEB-INF/conf/spring-application.xml,/WEB-INF/conf/**/spring*.xml" />
</plug-in>
-->
</struts-config>
2、采用Spring提供的ContextLoaderListener来初始化(应用服务器需要支持Listener,Servlet2.3版本?qing)以?
<context-param>
<description>通过配置contextConfigLocation属性来指点Spring配置文g的位|?多个配置文g可以使用 逗号","、分?;"、空? "</description>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/conf/spring-application.xml /WEB-INF/conf/**/spring*.xml</param-value>
</context-param>
<listener>
<description>通过ContextLocaderListener来初始化Spring容器Q加载Spring配置文g</description>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3、采用load-on-startup Servlet 来初始化Spring容器
<servlet>
<description>
通过load-on-startup Servlet来初始化Spring容器
该如何Servlet 用于提供"后台"服务Q作为容器管理应用中的其他beanQ不需要响应客戯求,因此无须配置servlet-mapping
</description>
<servlet-name>applicationContext</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
· 可扩展性-Q集的性能不限于单一的服务实体,新的服务实体可以动态地加入到集,从而增强集的性能?/p>
· 高可用性-Q集通过服务实体冗余使客L(fng)免于L遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了(jin)Q另一个服务实体会(x)接管p|的服务实体。集提供的从一个出错的服务实体恢复到另一个服务实体的功能增强?jin)应用的可用性?/p>
2. 两大能力
Z(jin)h可扩展性和高可用性特点,集群的必d备以下两大能力:(x)
· 负蝲均衡Q-负蝲均衡能把d比较均衡地分布到集群环境下的计算和网l资源?/p>
· 错误恢复Q-׃某种原因Q执行某个Q务的资源出现故障Q另一服务实体中执行同一d的资源接着完成d。这U由于一个实体中的资源不能工作,另一个实体中的资源透明的l完成Q务的q程叫错误恢复?/p>
负蝲均衡和错误恢复都要求各服务实体中有执行同一d的资源存在,而且对于同一d的各个资源来_(d)执行d所需的信息视图(信息上下文)(j)必须是一L(fng)?/p>
3. 两大技?
实现集群务必要有以下两大技术:(x)
· 集群地址Q-集群由多个服务实体组成,集群客户端通过讉K集群的集地址获取集群内部各服务实体的功能。具有单一集群地址Q也叫单一影像Q是集群的一个基本特征。维护集地址的设|被UCؓ(f)负蝲均衡器。负载均衡器内部负责理各个服务实体的加入和退出,外部负责集群地址向内部服务实体地址的{换。有的负载均衡器实现真正的负载均衡算法,有的只支持Q务的转换。只实现d转换的负载均衡器适用于支持ACTIVE-STANDBY的集环境,在那里,集群中只有一个服务实体工作,当正在工作的服务实体发生故障Ӟ负蝲均衡器把后来的Q务{向另外一个服务实体?/p>
· 内部通信Q-Z(jin)能协同工作、实现负载均衡和错误恢复Q集各实体间必L帔R信Q比如负载均衡器Ҏ(gu)务实体心(j)x(chng)试信息、服务实体间d执行上下文信息的通信?/p>
h同一个集地址使得客户端能讉K集群提供的计服务,一个集地址下隐藏了(jin)各个服务实体的内部地址Q得客戯求的计算服务能在各个服务实体之间分布。内部通信是集能正常q{的基Q它使得集群h均衡负蝲和错误恢复的能力?/p>
集群分类
Linux集群主要分成三大c? 高可用集, 负蝲均衡集群Q科学计集?
高可用集? High Availability Cluster)
负蝲均衡集群(Load Balance Cluster)
U学计算集群(High Performance Computing Cluster)
================================================
具体包括Q?/p>
Linux High Availability 高可用集?nbsp;
(普通两节点双机热备Q多节点HA集群QRAC, shared, share-nothing集群{?
Linux Load Balance 负蝲均衡集群
(LVS{?...)
Linux High Performance Computing 高性能U学计算集群
(Beowulf c集?...)
分布式存?nbsp;
其他clinux集群
(如Openmosix, rendering farm {?.)
详细介绍
1. 高可用集?High Availability Cluster)
常见的就?个节点做成的HA集群Q有很多通俗的不U学的名Uͼ比如"双机热备", "双机互备", "双机".
高可用集解决的是保障用L(fng)应用E序持箋(hu)对外提供服务的能力?(h意高可用集群既不是用来保护业务数据的Q保护的是用L(fng)业务E序对外不间断提供服务,把因软g/g/Zؓ(f)造成的故障对业务的媄(jing)响降低到最程??/p>
2. 负蝲均衡集群(Load Balance Cluster)
负蝲均衡pȝQ集中所有的节点都处于活动状态,它们分摊pȝ的工作负载。一般Web服务器集、数据库集群和应用服务器集群都属于这U类型?/p>
负蝲均衡集群一般用于相应网l请求的|页服务器,数据库服务器。这U集可以在接到hӞ(g)查接受请求较?yu),不繁忙的服务器,q把h转到q些服务器上。从(g)查其他服务器状态这一点上看,负蝲均衡和容错集很接近Q不同之处是数量上更多?/p>
3. U学计算集群(High Performance Computing Cluster)
高性能计算(High Perfermance Computing)集群Q简UHPC集群。这c集致力于提供单个计算机所不能提供的强大的计算能力?/p>
高性能计算分类
高吞吐计?High-throughput Computing)
有一c高性能计算Q可以把它分成若q可以ƈ行的子Q务,而且各个子Q务彼此间没有什么关联。象在家搜寻外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home Q就是这一cd应用。这一目是利用Internet上的闲置的计资源来搜寻外星人。SETI目的服务器一l数据和数据模式发给Internet上参加SETI的计节点,计算节点在给定的数据上用l定的模式进行搜索,然后搜索的l果发给服务器。服务器负责从各个计算节点q回的数据汇集成完整的数据。因U类型应用的一个共同特征是在v量数据上搜烦(ch)某些模式Q所以把q类计算UCؓ(f)高吞吐计。所谓的Internet计算都属于这一cR按?Flynn的分c,高吞吐计属于SIMDQSingle Instruction/Multiple DataQ的范畴?/p>
分布计算(Distributed Computing)
另一c计刚好和高吞吐计相反,它们虽然可以l分成若qƈ行的子Q务,但是子Q务间联系很紧密,需要大量的数据交换。按照Flynn的分c,分布式的高性能计算属于MIMDQMultiple Instruction/Multiple DataQ的范畴?/p>
4. 分布式(集群Q与集群的联pM区别
分布式是指将不同的业务分布在不同的地斏V?
而集指的是几台服务器集中在一P实现同一业务?
分布式中的每一个节点,都可以做集群?
而集ƈ不一定就是分布式的?
举例Q就比如新浪|,讉K的h多了(jin)Q他可以做一个群集,前面放一个响应服务器Q后面几台服务器完成同一业务Q如果有业务讉K的时候,响应服务器看哪台服务器的负蝲不是很重Q就给哪一台去完成?
而分布式Q从H意上理解,也跟集群差不多, 但是它的l织比较松散Q不像集,有一个组l性,一台服务器垮了(jin)Q其它的服务器可以顶上来?
分布式的每一个节点,都完成不同的业务Q一个节点垮?jin),哪这个业务就不可讉K?jin)?/p>
本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/tanghongru1983/archive/2009/04/28/4130356.aspx
注册Ҏ(gu)Q?br /> window -> preferences -> myeclipse -> subscription
Hibernate学习(fn)W记
1?/span>Hibernate核心(j)cM接口
1-1.Configurationc?/span>
Configuration的入口,它负责配|和启动Hibernate,Hibernate实例加蝲配置文g信息(hibernate.cfg.xml),的内容ƈ创徏SessionFactory.
1-2.SessionFactory接口
SessionFactory一?/span>SessionFactory一般就是指一个数据库)中获?/span>Sessionh以下特点Q?/span>
1) 实例可以被应?/span> 2) Q因为它需要一个很大的~存Q用来存N定义?/span>SQLQ如果一个应用程序中只访问一个数据库 实例?/span>
1-3.Session 接口
Session中应用最频繁的接口?/span>SessionQ它负责理所有与持久化相关的操作Q如存储、更新、删除和加蝲对象{?/span>Session 1) 实例?/span>
2) Session 实例Q在每次hq程汇d(qing)时创建和销?/span> Session 3) Session的缓存被UCؓ(f)Hibernate1-4.Transaction接口
Transaction框架的事务接口。它对底层的事务接口做了(jin)装Q包括:(x)JDBC APIq样使得Hibernate接口来申明事务边界,q有助于应用E序再不同的环境和容器中UL?/span>
1-5.Query?/span>Criteria接口
的查询接口,用于从数据存储源查询对象?qing)控制执行查询的q程?/span>QueryQ?/span>Criteria更加面向对象Q?/span>Criteria2?/span>Hibernate中常用的事务隔离U别
帔R |
?/span> |
说明 |
||||||||
TRANSACTION_NONE |
0 |
TRANSACTION_READ_UNCOMMITTED |
1 |
Q、不可重复读和虚读(phantom read
TRANSACTION_READ_COMMITTED |
2 |
TRANSACTION_REPEATABLE_READ |
4 |
TRANSACTION_SERIALIZABLE |
8 |
中禁止的事项Q同时还止出现q种情况Q某一事务d所有满?/span> WHERE 条g的行Q第一个事务重新读取满相同条件的行,q在W二ơ读取时获得额外?#8220;?#8221;行?/span> |
3?/span>Hibernate中实例的状?/span>
3-1Q(f)时状?/span>
1Q?span style="font: 7pt 'Times New Roman'"> ~存?sh),也可以说不被M一?/span>Session2Q?span style="font: 7pt 'Times New Roman'"> 对象q入临时状?/span>
1Q?nbsp;语句刚创Z?/span>Java2Q?nbsp;SessionҎ(gu)能一个持久化或(f)时脱对象{换ؓ(f)临时对象。对于脱对象,delete()~存?sh)删除?/span>
3-2Q持久化状?/span>
保证标识?/span>Java1Q?nbsp;实例的缓存(sh)Q也可以_(d)持久化对象L被一?/span>Session2Q?nbsp;3Q?nbsp;SessionSession对象q入持久化状态?/span>
4Q?nbsp;Session的方法能够把临时对象转变成持久化对象?/span>
5Q?nbsp;Session?/span>get()6Q?nbsp;QueryҎ(gu)q回?/span>list7Q?nbsp;Session?/span>saveOrUpdate()Ҏ(gu)使脱对象{变(sh)ؓ(f)持久化对象?/span>
在清理缓存时?x)把q个临时对象也{变成持久化对象?/span>Hibernate实例的缓存(sh)Q数据库表中的每条记录只对应唯一的持久化对象Q也是说在一?/span>Session同一?/span>OID的是相同的对象?/span>
3-3Q脱状?/span>
到另外的q程。它拥有持久化标识,q且在数据库中可能存在一个对应的行。对于脱状态的实例Q?/span>Hibernate标识的关pR?/span>
1Q?span style="font: 7pt 'Times New Roman'"> 的缓存(sh)Q也可以_(d)q对象不被Session2Q?span style="font: 7pt 'Times New Roman'"> 前提条g是没有其他程序删除了(jin)q条记录)3Q?span style="font: 7pt 'Times New Roman'"> 兌Q因?/span>HibernateSession1) ?/span>close()的缓存被清空Q缓存(sh)的所有持久化对象都变?sh)对象,如果在应用程序中没有引用变量引用q些q对象Q他们就?x)结束生命周期?/span>
2) SessionҎ(gu)能够从缓存(sh)删除一个持久化对象Q它变?sh)状态,?/span>SessionҎ(gu)Q从~存?sh)删除一些持久化对象。但是多数情况下不推荐用该Ҏ(gu)Q而应该通过查询语言Q或者显C的D来控制对象图的深度?/span>
with rollup ?/span>with cube?/span>grouping CUBE ?ROLLUP 之间的区别在于:(x) CUBE 生成的结果集昄?jin)所选列中值的所有组合的聚合? ROLLUP 生成的结果集昄?jin)所选列中值的某一层次l构的聚合? grouping: 当用 CUBE ?ROLLUP q算W添加行Ӟ附加的列输出gؓ(f)1Q当所d的行不是?CUBE ?ROLLUP 产生Ӟ附加列gؓ(f)0? --例如 DECLARE @T TABLE(名称 VARCHAR(1) , 出版?VARCHAR(10), h1 INT, h2 INT) INSERT @T SELECT 'a', '北京', 11, 22 UNION ALL SELECT 'a', '四川', 22, 33 UNION ALL SELECT 'b', '四川', 12, 23 UNION ALL SELECT 'b', '北京', 10, 20 UNION ALL SELECT 'b', '昆明', 20, 30 SELECT 名称, 出版? SUM(h1) AS h1, SUM(h2) AS h2, GROUPING(名称) AS CHECK名称, GROUPING(出版? AS CHECK出版? FROM @T GROUP BY 名称,出版?WITH CUBE /* 名称 出版? h1 h2 CHECK名称 CHECK出版? ---- ---------- ----------- ----------- ------- -------- a 北京 11 22 0 0 a 四川 22 33 0 0 a NULL 33 55 0 1 b 北京 10 20 0 0 b 昆明 20 30 0 0 b 四川 12 23 0 0 b NULL 42 73 0 1 NULL NULL 75 128 1 1 NULL 北京 21 42 1 0 NULL 昆明 20 30 1 0 NULL 四川 34 56 1 0 Q所影响的行Cؓ(f) 11 行)(j) */ --分析 /*group by 两列Q名U有两个cdA,B;所有由CUBEq算而生成行的是 名称 出版? h1 h2 CHECK名称 CHECK出版? ---- ---------- ----------- ----------- ------- -------- a NULL 33 55 0 1 b NULL 42 73 0 1 出版商有三个cdQ所有由CUBEq算而生成行的是 名称 出版? h1 h2 CHECK名称 CHECK出版? ---- ---------- ----------- ----------- ------- -------- NULL 北京 21 42 1 0 NULL 昆明 20 30 1 0 NULL 四川 34 56 1 0 以及(qing) NULL NULL 75 128 1 1 */ SELECT 名称, 出版? SUM(h1) AS h1, SUM(h2) AS h2 FROM @T GROUP BY 名称,出版?WITH ROLLUP /* 名称 出版? h1 h2 ---- ---------- ----------- ----------- a 北京 11 22 a 四川 22 33 a NULL 33 55 b 北京 10 20 b 昆明 20 30 b 四川 12 23 b NULL 42 73 NULL NULL 75 128 */