728x90

Tablespace란?

하나 또는 여러 개의 데이터 파일로 구성되어 있는 논리적인 데이터 저장구조이다.

DataFile이란?

DB Table의 데이터가 물리적으로 저장되는 공간이다. (Data File 1개의 최대 용량 32GB) Tablespace는 1개 이상의 DataFile로 구성되어 있다.

DataFile 확장 방법

  1. DataFile 추가
  2. AUTOEXTEND로 추가
  3. RESIZE

Tablespace 용량 확인 쿼리문

SELECT    A.TABLESPACE_NAME AS "테이블스페이스명",
          A.FILE_NAME AS "파일경로",
          A.BYTES/1024/1024/1024 AS "총크기",
          (A.BYTES - B.FREE)/1024/1024/1024 AS "사용공간",
          B.FREE/1024/1024/1024 AS "여유 공간",
          TO_CHAR( (B.FREE / A.BYTES * 100) , '999.99')||'%' AS "여유공간"
FROM
(
 SELECT FILE_ID,
        TABLESPACE_NAME,
        FILE_NAME,
        SUBSTR(FILE_NAME,1,200) AS FILE_NM,
        SUM(BYTES) BYTES
   FROM DBA_DATA_FILES
 GROUP BY FILE_ID,TABLESPACE_NAME,FILE_NAME,SUBSTR(FILE_NAME,1,200)
) A,
(
 SELECT TABLESPACE_NAME,
        FILE_ID,
        SUM(NVL(BYTES,0)) AS FREE
   FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME,FILE_ID
) B
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME
 AND A.FILE_ID = B.FILE_ID
ORDER BY A.TABLESPACE_NAME;

Tablespace 관련 조회 쿼리문

select * from dba_tablespaces;
  • 설정된 테이블 스페이스 확인
SELECT * FROM dba_data_files;
  • 데이터가 저장되는 물리경로 및 테이블스페이스 정보
SELECT * FROM user_users;
  • 현재 유저의 default_tablespace 확인

Tablespace 생성

create tablespace [TABLESPACENAME]
datafile '파일경로' size 10M 
autoextend on next 10M 
maxsize 100M 
uniform size 1M 
  • datafile '파일경로' size 10M : 초기 데이터 파일 경로와 크기 설정
  • autoextend on next 10M : 초기 설정한 크기를 모두 사용하는 경우 자동으로 파일의 크기가 정해진 크기만큼 커지는 기능
  • maxsize 100M : 데이터파일이 최대로 커질 수 있는 크기 지정, 기본값 = unlimited
  • uniform size 1M : EXTENT 한 개의 크기를 설정

Tablespace에 Data File 추가하는 방법

1. DataFile 추가
ALTER TABLESPACE [TABLE_SPACE_NAME] ADD DATAFILE [DATA_FILE_NAME] SIZE [SIZE];
2. DataFile 추가 후 Auto Extensible 설정
ALTER TABLESPACE [TABLE_SPACE_NAME] ADD DATAFILE [DATA_FILE_NAME] SIZE [초기추가용량] 
AUTUEXTEND ON NEXT [자동증가 용량] MAXSIZE [최대 용량]

Tablespace 변경 관련 쿼리문

ALTER USER [USER_NAME] DEFAULT TABLESPACE [TABLE_SPACE_NAME];
  • 유저의 default Tablespace 변경
ALTER TABLE [TABLE_NAME] move tablespace [TABLE_SPACE_NAME];
  • 테이블의 Tablespace 변경
ALTER TABLESPACE RENAME A TO B
  • Tablespace 물리적인 파일의 이름 또는 위치변경
ALTER DATABASE MOVE DATAFILE '/원본 경로/파일 이름' TO '/이동 경로/파일 이름';
  • Tablespace Online dbf 파일 위치 이동
DROP TABLESPACE [TABLE_SPACE_NAME] include contents;
  • 테이블스페이스 내 객체(테이블, 인덱스 등)를 모두 삭제
