공부 이야기

truncate table SYS.AUD$;

판다(panda) 2018. 9. 13. 00:30

외부에 나가있는 직원한테 연락이 왔습니다..


DB서버에 접속이 안된다고..


해당 접속지 IP를 막지 않아서..


그쪽에서 IP 막은게 아니냐고 물어봤더니.. 그런건 또 아니라고 하고..


오류 코드가 나온다고.. 


보내준게..



해당 오류들을 찾아봤더니..


ORA-00604 : error occurred at recursive SQL level 1 
ORA-01653 : unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM 
ORA-02002 : error while writing to audit trail 

SYS.AUD$ 테이블을 tablespace 에서 확장할 수 없다는.. 내용의 오류더군요..


오류 확인 및 해결 방법을 찾기 위해 구글링 했더니..


오류 확인 :

SYS.AUD$ 테이블의 테이블 스페이스가 가득 차서 확장하려고 했는데.. 확장이 안되서 발생하는 오류..



해결 방법:


ORACLE_HOME/dbs/init<SID>.ora 화일에 지정된 open_cursors 의 크기를 알아보고..

open_cursors=255 로 변경한다 부터..


기존의 데이터파일의 사이즈를 늘려주고.. 데이터 파일을 추가한다..


테이블스페이스를 자동으로 사이즈가 늘어날 수 있도록 autoextend를 on 설정한다..


테이블별 사용량 조회 후 데이터 삭제하고.. purge 작업을 한다..



데이터 삭제는 안되고.. 테이블스페이스도 자동으로 확장되게 설정해놓은것 같은데;..


select * from SYS.AUD$; 을 통해.. 


SYS.AUD$ 에 얼마나 많은 양의 데이터가 들어가 있는지 확인을 해봤는데..


확인하다가.. 돌아가실 정도로.. 너무 많은 양의 데이터가 들어가 있더군요..



SYS.AUD$ 는 표준 DB 감사 테이블로.. DB의 모든 연결에 대한 데이터를 모으고 있습니다..


해당 테이블에.. 모든 데이터가 저장되더 보니.. 확장이 안되서 오류가 발생한거죠..



간단하게.. truncate table SYS.AUD$; 를 통해서.. 처리를 할 수 있다고 하더군요..



저는 작업을 해놓은게 많아서.. 대부분 컴퓨터를 안끄다보니..


접속이 되어있어서.. 바로 실행을 했는데..



으헉.. 권한 불충분;..



서버가 리눅스라.. 리눅스 버전만 기술합니다..


DB 서버에 shell 접속 후..

명령어들을 입력해서 truncate table 을 해줍니다..


su - oracle 
sqlplus /nolog 
connect /as sysdba 
truncate table SYS.AUD$; 
commit;



그리고.. 접속 확인!.. 접속이 잘 된다고 하네요..



참고 블로그..

 - http://cofs.tistory.com/342..

 - https://cafe.naver.com/metanetbts/2701..