전체 글

[Oracle] Listener & Oracel DB

2023. 3. 12. 18:33

Listener 리스너

  • 클라이언트에서 오라클 서버로 연결하기 위한 오라클 네트워크 관리자
  • 기본 포트 번호 1521 (다른 번호 사용 가능)
  • listener.ora 파일에 텍스트 형식으로 기록

 

listener.ora 파일?

더보기
  • 오라클 서버에서 클라이언트 요청을 듣고, 클라이언트와의 통신 환경을 설정하는 파일
  • 오라클 서버에 존재, 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜 및 포트 정보 등을 설정하는 파일
--리스너 관리모드
$ lsnrctl

--리스너 시작
$ lsnrctl start

--리스너 중지
$ lsnrctl stop

--리스너 재시작
$ lsnrctrl reload

리눅스 환경에서는 정확한 경로에 접근해서 해당 프로그램을 실행해야 한다. lsnrctl 프로그램의 정확한 위치는 오라클홈 밑의 bin 디렉터리에 있다.

ex) '/app/oracle/a/bin'

 

 

연결 과정

1. user가 리스너로 연결 요청 (tnsnames.ora 파일 확인 & 리스너의 주소와 포트번호 등 확인)

2. 리스너가 Server process에 연결 요청 (자신이 연결 할 포트번호 등을 listener.ora에서 확인)

3. Server process에서 PGA 메모리 할당(Program Global Area - Process들이 개별적으로 사용하는 메모리 공간)

4. Server process에서 User process에게 Resend 패킷 전송

5. 연결

 

 

tnsnames.ora 파일?

더보기
  • 클라이언트가 오라클 서버에 접속하기 위해 서버 컴퓨터에 작성하는 설정 파일
  • 클라이언트에서 오라클 서버로 접속할 때 필요한 프로토콜 및 포트 번호, 서버 주소, 인스턴스 등을 설정해주는 파일
  • TNS는 TCP 프로토콜만 받을 수 있음
LISTENER_CDB1 =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102(PORT = 1521))
 
 
CDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cdb1)
    )
  )
listener.ora 파일 수정
$vi $ORACLE_HOME/network/admin/listener.ora
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 설정했던 host name 또는 host IP)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )


리스너가 DB를 못 찾을 경우 listener.ora에 아래 내용 추가

SID_LIST_LISTENER =
 (SID_LIST =
  (SID_DESC =
   (GLOBAL_DBNAME = DB명)
   (ORACLE_HOME = ORACLE_HOME 경로
   (SID_NAME = DB명)
  )
 )

 

 

Oracel

+ 먼저 아래 명령어 입력으로 Oracle DB 생성

$dbca

 

> startup

입력 시 문자가 제대로 출력되지 않는다면 아래 내용으로 문자셋 설정 편집

더보기

$ vi .bash_profile

 
$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
 
$ resource .bash_profile
--Oracle 접속
$ sqlplus '/as sysdba'

--인스턴스 시작
> startup

--인스턴스 중지
shutdown

 

'Database > Oracle' 카테고리의 다른 글

[Oracle] 관리자 계정(system, sys) 비밀번호 변경  (0) 2023.03.16
[Oracle] 이전 명령어 방향키로 출력  (0) 2023.03.15
[Oracle] Sequence  (0) 2023.03.13
[Oracle] SCN, Checkpoint  (0) 2023.03.12
[Oracle] 구조  (0) 2023.03.09

[Oracle] SCN, Checkpoint

2023. 3. 12. 17:46

SCN (System Change Number)

- DB의 변경이 발생한 시점 / Commit이 발생하면 트랜잭션은 고유한 번호를 받음

이때 발생한 번호로 트랜잭션 관리* & 장애 발생 시 복구 키로 이용

*트랜잭션 관리 : 읽기 일관성, 사용자들에게 가장 최근에 커밋된 데이터 보여줌

 

-  Data file, Control file, Redo Log File의 동기화 정보를 맞춤

- Data file : 실제 데이터가 저장되는 디스크 상의 물리적 파일
- Control file : DB의 제어 정보를 가지고 있는 파일
                            (파일이 손상되면 mount, open 불가 -> 2개 이상으로 백업하여 각각 다른 디스크에 보관 권고)

- Redo Log File : DB에서 생긴 모든 변화를 기록한 파일
                                 장애 복구에 가장 핵심 / 작업 내용 유실 X

 

- SCN이 다르다면 DB가 정상적으로 올라오지 않음

∵ Oracle이 startup 된 후 Mount -> Open 시점에 컨트롤파일과 데이터파일의 SCN을 비교해서 DB를 올릴지 판단 함

-- 현재 SCN 확인
SQL> select current_scn from v$database;

 

Checkpoint

- Commit 된 데이터를 어디까지 저장했는지 확인하기 위해 만들어 놓은 개념 (인스턴스 복구를 시작해야 하는 SCN)

   ex) SCN이 100번까지 commit 되었고, checkpoint 정보가 90번이라면 SCN 90번 트랜잭션까지 데이터 파일에 저장된 것

