<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>dev-jjong</title>
    <link>https://java7.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 20 May 2026 22:15:39 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>dev-jjong</managingEditor>
    <item>
      <title>주소</title>
      <link>https://java7.tistory.com/297</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://www.tsilson24.or.kr/claim/app/out/insuranceLoading?key1=342B571060F078380D722B13D816C808&amp;amp;key2=C406C359BC7162F0278ADA9A74FCCE19&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://www.tsilson24.or.kr/claim/app/out/insuranceLoading?key1=342B571060F078380D722B13D816C808&amp;amp;key2=C406C359BC7162F0278ADA9A74FCCE19&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/297</guid>
      <comments>https://java7.tistory.com/297#entry297comment</comments>
      <pubDate>Thu, 12 Mar 2026 14:23:06 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] PL/SQL Autonomous (자율 트랜잭션)</title>
      <link>https://java7.tistory.com/248</link>
      <description>&lt;pre id=&quot;code_1722303917449&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;create or replace function seq_nextval(l_gubun number) return number
as
    pragma autonomous_transaction;
    l_new_seq seq_tab.seq%type;
begin
    update seq_tab
    set	seq = seq+1
    where gubun = l_gubun;
    
    select seq into l_new_seq
    from seq_tab
    where gubun = l_gubun;
    
    commit;
    return l_new_seq;
end;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PL/SQL 함수/프로시저르 자율 트랜잭션으로 선언하면, 그 내부에서 커밋을 수행해도 메인 트랜잭션은 커밋하지 않은 상태로 남는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메인 트랜잭션 INSERT 문에서 아래와 같이 채번 함수를 호출하고 최종적으로 커밋하지 전까지 다른 작업을 많이 수행하더라도 채번 테이블 로우 Lock은 이미 해제한 상태이므로 다른 트랜잭션을 블록킹하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1722304085524&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;insert into target_tab values (seq_nextval(123), :x, :y, :z);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category># 데이터베이스/오라클</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/248</guid>
      <comments>https://java7.tistory.com/248#entry248comment</comments>
      <pubDate>Tue, 30 Jul 2024 10:48:28 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] 21C XE에서 ORA-12543: TNS:수신지 호스트에 도달할 수 없습니다. 오류해결방법</title>
      <link>https://java7.tistory.com/246</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;209&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FyrT6/btsIBgs4X1I/n3iO1uGtd0RiMrKV0eb8I0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FyrT6/btsIBgs4X1I/n3iO1uGtd0RiMrKV0eb8I0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FyrT6/btsIBgs4X1I/n3iO1uGtd0RiMrKV0eb8I0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFyrT6%2FbtsIBgs4X1I%2Fn3iO1uGtd0RiMrKV0eb8I0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;611&quot; height=&quot;209&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;209&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ORA-12543:&amp;nbsp;TNS:수신지&amp;nbsp;호스트에&amp;nbsp;도달할&amp;nbsp;수&amp;nbsp;없습니다.&amp;nbsp;오류해결방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오류 원인1&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 방화벽 문제 (1521포트를 열지 않았을 경우)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;오류 원인2&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 관리자 비밀번호에 @가 들어가 있을 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- @는 구분자로 인식하여 로그인이 정상적으로 안된다함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 관리자 비밀번호를 변경 후 재시도하면 정상적으로 동작함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;(관리자 비밀번호 변경 방법 : &lt;a href=&quot;https://fakegrowthup.tistory.com/253&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://fakegrowthup.tistory.com/253&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category># 데이터베이스/오라클</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/246</guid>
      <comments>https://java7.tistory.com/246#entry246comment</comments>
      <pubDate>Wed, 17 Jul 2024 11:03:11 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] Direct Path Insert</title>
      <link>https://java7.tistory.com/181</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;일반적인 Insert가 느린 이유는&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;데이터를 입력할 수 있는 블록을 Freelist에서 찾는다.&lt;br /&gt;(Freelist란? HWM 아래쪽에 있는 블록중 입력이 가능한 블록에 대한 목록)&lt;br /&gt;(HWM란? High-Water-Mart. 즉, 테이블 데이터가 쌓여있는 가장 높은 영역)&lt;/li&gt;
