본문 바로가기

DB/Oracle

(52)
[Oracle] Chapter 12. 오라클 아키텍처와 동작에 관한 Q&A 12.1 지금까지의 복습 디스크에 접근하기 위한 오버헤드는 앞서 이야기했던 것처럼 '첫머리를 찾는 것'에 해당하는 탐색이 가장 크게 점유하고 있으며, 메모리에 접근하는 속도에 비해 매우 느리다. SQL 처리를 위해 디스크에서 읽어오는 작업은 차치하고라도, 버퍼 캐시에서 디스크로 데이터를 기록하는 작업까지 서버 프로세스가 담당하게 하면 SQL의 응답 시간이 떨어지기 떄문에 바람직하지 않다. 이러한 몆 가지 작업은 서버 프로세스 이외의 백그라운드 프로세스(오라클을 사용하는 환경이 윈도우라면 프로세스가 아니라 스레드 구성이다. 따라서 윈도우에서 오라클을 사용한다면 앞으로 나오는 프로세스를 스레드라고 바꿔서 읽자.)가 담당한다. 프로세스의 역활을 나눈 원칙은 'SQL의 결과를 가져오는 데 필요한 작업은 서버 프..
[Oracle] ORA-01034: ORACLE not available 오류 해결법 Error 및 증상 ORA-01034: ORACLE not available ORA-27101: shared memoery realm does not exist Case 1. DB꺼져있는 상태에서 다른 계정으로 들어갈라고 할 때 생기는 에러 sqlplus sys as sysdba Enter Password: SQL> startup Case 2. Oracle 인스턴스가 떠 있으나 불완전한 종료 혹은 원인을 모를 때. SQL> shutdown immediate SQL> startup open Case 3. Oracle이 설치되어 있는 서버에서 Sqlplus로 접근이 가능하고 데이터베이스 조회가 가능하나, 외부 접근이 안될 때 Linux에서 Oracle을 설치시 환경 변수에 ORACLE_SID = SID 이름..
[Oracle] Job, Schedule 개념 정리 ORACLE JOB은 PLSQL_BLOCK, STORED_PROCEDURE만 구동된다고 한다. 오라클 10g에서부터 ORACLE SCHEDULER ​를 지원​한다. ORACLE JOB과 ORACLE SCHEDULER ​가장 큰 차이점이라면 OS상의 crontab에 등재되는 shell프로그램도 ORACLE SCHEDULER 에서 돌릴 수 있다는 점. 오라클스케쥴러 등록을 위한 권한은 다음과 같다. - GRANT CREATE ANY JOB TO 계정명; 오라클 스케쥴러에는 다음과 같은 명령어가 있다. 1. DBMS_SCHEDULER.CREATE_PROGRAM - 잡이 스케쥴러에 맞게 돌면서 실제로 동작하는 프로그램(외부의 shell이나 SP, PLSQL_BLOCK 등) 을 등록한다. 2. DBMS_SCHED..
[Oracle] 바인드 변수의 부작용과 해법 바인드 변수의 부작용과 해법 1. 커서란 바인드변수 SQL 수행절차 - 최초 수행시 최적화 - 실행계획 라이브러리 캐시 적재 - 실행시 바인딩 최초 수행할 때 최적화를 거친 실행계획을 라이브러리 캐시에 적재하고, 실행시점에는 그것을 그대로 가져와 값만 다르게 바인딩하여서 반복 재사용 SQL의 최적화시점에서는 조건절 컬럼의 데이터 분포도를 활용하지 못하는 문제점을 가짐 바인드 변수를 사용할 때는 평균 분포를 가정한 실행계획을 생성 아래의 기준으로 선택도를 구하게 된다. 1 번호 > : NO 5 번호 between :NO and :NO 2 번호 :NO and 번호 = : NO 7 번호 >= :NO and 번호 < :NO2 4 번호 :NO and 번호 < :NO2 1~4번은 선택도 5..
[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 에러 해결 오래간만에 개인 PC에 오라클을 설치하고 계정을 만들려고 하니 오류메시지가 하나 출력되었습니다. ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 이라는 오류 메시지인데요. 오라클 12c부터는 공통계정앞에 c##을 붙이도록 네이밍 규칙이 바뀌었더군요. C## 키워드가 붙는 이유는 12c 버전부터 등장하는 CDB, PDB 개념 때문이라고 합니다. 11g까지만 사용해봤었던 저로써는 오늘도 하나 배워갑니다. ㅎㅎ; C##을 붙여주니 정상적으로 계정이 만들어집니다. 권한을 줄때도 앞에 C##을 붙여주어야 합니다. 토드나 sql developer 같은 sql 개발툴에 접속할때도 꼭 앞에 C##을 붙여주셔야 합니다. 그렇지 않으면 위와같이 사용자명/비밀번호가 부적합, 로그온할 수 없습니다. 라는 오류 ..
[Oracle] Chapter 11. 백그라운드 프로세스의 동작과 역활 11.1 백그라운드 프로세스를 왜 배워야 하는가? 현실 사회에서도 전면에 나서는 일과 뒤에서 지원하는 일이 있다. 밖에서 보면 전면에 나서서 일하는 사람만 눈에 띄지만, 실제로는 뒤에서 지원하는 업무 체계가 잘 잡힌 회사나 가게가 대단한 경우가 오히려 많다. 지원 스태프가 일을 제대로 하지 못하면 장애가 발생하기도 하며, 전면에 나서서 일하는 직원들에게 폐를 끼칠 수도 있다. 오라클도 잘 작동하고 있을 때는 상관이 없지만, 일단 장애가 발생하고 나면 백그라운드 프로세스의 동작과 관련된 지식이 필요할 때가 많다. 또한, 지원 스태프들의 일을 제대로 이해하지 않으면 업무 전체를 이해했다고도 할 수 없으므로 눈에 잘 띄는 서버 프로세스뿐만 아니라 백그라운드 프로세스도 잘 배워야 한다. -------------..
[Oracle] 오라클12c 를 CentOS 7에 설치하기 - 설치 앞의 포스트에서 Oracle 12c를 CentOS 7에 설치하기 위해 선행해야 하는 여러 CentOS의 설정과 계정 생성을 설명했다. 이제 실제 설치 단계로 넘어가자. 오라클의 설치는 두가지 방법이 있다. 하나는 GUI를 이용한 설치이고 나머지 하나는 GUI가 없는 서버 혹은 원격에서 설치하기 위한 Silent 모드 설치다. 이 포스트에서는 Silent 모드 설치를 설명한다. 아래의 작업은 앞의 포스트에서 생성한 oracle 계정으로 ssh 로그인하여 실행한다. 설치파일 압축해제 및 리스펀스 파일(.rsp) RedHat과 CentOS 용 오라클은 zip 파일로 압축되어 있다. 이 zip 파일은 다음과 같은 방법으로 압축을 해제할 수 있다. unzip 명령으로 압축해제 오라클 설치파일은 운영체제종류(lin..
[Oracle] 오라클12c 를 CentOS 7에 설치하기 - 준비하기 DBMS의 대명사는 바로 Oracle DBMS다. DBMS는 Database Management System을 의미한다. 무심코 DB와 DBMS를 같은 의미로 사용하지만 두 단어는 분명 다른 존재를 가리킴을 기억하자. DB는 데이터의 집합체를 의미하고 DBMS는 그 DB를 관리해주는 시스템소프트웨어다. 이는 Process와 Processor가 명백하게 다른 것과 비슷하다고 할 수 있다. 프로세서와 프로세스의 차이 (processor vs process) IT 업종에서 일하면서 가끔 프로세서(processor)와 프로세스(process)를 구별하지 못하는 개발자나 엔지니어들을 종종 보게 됩니다. "그게 그거 아니냐.."거나 "구별할 필요가 있냐"라는 생각을 가진 blogger.pe.kr 리눅스에 오라클을 ..