- DBWR이 현재 Buffer Cache 데이터를 디스크로 백업

- Datafile의 복구를 결정하는 기초적인 정보

- 체크포인트를 통해 정기적으로 기록함으로써 롤 포워드(Redo) 시간을 단축 ( 복구 시간 단축 )

- 디스크에 기록된 만큼의 Redo Log 데이타는 삭제

- Control file과 Data file의 Check point 정보를 비교하고 서로 정보가 다르다면, Online Redo/Archived Redo Log를 참조하여 복구

- 체크포인트 발생 시 CKPT가 Control file과 Data file Header에 Checkpoint 기록

- 체크 포인트 발생 → CKPT 에서 DBWn 에 체크포인트 발생 사실 통지 → DBWn 은 블록을 디스크에 기록

 

1. Database / Global Checkpoint

  • DB 버퍼 캐시에 있는 모든 dirty buffe의 내용을 데이터 파일로 저장
  • 저장된 가장 큰 SCN의 번호(Checkpoint SCN)를 Control file과 Data file Header에 기록

 

2. Thred Checkpoint / Logical Checkpoint

  • Log Switch 발생 시 생성
  • RAC 환경일 경우 각 노드별로 다르게 발생, Single Instance일 경우 Database Check point와 같은 역할

 

3. Datafile Checkpoint

  • 특정 data file에만 발생
  • 해당 Tablespace를 오프라인 한다거나, Begin backup 수행 시 발생
  • Control fil과 Data file Header에 기록

 

4. Mini Checkpoint

  • Drop Table과 같이 특정한 DDL 발생 시 특정 블록에만 발생

 

5. Recovery Checkpoint

  • 데이터 파일에 장애 발생 시 백업된 데이터파일 복원 후 Redo Change Vector를 적용 시킨 후 recovery 된 블록을 데이터 파일에 저장 시 발생
-- checkpoint_change# : 가장 마지막 checkpoint의 SCN
SQL> select checkpoint_change# from v$datafile ;

'Database > Oracle' 카테고리의 다른 글

[Oracle] 관리자 계정(system, sys) 비밀번호 변경  (0) 2023.03.16
[Oracle] 이전 명령어 방향키로 출력  (0) 2023.03.15
[Oracle] Sequence  (0) 2023.03.13
[Oracle] Listener & Oracel DB  (0) 2023.03.12
[Oracle] 구조  (0) 2023.03.09

[SQL] DDL / DML / DCL

2023. 3. 10. 11:07

DDL (Data Definition Language)

: 데이터 정의어 - 데이터 구조 or 스키마 변경

- 테이블과 같은 데이터 구조(스키마)를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말함.

CREATE 객체 생성  
ALTER 구조 변경
테이블 수정
(컬럼추가/수정, 제약조건  추가/삭제/활성화/비활성화)
> ALTER TABLE 테이블명 ADD (..);
> ALTER TABLE 테이블명 MODIFY (..);
DROP 객체 삭제
테이블 구조 및 모든 행 삭제
> DROP TABLE 테이블명 [CASCADE CONSTRAINTS]; --제약조건 삭제
TRUNCATE 테이블의 구조는 남기고 안의 데이터만 삭제
테이블 초기화
 