DROP TABLESPACE [TABLE_SPACE_NAME] INCLUDING contents;
  • 테이블스페이스의 모든 세그먼트를 삭제 (데이터가 테이블스페이스는 삭제할 수 없다)
DROP TABLESPACE [TABLE_SPACE_NAME] CASCADE constranints;
  • 삭제된 테이블스페이스 내의 테이블의 기본키와 PK를 참조하는 다른 테이블스페이스의 테이블로부터 참조무결성 제약 조건을 삭제한다.
DROP TABLESPACE [TABLE_SPACE_NAME] INCLUDING CONTENTS AND DATAFILES;
  • 테이블 스페이스의 물리파일까지 삭제

유저 생성시 Tablespace 지정

CREATE USER [USER_NAME] IDENTIFIED BY [PASSWORD]
DEFAULT TABLESPACE [TABLESPACE_NAME]
TEMPORARY TABLESPACE [TABLESPACE_NAME];
  • 기본(디폴트) 테이블스페이스, 임시(temp) 테이블스페이스를 명시해 줄 수 있다.
  • 기본 테이블스페이스란 해당 사용자로 로그인한 뒤 테이블과 같은 각종 데이터베이스 객체가 저장되는 테이블스페이스이다.
  • 임시 테이블스페이스는 해당 사용자가 사용하는 디폴트 임시 테이블스페이스를 말한다.

실수로 dbf 파일을 삭제해버렸다면

shutdown immediate 시 테이블 스페이스를 찾을 수 없다고 에러가 난다.

해결 방법 1

테이블스페이스 오프라인 드롭을 하자

alter database datafile 'file path' offline drop;

해결 방법 2

1. shutdown abort 로 강제 종료
2. startup nomount;
3. alter database mount;
4. alter database datafile 'file path' offline
→ control 파일 정보에 해당 dbf 파일 offline 상태 알려준다.
5. alter database open;

참고

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tawoo0&logNo=221547724506

https://coding-factory.tistory.com/411

https://itkevin.tistory.com/36

https://yoo-hyeok.tistory.com/136

https://dreamingnote.tistory.com/entry/RESIZE로-TABLESPACE의-data-file-크기-변경

http://bluehb.egloos.com/m/1507700

728x90
728x90

RMAN(Recovery Manager)?

오라클에서 제공하는 백업, 복구 유틸리티이다. 예전에는 Begin End 백업을 많이 사용했지만, 요즘 회사 중요 메인 시스템의 경우 오라클을 RAC의 ASM을 많이 사용하는 추세라 RMAN을 이용한 백업은 필수가 되어가고 있다.

RMAN의 이점

  1. 성능
    1. 백업을 parallel로 병렬 처리가 가능하다.
  2. 압축
    1. 백업 압축률을 설정해 중복된 데이터가 많다면 백업 용량을 줄일 수 있다.
    2. 기본 압축 옵션은 basic이다.
  3. 증분 백업
    1. db의 데이터가 50에서 100 테라가 넘는다면 Incremental 백업을 이용해 하루에 증가되는 데이터만 백업할 수 있다.
  4. 암호화
    1. 암호화를 해서 백업이 가능하다.

백업하는 내용

  1. Data File
  2. Control File
  3. Parameter File
  4. Archived Redo log

백업 계획

  • 1주일에 한번 월요일에 Full Backup 화수목금토일 Incremental Backup을 한다.
  • 스토리지 공간이 넉넉하다면 매일 Full Backup을 하는 것을 추천한다.
  • 백업 성능을 좋게 하려면 디스크 I/O 성능이 좋은 스토리지가 필요하다.

RMAN 실습

  1. 디렉터리 생성 /ARC_STR, /RMANBKP
  2. Archive 모드 변경
  3. RMAN 백업
  4. 백업 자동화

1. 아카이브 & RMAN BACKUP 디렉터리 생성(root 계정)

## 아카이브 디렉터리 생성
mkdir /ARC_STR
chown oracle.dba /ARC_STR

## RMAN BACKUP 디렉터리 생성
mkdir -p /RMANBKP/control
chown -R oracle.dba /RMANBKP

ls -ld /RMANBKP /ARC_STR