&lt;li&gt;Freelist에서 할당받은 블록을 버퍼캐시에서 찾는다.&lt;/li&gt;
&lt;li&gt;버퍼캐시에 없으면, 데이터파일에서 읽어 버퍼캐시에 적재한다.&lt;/li&gt;
&lt;li&gt;INSERT 내용을 Undo 세그먼트에 기록한다.&lt;br /&gt;(Undo란? 트랜젝션을 롤백하기 위해 기록한 정보)&lt;/li&gt;
&lt;li&gt;INSERT 내용을 Redo 로그에 기록한다.&lt;br /&gt;(Redo란? 트랜젝션을 리커버리 하기위한 정보)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Direct Path Insert 방식이 빠른 이유는&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Freelist를 참조하지 않고 HWM 바깥 영역에 데이터를 순차적으로 입력한다.&lt;/li&gt;
&lt;li&gt;블록을 버퍼캐에서 탐색하지 않는다.&lt;/li&gt;
&lt;li&gt;버퍼캐시에 적재하지 않고, 데이터파일에 직접 기록한다.&lt;/li&gt;
&lt;li&gt;Undo 로깅을 안 한다.&lt;br /&gt;(HWM 뒤쪽에 데이터를 순차적으로 입력하기 때문이다. 이 데이터는 커밋하기 전까지 다른 세션이 읽지 않으므로 Redo Consistency를 위해 Undo 데이터를 남기지 않아도 된다.)&lt;/li&gt;
&lt;li&gt;Redo 로깅을 안하게 할 수 있다.&lt;br /&gt;(alter table t NOLOGGING;)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Direct Path Insert가 가능한 케이스&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;INSERT &amp;middot;&amp;middot;&amp;middot; SELECT문에 append 힌트 사용&lt;/li&gt;
&lt;li&gt;parallel 힌트를 이용해 병렬 모드로 INSERT&lt;/li&gt;
&lt;li&gt;direct 옵션을 지정하고 SQL*Loader(sqlldr)로 데이터 적재 (무슨말일까..)&lt;/li&gt;
&lt;li&gt;CTAS(create table &amp;middot;&amp;middot;&amp;middot; as select) 문 수행&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Direct Path Insert시 주의할 점&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;성능은 빨라지지만 Exclusive 모드 TM Lock이 걸린다. 즉, 커밋하기 전까지 다른 트랜잭션은 해당 테이블에 DML을 수행하지 못한다.&lt;/li&gt;
&lt;li&gt;Freelist를 조회하지 않고 HWM 바깥 영역에 입력하므로 테이블에 여유 공간이 있어도 재활용하지 않는다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category># 데이터베이스/오라클</category>
      <category>DIRECT PATH INSERT</category>
      <category>DML튜닝</category>
      <category>Oracle</category>
      <category>Parallel</category>
      <category>병렬처리</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/181</guid>
      <comments>https://java7.tistory.com/181#entry181comment</comments>
      <pubDate>Thu, 27 Jul 2023 09:06:53 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] 데이터베이스 CALL이 성능에 미치는 영향 테스트</title>
      <link>https://java7.tistory.com/180</link>
      <description>&lt;pre id=&quot;code_1690329108575&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;create table source
as
select b.no, a.*
from (select * from emp where rownum &amp;lt;= 10) a,
     (select rownum as no from dual connect by level &amp;lt;= 100000)b;


create table target
as
select * from source where 1=2;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;source 테이블에는 100만건의 데이터가 들어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. loop가 종료된 후에 커밋 (수행시간: 15초)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;source 테이블의 데이터를 target 테이블로 PL/SQL의 루프를 돌려서 건건이 입력해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1690329477241&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;begin
  for s in (select * from source)
  loop
	  insert into target values(s.no, s.empno, s.ename, s.job, s.mgr, s.hiredate, s.sal, s.comm, s.deptno);
	  
  end loop;
  commit;
end;
/

