随笔-16  评论-84  文章-1  trackbacks-0
  2010年9月13日
通过存储过程向数据库一下子插入了一千万(10000000)条记录,结果等了很长时间,PL/SQL都没有响应,我又瞎折腾了下,结果执行了好几次,导致数据库假死了,我只有删除当前的会话,从网上找到相关的脚本代码。


1> 通过此语句查询正在锁定的SESSION_ID:

1SELECT  SESSION_ID   FROM   V$LOCKED_OBJECT,USER_OBJECTS  WHERE   V$LOCKED_OBJECT.OBJECT_ID   =   USER_OBJECTS.OBJECT_ID


2> 通过第一步查询到的SESSION_ID查询SERIAL#

1SELECT SERIAL# FROM V$SESSION  WHERE SID='12'(此处'12'为上面查询到的'SESSION_ID')


 3> 根据1,2步查询到的SESSION_ID和SERIAL#执行

1ALTER   SYSTEM   KILL   SESSION  '12,154'(12为SESSION_ID的值, 154为SERIAL#的值)

4> 如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么还可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得当前进程(线程)的标示PID:

1select spid, osuser, s.program 
2from v$session s,v$process p
3where s.paddr=p.addr and s.sid=12 (12是上面的SESSION_ID)

然后在OS通过任务管理器找到对应的进程,在杀死这个进程(线程)

posted @ 2010-11-27 14:55 absolute 阅读(840) | 评论 (0)编辑 收藏
最近在学习存储过程,以前在项目中没有怎么接触过!

我通过存储过程像数据库中批量添加一千万(100000000)条记录,结果PL/SQL很长时间没有反映,结果不得已通过脚本杀掉当前进程,我重新通过存储过程插入10000条数据。

建表脚本:
 1--删除用户表
 2DROP TABLE T_PORTAL_USER;
 3
 4--创建用户表
 5CREATE TABLE T_PORTAL_USER
 6(
 7    id NUMBER PRIMARY KEY-- 用户表示
 8    username VARCHAR2(24NOT NULL,-- 用户名
 9    password VARCHAR2(24NOT NULL,-- 密码
10    realname VARCHAR2(24NOT NULL,-- 真实姓名
11    sex VARCHAR2(2DEFAULT '0',-- 性别 "0":Male "1":Female
12    registerDate TIMESTAMP NOT NULL,-- 注册日期
13    state VARCHAR2(2NOT NULL -- 账号状态 "0":启用  "1":注销
14)
15
16--删除用户表序列
17DROP SEQUENCE SEQ_T_PORTAL_USER;
18
19--创建用户表序列
20CREATE SEQUENCE SEQ_T_PORTAL_USER
21START WITH 1
22INCREMENT BY 1
23NOMAXVALUE
24CACHE 20


-- 批量新增一万条用户

 1-- 批量新增一万条用户
 2CREATE OR REPLACE PROCEDURE PROC_USER_CREATE_BAT
 3AS
 4    startTime VARCHAR2(32);--开始时间
 5    endTime VARCHAR2(32);--结束时间
 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;
posted @ 2010-11-27 14:41 absolute 阅读(3688) | 评论 (1)编辑 收藏
     摘要: 在项目中使用Apache开源的Services Framework CXF来发布WebService,CXF能够很简洁与Spring Framework 集成在一起,在发布WebService的过程中,发布的接口的入参有些类型支持不是很好,比如Timestamp和Map。这个时候我们就需要编写一些适配来实行类型转换。 Timestamp:  1/** *//** &n...  阅读全文
posted @ 2010-11-27 14:28 absolute 阅读(3412) | 评论 (1)编辑 收藏

Web应用初始化Spring容器策略

以下软件测试环境为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容器,加载Spring配置文件
 <plug-in
  className="org.springframework.web.struts.ContextLoaderPlugIn">
  <!--
   1、ContextLoaderPlugIn默认加载配置文件命名规则是actionServlet-servlet.xml,其中actionServlet
   是配置org.apache.struts.action.ActionServlet时指定的servlet名称
   
   2、通过配置contextConfigLocation属性来指点Spring配置文件的位置,多个配置文件可以使用 逗号","、分号";"、空格" "
  -->
  <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版本及以上)
 <context-param>
   <description>通过配置contextConfigLocation属性来指点Spring配置文件的位置,多个配置文件可以使用 逗号","、分号";"、空格" "</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容器,加载Spring配置文件</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 用于提供"后台"服务,作为容器管理应用中的其他bean,不需要响应客户请求,因此无须配置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>

posted @ 2010-09-13 18:10 absolute 阅读(2257) | 评论 (0)编辑 收藏