2. 디스크 읽기 성능 테스트

fdisk -l | grep 'Disk /dev/sd'
hdparm -t /dev/sda

3. 아키이브 로그 파라미터 변경, 아카이브 로그 모드 변경

ALTER SYSTEM SET log_archive_dest='/ARC_STR' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_format='ARCH_STR_%r_%t_%s.ARC' SCOPE=SPFILE;

-- 아카이브 로그 모드 변경
shutdown immediate;
startup mount;
alter database archivelog;

archive log list;
alter database open;

4. RMAN 접속, DB 전체 정보, DB 파일 상태 점검

-- rman 접속
rman target /

-- DB 전체 정보
report schema;

-- DB 파일 상태 점검
validate database;

validate database는 데이터베이스 안에 있는 블록들에 손상된 블록이 있는지 확인하는 방법이다.

5. RMAN 백업 설정

-- 2일 전의 백업까지 
rman target /

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/RMANBKP/control/control_%F';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/RMANBKP/control/snapcontrol_STR.f';

-- rman 설정 원복
CONFIGURE RETENTION POLICY CLEAR;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;
CONFIGURE SNAPSHOT CONTROLFILE NAME CLEAR;

-- rman 설정 확인
show all;

6. RMAN 백업

-- %T (YYYYMMDD) 년월일 포멧
-- %U 시스템 생성 고유 파일 이름 8자리
-- 전체 백업
backup database format '/RMANBKP/STRDB2_full_n_bkp_%T_%U';

-- 전체 백업 + 압축
backup as compressed backupset database format '/RMANBKP/STRDB2_full_c_bkp_%T_%U';

-- 백업 상태 확인
list backup;
list backup summary;

host 'ls -lh /RMANBKP';

7. ARCHIVE LOG & BACKUP 삭제(rman에서 수행)

run {
  delete noprompt archivelog all;
  delete noprompt backup;
}

8. channel 4개로 Parallel 백업(rman에서 수행)

run {
  allocate channel ch1 device type disk format '/RMANBKP/str_%T_full_%U';
  allocate channel ch2 device type disk format '/RMANBKP/str_%T_full_%U';
  allocate channel ch3 device type disk format '/RMANBKP/str_%T_full_%U';
  allocate channel ch4 device type disk format '/RMANBKP/str_%T_full_%U';
  crosscheck archivelog all;
  delete noprompt archivelog all completed before 'trunc(sysdate) -1';
  backup as compressed backupset database tag 'DB_FULL_BACKUP' plus archivelog tag 'ARCHIVELOG';
  backup current controlfile tag 'CONTROLFILE' format '/RMANBKP/str_%T_cont_%U';
  backup spfile tag 'SPFILE' format '/RMANBKP/str_%T_para_%U';
  crosscheck backup;
  delete noprompt backup completed before 'trunc(sysdate) -1';
  release channel ch1;
  release channel ch2;
  release channel ch3;
  release channel ch4;
}

9. Linux Shell을 이용한 DB 전체 자동백업과 삭제 스크립트

## rman 백업 로그 디렉터리 생성
## oracle 계정
cd /home/oracle
mkdir -p /home/oracle/oraclelog

## rman 백업 스크립트 디렉터리 생성
## oracle 계정
mkdir -p /home/oracle/script

## 임시 nfsbackup 디렉터리 생성
## root 계정
mkdir /nfsbackup
chown oracle.dba /nfsbackup
ls -ld /nfsbackup

nfsbackup는 실제 운영에서는 백업 서버를 연결해서 원격 디렉터리를 만들지만 테스트할 때는 백업 서버가 없으니 있다고 가정하고 실행한다.

10. rman 백업 Shell 스크립트 생성(vi 편집기 사용 안하고 파일 만드는 법)

-- Channel을 많이 사용하면 DB 전체 SQL 성능 지연 발생할수 있으니 주의 필요!!!
cat << \\FILE > /home/oracle/script/rman_backup.sh
#!/bin/bash