/*
==========================[Start Time : 2023/07/26 08:57:05]==========================
실행 완료. Time used: 15116 Millis

*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15초가량 시간이 걸렸다. 루프를 돌면서 건건이 call이 발생했지만, 네트워크를 경유하지 않는 Recursive Call이라서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그나마 15초만에 수행이 된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. loop안쪽에서 건건히 commit (수행시간: 48초)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 아래 PL/SQL문을 실행해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커밋을 루프 안쪽으로 옮겨보았다.&lt;/p&gt;
&lt;pre id=&quot;code_1690329415448&quot; class=&quot;sql&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;begin
  for s in (select * from source)
  loop
	  insert into target values(s.no, s.empno, s.ename, s.job, s.mgr, s.hiredate, s.sal, s.comm, s.deptno);
	  commit;
  end loop;
  
end;
/

/*
==========================[Start Time : 2023/07/26 08:54:35]==========================
실행 완료. Time used: 48607 Millis
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15초 걸리던게 48초로 늘어났다. 성능도 문제지만 커밋을 이렇게 자주하게 되면 트랜잭션 원자성에도 문제가 생긴다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. loop안쪽에서 적당한 주기로 commit (수행시간: 18초)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1690330256342&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;declare
i NUMBER :=0;
begin
  for s in (select * from source)
  loop
	  insert into target values(s.no, s.empno, s.ename, s.job, s.mgr, s.hiredate, s.sal, s.comm, s.deptno);
	  i := i+1;
	  if mod(i, 100000) = 0 then --10만 번에 한 번씩 커밋
	  commit;
	  end if;
  end loop;
  
end;
/

/*
==========================[Start Time : 2023/07/26 09:09:32]==========================
실행 완료. Time used: 18633 Millis
*/​&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 처리하면 맨 마지막에 한 번 커밋하는 것과 비교해서 크게 성능차이가 없다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. One SQL로 처리하는 방법 (수행시간: 0.8초)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1690330379201&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;insert into target 
select * from source;

