달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

어제까지만 해도 잘사용하던 페이지가 아침에 와서 확인해보니, 접속이 되어지지 않는다.

톰캣이 정지되어있는지 알고 확인해보니 톰캣은 멀쩡하고, DB접속이 안된다.

DB서버가 내려갔거나, 리스너가 내려간줄 알고 DB가 설치된 서버로 접속, 하지만...

​문제없이 시작되어있었다. DB접속 툴을 이용하여 붙어보려 했지만,붙지 않음

그래서 sqlplus "/as sysdbd" 로 접속해봤는데 잘붙어진다.

그렇다면 어떤게 문제인지 DB로그를 볼차례

app\Administrator\diag\rdbms\orcl\orcl\trace

alert_orcl.log  해당로그와

app\Administrator\diag\tnslsnr\XXXX\listener\alert

log.xml 파일을 열어보았다.​

log.xml에서 아래와같은 오류를 발견하였다.

 

<txt>TNS-12560: TNS:프로토콜 어댑터 오류
 TNS-00530: 프로토콜 어댑터 오류입니다
 32-bit Windows Error: 53: Unknown error
 TNS-12518: TNS:리스너가 클라이언트 접속을 다룰 수 없습니다
 TNS-12571: TNS:패킷 기록자 실패
 TNS-12560: TNS:프로토콜 어댑터 오류
 TNS-00530: 프로토콜 어댑터 오류입니다
 32-bit Windows Error: 54: Unknown error
</txt>

 

열심히 구글링을 해본결과, 아래사이트에서

https://pavandba.com/tag/tns-12560-tns-protocol-adapter-error/

 

If the listener.log is greater than 4GB in size,

the listener may fail to start on Windows platforms.

(만약 listener.log로그 크기가 4GB보다 크면 윈도우에서 리스너시작이 실패할 수 있다.)

해당 문구를 발견하였다.

app\Administrator\diag\tnslsnr\XXXXXX\listener\trace 경로에

listener.log 가 있는곳을 보니, 역시나 로그의 크기가 4기가가 되었다.

CMD창을 이용하여 경로에서 아래의 명령어 실행

​lsnrctl set log_status off   ->  listener.log를 비활성화 시킵니다.
rename listener.log listener.old  -> 기존 listener 이름 변경
lsnrctl set log_status on   -> listener.log를 활성화 시킵니다.

​사실 명령어로 쳐서 해도 되지만, 나같은경우에는 그냥 서비스에 있는 리스너를 중지하고

listener.log를 listener.old 로 변경하고 다시 리스너를 시작하였더니,

정상작동 되었다.

아무것도 변경한게 없는데 갑자기 DB에 접속이 안된다면, 이부분 확인해봐야 할듯 하다.

Posted by 푸른길땡
|

테이블 스페이스 가용용량이 다 찼기때문에 나타나는 DB 메세지다.

 

org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [72000]; error code [1653]; ORA-01653: GW5_OFFICE.ZT_MAIL_SEND_RECIPIENT 테이블을 128(으)로 GW5_DATA 테이블스페이스에서 확장할 수 없습니다
; nested exception is java.sql.BatchUpdateException: ORA-01653: GW5_OFFICE.ZT_MAIL_SEND_RECIPIENT 테이블을 128(으)로 GW5_DATA 테이블스페이스에서 확장할 수 없습니다

 

 

이런식으로 오류가 나왔을때에는 당황하지말고 아래 방법으로 해결하면 된다.

 

 

테이블 스페이스 확인법

select * from DBA_DATA_FILES;

 

 

system 계정으로 들어가서

아래 쿼리를 돌려보게 되면

 

SELECT
df.file_name "파일명",
df.tablespace_name "테이블 스페이스명",
TO_CHAR( (df.bytes / 1024),'999,990,999') "총 (Kb)",
TO_CHAR( (((df.bytes - Sum ( Nvl(fs.bytes,0)))) / 1024),'999,990,999') "사용(Kb)",
TO_CHAR( (( sum( Nvl(fs.bytes,0))) / 1024),'999,990,999') "가용(Kb)",
TRUNC( ((Sum (Nvl(fs.bytes,0)) / (df.bytes)) * 100),2) "가용 %"
FROM DBA_FREE_SPACE fs, DBA_DATA_FILES df
WHERE fs.file_id(+) = df.file_id
GROUP BY df.tablespace_name, df.file_name, df.bytes
ORDER BY df.tablespace_name;

 

 

 

