ORACLE - DAY 2

BUMSOO·2024년 7월 30일

Daily check list

1.오라클 프로세스 체크

/# ps -ef | grep SID이름

2.리스터 체크

  • 오라클 설치 계정, DBA 계정에서 확인하기

# lsnrctl status
- 현재 리스너가 내려간 상태

# lsnrctl start
- 리스너 시작

  • 다시 상태 확인

- 리스너가 다시 살아난걸 확인할 수 있다.
- 다만, 현재 서비스 하고 있는 DB가 없는걸 확인할 수 있다.

✅ 외부 클라이언트에서의 접근을 막아야 할때는 의도적으로 리스너를 내리기도 한다.

# lsnrctl stop - 리스너를 중지시키는 명령어

3.DB체크

  • sqlplus 접속
    # sqlplus / as sysdba

- Connected to an idle instance.
해당 문장이 나오면 DB가 내려간 상태이다.

  • 데이터베이스 시작
    # startup

  • !, eixt 명령어
    ! : os로 잠깐 나갈때 사용
    os - exit : os에서 다시 sqlplus로 돌아갈때 사용
    sqlplus - eixt : sqlplus 종료
    os - exit - sqlplus 종료 후 exit은 putty 종료(터미널 종료)

  • 다시 리스너 상태 확인
    # lsnrctl status

    - ORA19C DB를 서비스 하고 있는걸 확인 할 수 있다.

4.방화벽 체크

  • 방화벽 상태 확인
    # systemctl status firewalld

# systemctl stop firewalld - 방화벽 중지
# systemctl disable firewalld - os가 중지되었다가 다시 실행되어도 계속 방화벽을 중지상태로 유지
# systemctl start firewalld - 방화벽 실행
# systemctl enable firewalld - os가 중지되었다가 다시 실행되어도 계속 방화벽을 실행상태로 유지

- 실무에서는 함부로 방화벽을 내리면 안되기 때문에 특정한 포트를 방화벽에 등록 시켜주는 방법으로 해결해야 한다.

# firewall-cmd --list-all
특정 포트 번호 방화벽 확인

# firewall-cmd --add-port=1521/tcp --permanent
특정 포트로 접속할수 있도록 등록작업
permanent - 영구히 적용

# firewall-cmd --remove-port=1521/tcp --permanent
등록되어있는 특정 포트 제거작업
permanent - 영구히 적용

# firewall-cmd --reload
바로 적용이 안되기 때문에 재설정 작업을 수행해야 한다.

# firewall-cmd --query-port=1521/tcp
해당 포트가 등록 되어있으면 yes, 없으면 no 출력


SELECT * FROM v$database;

  • 데이터베이스 정보

SELECT * FROM v$instance;

  • 인스턴스 정보

SQLPLUS 인스턴스 표시

1) admin 디렉터리로 이동
[oracle@oracle19c ~]$ cd $ORACLE_HOME/sqlplus/admin

2) glogin.sql 파일 존재 확인
[oracle@oracle19c admin]$ ls
glogin.sql help libsqlplus.def plustrce.sql pupbld.sql pupdel.sql

3) vi 편집기를 통해 명령문 작성
SET SQLPROMPT '&_USER.@&_CONNECT_IDENTIFIER.> '


오라클 아키텍처(oracle architecture)

  • ORACLE = INSTANCE + DATABASE

    • INSTANCE = SGA + Background Process
    • DATABSE = Control file, Data file, Redo log file
  • user process - 사용자가 작성한 SQL문을 server process로 전달해주고 결과를 가져오는 프로세스

  • server process - SQL문을 처리하는 프로세스

  • connection - user process가 INSTANCE에 접속

  • session - 현재 유저가 오라클에 로그인 상태

SGA(System Global Area)

  • 하나의 오라클 데이터베이스 instance의 데이터 및 제어 정보를 포함하는 공유 메모리 구조이다.
  • SGA 영역에 있는 구성 요소들을 DB 운영중에 동적으로 설정할 수 있다.
  • SGA 메모리는 SGA_MAX_SIZE로 설정한다.
    show parameter sga_max_size

# show sga


-Fixed Size : 오라클이 instance 생성시 사용되는 알고리즘들이 이 메모리에서 수행한다.
-Variable Size : shared_pool_size, large_pool_size, java_pool_size, streams_pool_size 파라미터들에 대한 메모리 공간
-Database Buffers : db_cache_size,db_keep_cache_size, db_recycle_cache_size, db_nk_cache_size(n = 2 4 8 16 32) 파라미터들에 대한 메모리 공간
-Redo Buffers : log_buffer 파라미터에 대한 메모리 공간