/*
==========================[Start Time : 2023/07/26 09:12:29]==========================
실행 완료. Time used: 796 Millis
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단 한 번의 call로 처리하니 0.8초만에 수행이 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;가급적 One SQL로 처리하도록 하자!!&lt;/span&gt;&lt;/p&gt;</description>
      <category># 데이터베이스/오라클</category>
      <category>ORACLE성능튜닝</category>
      <category>sqlp</category>
      <category>sql전문가</category>
      <category>데이터베이스CALL</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/180</guid>
      <comments>https://java7.tistory.com/180#entry180comment</comments>
      <pubDate>Wed, 26 Jul 2023 09:16:32 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] 월별 누적 매출 예제</title>
      <link>https://java7.tistory.com/165</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;sqld, sqlp 2과목의 단골 문제죠~~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 예제로 직접 해보면 이해하기 쉽습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 사전에 emp, dept 테이블이 없으시면 아래 링크로 가서 생성하시고, 실습하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. dept, emp 테이블 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://java7.tistory.com/164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://java7.tistory.com/164&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 월별 누적 매출 예제&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1677045516617&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;create table 월별지점매출
as
select deptno &quot;지점&quot;
     , row_number() over (partition by deptno order by empno) &quot;판매월&quot;
     , round(dbms_random.value(500, 1000)) &quot;매출&quot;
  from emp
 order by deptno;
 
select * from 월별지점매출;


-- 분석함수 이용
select 지점, 판매월, 매출
     , sum(매출) over(partition by 지점 order by 판매월 range between unbounded preceding and current row) 누적매출
  from 월별지점매출;
  
  
-- 조인 이용
select t1.지점, t1.판매월, min(t1.매출) 매출, sum(t2.매출) 누적매출
  from 월별지점매출 t1, 월별지점매출 t2
 where t2.지점 = t1.지점
   and t2.판매월 &amp;lt;= t1.판매월
 group by t1.지점, t1.판매월
 order by t1.지점, t1.판매월&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 실행결과&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brulmj/btr0nTT8DIO/MnZs5mUpNnC2r6Gv8BY6Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brulmj/btr0nTT8DIO/MnZs5mUpNnC2r6Gv8BY6Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brulmj/btr0nTT8DIO/MnZs5mUpNnC2r6Gv8BY6Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrulmj%2Fbtr0nTT8DIO%2FMnZs5mUpNnC2r6Gv8BY6Ik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;268&quot; height=&quot;341&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category># 데이터베이스/오라클</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/165</guid>
      <comments>https://java7.tistory.com/165#entry165comment</comments>
      <pubDate>Wed, 22 Feb 2023 15:03:07 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] emp, dept 테이블 생성 스크립트</title>
      <link>https://java7.tistory.com/164</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오라클 테스트시 많이 사용되는 emp, dept 테이블의 스크립트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;scoot계정에 기본으로 되어있지 않은 경우 아래 스크립트를 이용해서 생성하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1677042538000&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE DEPT
       (DEPTNO number(10),
        DNAME VARCHAR2(14),
        LOC VARCHAR2(13) 
);

INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH',   'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES',      'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');

CREATE TABLE EMP (
 EMPNO               NUMBER(4) NOT NULL,
 ENAME               VARCHAR2(10),
 JOB                 VARCHAR2(9),
 MGR                 NUMBER(4) ,
 HIREDATE            DATE,
 SAL                 NUMBER(7,2),
 COMM                NUMBER(7,2),
 DEPTNO              NUMBER(2) 
 );

INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,TO_DATE('1981-11-17','YYYY-MM-DD'),5000,NULL,10);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,TO_DATE('1981-05-01','YYYY-MM-DD'),2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,TO_DATE('1981-05-09','YYYY-MM-DD'),2450,NULL,10);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,TO_DATE('1981-04-01','YYYY-MM-DD'),2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,TO_DATE('1981-09-10','YYYY-MM-DD'),1250,1400,30);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,TO_DATE('1981-02-11','YYYY-MM-DD'),1600,300,30);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,TO_DATE('1981-08-21','YYYY-MM-DD'),1500,0,30);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,TO_DATE('1981-12-11','YYYY-MM-DD'),950,NULL,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,TO_DATE('1981-02-23','YYYY-MM-DD'),1250,500,30);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,TO_DATE('1981-12-11','YYYY-MM-DD'),3000,NULL,20);
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,TO_DATE('1980-12-09','YYYY-MM-DD'),800,NULL,20);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,TO_DATE('1982-12-22','YYYY-MM-DD'),3000,NULL,20);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,TO_DATE('1983-01-15','YYYY-MM-DD'),1100,NULL,20);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,TO_DATE('1982-01-11','YYYY-MM-DD'),1300,NULL,10);

COMMIT;&lt;/code&gt;&lt;/pre&gt;</description>
      <category># 데이터베이스/오라클</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/164</guid>
      <comments>https://java7.tistory.com/164#entry164comment</comments>
      <pubDate>Wed, 22 Feb 2023 14:11:18 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] 21C에서 사용자 계정 생성하기</title>
      <link>https://java7.tistory.com/163</link>
      <description>&lt;pre id=&quot;code_1676438005113&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;--1. SQL PLUS 실행 후 sys계정으로 접속
conn /as sysdba

--2. 사용자 계정 생성
--참고: 21c에서 사용자 계정을 생성하려면 &quot;c##&quot; 수식어를 앞에 붙여야한다.
create user c##sqlp identified by 20230319;

--3. 사용자 권한 설정
grant create any table to c##sqlp;
grant connect, resource, dba to c##sqlp;

--4. 테이블스페이스 권한 부여
alter user c##sqlp default tablespace users quota unlimited on users;

--5. 생성한 계정으로 재로그인
conn c##sqlp;
비밀번호: 20230319

--6. 접속한 계정 확인
show user;&lt;/code&gt;&lt;/pre&gt;</description>
      <category># 데이터베이스/오라클</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/163</guid>
      <comments>https://java7.tistory.com/163#entry163comment</comments>
      <pubDate>Wed, 15 Feb 2023 14:15:49 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] 바인드 변수의 중요성</title>
      <link>https://java7.tistory.com/160</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;1. 개요&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;바인드 변수를 사용하게 되면, 커서를 많이 생성하지 않고 하나를 반복 재사용하므로 메모리 사용량과 파싱 소요시간을 줄여준다.궁극적으로, 시스템 전반의 메모리와 CPU 사용률을 낮춰 데이터베이스 성능과 확장성을 높이는게 기여하고, 특히 동시 사용자 접속이 많을 때는 그 영향력이 절대적이다.아래 간단한 실습을 통해 바인드 변수에 대해 알아보자.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;2. 실습 환경 설정&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1673241146120&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 테이블 생성
create table t
as
select * from all_objects;

update t set object_id = rownum;

-- 인덱스 생성
create unique index t_idx on t(object_id);

-- 통계정보 수집
analyze table t compute statistics;

-- 인덱스를 잘 타는지 실행계획 확인 
set autotrace traceonly explain; -- 실행계획을 보기위한 sql plus 문법
select object_name from t where object_id = 1000;
set autotrace off; -- 실행계획을 안보기 위한 sql plus 문법

alter system flush shared_pool;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;3. 실습&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;첫 번째, 바인드 변수 사용&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1673241315300&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- SQL 트레이스 수집 시작
alter session set sql_trace = true;

-- 바인드 변수 방식으로 20000회 실행
declare
	type rc is ref cursor;
	l_rc rc;
	l_object_name t.object_name%type;
BEGIN
	for i in 1..20000
	loop
		open l_rc for
			'select /* test1 */ object_name
			 from   t
			 where  object_id = :x' using i;
		fetch l_rc into l_object_name;
		close l_rc;
	end loop;