################################################################################
#  RMAN FULL BACKUP SCRIPT
#    V 1.0    CPU 8Core 권장 스크립트 (Channel 4개 사용)  DBBODA
#                  Channel을 많이 사용하면 DB 전체 SQL 성능 지연 발생할수 있으니 주의 필요!!!
################################################################################
export ORACLE_HOME=/oracle/app/oracle/product/19.0.0.0/db_1
export ORACLE_SID=STR
export PATH=$ORACLE_HOME/bin:$PATH
export DATE=`date +%Y%m%d`
export YDATE=`date -d '1 day ago' '+%Y%m%d'`
export HOSTNAME=`hostname`
export NLS_DATE_FORMAT="YYYY/MM/DD(DY) HH24:MI:SS"

rman log=/home/oracle/oraclelog/${HOSTNAME}_rman_backup_${DATE}.log << EOF
connect target /
run {
  allocate channel ch1 device type disk format '/RMANBKP/str_%T_full_%U';
  allocate channel ch2 device type disk format '/RMANBKP/str_%T_full_%U';
  allocate channel ch3 device type disk format '/RMANBKP/str_%T_full_%U';
  allocate channel ch4 device type disk format '/RMANBKP/str_%T_full_%U';
  crosscheck archivelog all;
  delete noprompt archivelog all completed before 'trunc(sysdate) -1';
  backup as compressed backupset database tag 'DB_FULL_BACKUP' plus archivelog tag 'ARCHIVELOG';
  backup current controlfile tag 'CONTROLFILE' format '/RMANBKP/str_%T_cont_%U';
  backup spfile tag 'SPFILE' format '/RMANBKP/str_%T_para_%U';
  crosscheck backup;
  delete noprompt backup completed before 'trunc(sysdate) -1';
  release channel ch1;
  release channel ch2;
  release channel ch3;
  release channel ch4;
}
exit
EOF

## RMAN Backup zip
cd /RMANBKP
zip -r str_full_backup_${YDATE}.zip str_${YDATE}* control/

## Archive zip
cd /ARC_STR
export ARCHFILE=`ls -l --time-style="+%Y%m%d" | grep ${YDATE} | awk '{print $7}'`
zip ${HOSTNAME}_arc_backup_${YDATE}.zip ${ARCHFILE}

## NFS Backup
cp /RMANBKP/str_full_backup_${YDATE}.zip /nfsbackup/str_full_backup_${YDATE}.zip
cp /ARC_STR/${HOSTNAME}_arc_backup_${YDATE}.zip /nfsbackup/${HOSTNAME}_arc_backup_${YDATE}.zip

## Remove zip 
rm -f /RMANBKP/str_full_backup_${YDATE}.zip
rm -f /ARC_STR/${HOSTNAME}_arc_backup_${YDATE}.zip

## Remove nfs Backup file
export WDATE=`date -d '8 day ago' '+%Y%m%d'`
find /nfsbackup/ -name "*${WDATE}.zip" -exec rm -f {} \\;

FILE

RMAN Backup zip은 변수 값으로 압축하고 Archive zip도 동일하게 압축한다. NFS 디렉터리에서 전체 백업한 압축 파일, 아카이브 로그 압축 파일을 cp로 복사하고 rm 명령으로 RMAN 백업 디렉터리와 아카이브 디렉터리 zip 압축 파일을 삭제한다. 추가로 nfs 백업 디렉터리의 8일 전 파일을 자동으로 삭제하게 만들었다.

11. shell 스크립트 권한 변경, crontab 추가

## shell 스크립트 권한 변경
## oracle 계정
cd /home/oracle/script
chmod 755 rman_backup.sh

--crontab 추가
crontab -e
## RMAN FULL BACKUP
00 02 * * * /home/oracle/script/rman_backup.sh

참고

https://www.youtube.com/watch?v=PA9VIjbYd4w&t=901s 

 

728x90
728x90

테이블 스페이스란

테이블 공간을 의미하며 데이터 공간이라고 말한다.

스토리지

데이터베이스의 데이터가 저장되는 공간

블록

블록은 오라클 데이터 베이스에 저장되는 논리적인 최소 단위이다. 블록 사이즈의 기본값은 8k 8192byte이다.

