隨筆-16  評論-84  文章-1  trackbacks-0
            2010年11月27日
          通過存儲過程向數據庫一下子插入了一千萬(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 閱讀(859) | 評論 (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 閱讀(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)編輯 收藏
          主站蜘蛛池模板: 丰宁| 岳普湖县| 隆昌县| 武胜县| 通州区| 缙云县| 青河县| 伊金霍洛旗| 托克逊县| 玉山县| 永兴县| 卢氏县| 汝阳县| 即墨市| 南平市| 林甸县| 搜索| 龙陵县| 惠来县| 安丘市| 太谷县| 丘北县| 泰和县| 苗栗县| 无棣县| 行唐县| 都匀市| 凌源市| 商河县| 永寿县| 东辽县| 黄石市| 大关县| 喀喇| 木里| 金平| 时尚| 洱源县| 和政县| 哈密市| 南丹县|