end;
/

--PL/SQL 처리가 정상적으로 완료되었습니다.
--경   과: 00:00:03.91

select * from dual;

-- SQL 트레이스 수집 종료
alter session set sql_trace = false;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;V$SQL의 결과를 확인해보면, 2만번의 쿼리 콜이 있었지만 하드파싱은 1번뿐 인것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673397846766&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select sql_text, loads, parse_calls, executions, fetches from v$sql
where  sql_text like '%test1%'
and    sql_text not like '%v$sql%'
and    sql_text not like '%declare%';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y4xr8/btrVMYshD8U/QEL0CdGDC8rpichg68A8Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y4xr8/btrVMYshD8U/QEL0CdGDC8rpichg68A8Ak/img.png&quot; data-alt=&quot;*LOADS =1 (하드파싱 1번)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y4xr8/btrVMYshD8U/QEL0CdGDC8rpichg68A8Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY4xr8%2FbtrVMYshD8U%2FQEL0CdGDC8rpichg68A8Ak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;573&quot; height=&quot;95&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;*LOADS =1 (하드파싱 1번)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;아래 SQL TRACE에도 위와 동일한 결과를 볼 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;926&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/co5zcJ/btrVOBwv18T/CfGkhVUdkmy3Vf9eryi7dK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/co5zcJ/btrVOBwv18T/CfGkhVUdkmy3Vf9eryi7dK/img.png&quot; data-alt=&quot;*Misses in library cache during parse: 1&amp;amp;amp;nbsp; (하드파싱 1번)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/co5zcJ/btrVOBwv18T/CfGkhVUdkmy3Vf9eryi7dK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fco5zcJ%2FbtrVOBwv18T%2FCfGkhVUdkmy3Vf9eryi7dK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;983&quot; height=&quot;926&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;926&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;*Misses in library cache during parse: 1&amp;amp;nbsp; (하드파싱 1번)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;두 번째, 바인드 변수 미사용(즉, 상수 사용)&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1673242237864&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- SQL 트레이스 수집 시작
alter session set sql_trace = true;

-- 상수값 입력 방식으로 20000회 실행
declare
	type rc is ref cursor;
	l_rc rc;
	l_object_name t.object_name%type;
BEGIN
	for i in 1..20000
	loop
		open l_rc for
			'select /* test2 */ object_name
			 from   t
			 where  object_id = ' || i;
		fetch l_rc into l_object_name;
		close l_rc;
	end loop;