RENAME 객체 이름 변경  
COMMENT 테이블 또는 컬럼에 주석 추가  
  • 실행 시 자동 commit
  • DDL은 데이터 구조 변경 / DML은 데이터 조작(DELETE...)
  • 컬럼이 NULL이거나 테이블에 데이터가 없을 때, 컬럼의 크기 축소 및 데이터 타입 변경 가능
  • 컬럼에 NULL이 없을 때만 NOT NULL 제약 조건 추가 가능

 

⭐ DML (Data Manipulation Language)

: 데이터 조작어 - 데이터 값 변경

- 입력, 수정, 삭제

SELECT 데이터 조회 ALL : 기본 옵션. 중복되는 데이터도 모두 출력
DISTINCT : 중복된 데이터가 있는 경우 1건만 출력
INSERT 데이터 삽입  
UPDATE 데이터 수정  
DELETE 데이터 삭제  
MERGE UPSERT(UPDATE + INSERT) 작업
데이터가 테이블에 존재하지 않으면 INSERT /
존재하면 UPDATE를 수행
 
LOCK TABLE 테이블 잠금  

 

 

DCL (Data Control Language)

: 데이터 제어어 - 접속 권한 변경

GRANT 특정 작업에 대한 수행 권한 부여
REVOKE 특정 작업에 대한 권한 회수

 

TCL (Transaction Control Language)

: DCL에서 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어

COMMIT  
ROLLBACK ROLLBACK TO [savepoint] )
SAVEPOINT (≒ base line, > SAVEPOINT [  ];)

 

'Database > SQL' 카테고리의 다른 글

[SQL] 명령어  (0) 2023.03.17
[SQL] SQL문 실행 원리  (0) 2023.03.13

Network 점검

2023. 3. 10. 09:50

Windows - cmd

> ipconfig 

사용자 IP 구성

 

>ping [IP] 

IP의 데이터 사용 통계 및 네트워크 연결 확인

 

>netstat

현재 개방되어 있는 포트 번호 & 서버 동작 확인

 

>nslookup

도메인 주소를 IP로 변환

>nslookup [도메인] 

 

>tracert [도메인]

목적 IP주소까지 찾아가는 경로에 위치한 라우터의 IP주소 확인

 

>route print

디폴트 게이트웨이 등 라우팅 테이블 설정 확인 / 관리

 

 

 

Linux

$ ifconfig 

네트워크 인터페이스 정보 확인 & 설정 

≒ ipconfig

 

 

$ cat /etc/hosts

호스트명, IP주소, 별명을 설정한 파일

 

 

$ ping [IP]

$ ping [도메인]

원격 호스트와의 연결 여부와 네트워크 상태 확인

항목 의미
Destination 목적지 네트워크
Gateway 목적지에 도달하는데 사용되는 게이트웨이
Genmask Netmask
Flags 경로 특징
Metric 목적지까지 거리
Ref 접속을 이루려고 참조된 경로 횟수
Use 전송된 패킷 수
Iface 사용되는 네트워크 인터페이스 이름

 

$ netstat

네트워크 상태 출력

 

 

$ nslookup [IP]

호스트가 IP 주소 확인

 

 

 

고정 IP 할당

# cd /etc/sysconfig/network-scripts

# vi ifcfg-enp0s8

IPADDR=xxx.xxx.xxx.xxx
PREFIX=24
GATEWAY=xxx.xxx.xxx.x

위 내용 추가

cf) ifcfg-enp0s3은 자동할당

설정 설명
BOOTPROTO dhcp     // IP 자동할당
static    // 고정 IP 사용
IPADDR 고정으로 IP 지정
PREFIX NET Mask를 나타내는 PREFIX 설정
GATEWAY 서로 다른 네트워크를 연결해주는 역할을 하는 특정 장비(공유기 등)의 IP를 의미
DNS1 / DNS2 원하는 DNS 설정
ONBOOT no     // 부팅 시 네트워크 연결 X
yes   // 부팅 시 네트워크 연결 O

 

 

[Oracle] 구조

2023. 3. 9. 21:08

오라클 서버 (Oracle Server)

 : 메모리와 디스크에 생성되는 구조

