
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 閱讀(859) |
評論 (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 閱讀(3698) |
評論 (1) |
編輯 收藏
摘要: 在項目中使用Apache開源的Services Framework CXF來發布WebService,CXF能夠很簡潔與Spring Framework 集成在一起,在發布WebService的過程中,發布的接口的入參有些類型支持不是很好,比如Timestamp和Map。這個時候我們就需要編寫一些適配來實行類型轉換。
Timestamp:
1/** *//**
&n...
閱讀全文
posted @
2010-11-27 14:28 absolute 閱讀(3423) |
評論 (1) |
編輯 收藏