# show parameter spfile;
- spfile : 초기 파라미터

  • spfile 위치
    $ORACLE_HOME/dbs

  • spfile 내용 확인
    vi spfileORA19C.ora

SHARED POOL

  • shared_pool_size 파라미터를 이용해서 크기를 조정
    show parameter shared_pool_size

  • 뷰를 통해서도 파라미터 값 확인
    SELECT * FROM v$parameter WHERE name = 'shared_pool_size';

  • 동적으로 shared pool 값 변경
    ALTER SYSTEM SET shared_pool_Size = 값;

  • library cache
    - SQL문, PL/SQL 실행계획을 가지고 있는 메모리

  • data dictionary cache
    -data dictionary 테이블의 정보를 가지고 있는 메모리

  • oracle shared sever 환경일때 UGA(User Global Area)가 생성되는 메모리

Database Buffer Cache

  • 데이터파일에서 읽은 데이터 블록의 복사본을 저장하는 메모리 영역
  • 오라클은 물리적인 I/O를 최소화하기 위애 최근에 사용된 블록을 저장하는 메모리 영역
  • data buffer cache 내부 구성 요소 파라미터
    • db_cache_size(필수구성)
    • db_keep_cache_size(옵션)
    • db_recycle_cache_size(옵션)
    • db_nk_cache_size(옵션)(n: 2,4,8,16,32)
  • 동적으로 data buffer 값 변경
    ALTER SYSTEM SET db_cache_size = 값;

REDO LOG BUFFER

  • 데이터베이스 데이터 블록의 모든 변경 사항을 기록한다.

  • 목적은 복구(recovery) 때문이다.

  • 내부의 기록된 변경사항을 리두항목(redo entry)라고 한다.

  • 리두항목(redo entry)에는 변경사항을 재구성하거나 재실행할 정보가 포함되어 있다.

  • 리두항목이 생성되는 SQL문 : DML, CREATE, ALTER, DROP, SELECT .. FOR UPDATE;

  • log_buffer : OS BLOCK(512BYTE) SIZE 배수 단위로 설정

  • static parameter(db 운영중에 변경한 내용을 바로 적용할 수 없다. 데이터베이스를 중단한 후 재 시작해야지만 적용된다)

  • 정적으로 변경
    ALTER SYSTEM SET log_buffer = 값 SCOPE = SPFIEL;

LARGE POOL

  • Oracle shared server 환경일때 UGA(User Global Area)가 생성된다

  • RMAN을 이용해서 백업 및 복구 작업 수행할 때 사용되는 메모리 공간

  • parallel query(병렬처리) 작업 수행 할때

  • large_pool_size 파라미터로 크기 조정

  • 동적 파라미터이다.
    ALTER SYSTEM SET large_pool_size = 값 SCOPE = BOTH

JAVA POOL

  • JVM내의 모든 세션별 JAVA 코드 및 데이터를 메모리에 저장하는데 사용한다.
  • java_pool_size 파라미터로 크기 조정
  • 동적인 파라미터이다.
    ALTER SYSTEM SET java_pool_size = 값;

STREAM POOL

  • 하나의 데이터베이스에서 다른 데이터베이스로 데이터를 이동,복제하는 stream process에 필요한 buffer queue message 사용
  • streams_pool_size 파라미터로 크기 조정
  • 동적 파라미터 이다
    ALTER SYSTEM SET streams_pool_size = 값;

ASMM(Automatic Shared Memory Management)

  • 10g 버젼에 새롭게 나온 기능

  • sga_target 값을 설정하면 SGA영역을 자동관리 한다.

  • MMAN(background process)이 Memory Advisior를 사용해서 작동한다.

  • sga_target 값은 sga_max_size 값보다는 작거나 같게 설정하면 된다.

  • SPFILE을 사용 권장

  • sga_target 값이 설정되어 있더라도 수동으로 관리해야 하는 SGA영역

    • db_keep_cache_size
    • db_recycle_cache_size
    • db_nk_cache_size(n = 2,4,8,16,32)
    • log_buffer
  • sga_target 설정되어 있더라도 수동으로 동적인 파라미터의 크기 조정

    • 새로운 값이 현재 크기 보다 큰 경우에는 즉시 구성 요소 크기로 조정된다.
    • 새로운 값이 현재 크기 보다 작은 경우 최소 크기가 변경된다.

0개의 댓글