반응형

오라클 DB에 사용량관련 alert이 떠서 확인해보니 디스크 파티션이 90%이상 찼다. 
확인해서 Online 으로 지울 수 있는 것을 지워보자.

 

1. 로그파일 2개 삭제 (리스너 로그, 트레이스 로그)

 

1) 리스너로 로그파일 위치확인

[oracle@admin-test ~]$ lsnrctl status LISTENER

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 21-JUL-2021 16:49:25

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                27-NOV-2018 06:30:07
Uptime                    470 days 7 hr. 51 min. 25 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/admin-test/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

2) 로그파일 위치
Listener Log File         /oracle/app/oracle/diag/tnslsnr/admin-test/listener/alert/log.xml

 

3) 로그비우기

혹시 모를 상황에 대비해서 파일을 바로 삭제하지 않고 별도 파티션으로 파일 이동후 삭제한다.

 

3.1) 백업폴더 생성

[root@admin-test ] cd /backup
[root@admin-test ] mkdir alert
[root@admin-test backup]# chown -Rf oracle:oinstall alert

 

3.2) 리스너 로그삭제

[root@admin-test alert]# su - oracle
[oracle@admin-test ~]$ cd /oracle/app/oracle/diag/tnslsnr/admin-test/listener/alert
[oracle@admin-test ~]$ find . -name "*.xml" -mtime +30 -exec mv {} /backup/alert/ \;

// 30일이 지난 파일을 /backup/alert 폴더로 이동시킨다.
// 이동하지 않고 그냥 삭제하고 싶다면 --> find . -name "*.xml" -mtime +30 -type f -exec rm -vf {} \

 

3.3) 트레이스 로그삭제

[oracle@admin-test ~]$ cd /oracle/app/oracle/diag/tnslsnr/admin-test/listener/trace
[oracle@admin-test ~]$ cp -rp listener.log listener.log.20210722
//백업하고 삭제한다

[oracle@admin-test ~]$ cp /dev/null listener.log
//trace 로그를 비운다

su
tar -cvzf listener.log_20210722.tar.gz listener.log.20210722
chown -Rf oracle:oinstall listener.log_20210722.tar.gz
rm listener.log.20210722
//백업한 파일은 압축후 삭제한다.

 

4) 테이블스페이스 데이터 정상여부 확인

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME 	       STATUS
------------------------------ ---------
SYSTEM			       ONLINE
SYSAUX			       ONLINE
UNDOTBS1               ONLINE
TEMP			       ONLINE
USERS			       ONLINE
EXAMPLE 		       ONLINE
TS_xxx		       	   ONLINE
TS_xxxx		       	   ONLINE
TS_xxxxx		       ONLINE
TS_xxxxxx		       ONLINE
TS_xxxxxxx		       ONLINE

TABLESPACE_NAME 	       STATUS
------------------------------ ---------
TS_xxxxxxx		       ONLINE

12 rows selected.

 

5) 디스크 용량 확인

df -Th
Filesystem     Type   Size  Used Avail Use% Mounted on
...
/dev/sdb1      ext4   275G  233G   29G  80% /oracle
/dev/sdc1      ext4   550G  173G  350G  34% /backup

끝~

 

# trace 파일 삭제 후 장애발생시 대처

DB 접속은 되는데 테이블 조회가 안된다.

data tablespace 용량도 0, 을 넘어서 아에 조회가 되지 않는다;;;

#[예제]
SQL> select tablespace_name,status from dba_tablespaces;
 
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
TEMP3                          ONLINE
 
6 rows selected.

SQL> alter tablespace users offline;
 
Tablespace altered.
 
SQL> select tablespace_name,status from dba_tablespaces;
 
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          OFFLINE
TEMP3                          ONLINE
 
6 rows selected.
 
SQL> alter tablespace users online;
 
Tablespace altered.
 
SQL> select tablespace_name,status from dba_tablespaces;
 
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
TEMP3                          ONLINE
 
6 rows selected.
 
SQL>

중요한 것은 select tablespace_name,status from dba_tablespaces;
조회를 했을때 빨간 글씨처럼 OFFLINE이라고 써진 테이블 스페이스가 비활성화 되어있는 것이 있을 것이다.
이 tablespace가 data를 담당하는 tablespace라면 당연히 기존 데이터나 테이블을 참조하지 못하게 되는것이다.
따라서 이걸 ONLINE상태로 변경해주면 된다.
그럼 정상적으로 데이터나 테이블을 확인할 수 있다.

 

참조 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=cestlavie_01&logNo=40210123206

반응형

'RDB > oracle' 카테고리의 다른 글

오라클 DB 디스크 용량 비우기 2  (2) 2022.02.23
블로그 이미지

dung beetle

취미는 데이터 수집 직업은 MYSQL과 함께 일하는 DBA의 소소한 일상 이야기

,