
2010年11月27日
通过存储过程向数据库一下子插入了一千万(10000000)条记录,结果等了很长时间,PL/SQL都没有响应,我又瞎折腾了下,结果执行了好几次,导致数据库假死了,我只有删除当前的会话,从网上找到相关的脚本代码。
1> 通过此语句查询正在锁定的SESSION_ID:
1
SELECT SESSION_ID FROM V$LOCKED_OBJECT,USER_OBJECTS WHERE V$LOCKED_OBJECT.OBJECT_ID = USER_OBJECTS.OBJECT_ID
2> 通过第一步查询到的SESSION_ID查询SERIAL#
1
SELECT SERIAL# FROM V$SESSION WHERE SID='12'(此处'12'为上面查询到的'SESSION_ID')
3> 根据1,2步查询到的SESSION_ID和SERIAL#执行
1
ALTER SYSTEM KILL SESSION '12,154'(12为SESSION_ID的值, 154为SERIAL#的值)
4> 如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么还可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得当前进程(线程)的标示PID:
1
select spid, osuser, s.program
2
from v$session s,v$process p
3
where s.paddr=p.addr and s.sid=12 (12是上面的SESSION_ID)
然后在OS通过任务管理器找到对应的进程,在杀死这个进程(线程)
posted @
2010-11-27 14:55 absolute 阅读(853) |
评论 (0) |
编辑 收藏
最近在学习存储过程,以前在项目中没有怎么接触过!
我通过存储过程像数据库中批量添加一千万(100000000)条记录,结果PL/SQL很长时间没有反映,结果不得已通过脚本杀掉当前进程,我重新通过存储过程插入10000条数据。
建表脚本:
1
--删除用户表
2
DROP TABLE T_PORTAL_USER;
3
4
--创建用户表
5
CREATE TABLE T_PORTAL_USER
6
(
7
id NUMBER PRIMARY KEY, -- 用户表示
8
username VARCHAR2(24) NOT NULL,-- 用户名
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 -- 账号状态 "0":启用 "1":注销
14
)
15
16
--删除用户表序列
17
DROP SEQUENCE SEQ_T_PORTAL_USER;
18
19
--创建用户表序列
20
CREATE SEQUENCE SEQ_T_PORTAL_USER
21
START WITH 1
22
INCREMENT BY 1
23
NOMAXVALUE
24
CACHE 20
-- 批量新增一万条用户
1
-- 批量新增一万条用户
2
CREATE OR REPLACE PROCEDURE PROC_USER_CREATE_BAT
3
AS
4
startTime VARCHAR2(32);--开始时间
5
endTime VARCHAR2(32);--结束时间
6
BEGIN
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);
14
END PROC_USER_CREATE_BAT;
posted @
2010-11-27 14:41 absolute 阅读(3692) |
评论 (1) |
编辑 收藏
摘要: 在项目中使用Apache开源的Services Framework CXF来发布WebService,CXF能够很简洁与Spring Framework 集成在一起,在发布WebService的过程中,发布的接口的入参有些类型支持不是很好,比如Timestamp和Map。这个时候我们就需要编写一些适配来实行类型转换。
Timestamp:
1/** *//**
&n...
阅读全文
posted @
2010-11-27 14:28 absolute 阅读(3416) |
评论 (1) |
编辑 收藏