전체 글
-
[Oracle] Listener & Oracel DB2023.03.12
-
[Oracle] SCN, Checkpoint2023.03.12
-
[SQL] DDL / DML / DCL2023.03.10
-
Network 점검2023.03.10
-
[Oracle] 구조2023.03.09
-
[Linux] Setup2023.03.09
[Oracle] Listener & Oracel DB
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 파일?
|
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
--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
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
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 점검
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] 구조
오라클 서버 (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 → |
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 |
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
$ 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
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 |