└- 인스턴스 (Instance)

     : 메모리 부분에 생성되는 구조

    └- SGA (System Global Area)

          : 실제 작업들이 수행되는 공간

         └- Database Buffer Cache

              : 데이터의 조회와 변경 등 실제 작업이 일어나는 공간

         └- Redo Log Buffer

              : 변경 내용을 기록하는 메모리 공간

         └- Shared Pool

              : 어떤 대상을 공유해서 사용하기 위한 공간

              └- Library Cache

                   : Soft Parse시 사용, SQL과 실행계획 등이 저장된 공간

              └- Data Dictionary Cache

                   : 구문분석이나 실행계획을 세울때 사용하는 Dictionary들이 Cache 되어진 공간

              └- Server Result Cache

                   : 결과값을 Cache 해 두는 공간

         └- Large Pool

         └- Java Pool

         └- Streams Pool

         └- Fixed SGA

    └- 백그라운드 프로세스 (Background Process)

          : Oracle Server 가 잘 운영되도록 하는 역할

         └- DBWR

               : 데이터 파일로 저장하는 역할

         └- LGWR

               : Redo Log Buffer에 있는 내용을 Redo Log File로 저장하는 역할

         └- PMON

               : 모든 서버 프로세스들 감시

         └- SMON

               : Instance Clean Up 역할

               : Instance Recovery 과정에서 누락된 Transaction Recovery 역할

               : 비정상 종료된 Transaction이 사용 중이던 Temporary segment 를 Clean up 역할

               : Dictionary Managed Tablespace 에서 Free extents들을 모아주는 역할

         └- CKPT

               : DBWR에게 Checkpoint 신호를 전달

         └- ETC

    └- PGA (Program Global Area)

          : Process들이 개별적으로 사용하는 메모리 공간

         └- SQL Work Area

              : Sort 관련 작업을 수행하는 공간

         └- Private SQL Area

└- 데이터베이스 (Database)

     : 디스크 (Disk) 에 위치한 파일들의 세트

    └- 데이터 파일 (Data File)

         : 데이터 (Data) 를 저장하는 공간

    └- 컨트롤 파일 (Control File)

         : DB 운영 정보 저장

    └- 리두 로그 파일 (Redo log File)

         : 변경 내용을 기록하는 파일 공간

 

 

출처 오라클 구조 (Oracle Structure) 를 Tree 형식으로 쉽고 간단하게 알아보자~(?) (tistory.com)

 


1. 메모리

1.1 공유 메모리 영역 SGA(System Global Area)

- 운영체제가 제공해준 것. 여러 프로세스가 동시에 엑세스할 수 있는 메모리 영역

- 인스턴스가 복구 될 때마다 메모리에 할당 됨

- Lock을 걸어 베타적 제어*를 하지 않으면 데이터에 손상을 입을 수 있음

*베타적 제어 : 프로세스가 공유 데이터를 변경하고 있는 도중에 다른 프로세스가 해당 공유 데이터를 읽거나 변경하지 못하도록 하는 것

 

Buffer Cache : 디스크파일로부터 데이터 블록을 담는 캐시 영역.
자주 사용하는 데이터를 더 빠르게 가져오기 위해 존재. LRU 알고리즘 *사용

Buffer Cache 상태
pinned : 지금 사용 중인 상태. 다른 사람이 사용을 못하는 lock 상태
unused : startup 이후 한번도 사용하지 않은 상태
free : 변경된 내용이 Disk에 백업이 완료된 상태
dirty : 내용이 수정되었지만 아직 Disk에 백업이 되지 않은 상태. 백업이 되면 다시 free 상태가 됨.

*LRU (Lease Recently Used) 알고리즘 : 가장 최근에 사용하지 않은 데이터부터 캐시아웃

ex) 1 -> 2-> 3 순차 호출

3 → 2 → 1

2번 캐시 호출

2 → 3 → 1

캐시에 4를 새로 씀 / LRU인 1 제거

4 → 2 → 3 → 1

 

 

Cache와 Buffer
Cache : 속도가 다른 두 장치간의 속도 차이를 줄여주기 위한 장치.
데이터 저장소로 이용되므로 데이터를 저장하여 추후에도 계속 사용 가능
Buffer : 데이터를 전송하는 상호간의 장치에서 저속의 장치가 작업을 하는 동안 고속의 장치가 기다려야 하는 현상을 줄여주는 장치. (데이터를 읽어오기 위해 디스크까지 가지 않아도 됨)
데이터 손실 방지 & 사용된 데이터는 삭제 됨

 

 

 