end;
/	

--PL/SQL 처리가 정상적으로 완료되었습니다.
--경   과: 00:00:53.91

select * from dual;

-- SQL 트레이스 수집 종료
alter session set sql_trace = false;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;아래 V$SQL의 결과를 보면 WHERE절에 새로운 조건절이 대입 될때마다 캐시에 새로운 커서가 생성된 것을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;또한 매번 하드파싱을 하게된 꼴이고, 처리 시간 또한 기존에 비해 몇배가 더 걸리게 되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #ee2323;&quot;&gt;&lt;u&gt;&quot;제일 중요한 사실은 20,000번 커서를 생성했지만, 캐시에 남아있는건 3400여개 뿐이였다.&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #ee2323;&quot;&gt;&lt;u&gt;나머지는 이미 캐시에서 밀려나고 없기 때문이다.&quot;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673398530393&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select substr(sql_text, 61), loads, parse_calls, executions, fetches from v$sql
where  sql_text like '%test2%'
and    sql_text not like '%v$sql%'
and    sql_text not like '%declare%';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AFJ9Z/btrVMYlDIfl/3d8V1TbOKzWClme9qJUhi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AFJ9Z/btrVMYlDIfl/3d8V1TbOKzWClme9qJUhi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AFJ9Z/btrVMYlDIfl/3d8V1TbOKzWClme9qJUhi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAFJ9Z%2FbtrVMYlDIfl%2F3d8V1TbOKzWClme9qJUhi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;943&quot; height=&quot;348&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category># 데이터베이스/오라클</category>
      <category>Oracle</category>
      <category>ORACLE 바인드 변수</category>
      <category>ORACLE 튜닝</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/160</guid>
      <comments>https://java7.tistory.com/160#entry160comment</comments>
      <pubDate>Mon, 9 Jan 2023 14:28:30 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] 커서 공유 테스트</title>
      <link>https://java7.tistory.com/159</link>
      <description>&lt;pre id=&quot;code_1672880657978&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alter system flush shared_pool;

-- 1회 실행
select /* cursor_test */ empno, ename, job, sal, deptno
from EMP where empno = 7788;


select sql_id, parse_calls, loads, executions, invalidations, decode(sign(invalidations), 1, (loads-invalidations), 0) reloads
from v$sql
where sql_text like '%cursor_test%'
and sql_text not like '%v$sql%';

-- 2회 실행
select /* cursor_test */ empno, ename, job, sal, deptno
from EMP where empno = 7788;

-- 3회 실행
select /* cursor_test */ empno, ename, job, sal, deptno
from EMP where empno = 7788;


select sql_id, parse_calls, loads, executions, invalidations, decode(sign(invalidations), 1, (loads-invalidations), 0) reloads
from v$sql
where sql_text like '%cursor_test%'
and sql_text not like '%v$sql%';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlK6Y5/btrVq3Uz7WF/XtLgRIQI6SMSyKknZXARW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlK6Y5/btrVq3Uz7WF/XtLgRIQI6SMSyKknZXARW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlK6Y5/btrVq3Uz7WF/XtLgRIQI6SMSyKknZXARW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlK6Y5%2FbtrVq3Uz7WF%2FXtLgRIQI6SMSyKknZXARW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;544&quot; height=&quot;164&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;parse_calls: 라이브러리 캐시에서 SQL커서를 찾으려는 요청 횟수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;loads: 하드파싱을 거친 SQL 실행계획을 라이브러리 캐시에 적재한 횟수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;executions: SQL을 실행한 횟수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;invalidations: 커서가 무효화된 횟수. 커서가 참조하고 있는 오브젝트에 중요한 변화가 일어난 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category># 데이터베이스/오라클</category>
      <author>dev-jjong</author>
      <guid isPermaLink="true">https://java7.tistory.com/159</guid>
      <comments>https://java7.tistory.com/159#entry159comment</comments>
      <pubDate>Thu, 5 Jan 2023 10:07:57 +0900</pubDate>
    </item>
  </channel>
</rss>