IT
-
[MariaDB] Linux system error codesIT/etc 2022. 4. 7. 20:03
Operating System Error Codes Linux Error Codes The perror tool can be used to find the error message which is associated with a given error code. NumberError CodeDescription 1 EPERM Operation not permitted 2 ENOENT No such file or directory 3 ESRCH No such process 4 EINTR Interrupted system call 5 EIO I/O error 6 ENXIO No such device or address 7 E2BIG Argument list too long 8 ENOEXEC Exec forma..
-
[Postgresql]FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock"IT/etc 2022. 4. 6. 22:14
postrgesql 9.6 버전이 취약점이 발견되어 12.6으로 업그레이드를 하였다. 업그레이드 하면서 두 가지 문제가 발견되었다. 하나는 library 오류였고 또 하나는 제목과 같은 에러를 발생하며 DB start가 안되는 현상이다. 이런 저런 글 찾아 보니 /var/run/postgresql 디렉토리 파일 생성 권한이 없어 에러가 발생한다고 한다. 하여 해당 디렉토리에 권한을 주고 DB start를 하니 정상 Open 된다. 9.6 버전에서는 해당 디렉토리 참조를 하지 않았는데, 12.6 버전에서는 관련이 있는거 같다. Error 메시지 FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock" 해결방법 $>su - root..
-
[Oracle] 오라클 옵티마이저IT/etc 2022. 4. 4. 20:09
옵티마이저란? 사용자가 요청한 SQL을 가장 효율적이고 빠르게 수행 할 수 있는 최적(최저비용)의 처리경로를 선택해 주는 DBMS의 핵심엔진이다. 사용자 > SQL > 옵타마이저 > 실행계획 > 프로시저 옵티마이저 : 규칙 기반 옵티마이저(RBO), 비용 기반 옵티마이저(CBO) -규칙기반 옵티마이저 : 인덱스구조, 연산자, 조건절 형태가 순위를 결정 짓는 주요요인 임 장점 : 예측 가능하고 일관성 있는 실행계획을 수립하여 사용자가 원하는 처리경로로 유도하기 쉽다. 단점 : 데이터량, 값의 수, 컬럼값 분포, 인덱스 노이, 클러스터링 팩터 같은 데이터특성을 고려하지 않기 때문에 RBO는 대용량 데이터를 처리하는데 있어 합리적이지 못할 때가 많다. -비용기반 옵티마이저 : 비용을 기반으로 최적화를 수행한다..
-
[Oracle] 오라클 UndoIT/etc 2022. 4. 3. 20:54
오라클 Undo 9i 부터 AUM(Automatic Undo Management) 기능이 도입되면서 그런 수동 작업이 불필요해져 Undo 세그먼트 개념을 많이 생소하게 느끼는 것 같다. Undo 세그먼트가 일반 세그먼트와 많이 다르다고 생각 할 수 있지만, Undo 세그먼트는 구조적으로 볼 때 데이터를 저장하는 일반 테이블 세그먼트와 별반 다르지 않다. 테이블 세그먼트와 마찬가지로 익스텐트 단위로 확장되고, 빠른 읽기/쓰기를 위해 Undo 블록들을 버퍼 캐시에 캐싱하며, 데이터 유실 방지하기 위해 그 변경사항을 Redo 로그에 로깅하는 점도 같다. 다른 점이라면 Undo 세그먼트에 저장하는 내용인데, 각 트랜잭션 별로 Undo 세그먼트를 할당해 주고(두 개 이상의 트랜젹션이 하나의 Undo 세그먼트를 할..
-
[Oracle] 오라클 RedoIT/etc 2022. 4. 2. 20:56
오라클 Redo Log 오라클은 데이터파일과 컨트롤 파일에 가해지는 모든 변경사항을 하나의 Redo 로그 엔트리로서 Redo 로그에 기록한다. Redo 로그는 Online Redo와 Archived Redo 로그로 구성된다. Online Redo 로그는 Redo 로그 버퍼에 버퍼링된 로그 엔트리를 기록하는 파일로서, 최소 두 개 이상의 파일로 구성된다. 현재 사용 중인 Redo 로그 파일이 꽉 차면 다음 Redo 로그 파일로 로그 스위칭이 발생하며, 계속 Redo로그를 써 나가다가 모든 Redo 로그 파일이 꽉 차면 다시 첫 번째 Redo 로그 파일부터 재사용하는 라운드 로빈 방식을 사용한다. Archived Redo 로그는 Online Redo 로그가 재사용되기 전에 다른 위치로 백업해 둔 파일을 말한..
-
[Oracle] 오라클 버퍼 LockIT/etc 2022. 4. 1. 20:21
버퍼 Lock 버퍼 Lock 이란? DB 버퍼 캐시 내에서 버퍼 블록을 찾았으면 가급적 빨리 쥐고 있던 래치를 해제해야 한다. 그러지 않으면 하나의 cache buffers chains 래치에 여러 개의 해시 체인이 달렸으므로 래치에 대한 경합 발생 가능성이 증가하게 된다. 그런데 그 버퍼에 먼저 접근한 선행 프로세스가 아직 버퍼를 사용 중이라면 어떻게 해야 할까? 데이터 접합성에 대한 고민이 또 생긴다. 아주 짧은 순간일지라도 두 개 이상의 프로세스가 동시에 버퍼 내용을 읽고 쓴다면 문제가 생길 수 있는 것이다. 이를 막기 위해 캐시된 버퍼 블록을 읽거나 변경하려는 프로세스는 먼저 버퍼 헤더로부터 버퍼 Lock을 획득해야 한다. 버퍼 Lock을 획득했다면 래치를 곧바로 해제한다. 또 다른 언전장치를 마..
-
[Oracle] 오라클 DB 버퍼 캐시_(버퍼 상태)IT/etc 2022. 3. 31. 20:04
오라클 DB 버퍼 캐시_(버퍼 상태) 모든 캐시 버퍼는 아래 세가지 중 하나의 상태에 놓이게 된다. Free 버퍼 : 인스턴스 기동 후 아직 데이터가 읽히지 않아 비어 있는 상태(Clean buffer)이거나, 데이터가 담겼지만 데이터파일과 서로 동기화돼 있는 상태여서 언제든지 덮어 써도 무방한 버퍼 블록을 말한다. 오라클이 데이터 파일로부터 새로운 데이터 블록을 로딩하려면 먼저 Free 버퍼를 확보해야 한다. Free 상태인 버퍼에 변경이 발생하면 그 순간 Dirty 버퍼로 상태가 바뀐다. Dirty 버퍼 : 버퍼에 캐시된 이후 변경이 발생했지만, 아직 디스크에 기록되지 않아 데이터 파일 블록과 동기화가 필요한 버퍼 블록을 말한다. 이 버퍼 블록들이 다른 데이터 블록을 위해 재사용되려면 디스크에 먼저 ..
-
[Oracle] 오라클 DB 버퍼 캐시_(캐시 버퍼 LRU 체인)IT/etc 2022. 3. 30. 20:01
캐시 버퍼 LRU 체인 버퍼 헤더는 해시 체인 뿐 아니라 LRU 체인에 의해서도 연결돼 있다. DB 버퍼 캐시는 한번 읽은 데이터 블록을 캐싱해 두는 메모리 공간이지만 메모리는 유한한 자원이어서 모든 데이터를 캐싱할 수는 없는 일이다. 따라서 버퍼 캐시가 사용빈도가 높은 데이터 블록들 위주로 구성 될 수 있도록 LRU(Least recently used) 알고리즘을 사용해 관리된다. 모든 버퍼 블록 헤더를 LRU 체인에 연결해 사용빈도 순으로 위치를 옮겨가다가, Free 버퍼가 필요해질 때마나 액세스가 빈도가 낮은 데이터 블록들을 우선하여 밀어냄으로써 자주 액세스되는 블록들이 캐시에 더 오래 남아 있도록 관리한다. LRU 리스트에는 내부적으로 두 개의 리스트를 갖는다. *Dirty 리스트 : 캐시 내에서..