반응형

 

 

ORA 12518 TNS 리스너는 클라이언트 연결을 처리할 수 없습니다.
ORA-12518, TNS:listener could not hand off client connection

토요일 주말 자고있던 와중에 아침부터 이 문제로 연락이 왓다.

2019-10-05 토요일 아침 장기출장의 피로로 자고 있는 와중에 갑작스럽게 서버가 동작하지 않는다고 연락이 왔습니다.

급하게 접속해보니 위 사진과 같은 에러가 발생하고 있었습니다.

오라클을 쓰는 데몬프로그램 하나가 행이 걸렸다..

이벤트 로그 또한 특이점이 없는상태였다..
당시에 cmd 창에 lsnrctl status 를 쳐도 리스너가 반응이 없는 상태여서 바로 강제 서비스 재시작을 진행 하였다..

 

 

 

재시작후 문제를 찾던 와중에 다른 커뮤니티 사이트에서 OracleOraHome92CliendCache , OracleOraDb11g_home1ClrAgent 를 시작하면 해결된다는 이야기도 있었지만 둘다 서비스에 없었기에 해결방법이 되지 않았고 또다른 해결방법으로
select * from v$resource_limit;
명령어를 통해 세션 할당 상태를 봣어야 했지만 급한대로 오라클을 재시작해버려서 확인할 길이 없어졌다.. 제일 의심가는 부분이기도 하여  sqlnet.ora 에 들어가서 SQLNET.EXPIRE_TIME = 3 를 추가해주었다. 위 명령어는 유령세션을 죽이는 역활을 하는데 3분 이상 방치된 세션을 끊어버리기도 합니다. 위 문제로 해결이 되면 다행이겠지만 .. 오라클의 리스너가 올라 오지 않아서 프로세스 나 세션을 연결할수 없어서 에러가 난 상태라면 이거또한 해결방법을 찾아봐야 될거 같습니다. 

 

 

 

반응형
반응형

1.시작 -> CMD 실행후 관리자 로그인  (오라클 sysdba 계정 접속)
sqlplus "/as sysdba"


2.시작 -> CMD 새로실행 후 리스너 종료 명령어 실행
lsnrctl stop

3. SQLPLUS 로그인 된 CMD 창으로 돌아가 오라클 명령어 실행
shutdown immediate

 


4. 종료 메시지 발생 후 명령어 실행
startup

5. lsnrctl stop 한 창으로 돌아가서 명렁어 실행
lsnrctl start

 

 

제가 이용중인 방법 입니다.

더 좋은방법이 있으시면 댓글 부탁 드립니다.

반응형
반응형

보통 오라클을 사용하시다보면 TOAD, GOLDEN , SQL Developer 등을 사용하게 됩니다.

이번 방법은 ui 를 통해 index rebuild 하는 방법이 아닌 sql문을 통해 인덱스 리빌드 방법에 대해서 알려드리겠습니다.

일단 cmd 창을 키고 index rebuild 가 필요한 계정에 접속 합니다.

 

Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\Users\>sqlplus 해당하는계정/해당하는계정비밀번호 

SQL*Plus: Release 11.2.0.2.0 Production on 수 5월 29 19:25:30 2019

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL>

 

이후에

 

 1. select index_name from user_indexes;
   // 인덱스 조회하는 명령어 

2. alter index 인덱스명 rebuild
   // 인덱스 리빌드하는 명령어 

 

명령어를 통해 1번으로 인덱스를 조회 후 2번으로 인덱스를 리빌드 합니다.

 

1.

SQL> select index_name from user_indexes;

INDEX_NAME
------------------------------------------------------------
PK_TEST1
IDX_TEST2
PK_TEST3
IDX_TEST4
IDX_TEST5
PK_TEST6
PK_TEST7
SYS_IL0000032323C00004$$
PK_TEST8
PK_TEST9
PK_TEST10

INDEX_NAME
------------------------------------------------------------
PK_TESTINFO
PK_TESTINFO2
PK_TESTINFO3
PK_TESTINFO_TEST
PK_TESTINFOTEST 
PK_TESTINFO4

17 rows selected.

 

2.

 

SQL> ALTER index PK_TEST1 rebuild;

Index altered.

 

인덱스 리빌드 완료 입니다.

 

하지만 이럴경우 17개의 인덱스를 일일이 쳐야 하기 때문에 좀더 쉬운 SQL 문이 있습니다.

3. 

select 'alter index '||index_name||' rebuild ;' from user_indexes;
    
// 인덱스 리빌드 조회 + 인덱스 리빌드 실행시 사용되는 명령어 자동 생성 쿼리 (1,2 번 따로 진행 안하고 3번 부터 진행 해도 문제 없음)

 

3번을 sql에 칠 경우

 

'ALTERINDEX'||INDEX_NAME||'REBUILD;'
--------------------------------------------------------------------------------
alter index PK_RTBS rebuild ;
alter index IDX_TTBERGTDT_AVRTIME rebuild ;
alter index IDX_THDGHDT_COUNT rebuild ;
alter index IDX_TIDFGDYR_LIST rebuild ;
alter index PK_TGST rebuild ;
alter index PK_THIS rebuild ;
alter index PK_TJTRST rebuild ;
alter index SYS_IL0000032323C00004$$ rebuild ;
alter index PK_TGDFGO rebuild ;
alter index PK_TVBTRYT rebuild ;
alter index PK_TBDFBGYNFO rebuild ;

'ALTERINDEX'||INDEX_NAME||'REBUILD;'
--------------------------------------------------------------------------------
alter index PK_ rebuild ;
alter index PK_HFGUTRNGFO rebuild ;
alter index PK_TDHGFHFGINFO rebuild ;
alter index PK_DFHFGHFGO_NS rebuild ;
alter index PK_TSGHSHGLINFO rebuild ;
alter index PK_HDGHFFT rebuild ;

17 rows selected.

 

이런식으로 자동으로 명령어를 복사 붙혀넣기 할수있게 나옵니다.

 

저 내용들을 긁어서 실행하면 자동으로 인덱스 리빌드가 진행 됩니다.

 

4. 마지막으로 COMMIT; 은 필수 입니다.

 

SQL> COMMIT;

Commit complete.

 

 

 

반응형

+ Recent posts