show parameter db_block_size

익스텐트

익스텐트는 여러 개의 블록들이 모여있는 집합이다. 하나의 익스텐트는 여러 개의 블록을 가질 수 있다.

세그먼트

세그먼트는 한개 이상의 익스텐트를 가지고 있다. 여러 개의 익스텐트가 모인 집합을 의미한다.

테이블 스페이스

여러 개의 세그먼트가 모이면 테이블 스페이스라고 한다. 테이블 스페이스는 논리적인 가장 큰 집합이다.

오라클 DB 기본 값 구성

오라클 DB를 기본 값으로 구성하면 5개의 테이블 스페이스와 데이터 파일이 만들어진다.

내 로컬 경로는 /opt/oracle/oradata/XE/이다.

SELECT
	TABLESPACE_NAME,
	FILE_NAME,
	BYTES/1024/1024 AS "SIZE(MB)"
FROM DBA_DATA_FILES
UNION ALL
SELECT
	TABLESPACE_NAME,
	FILE_NAME,
	BYTES/1024/1024
FROM DBA_TEMP_FILES
ORDER BY 1;
  1. SYSTEM : /oracle/app/oracle/oradata/DB이름/system01.dbf
    • 오라클 내부의 중요한 데이터를 저장하는 데이터 딕셔너리 테이블이 저장되는 장소
  2. SYSAUX : /oracle/app/oracle/oradata/DB이름/sysaux01.dbf
    • 대표적으로 AWR이 저장되는 장소이다. 그 외의 다른 것도 있다.
  3. USERS : /oracle/app/oracle/oradata/DB이름/users01.dbf
    • 오라클의 기본 계정의 데이터가 저장되어 있는 공간이다.
  4. UNDOTBS1 : /oracle/app/oracle/oradata/DB이름/undotbs01.dbf
    • 데이터 읽기 일관성이나 데이터 변경 작업을 했을 때 필요한 장소이다.
  5. TEMP : /oracle/app/oracle/oradata/DB이름/temp01.dbf
    • 메모리에 맞지 않는 여러 정렬 작업을 동시에 할 수 있는 아주 중요한 임시 공간이다.

DBA_SEGMENTS를 이용해 내부 테이블 인덱스를 조회

SELECT
    OWNER,
    SEGMENT_NAME,
    SEGMENT_TYPE,
    SEGMENT_SUBTYPE,
    TABLESPACE_NAME,
    BYTES,
    BLOCKS,
    EXTENTS
FROM DBA_SEGMENTS
WHERE SEGMENT_NAME IN ('WRH$_SQL_PLAN','WRH$_SQL_PLAN_PK','IDL_UB1$')
ORDER BY 1,2;

 

세그먼트 서브 타입 MSSM

Manual Segment Space Management으로 수동으로 세그먼트를 관리한다.

세그먼트 서브 타입 ASSM(Default)

Automatic Segment Space Management으로 자동으로 세그먼트를 관리한다.

옛날에는 MSSM을 사용하였지만 요즘엔 ASSM으로 많이 사용한다.

테이블 스페이스 데이터 파일 사이즈 변경

ALTER DATABASE DATAFILE '파일명' RESIZE 1G;

테이블 스페이스 데이터 파일 추가

ALTER DATABASE ADD DATAFILE  '파일명' SIZE 1G;

테이블 스페이스 생성

CREATE TABLESPACE 이름 DATAFILE '파일명' SIZE 1G AUTOEXTEND OFF;

테이블 스페이스를 MSSM으로 구성

CREATE TABLESPACE 이름 DATAFILE '파일명' SIZE 1G SEGMENT SPACE MANAGEMENT MANUAL;

테이블 스페이스를 ASSM으로 구성

CREATE TABLESPACE 이름 DATAFILE '파일명' SIZE 1G SEGMENT SPACE MANAGEMENT AUTO;

테이블 스페이스 상태 정보 확인

SELECT
    TABLESPACE_NAME,
    BLOCK_SIZE,
    SEGMENT_SPACE_MANAGEMENT
