728x90
300x250
[PC 활용] 오라클 - 반복문으로 다중 입력 시(예:insert into) 퍼짐 현상


이 글은 JSP, Java, PHP, C#를 예로 들어서 개발을 수행했을 때, 태스트로 "DML(Insert 문)"으로 DB에 Query 호출을 반복문으로 하였을 때 초기 환경 상태에서의 오라클 데이터베이스에서 일어나는 반응에 대한 글이다.


[PseudoCode]


public void insertMember(){


    (연결자)
    Connection conn = .....;
    
    try{
        conn.open(); // (연결)

        for ( 1 to 10000 ){


           String sql = "insert into ........";

           conn.executeQuery(sql);

        }


     }catch(Exception e){

     }finally{
           conn.close(); // (종료)
     }

    


}


슈도 코드) 문제가 되는 영역


이런 문제를 처리하고자 했을 때, 발생되는 오류를 소개하려고 한다.


[태스트 환경]

1. MS Windows 10

2. Oracle 11g (Express Edition, XE)



1. 프로그래밍 도구에서 호출되는 오류명


ora-12519 TNS:no appropriate handler found


이러한 오류가 발생한다면, 다음과 같이 입력하여 해결하면 된다.



2. 해결 방법


명령어를 몇 가지 요약하였다.


1. 명령 프롬프트 실행하기

   cmd


2. 관리자 계정 접속 명령어

   sqlplus "/as sysdba"


3. 프로세스 조회하기
   SQL> SELECT * FROM v$resource_limit where resource_name='processes';


4. 프로세스 조정하기 크기
   SQL> ALTER SYSTEM SET PROCESSES=500 SCOPE=spfile; -- 200으로 늘려줌


5. 서버 재시작
   SQL> shutdown immediate; --셧다운
   SQL> startup; --재시작



그림 1. cmd 명령어 - 시작 메뉴


시작 메뉴에서 cmd를 입력한다.



그림 2. sqlplus


sqlplus "/as sysdba"


이렇게 입력해도 관리자 권한으로 오라클에 접속할 수 있다.


SQL> SELECT * FROM v$resource_limit where resource_name='processes';


프로세스 조회 명령어로 프로세스 자원 한계를 확인하자.

프로세스가 100으로 작게 설정되어 있으니 조금 더 늘려보도록 하자.



그림 3. sqlplus


SQL> ALTER SYSTEM SET PROCESSES=500 SCOPE=spfile;


프로세스 500으로 수정을 해주었다.

변경되었는지 조회를 해보자.


SQL> SELECT * FROM v$resource_limit where resource_name='processes';


조회를 해보니, 변경되지 않았다.

그래서 commit을 안 해서 발생한 문제인지 commit을 입력하였다.


SQL> commit;


그리고 다시 조회를 해본다.


SQL> SELECT * FROM v$resource_limit where resource_name='processes';


변경되지 않았다.

오라클 DB를 재부팅해보면 해결되는 문제인지 시도해보았다.



그림 4. sqlplus


SQL> shutdown immediate;

SQL> startup;


서버를 다시 시작하였다.

그리고 프로세스 조회 명령어를 입력하였다.


SQL> SELECT * FROM v$resource_limit where resource_name='processes';


변경된 프로세스 내용을 확인할 수 있다.

반응형

+ Recent posts