가용용량이 0%인것을 볼수 있게 된다.

 

테이블스페이스를 만들때 MAX SIZE를 지정해놓게되면 자동으로 늘어나지 않고 가용용량이 없어지게 되는데

 

이때 용량을 언리미트로 아래 쿼리문을 이용하여 변경해주면 된다.

 

ALTER DATABASE DATAFILE '파일명경로' AUTOEXTEND ON MAXSIZE UNLIMITED;

 

ex) ALTER DATABASE DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\GW5\GW_DATA_01.DBF' AUTOEXTEND ON MAXSIZE UNLIMITED;

 

 

언리미트로 지정해놓았는데도 불구하고 가용용량이 0%이면 테이블스페이스를 아래 쿼리문을 이용하여 새로 추가해 주어야 한다.

 

alter TABLESPACE TABLESPACE_OFFICE6 add datafile '파일생성경로' size 1000M AUTOEXTEND ON MAXSIZE UNLIMITED; ​

 

 

ex) alter TABLESPACE TABLESPACE_OFFICE6 add datafile 'D:\APP\ADMINISTRATOR\ORADATA\GW5\GW_DATA_02.DBF'  size 1000M AUTOEXTEND ON MAXSIZE UNLIMITED; ​

 

Posted by 푸른길땡
|

리눅스에 설치된 오라클 접속하기 및 버전 리스너 올리기

 

sysdba를 접속해 데이터베이스 시작하기

 

[root@localhost /]$ su - oracle

[root@localhost:ora11g:/home/oracle]$ sqlplus /nolog

SQL> connect / as sysdba

SQL> startup   

 

 

 

데이터베이스를 종료하려면

SQL> shutdown

 

 

 

다른방법 접속방법(추천)

[root@localhost /]$ su - oracle

[root@localhost:ora11g:/home/oracle]$ sqlplus "/as sysdba"

SQL> startup

 

 

마찬가지로 데이터베이스를 종료하려면

SQL> shutdown

 

 

 

SQL문을 이용한 오라클버전 확인하기

 

오라클 버전을 알아내는 쿼리문을 보내봅니다.

 

SQL> SELCT * FROM v$version;

 

 

 

 

오라클 사용자로 접속하기

 

사용자가 아래와같은경우 접속하는 방법

 

USER : GILDDAENG

PASS : testpass

SID(Service NAme) : orcl 

 

[root@localhost:ora11g:/home/oracle]$ sqlplus /nolog

SQL> connect GILDDAENG/testpass@orcl

 

다른방법은

 

[root@localhost:ora11g:/home/oracle]$ sqlplus GILDDAENG/testpass@orcl

 

접속이 되었으면 테이블을 보는 쿼리문을 날려봅니다.

 

SQL> select * from tab;

 

 

오라클 리스너 올리기

 

외부에서 접속하려면 리스너를 올려야하는데 그 방법은 아래와 같습니다.

 

[root@localhost /]$ su - oracle

[root@localhost:ora11g:/home/oracle]$ lsnrctl start

 

 

반대로 리스너를 중지하려면

 

[root@localhost /]$ su - oracle

[root@localhost:ora11g:/home/oracle]$ lsnrctl stop

 

 

 

 

Posted by 푸른길땡
|

잘되던 프로그램이 갑자기 안되어서 로그를 확인해보니

 

org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [72000]; error code [1653]; ORA-01653: GW5_OFFICE.ZT_MAIL_SEND_RECIPIENT 테이블을 128(으)로 GW5_DATA 테이블스페이스에서 확장할 수 없습니다
; nested exception is java.sql.BatchUpdateException: ORA-01653: GW5_OFFICE.ZT_MAIL_SEND_RECIPIENT 테이블을 128(으)로 GW5_DATA 테이블스페이스에서 확장할 수 없습니다

위의 로그가 보였다.

테이블 스페이스에서 확장할 수 없습니다.

우선 테이블스페이스 용량을 확인하는 쿼리를 실행했다.

테이블 스페이스 확인법

select * from DBA_DATA_FILES;

확인쿼리