FROM DBA_TABLESPACES 

보통 DB 관리는 80% 사용을 할 때 데이터 파일을 늘려준다.

참고

https://www.youtube.com/watch?v=aTfu6zx2b28&list=PLKaW9UT2TL3Lpqrh_lJ8PHyHpR7NgdrPP&index=1 

 

728x90
728x90

REDO란?

리두는 DB에 변경되는 모든 이력을 저장, 서버가 다운되었을 때 복구할 수 있는 파일, DB 복구, 인스턴스 복구, Fast Commit(데이터 블록을 기록하는 방식이 랜덤이 아니라 어펜드 방식을 사용하기 때문에 빠르게 커밋한다.)

REDO 파일 위치

/oracle/app/oracle/oradata/DB이름

내 로컬 경로

/opt/oracle/oradata/XE

REDO 관리

리두 로그 파일은 최소 두개가 필요하고 오라클 기본 설치하면 3개의 리두 로그 파일이 생성된다. 리두 로그 파일은 redo01.log, redo02.log, redo03.log 스위치 하면서 재사용한다. 이걸 Round-Robin 방식이라고 한다. 디비 백그라운드 프로세스인 LGWR가 리두에 저장되는 시점은 대표적으로 4가지가 있다.

  1. 3초에 한번
  2. 리두 로그 버퍼의 3분의 1이 되었거나 1MB가 넘었을 때
  3. 사용자에 의한 커밋 또는 롤백을 수행했을 때
  4. DBWR, LGWR에게 쓰기를 요청했을 때

디비의 트렌젝션이 많고 데이터 변경량도 많을 때 리두 로그 사이즈가 너무 작으면 CPU 사용량이 증가하고 DBWR, ARCn의 사용량이 증가한다. 리두 로그 사이즈를 적절하게 적용하면 CPU 사용량이 감소하고 디스크 I/O 향상된다. 오라클이 권고하는 리두 로그의 스위치는 20분에 한번 정도 발생하는 것이고 업계에서는 보통 10분에서 20분 사이에 한번 발생하는 것으로 추천한다.

REDO 추가

ALTER DATABASE ADD LOGFILE GROUP 4
(
'/파일위치/REDO4_1.LOG',
'/파일위치/REDO4_1.LOG'
) SIZE XXMB;

같은 그룹의 여러개의 리두 로그를 만든다면 물리적으로 서로 다른 디스크에 저장하는 것을 권고한다. 그래야 한쪽 디스크에 문제가 생겨도 안전하게 복원할 수 있다. 사이즈는 디비를 분석해서 규모가 있다면 1GB나 그 이상 10분에서 20분 사이에 발생하는지를 판단해서 사이즈 조정을 계속한다.

REDO 삭제

ALTER DATABASE DROP LOGFILE GROUP 1;

REDO 상태 확인

SELECT      
      A.GROUP#
    , A.STATUS
    , B.MEMBER
    , A.BYTES/1024/1024 AS "SIZE(MB)"
FROM 
      V$LOG A
    , V$LOGFILE B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1;

리두 로그 그룹 삭제할 때 제일 중요한건 리두 로그 상태가 INACTIVE 상태 이어야 한다. 그냥 삭제하면 큰일 난다.

REDO LOG 변경 정보 전체 조회

SELECT
    TO_CHAR(FIRST_TIME,'YYYY/MM/DD HH24'), 
    COUNT(*)
FROM V$LOG_HISTORY
GROUP BY TO_CHAR(FIRST_TIME,'YYYY/MM/DD HH24')
ORDER BY 1;

REDO LOG 변경 정보 시간, 분 단위로 분석

-- 2022/11/13 ~ 2022/11/18 기간 조회
-- 추가로 일자를 변경하려면 TO_DATE(년월일)을 바꿔주세요.
-- 예) 2022년 7월 20일 부터 2022년 7월 21일 조회
--       WHERE FIRST_TIME >= TO_DATE('20221113') 
--       AND   FIRST_TIME  <   TO_DATE('20221118') 
SELECT
    TO_CHAR(FIRST_TIME,'HH24:MI'), 
    COUNT(*)
