OS환경 : Oracle Linux6.8(64bit)
DB 환경 : Oracle Database 11.2.0.4
쿼리 : 동시에 100개의 세션으로 dml 수행 방법, 여러세션 쿼리 동시실행
테스트용 테이블 생성
1 2 3 4 5 6 | SQL> CREATE TABLE SESS_TEST ( SEQ NUMBER , DATE_COL1 DATE , C2 NUMBER ); |
시퀀스 생성
1 | SQL> CREATE SEQUENCE SESS_TEST_SEQ INCREMENT BY 1 NOCYCLE ORDER; |
10000개 row를 insert 하는 insert.sh 쉘 작성
vi insert.sh
1 2 3 4 5 6 7 8 | BEGIN FOR i IN 1..10000 LOOP INSERT INTO SESS_TEST VALUES (SESS_TEST_SEQ.NEXTVAL, SYSDATE, i); END LOOP; END; / EXIT; |
insert.sh 를 100번 실행하는 insert_100_session.sh 쉘 작성
vi insert_100_session.sh
1 2 3 4 5 | for ((i=1; i<=100; i++)) do nohup sqlplus scott/tiger @insert.sql & done wait |
동시에 100개 세션으로 insert 실행
1 | $ sh insert_100_session.sh |
top 5 이벤트 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | col wait_class for a12 col event for a50 select * from ( select WAIT_CLASS , EVENT, count(sample_time) as EST_SECS_IN_WAIT from v$active_session_history where sample_time between sysdate - interval '1' hour and sysdate group by WAIT_CLASS,EVENT order by count(sample_time) desc ) where rownum <6; WAIT_CLASS EVENT EST_SECS_IN_WAIT ------------ -------------------------------------------------- ---------------- Concurrency cursor: pin S wait on X 64 (null) (null) 34 Concurrency library cache: mutex X 15 Other null event 12 Other latch: call allocation 8 5 rows selected. |
참조 : https://cafe.naver.com/dbian/1064
'ORACLE > Sql' 카테고리의 다른 글
부하 테스트용 샘플데이터 생성 dbms_random (0) | 2019.02.18 |
---|---|
리터럴 sql 조회 쿼리 (0) | 2019.02.15 |
OS 접속 권한 없이 oracle 접속해서 alert log 확인 (0) | 2019.01.31 |
alert log 에 메세지 입력하는 방법 (dbms_system.ksdwrt 이용) (0) | 2019.01.30 |
substr로 문자열 추출 (0) | 2019.01.28 |