SELECT
df.file_name "파일명",
df.tablespace_name "테이블 스페이스명",
TO_CHAR( (df.bytes / 1024),'999,990,999') "총 (Kb)",
TO_CHAR( (((df.bytes - Sum ( Nvl(fs.bytes,0)))) / 1024),'999,990,999') "사용(Kb)",
TO_CHAR( (( sum( Nvl(fs.bytes,0))) / 1024),'999,990,999') "가용(Kb)",
TRUNC( ((Sum (Nvl(fs.bytes,0)) / (df.bytes)) * 100),2) "가용 %"
FROM DBA_FREE_SPACE fs, DBA_DATA_FILES df
WHERE fs.file_id(+) = df.file_id
GROUP BY df.tablespace_name, df.file_name, df.bytes
ORDER BY df.tablespace_name;

확인결과,

가용%가 0%가 되어있었다.​

테이블 스페이스용량 늘리기! 자동으로 늘어나게끔!!

용량 늘리기쿼리문

ALTER DATABASE DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\GW5\GW_DATA_01.DBF' AUTOEXTEND ON MAXSIZE UNLIMITED;

​이런 현상이 생기는 이유는,

테이블스페이스를 만들때 MAXSIZE를 지정해놔서 그렇다.

테이블스페이스 ADD하기

alter TABLESPACE TABLESPACE_OFFICE6 add datafile '경로' size 1000M AUTOEXTEND ON MAXSIZE UNLIMITED; ​

 

 

Posted by 푸른길땡
|

어제까지만 해도 잘사용하던 페이지가 아침에 와서 확인해보니, 접속이 되어지지 않는다.

톰캣이 정지되어있는지 알고 확인해보니 톰캣은 멀쩡하고, DB접속이 안된다.

DB서버가 내려갔거나, 리스너가 내려간줄 알고 DB가 설치된 서버로 접속, 하지만...

​문제없이 시작되어있었다. DB접속 툴을 이용하여 붙어보려 했지만,붙지 않음

그래서 sqlplus "/as sysdbd" 로 접속해봤는데 잘붙어진다.


그렇다면 어떤게 문제인지 DB로그를 볼차례

app\Administrator\diag\rdbms\orcl\orcl\trace

alert_orcl.log  해당로그와

app\Administrator\diag\tnslsnr\XXXX\listener\alert

log.xml 파일을 열어보았다.​

log.xml에서 아래와같은 오류를 발견하였다.


<txt>TNS-12560: TNS:프로토콜 어댑터 오류
 TNS-00530: 프로토콜 어댑터 오류입니다
 32-bit Windows Error: 53: Unknown error
 TNS-12518: TNS:리스너가 클라이언트 접속을 다룰 수 없습니다
 TNS-12571: TNS:패킷 기록자 실패
 TNS-12560: TNS:프로토콜 어댑터 오류
 TNS-00530: 프로토콜 어댑터 오류입니다
 32-bit Windows Error: 54: Unknown error
</txt>



열심히 구글링을 해본결과, 아래사이트에서

https://pavandba.com/tag/tns-12560-tns-protocol-adapter-error/



If the listener.log is greater than 4GB in size,
the listener may fail to start on Windows platforms.
(만약 listener.log로그 크기가 4GB보다 크면 윈도우에서 리스너시작이 실패할 수 있다.)

해당 문구를 발견하였다.



app\Administrator\diag\tnslsnr\XXXXXX\listener\trace 경로에

listener.log 가 있는곳을 보니, 역시나 로그의 크기가 4기가가 되었다.



해결방법


CMD창을 이용하여 경로에서 아래의 명령어 실행

​lsnrctl set log_status off   ->  listener.log를 비활성화 시킵니다.
rename listener.log listener.old  -> 기존 listener 이름 변경
lsnrctl set log_status on   -> listener.log를 활성화 시킵니다.



사실 명령어로 쳐서 해도 되지만, 나같은경우에는 그냥 서비스에 있는 리스너를 중지하고

listener.log를 listener.old 로 변경하고 다시 리스너를 시작하였더니,

정상작동 되었다.

아무것도 변경한게 없는데 갑자기 DB에 접속이 안된다면, 이부분 확인해봐야 할듯 하다.









Posted by 푸른길땡
|