1.2 프로세스 고유 메모리 영역 PGA(Process Global Area)

- 서버 프로세스가 가진 자신만의 메모리 영역. DB에 접속하는 모든 유저에게 할당되는 각각의 서버 프로세스가 독자적으로 사용하는 오라클 메모리 영역.

- SQL의 작업 공간. 정렬 작업을 수행(sort) → PGA 메모리 용량 부족 시 TEMPORARY TABLESPACE를 사용

하나의 유저 프로세스에 하나의 서버 프로세스가 할당되며, 하나의 서버 프로세스는 하나의 PGA를 생성

 

PGA 구조

정렬 공간
Sort Area
유저 프로세서 세션 정보
User Session Data
파싱 정보가 기록된 주소
Cursor State
변수 저장 공간
Stack Space
- Sort Area : Order By 또는 Group By 등의 정렬을 수행하기 위한 공간이며 해당 공간에서만 정렬이 완료된다면 이를 메모리 정렬이라 함
- Session Information : 서버 프로세스에 의해 추출된 결과 값을 전달하기 위해 필요한 유저 프로세스의 세션 정보를 저장
- Cursor State : 해당 SQL의 Parsing 정보가 저장되어 있는 주소를 저장
(Cursor : SQL문을 처리하는 정보를 저장한 메모리 공간)
- Stack Space : SQL문장에 Bind Variable를 사용했을 경우 해당 바인드 변수를 저장하는 공간

 

 

 

1.3 RAC (Real Application Cluster)

  • 하나의 Database에 여러개의 Instance를 구성하는 방식 = 하나의 Instance에 장애가 발생하여도 DB운영에 지장X
  • n개의 Instance에서 동일한 datafile을 공유하여 엑세스
  • CPU나 메모리 등의 자원은 공유X
  • SPFILE* 권장

 

*SPFILE (서버파라미터 파일)

  • 바이너리 형식
  • PFILE을 사용해 수동으로 생성되거나, DB 생성 시 사용하는 DBCA에 의해 자동으로 생성됨
  • NOMOUNT 단계 이상이라면 다시 SPFILE을 쓰기 때문에 제거하거나 이동하면 안됨
spfile$SID.ora
ALTER SYSTEM SET [파라미터명 = 값] [SCOPE]
  • 수정 시 인스턴스 재기동 불필요

*SCOPE 옵션

MEMORY - 변경 즉시 적용 / 재시작 시 원래 설정 값으로 돌아감

SPFILE - SPFILE에만 변경 적용 / 현재 상태에는 영향X

BOTH - 변경 즉시 SPFILE에도 적용 / 재시작 시 변경 내용 반영

 

cf) PFILE (파라미터 파일)

  • 텍스트 형식으로 변경 가능
  • 파일 수정 시 인스턴스 재 기동으로 적용
  • DB 생성이나 장애 발생 시 사용

--pfile

더보기
-- Pfile
$ cd /ORA19/app/.../dbs
$ vi Init$SID.ora

 

+ RAC Ping 현상: Instance 1에서 변경 완료 된 데이터를 Instance 2 로 가져오기 위해 디스크에 저장 후 해당 데이터를 Instance 2 로 복사해오는 작업

 

'Database > Oracle' 카테고리의 다른 글

[Oracle] 관리자 계정(system, sys) 비밀번호 변경  (0) 2023.03.16
[Oracle] 이전 명령어 방향키로 출력  (0) 2023.03.15
[Oracle] Sequence  (0) 2023.03.13
[Oracle] Listener & Oracel DB  (0) 2023.03.12
[Oracle] SCN, Checkpoint  (0) 2023.03.12

[Linux] Setup

2023. 3. 9. 21:01

1. CentOS  설치

더보기

1.  https://www.centos.org/ 사이트에 접속 후 Download  클릭

 

2. x86_64 선택

 

 

3. 사용 가능한 다운로드 주소. 마음에 와닿는 것 클릭

 

 

4. GUI  버전을 사용하기 위해선 DVD 버전 설치

 

'Linux' 카테고리의 다른 글

Shell script  (0) 2024.02.29
Rocky Linux  (0) 2024.02.21
[Linux] 기본 명령어  (0) 2023.04.13

+ Recent posts