FROM V$LOG_HISTORY
WHERE FIRST_TIME >= TO_DATE('20221113')
AND   FIRST_TIME <  TO_DATE('20221118')
GROUP BY TO_CHAR(FIRST_TIME,'HH24:MI')
ORDER BY 1;

최근 10일 동안 REDO LOG 변경 정보 조회

SELECT
    DECODE(TO_CHAR(FIRST_TIME,'HH24'),NULL,'TOTAL',TO_CHAR(FIRST_TIME,'HH24')) AS "REDO_TIME",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE)-10 AND FIRST_TIME < TRUNC(SYSDATE) -9 THEN 1 ELSE 0 END) AS "TODAY-10",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -9 AND FIRST_TIME < TRUNC(SYSDATE) -8 THEN 1 ELSE 0 END) AS "TODAY-9",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -8 AND FIRST_TIME < TRUNC(SYSDATE) -7 THEN 1 ELSE 0 END) AS "TODAY-8",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -7 AND FIRST_TIME < TRUNC(SYSDATE) -6 THEN 1 ELSE 0 END) AS "TODAY-7",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -6 AND FIRST_TIME < TRUNC(SYSDATE) -5 THEN 1 ELSE 0 END) AS "TODAY-6",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -5 AND FIRST_TIME < TRUNC(SYSDATE) -4 THEN 1 ELSE 0 END) AS "TODAY-5",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -4 AND FIRST_TIME < TRUNC(SYSDATE) -3 THEN 1 ELSE 0 END) AS "TODAY-4",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -3 AND FIRST_TIME < TRUNC(SYSDATE) -2 THEN 1 ELSE 0 END) AS "TODAY-3",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -2 AND FIRST_TIME < TRUNC(SYSDATE) -1 THEN 1 ELSE 0 END) AS "TODAY-2",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE) -1 AND FIRST_TIME < TRUNC(SYSDATE) -0 THEN 1 ELSE 0 END) AS "TODAY-1",
    SUM(CASE WHEN FIRST_TIME >= TRUNC(SYSDATE)    AND FIRST_TIME < TRUNC(SYSDATE) +1 THEN 1 ELSE 0 END) AS "TODAY",
    SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),NULL,0,1)) AS "SUM"
FROM V$LOG_HISTORY
WHERE FIRST_TIME >= TRUNC(SYSDATE) - 10
GROUP BY ROLLUP(TO_CHAR(FIRST_TIME,'HH24'))
ORDER BY 1;

디스크 사용량을 보는 명령어

df -h

REDO 그룹 4 추가

ALTER DATABASE 
ADD LOGFILE GROUP 4 
(
 '/opt/oracle/oradata/XE/REDO4_1.LOG',
 '/opt/oracle/oradata/XE/REDO4_2.LOG'
) SIZE 500M;

리두 로그를 만들 때 소문자가 아닌 대문자로 만드는 이유는 SqlPlus에서 drop으로 삭제해도 실제 파일은 남아있기 때문에 소문자 대문자를 구분해서 혹시 모를 사고를 방지하기 위해서이다.

초기 설정된 REDO 로그 삭제

-- (REDO 로그 스위치하면서 INACTIVE 상태에서 DROP 명령어 실행)
alter system switch logfile

ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 3;

REDO 로그 파일 삭제

/***************************************************************************
  REDO 로그 파일 삭제
   초기 설정된 REDO 로그 그룹 1,2,3 삭제
   리눅스에서 작업한다. (oracle 계정 확인)
***************************************************************************/

cd /opt/oracle/oradata/DB이름
cd $ORACLE_BASE/oradata/DB이름

rm /opt/oracle/oradata/XE/redo01.log
rm /opt/oracle/oradata/XE/redo02.log
rm /opt/oracle/oradata/XE/redo03.log

참고

https://www.youtube.com/watch?v=LmeAv9B_y5I&list=PLKaW9UT2TL3Lpqrh_lJ8PHyHpR7NgdrPP&index=5 

 

728x90

+ Recent posts